12.31.2012

resumen 2012

Llevo unos días tratando de recordar más o menos lo que he hecho durante el año y me ha resultado difícil, será que estoy perdiéndo memoria con la edad.

Este año lo puedo resumir en dos cosas: trabajo y "realizaciones"

Laboralmente ha sido un año realmente intenso, seguramente el año en el que más producción he sacado de mi vida. Este año he participado en software que muy fácilmente hayan visto más de cien millones de personas: hemos estado en portada de google, hemos salido en la pantalla cara de la google IO, hemos reescrito el frontend de CartoDB en tiempo record, publicado dos releases major de agroguía (casi reescritas desde cero), creado ciertas demos técnicas y pequeños proyectos que han permitido avanzar mucho en el rendering de mapas en cliente, creado librerías en unos cuantos lenguajes diferentes para CartoDB, etc. Por no hablar de unas decenas de pequeñas demos tecnológicas con HTML5 que nunca han salido a la luz, las cientos de pruebas con agroguía para mejorar la precisión...

Obviamente todas esas cosas no se hacen solo, todo el equipo de Vizzuality ha sido el responsable de lo anterior. No creo que sea fácil encontrar a un equipo tan cohesionado, productivo y creativo.

Cierto es que un año así pasa **mucha factura**, he llegado a diciembre realmente cansado, sin apenas tener ideas nuevas y ser capaz de ser eficiente, es una sensación realmente desgradable. No obstante lo he pasado bien.

En lo personal ha sido un año raro, he pasado fuera de casa casi 3 meses, las cosas en la familia han cambiado un poco (cosas de la desaceleración económica) y hemos tenido algún que otro paso por el hospital, todo solucionado por suerte (*). Pero sobretodo he pasado la crisis de los 30 para pasar a la de los 31 :). Es curioso y duro para mi ver como el rol que tenían tus padres cuando eras pequeño ahora lo juegas tú, la gente te presiona para casarte, tener hijos y comprarte una puñetara casa.

Este año que viene lo afronto con algunos proyectos que tengo en mente, espero que sea un poco más ligero de trabajo. Sólo le pido a dios que me libre de esta maldita lesión de rodilla.

Feliz año a todos.

(*) suerte y muchos profesionales haciendo un buen trabajo, muchas personas que antes padecieron la misma enfermedad y sufrieron con ella y miles de horas de investigación.

7.17.2012

Cota superior

Este ultimo mes ha sido si la memoria no me falla, el mejor mes de mi vida a nivel profesional. Ha sido tan bueno que será difícil que se repita algo así que dicho así no es como para celebrarlo.

El mes pasado estuvo durante un día completo en portada de google una aplicación web que hemos hecho en vizzuality de la cual he desarrollado el backend. Lo cierto que el mérito de que estuviese allí no es mío pero ser capaz de preparar la arquitectura de la aplicación para aguantar esa cantidad de usuarios ha sido un reto considerable. Hacer una release con google es ademas en cierto modo estresante, pero eso es para otro post.

4 días más tarde hemos presentado otra aplicación con google en la que he trabajado, esta vez una inforgrafía de la evolución de la web que pusieron en la pantalla cara durante una de las presentaciones principales de la google IO.

También presentaron en la googleIO otra aplicación en la que paricipé el año pasado...

Para rematar el mes hemos sentado las bases de lo que será el nuevo agroguía, ahora somos dos socios más!

Por ultimo solo decir que este será seguramente el último post de este blog, todo lo que tengo que decir ya lo digo en twitter...

1.22.2012

Historia del giro de un producto software

Para los que no lo conozcan: agroguía es un pequeño producto de guiado GPS que desarrollo y vendo hace 6 años que trata de facilitar la vida a los agricultores guiandoles por las parcelas.

Hace cosa de un par de años yo ya sabía que algún día el hardware donde funcionaba agroguía terminaría desapareciendo. Iphone y android ya estaban ahí y microsoft no podía seguir con una plataforma paupérrima como es windows mobile, así que era de esperar un cambio a otro SO y por tanto todo el desarrollo de agroguía se iría al cielo del software.

El pasado abril-mayo nos encontramos con que el único fabricante de hardware windows mobile compatible con agroguía (en verdad al revés) daba por finalizada la fabricación y por tanto agroguía tenía los días contados. Como somos muy lean, decidimos comprar todo el stock de PDAS compatibles que encontrasemos para sacar el máximo partido al producto.

En octubre vendimos la última unidad en stock y por tanto agroguía se había terminado para siempre. Mi idea era esa, ver como moría en paz, 7 años de producto son muchos años y terminas cansado y desmotivado. Pero aquello era como dejar morir un hijo sin hacer nada. Entonces decidí, en un arrebato totalmente LEAN, cambiar agroguía de plataforma y portarlo a android.

La decisión de android estaba muy clara, tanto técnicamente como a nivel de costes. Así que decidí bajarme el SDK y NDK de android con tanta suerte que hace 7 años tomé dos decisiones técnicas que han resultado ser oro:

- separé muy claramente la parte que dependía del SO de lo que sí. Por aquel entonces el código del quake era mi referencia y así lo hacían ellos. Además me propuse separar bien todo (años más tarde me enteré que aquello se llamaba Modelo-Vista-Controlador)

- Usé OpenGLES. Por aquel entonces nadie daba un duro por OpenGL, pero la idea de tener gráficos 3D en un dispositivo móvil era cuanto menos atractiva. Así que usé una implementación por software de OpenGLES. Quién me iba a decir a mi que años más tarde se convertiría en el standard "real" de móvil para hacer 3D?

(ahora recuerdo lo de unir los puntos hacia atrás que decía Jobs en su famoso discurso)

Estas dos decisiones me han permitido reusar TAL CUAL todo el código de la primera versión que no dependía del SO. La mayoría de los ficheros de código siguen sin tocar desde hace 6 años.

Calculé que el porting me llevaría 1 mes, incluído el testing en real, que en una aplicación que no puedes actualizar es bastante importante. Yo sabía en verdad que hasta el 2012 no lo tendría.
De mientras la cola de personas esperando la versión empezó a crecer, es increíble lo comprensiva que es la gente incluso cuando les explicas cosas que les importan un pepino. Pero bueno, siempre hemos sido bastante transparentes con los problemas y siempre ha funcionado bien.

A primeros de diciembre tenía ya una versión "estable", ya sabía "casi seguro" que era posible, tocaba buscar el hardware y todo lo asociado, que funcionase bien, que tuviésemos proveedores en los que pudiésemos confiar, echar cuentas de lo que costaría etc. Esas cosas que hay que hacer, pero que no se ven. Hay que tener en cuenta factores como el peso de la tablet para que aguante en un soporte pegado al parabrisas de un tractor... :)

En Enero ya teníamos el hardware elegido y pude empezar a probar en la plataforma final, después de un par de semanas de pruebas de funcionamiento correcto, de estrés y demás la versión 1.0 estaba terminada. Tiempo para preparar el manual del producto (que por cierto ha pasado de 20 páginas a 8)

Ayer pusimos las dos primeras unidades de agroguía a los primeros agricultores :D


Destacaría de estos 3 meses:

- He tomado bastantes decisiones, por ejemplo he decidido eliminar funcionalidad, simplificar algunas cosas y cambiar el modo de otras que la experiencia nos ha dicho que no funcionaba tan bien.

- He tenido que ser muy estricto al trabajar porque el tiempo apremiaba y siendo sincero prefería hacer cosas nuevas que la plataforma permitía, que eran mucho más cool que reimplementar el sistema anterior. Conocer como funciona el negocio ha sido vital para no irme por las ramas.

- He sacrificado calidad en algunas partes para tener el producto rodando cuanto antes. No es perfecto, no pasa nada, poco a poco mejoraré esas partes. Creo que a esto le llaman minimun viable product.

- Carlos Sainz decía que ganar el primer campeonato mundial de rallies fue fácil, que lo difícil fue mantenerse. Aquí me ha ocurrido algo parecido. Cuando desarrollé la primera versión no había miedo, hacías las cosas con dos cojones, a lo bruto. Ahora todo da mucho miedo, sabes que tienes que mantener la calidad de tu producto y eso hace ser mucho más conservador. Esto es posiblemente lo que más acojonado me ha tenido estos meses (y me tiene). Aún así he metido cosas de esas cool que posiblemente al agricultor le importen un pimiento.

- Ha sido (y es) un reto. Esto hace que recobres un poco la motivación perdida y te abre a nuevas ideas. Android en si es una basura (IMHO) pero la plataforma permite mucho más que windows mobile.

- Algo un poco más friki, he empezado a usar git-flow y es muy recomendable para este tipo de productos.

A seguir se ha dicho.

1.02.2012

objetivos 2012

Este año pasado ha sido ciertamente agridulce. Por una parte han pasado cosas muy tristes, de esas que se quedan y te hacen reflexionar todos los días, luego otras un poco menos malas, por ejemplo agrotrack, un proyecto en el que he invertido 1 año de mi vida, se fue a tomar por culo (bueno, quizá sea mejor decir, lo mandé a tomar por culo) y cosas muy buenas, enumero las que más me han marcado:

- Empezar a trabajar en vizzuality, gracias a esto último he cumplido mis dos objetivos del año pasado. También esto me ha permitido conocer y trabajar con gente estupenda.
- Estar en contacto un año más con mis ex-compañeros y amigos de unkasoft. De hecho estar en vizzuality es un poco como revivir la experiencia de unkasoft.
- Conocer a gente como Jorge, Amalia, Álvaro y cía, que siempre les falta tiempo para apoyarte, echarte un cable y perdonarte cuando es necesario.
- Re-descubrir el deporte.

Y ahora los objetivos 2012 (y de paso devuelvo la pelota a David Bonilla), pero esta vez en una lista de deseos, sin order alguno, según van saliendo.

- Hacer un juego con los gráficos de Javier
- poder trabajar con Simon una semana para rematar algunos proyectos de los buenos
- aprender algo de diseño de Sergio y Diego
- aprender a dibujar
- ser algo más creativo
- participar en alguna que otra hackaton/proyecto con gente que no conozco pero admiro: aitor (linkinpaths en general), Mr.doob, super-sole, (me he cansado de enlazar a tuiter), @hyperandroid, @jorgebastida por citar algunos.
- hacer una hackaton con la gente de vizzuality que todavía no hemos tenido ocasión.
- viajar un poco más
- ver más a mi apiguitos
- tratar de correr una san silvestre (con Bonilla :P)
- no lesionarme de nuevo
- programar menos
- participar en la creación de un doodle (por pedir...)
- Y por último ser un poco menos gilipollas, prepotente, insensato y bocazas y más comprensivo, responsable y comprometido.

Besos :*

12.09.2011

Lejos

Me llama mi madre o mi hermano y después del típico "qué tal estás" muchas veces ya no tengo mucho más que decirles y lo que es peor, ellos tampoco saben que decirme. A veces mi madre hace el esfuerzo de preguntarme, en vano, qué es lo que hago en el trabajo, imagino que en un intento de hablar conmigo algo más de los 30 segundos que dura el qué tal estás. Estoy acostumbrado a tratar con máquinas y con personas que normalmente solo hablan con máquinas y me pregunto si no estaré tan acostumbrado que he olvidado que el resto de humanos no son así.

10.17.2011

El síndrome del repetidor

El primer mes de carrera fue bastante confuso, imagino que igual que para el resto de personas, gente nueva, la primera vez que salía de casa, el acojone de estar solo ante el peligro... ya sabéis. Las clases empiezan, te juntas más o menos con los que parecen que son como tú y 1 semana después ya tienes posiblemente el círculo de personas que configuren tus próximos 3/5 años.

Entre esos posiblemente hay algún repetidor, buen chaval él, al que escuchas con cierto interés ya que él sabe todos los trucos, ya sabes, asignaturas chungas, profesores majos, los hijos de la gran putísima (ahora me doy cuenta que muchos de aquellos no eran más que unos inútiles)

Algunas de las cosas que a mi me dijo aquel chaval fue: "esta asignatura es _imposible_ aprobarla sin ir a la academia" o "es imposible ir a curso por año". Por aquel entonces ni tenía dinero para pagar la academia -suficiente apretada estaba ya mi familia como para apoquinar otro poquito más al mes- y lo que más me jodía, que alguien me dijese que "eso era imposible". Aquel día se me hincho la vena y enrabietado para mis a adentros me dije "y por qué esto no va a ser posible?". 

Fue posible.

Así que cuando algún "repetidor" llegue y te diga que algo es imposible, tómatelo como algo más a anotar en la lista de cosas a tener no muy en cuenta. Eso sí, no piensas que no te va a costar trabajo.


5.21.2011

Por qué deberías contratar a gente que tenga proyectos opensource

Podemos recrearnos en lo bonito que es el opensource, qué comunidad más interesante, la filosofía, blablabla, las sinergias colaborativas que provoca ... y demás palabras que tanto nos gustan, pero la realidad es que si un desarrollador tiene proyectos de código abierto lo más probable es que sepa un poco de todas estas cosas:

- Lo importante de escribir documentación. No hablo de esa documentación que todos esperamos, no de esa que se genera a partir del código, ni de esa que va encuadernada de 200 páginas con imágenes obsoletas. Hablo de ese README donde están los primeros pasos para empezar con el proyecto. Aquí es donde vendes tu producto. Recomiendo una charla muy buena de jacob kalplan-moss, writting great documentation. De hecho creo que uno de los grandes éxitos de github es tener una portada de proyecto con el README renderizado desde un fichero de texto.

- Cerrar código: un código cerrado no es lo mismo que un código terminado. El típico caso de "no, es que tienes que poner el fichero XXXX.cnf en tal ruta, habilitar el puerto serie, ejecutar tal demonio, cambiar config.h y ya"

- Lo importante de testear. Si una persona quiere aportar a tu proyecto y no hay tests no podrá estar seguro de cada cambio que haga.

- Enseñar tu código te obliga a hacer las cosas lo mejor que puedes, o por lo menos no pasar por alto esas situaciones de "ya lo haré bien". Si tu quickstart son 10 comandos algo no va bien, no?

- Trabajar en un entorno distribuído. Cuando me bajo y uso jquery no tengo a john resig en la mesa de al lado, así que me las tengo que apañar como pueda para solucionar mis problemas. De la misma forma otros no me tendrán a su lado cuando empiecen a usar tus proyectos y la mejor forma de hacer esto es dejar las cosas bien (esto tiene mucho que ver con los anteriores puntos).

- "Compartir es vivir". Si tu desarrollador libera código habrá entendido que compartir es bueno para los demás y para él mismo.

Por tanto, haz que tu empresa libere código y haz que el funcionamiento interno se parezca lo más posible al sistema open source. Ya sabes, empieza por hacer que crear un repositorio y un tracker sea tan simple como en github/bitbucket y da alas a tus empleados a que suban allí su código.