jueves, 27 de diciembre de 2012

Pusheame: Notificaciones push al navegador

Esta semana pasada, en Kaleidos hemos celebrado la 3ª Edición de nuestra PiWeek. Aunque en la web viene explicado lo que es, la PiWeek es la Personal Innovation Week y básicamente consiste en que cada 6 meses, "cerramos" una semana para hacer proyectos de innovación. Existen únicamente dos reglas, sólo se permite usar software libre para el desarrollo y al final de la semana hay que hacer una demo funcional.

En esta ocasión he aprovechado la semana para probar los plugins de grails platform-core y events-push de los que ya hablé en mi anterior artículo sobre la Groovy & Grails eXchange.

La idea que hay detrás de "notificaciones push" del servidor al cliente es enviar información en tiempo real al navegador justo en el momento en que se obtiene. Normalmente, cuando desde una aplicación web queremos actualizar un contador, número de mensajes,... lo que solemos hacer es preguntar cada cierto tiempo (10-30 segundos) al servidor si hay mensajes nuevos. Esto implica estar constantemente haciendo llamadas al servidor y además tener un pequeño retraso en la obtención de los mensajes. Con el paradigma push es el servidor el que envía los datos al cliente sin que éste tenga que estar preguntando constantemente.

Mi idea era hacer una pequeña prueba de concepto haciendo push de números aleatorios desde el servidor al cliente. Una vez conseguido, he utilizado el API en tiempo real de Instagram para obtener fotos geolocalizadas e irlas mostrando en un mapa y en un muro.

El resultado es Pusheame, que se encuentra desplegado en http://pusheame.cloudfoundry.com.
Una vez ahí existen dos páginas de pruebas, el mapa, que muestra fotos geoetiquetadas de 28 ciudades de Estado Unidos.



y el muro, que muestra esas mismas fotos en formato muro o album de fotos:



Lo único que tenéis que hacer es abrir el navegador y esperar a que vayan apareciendo las fotos automáticamente.

Si no quieres esperar también puedes ver este pequeño vídeo que he hecho.

Pusheame: Instagram Real-Time pictures from Iván López on Vimeo.


Como indico en la página, para los curiosos, el código fuente del proyecto se encuentra disponible en mi cuenta de github: https://github.com/lmivan/pusheame.

Si perteneces a una empresa tecnológica y te gustaría participar en la próxima edición de la PiWeek, no dudes en contactar con nosotros.
En la primera edición celebrada en diciembre de 2011 sólo participamos Kaleidos. En la segunda edición de julio de 2012 participaron junto con nosotros Secuoyas y Yaco, y finalmente, en esta tercera edición se han apuntado de nuevo Secuoyas y también Wadobo.

martes, 18 de diciembre de 2012

Groovy & Grails eXchange 2012 en Londres

El pasado jueves y viernes (13 y 14 de diciembre) estuve en el Groovy & Grails eXchange 2012 en Londres (GGX). Se trata de una de las conferencias más importantes en torno a Grails, Groovy, Griffon,... de Europa.

Las charlas estaban divididas en dos tracks y en casi todas elegí las de Grails.

1.- Keynote on Groovy: Guillaume Laforge abrió la keynote contando novedades de la versión 2.0 de Groovy: Un core más modular, uso de invokeDynamic, las nuevas transformaciones para comprobación de errores de compilación... Interesante saber hacia dónde se dirige el lenguaje en las próximas versiones.

2.- Grails for Hipsters: Espectacular charla de Robbert Fletcher en la que usando Grails, Vertx, Handlebars, Backbone y un montón de tecnologías hacía un clon de Instagram con publicaciones push, ajax,... Realmente instructiva y con el código fuente disponible en github.

3.- Using Grails Platform Core: Marc Palmer nos contó el nuevo plugin Platform-Core que ha desarrollado junto a Stephane Maldini y que pretende sentar las bases de un nuevo API sobre el que desarrollar nuevos y potentes plugins. Incluye abstracciones de Seguridad, Navigación, UI, y, para mí la parte más interesante, Events.

4.- Under the hood: Using Spring in Grails: Desde hacía tiempo tenía ganas de asistir a una charla de Burt Beckwith y no me decepcionó. Contó cómo integrar Spring clásico en Grails, Inyección de Dependencias, distintas formas de interactuar y engancharnos al ciclo de vida de los beans,... Muy útil y formativa.

5.- Theming & UIs with Grails Platform UI: De nuevo Marc Palmer no habló sobre Platform Core, pero está vez centrado en la parte de UI. Las distintas abstracciones, taglibs,... que ha desarrollado para poder hacer interfaces en las que cambiar el diseño sea tan sencillo como descargar e instalar un nuevo tema de manera similar a como se hace con Wordpress.

6.- Leveraging Social Media in Grails: Para terminar el día, Bobby Warner nos contó los distintos plugins y librerías que existen en la actualidad para integrar nuestras aplicaciones Grails con las distintas redes sociales: Facebook, Twitter, Google+, LinkedIn.

7.- Grails Keynote: El 2º día comenzó con la Keynote de Grails por parte de su project leader Graeme Rocher. Se centró en las novedades introducidas desde Grails 2.0 y para mi gusto se detuvo demasiado en ellas y no le dio tiempo a entrar en profundidad en lo que se incluirá en las siguiente versiones 2.3 y 3.0

8.- Debugging Grails Database Performance: Interesante charla de Tom Dunstan sobre un plugin que había desarrollado para mostrar de manera muy visual en cada vista que renderizamos el tiempo total que ha llevado incluyendo el desglose en los distintos servicios, el número de consultas sql que se han realizado, el tiempo de las mismas e incluso la propia consulta. Hay que prestar atención a este plugin porque tiene pinta de ser muy útil durante el desarrollo.

9.- Groovier testing with Spock: En esta ocasión Robert Fletcher nos mostraba código Java con sus correspondientes tests en Junit e iba explicando de una manera muy sencilla cómo convertir estos tests a Spock y por qué deberíamos usar Spock para probar en lugar del clásico Junit. Por suerte yo ya lo llevo usando desde hace tiempo :-)

10.- Reactive Grails - Event Oriented Architecture: Para mí la mejor charla de todas. Stephane Maldini explicó la parte de Events de platform-core junto con un par de plugins que había desarrollado y que complementaban al anterior. El mejor sin duda events-push, que sirve para poder recibir en el navegador notificaciones push en tiempo real desde el servidor de una manera muy sencilla. Hizo dos demos a cual más espectacular, una de video en tiempo real y la otra de un juego multijugador.

11.- Securing Grails Applications: Burt Beckwith comentó los 10 problemas más importantes de seguridad de las aplicaciones web, cómo estos pueden afectar a nuestras aplicaciones grails y cómo prevenirlos. Además contó un nuevo plugin que está desarrollando y que estará disponible junto con la versión 2.3 de Grails.

12.- Building an ecommerce business with gr8 technologies in Latin America: Domingo Suarez contó su experiencia desarrollando clickonero y cómo evolucionó la plataforma. Es una continuación de la charla que dio en el pasado Spring IO 2012 en Madrid. Muy interesante la peculiar forma en la que han diseñado la nueva arquitectura para poder soportar una gran carga de usuarios.

Y con esto acabaron las charlas. Hubo sorteo de ebooks de grails pero esta vez no me tocó ninguno.

La verdad es que ha sido una gran experiencia estar rodeado de dos días de tantos "cracks" del entorno Groovy y Grails. Tengo muchas ideas en el cuaderno y cosas que quiero probar y que haré haciendo poco a poco.

Si no has podido asistir pero te interesan estos temas, ya están todos los videos de las charlas publicados por lo que no hay excusa para no ir viéndolas poco a poco a ratos.