Translate

sábado, 31 de agosto de 2013

Leiningen, el maven de Clojure

Leiningen es como maven, nos permite crear nuestros proyectos clojure, manejar las dependencias, ejecutar una aplicación, etc...

Como lo instalamos en linux? Fácil abrimos una consola y escribimos:

wget https://raw.github.com/technomancy/leiningen/stable/bin/lein

Le damos permiso:

chmod +x lein

y luego ejecutamos:

./lein

Esperamos un rato...

Agregamos a lein al path:

export $PATH=/path/lein:$PATH

y luego si queremos creamos un proyecto así:

lein new app my-stuff

Bien para empezar, voy a seguir dando le rosca a leiningen en próximos post.

Dejo links:
https://github.com/technomancy/leiningen
http://leiningen.org/

martes, 27 de agosto de 2013

Principles of Reactive Programming

Como lo anuncio este blog, en un post anterior el señor Martin Odersky, estaba trabajando en otro curso. Se hizo esperar pero ya nos podemos inscribir a "Principles of Reactive Programming".

Que podemos aprender en este curso? Vamos a aprender a escribir aplicaciones basadas en componentes, orientadas a eventos, escalable y resistente a fallas.

Dejo el link:
https://www.coursera.org/course/reactive

Dejo un video:

 


domingo, 25 de agosto de 2013

Como empezamos con Clojure?


La idea es ve como podemos empezar con Clojure, yo también estoy empezando así que "esto puede fallar" veamos una forma fácil de empezar utilizando el zip que se encuentra en la pagina: http://clojure.org/downloads. Deszipiamos este archivo y ejecutamos:

java -cp clojure-1.5.1.jar clojure.main

Como ven van a necesitar java con la JDK 6 o superior funciona de maravillas.

y con esto ya podemos utilizar el RELP:

user=> (+ 1 2 3)
6
user=> (javax.swing.JOptionPane/showMessageDialog nil "Hello World")

Otra formas de generar nuestros proyectos Clojure es con Leiningen que es como el maven de Clojure, pero eso es otro post. Esto es solo una pequeña prueba para el hombre pero un gran paso para un desarrollador.

Clojure el lenguaje funcional para plataforma Java

Clojure nos da una manera rápida y fácil para acceder a la plataforma Java. Se puede llamar a cualquier API directamente con:

(System/getProperties)
-> {java.runtime.name=Java(TM) SE Runtime Enviroment
… etc...

Clojure agrega una cantidad de formas sintácticas de llamar métodos Java. Veamos un ejemplo:

// Java
“hello”.getClass().getProtectionDomain()

;Clojure
(.. “hello” getClass getProtectionDomain)

Clojure provee una forma simple para implementar Java interfaces y subclases de Java. También todas las funciones de clojure implementan Callable y Runnable. Esto se podría utilizar para llamar las funciones desde thread.

(.start (new Thread (fn [] (println “Hello” (Thread/currentThread)))))
->Hello #<Thread Thread[Thread-0,5,main]>

Como podemos ver Clojure es claro y simple y se puede llamar a clases java directamente.

Clojure es un lenguaje funcional

Clojure es un lenguaje funcional pero no es un lenguaje funcional puro como Haskell. Es un lenguaje funcional con las siguientes características:

  • Las Funciones son first-class objects, lo que sería que podemos crearlas, pasarlas como parámetros, guardarlas en variables, retornarlas, como cualquier otro tipo de datos.
  • Los datos son inmutables
  • Las funciones son puras, lo que significa que una función siempre devuelve el mismo valor con iguales parámetros; no mantiene estados.

La programación funcional es fácil de entender, es menos propenso a errores y mucho más fácil de reutilizar. Por que?

  • Es simple, sin loops, ni variables, ni mutables estados.
  • Es thread safe.
  • Es paralelizable, como las funciones no mantienen estados se pueden resolver de forma paralela, lo que aprovecha mucho más múltiples micros. 

Por que Clojure?


Las características más importantes de Clojure son la simplicidad y la potencia. Y esto es por sus características:
  • Programación Funcional: la programación funcional es simple y además es fácil de entender, fácil de mantener, fácil de testear
  • Clojure corre sobre la plataforma Java lo que lo hace potente, los beneficios de toda la plataforma java con sus frameworks y herramientas; podemos utilizarlos en Clojure.
  • Lisp es simple, lisp tiene una sintaxis sumamente simple y fácil de aprender.
  • Lisp es también potente, gracias a las macros de lisp, podemos fácilmente hacer DSLs y modificar el lenguaje para hacer mucho escribiendo muy poco.


Por todas estas características podemos afirmar que clojure es simple y potente.

viernes, 23 de agosto de 2013

Netis, Netty en Scala

Recuerdan a nuestro amigo Netty?, Netty es un framework de Jboss que provee un manejo asíncrono en aplicaciones web, un framework ideal para hacer comet o utilizar wesocket de HTML 5.

Netty es un cliente NIO infraestructura de servidor que permite el desarrollo rápido y sencillo de aplicaciones de red, tales como servidores de protocolo y los clientes. Simplifica y agiliza la programación de la red tales como TCP y UDP socket servidor.

Cuando lo usarían? Por ejemplo si quieren hacer un chat el cliente (browser) sabe cuando enviar un texto, pero es incapaz de saber cuando le contestan. Por lo tanto lo que se hacia antes (cuando era joven XD ) era tener un javascript que cada 1 minuto o menos pregunte al servidor si alguien le estaba hablando. Obviamente esto mataba al servidor si eran muchos usuarios; pero en esa época no quedaba otra.

Por suerte evolucionamos, se inventaron técnicas de comet y también websocket con html 5. Y todo más fácil con Netty!

Netis nos brinda una capa de abstracción para utilizar Netty desde scala, pero programando scala-like. Es un framework que nos permite utilizar fácilmente Netty desde scala.


Dejo link: https://github.com/prassee/netis

Scalapeño 2013 en parleys

Scalapeño es una conferencia sobre el lenguaje Scala y han subido vídeos de esta conferencia a parleys.

Que más decir?
Ha disfrutar!!

Dejo link:
http://parleys.com/channel/52013e6ce4b0354ac31ac5f7/presentations

miércoles, 21 de agosto de 2013

Programming Principles: Functions and Objects with Professor Martin Odersky

El próximo 17 de Septiembre comienza nuevamente Programming Principles: Functions and Objects con el profesor Martin Odersky, el creador de Scala. El que no haya hecho este curso se lo recomiendo se aprende muchísimo y no solo de Scala si no de programación funcional y orientada a objetos.

Dejo link:
https://www.coursera.org/course/progfun

Dejo video:

sábado, 17 de agosto de 2013

Debian cumple 20 años

Esta noticia es vieja, el día de ayer Debian cumplió 20 añitos, no quería dejar pasar la oportunidad para felicitar a mi distro preferida, he usado Debian hace ya bastante y siempre tuve buenos resultados. Por cuestiones laborales me he pasado a las distribuciones Red Hat pero siempre extraño al apt get y todas las características de este gran sistema operativo.

En servidores sin duda es el más confiable, no hay con que darle. Y es también el papa de grandes distros como Ubuntu, Mint, Elementary OS, knoppix, etc... Que más decir?

Feliz Cumpleaños!!

jueves, 15 de agosto de 2013

Peppermint Linux OS

Si pensamos en una distribución basada en Ubuntu, pero que prioriza los servicios en la nube, estamos pensando en Peper mint.

Peper mint en una distro basada en Lubuntu por lo que utiliza  LXDE desktop environment. Pero lo más importante es que es una distro que prioriza los servicios en la nube, por lo tanto espera que utilices google doc, gmail, dropdox, etc...

Trae de forma nativa las siguientes aplicaciones:

  • Chromium Web Browser
  • Dropbox
  • Guayadeque (Music Player)
  • Ice
  • X-Chat (IRC Client)
  • Transmission (Torrent Client)
  • Gnome-Mplayer (Media Player)

Y como aplicaciones en la nube:

  • Editor by Pixlr (Image Editor)
  • Express by Pixlr (Photo Editor)
  • Pixlr-o-Matic (Photo Filter App)
  • Last.FMSSB
  • Seesmic Web
  • The Cloud Player
  • YouTube
  • eBuddy
  • Google Calendar
  • Google Docs
  • Gmail
  • Google Reader
  • Peppermint Bug Tracking
  • Peppermint Forums

Dejo link: http://peppermintos.com/

Dejo algunas pantallas:





Smalltalk en el browser con Amber

Amber es un lenguaje inspirado en smalltalk (no es smalltalk) que compila a javacript. Amber compila eficientemente a javascript porque tiene una relación uno a uno con elementos javascript.

Está diseñado para que el desarrollo del lado del cliente sea más rápido y más fácil. Amber incluye un entorno de desarrollo, un framework para prueba de unidad, inspector de objetos y depurador.

Como lo podemos utilizar, muy facil importando la librería y corriendo una función:

<script src="js/amber.js" type="text/javascript"></script>
<script type="text/javascript"> loadAmber()</script>


Dejo link:
http://amber-lang.net/

Twitter University: Building a world-class engineering organization




A la gente de twitter se le ocurrio una gran idea, compartir el conocimiento que tienen con todo el mundo y para ello van abrir Twitter University. Donde obtendremos enseñanza y entrenamiento. Va a ser una plataforma en la cual podremos tomar cursos de desarrollo, html, css, escalabilidad, etc.


Espero con ansias!!


Dejo el link del anuncio:
https://blog.twitter.com/2013/twitter-university-building-a-world-class-engineering-organization

Elementary OS Luna Review

Sigo viendo Elementary OS y me gusta bastante, ahora les dejo un vídeo:



Otra cosa, muy bueno el canal InfinitelyGalactic de you tube.