Desarrollando UniversalPlaces

Ando metido en un proyecto muy chulo llamado UniversalPlaces, TorresBurriel ya publicó un post hablando sobre el lanzamiento inicial y el equipo(equipazo!).

UniversalPlaces es una web donde se pueden reservar estancias en hoteles. A día de hoy todavía en fases iniciales de lo que se pretende que llegue a ser, pero seguro que en los próximos meses dará mucho que hablar :)

Si indagáis un poco, veréis que el equipo es de todo menos convencional. Y no me refiero a que el equipo esté por encima de la media(que lo está!), si no a que es un equipo "a medida" para el proyecto. Cada miembro del equipo trabajamos independientemente a los demás, y aunque alguna vez hayamos podido/podemos/podamos coincidir, tenemos otros jaleos :). Una apuesta diferente a la habitual por parte de Javier Mcallan, para entrar a competir en un sector tan duro como es el del turismo en internet.

Mi rol dentro del equipo ha resultado ser programador y algo así como el responsable(o irresponsable :P) de la parte técnica. Nuestro objetivo desde la parte técnica, es que la tecnología existente resulte la menor limitación posible para ofrecer una mejor experiencia de usuario, y os aseguro que está siendo todo un reto!

UniversalPlaces

Bueno, y cómo imagino que no esperaríais otra cosa de mi, os voy a contar un poco acerca de que tecnologías estamos utilizando(por ahora nada excesivamente especial):

  • Es una aplicación web hecha con Grails. Es el framework que más domino a día de hoy, y para este proyecto encaja perfectamente. Como se puede suponer, también hay un trabajo muy importante de integración, y la plataforma Java tiene multitud de herramientas para ello.
  • Corre sobre un Apache Tomcat 6 en producción.
  • Usamos MySQL y MongoDB para las bases de datos. La primera para guardar lo relacionado con reservas, clientes... Y la segunda a día de hoy es poco más que una caché de búsquedas de estancias, para lo que podríamos estar utilizando otras muchas herramientas tipo clave/valor, pero mientras ganamos experiencia para experimentar con algunas características de Mongo que pueden encajar muy bien con funcionalidades que están en el roadmap.
  • El servidor es un dedicado bastante resultón, que ahora mismo va bastante sobrado.
  • También estamos utilizando Amazon S3 para servir las imágenes y Postmark para mandar por email la confirmación de las reservas. Son servicios que hemos externalizado desde ya.

Y como curiosidad una métrica, a día de hoy, con la funcionalidad que se puede ver, tenemos poco más de 2200 líneas de código groovy y java.

No todos los programadores son iguales

Leía anoche el post de mi amigo (y gran profesional :)) Carlos Ble, ¿Todavía crees en los mitos?. La verdad que mientras lo leía me encontraba con sentimientos encontrados, en cierto modo entiendo por donde van los tiros respecto al exceso de expectativas que a veces generan las celebrities del software (entiéndase por desarrolladores, que por alguna razón, son conocidos en algunos círculos) a su alrededor de forma voluntaria o involuntaria.

Me viene a la mente una conversación que tuve hace 2 o 3 años con Alberto Molpeceres, que se hizo muy conocido por ser fundador de javaHispano. De algo parecido a lo que comenta Carlos en su post, que por la visibilidad que había conseguido por ser el fundador de esa gran comunidad de desarrolladores, se había encontrado por parte de algunos programadores un trato de algo parecido a un gurú/celebrity, cosa con la que él tampoco se sentía nada identificado.

Sé que conversaciones de este tipo las he tenido con más gente además de con Carlos y Alberto, pero disculpad que ahora mismo no recuerde nombres concretos :P

Está claro que por el hecho de alguien sea conocido, no quiere decir que sea un guía espiritual que va a resolver todos tus problemas como por arte de magia, igual que tampoco tiene que ser necesariamente mejor que otro que no sea conocido (sí, como en cualquier otra profesión). Aunque hay que tener en cuenta que si alguien se expone ante gente de su gremio, a las críticas o alagos que puede suponer eso, seguramente un paquete tampoco será :D

Pero hay una cosa que se desprende del post de Carlos, hablando de que todos somos iguales, cosa con la que no podría estar nunca de acuerdo. Se suele decir que 1 buen programador es unas 10 veces más productivo que uno mediocre(no recuerdo quién es el autor de esta afirmación cita del libro The Mythical Man-Month), y si el programador bueno resulta ser un fuera de serie la diferencia puede ser aún más exagerada! Mi humilde experiencia también me dice que los proyectos salen mejor de pequeños equipos con gente buena y motivada(o no-desmotivada).

Code Ninja

Como podéis ver, también creo que entre buenos programadores hay algunos que están por encima de otros. Aunque no me sienta capaz de ponerme a hacer rankings ni nada por el estilo, sí que hay gente con la que he trabajado que tengo la sensación de que están por encima de otros, que son auténticos cracks(algunos los llamarían ninjas).

Eso sí, todos los buenos programadores que conozco a los que admiro y tomo de algún modo como referencias, lo son porque además de atesorar mucho talento, se han ido preocupando de mejorar sus conocimientos y habilidades con el tiempo... y eso que casi todos son conscientes de que son buenos! :D

En fin, que ni por ser una celebrity vas a saber de todo y solucionarás los problemas mágicamente; ni todo el mundo tiene el mismo talento, capacidad de trabajo y de cintura para ser mejores programadores (cámbiese programadores por cualquier otro oficio).

Taller de Grails en Madrid On Rails

Supongo que algunos ya lo sabréis, este Viernes 11 de marzo a partir de las 16:00 voy a impartir un taller de Grails que ha organizado primerViernes.

El taller durará 4 horas, tiene un coste de 100€ y lo llevaremos a cabo en las instalaciones de Madrid On Rails.

El taller está enfocado a gente que ya conoce el framework y quiere acelerar su aprendizaje. En el taller veremos ejemplos en código y trabajaremos sobre distintos tipos de caché, plugins propios y de terceros, sistemas de colas... vamos, que NO va a ser introductorio.

¿Que aún no conoces primerViernes?

primerViernes es un grupo organizado para el lanzamiento de proyectos en Internet que se basa en la idea de "más hacer y menos hablar".

Logo de Primer Viernes

Con esa declaración de intenciones, ya supondréis que soy simpatizante de este grupo que se concentra en Madrid, y con el que vemos un espíritu muy similar al que nos ha empujado a mover la iniciativa CachiruloValley en Aragón.

Además, habiendo estado en uno de los primerViernes, tengo la sensación que del grupo saldrán algunas empresas interneteras que van a dar guerra :)

Configuración de Tomcat para trabajar con UTF8

Me ha vuelto a pasar... otra vez! La configuración por defecto de Apache Tomcat 6 me ha dado problemas con la codificación de carácteres.

encoding

Mientras que en el servidor embebido de Grails funciona todo perfectamente con UTF8, siempre que no la líes gracias a a causa tu IDE/editor favorito, claro. Al poner en una instalación de tomcat el war que quería desplegar, los carácteres no-ascii(eñes, tildes, etc) no se pasaban con la codificación correcta cuando los parámetros iban por GET.

La solución es bastante simple.

A la línea del server.xml de la configuración de nuestro/s tomcat/s:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

Añadirle URIEncoding="UTF-8", para que quede algo como esto:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

Y ya :)

Un repaso del Spring I/O 2011

Ya hace casi un par de semanas que se celebró el Spring I/O 2011, y algunos ya han escrito sobre ello.

Iba a hacer un resumen completo del evento, pero visto que otros ya han hecho muy buenos resúmenes y que me he enfriado sólo destacaré lo que me resultó más interesante de las charlas y talleres que pude asistir. Estaba muy difícil elegir entre los 3 tracks, se veía que iba a haber nivel... a ver si este año suben los videos para ver charlas que me perdí de las que me hablaron muy bien.

- Lo que más me gustó:

De cero a multinacional con Grails y EC2, de Jorge Uriarte y Eloy García-Borreguero. Siempre es interesante ver como otra gente soluciona sus problemas y más cuando usan un framework que tú mismo usas, en cierto modo me recordó un poco a nuestra charla de jobsket del año pasado. No por el contenido ni por el producto, si no por ver un caso real y que el caso fuera un negocio en internet.

Conociendo Griffon a fondo, de Andrés Almiray. La verdad que no le había prestado demasiada atención a griffon por que estoy bastante alejado de las aplicaciones de escritorio desde que me pagan por programar :P. Pero vi que era una buena oportunidad de aprender un poco de la mano de Andrés(entre otras muchas cosas, uno de los fundadores de griffon), ya que posiblemente desarrolle en el futuro un pequeño proyecto de escritorio y quería conocer que me ofrecía el framework. Como mínimo debería hacer un hola mundo :)

Aplicaciones web ultraescalables con Redis de Alberto Gimeno. No es colegeo(que podría serlo :P), ya sabía por donde iban a ir los tiros de su presentación porque fuimos hablando sobre el evento desde días antes, y precisamente fui porque sabía de antemano que iba a resultar interesante. No decepcionó, asistió mucha gente y fue la charla en la que más gente vi preguntar; les descubrió a mucha gente una alternativa a las típicas bases de datos relacionales.

Tuning your Grails applications, de Peter Ledbrook. Que sin descubrir grandes cosas, hizo un interesante repaso a las buenas prácticas que deberíamos utilizar en el desarrollo web para que nuestras webs sean más rápidas(empezando por evitar optimizaciones prematuras :)), y algunas formas de hacerlo con Grails.

Esto fue lo que más me gustó, otras cosas que me resultaron muy interesantes fueron las keynotes de Juergen Holler y Graeme Rocher, la charla de pruebas de Aitor Alzola, el taller de Geb con Fátima Casaú...

Por otro lado, el primer día hice de facilitador(que dicen los agilistas :P) de un taller de groovy koans. Vamos, que hice una pequeña introducción-presentación de que son los koans, la gente se puso a programar y yo echaba una mano a quien me pidiera ayuda o tuviera alguna duda.

Esta fue la mini presentación que preparé:

Los koans recortados que hicimos en el taller están en github.

Personalmente me gustó mucho el evento, se notó que se aprovechó el rodaje y experiencia de los eventos de México DF y de Madrid y que habían más medios que el año pasado. También un WIN montar fiesta la primera noche para que la gente se relacionara distendidamente tras el duro día :)

Al final lo mejor, como siempre, es reencontrarte con amiguetes y conocidos; desvirtualizar o conocer gente nueva. Si al final lo bueno siempre está en el cara a cara :)

Nos vemos en otra ;)