Semanas 410 y 411

Y ahí viene otro nuevo pack de 2 semanas, a lo tonto voy a tener que renombrar la categoría a retro quincenal :P.

La primera semana de estas, se me juntaron muchas cosas en un par de días: cierre del trimestre, reuniones de varias horas, tener que terminar cosas para una demo y un lanzamiento a producción. Vamos, que tocaron unas cuantas noches de Beer Driven Development, una de las especialidades de la casa… lo malo que bajo presión apetece bastante menos.

El resto de la semana ya pude ir a un ritmo más sostenible y dedicarme a temas relacionados con la organización de la 3ª edición del Startup Open Space. A nivel organizativo creo que se nota que llevamos cierto rodaje y fue bastante fino: se repartió mejor el trabajo entre los organizadores y nadie se quemó al nivel de los años anteriores, tuvimos fruta y pastas a cascoporro todo el día, el catering estuvo bastante bien… y respondimos rápido a un problemón con las salas de etopia que íbamos a utilizar, tuvimos que improvisar y los asistentes casi ni se percataron (aunque algunos organizadores nos quedáramos sin la primera sesión por reorganizar todo). A nivel de contenidos creo que estuvo bastante bien, pero es un Open Space, así que eso es responsabilidad de las 100 personas que asistimos.

Supongo que tarde o temprano aparecerán más fotos, por el momento hay un álbum de Jesús Cuadra, otros andaban por ahí echando fotos. Además de los amigos de ¿Qué pasa co! que también iban grabando, a ver si sacan algo para su videoblog.

Al siguiente fin de semana me pasé por el hackathon Space Apps, al no poder estar mucho tiempo sólo pude echar una mano muy por encima a un par de equipos. Pude ver el buen ambiente que había y me volvió a picar el gusanillo de asistir a alguno en calidad de participante, que llevo ya bastante tiempo sin hacerlo.

Y en cuanto a proyectos en marcha:

  • Estuve dando soporte en algunas cosas al proyecto con Maubic, implementando algunos cambios en un par de microservicios.
  • Tras una semana de re-organización, nos pusimos a tope con el proyecto que nos han contratado a Coding Stones. Poco a poco se va notando que estamos engrasando la maquinaria, aunque esperamos que tal y como van pasando las semanas seguimos mejorando como equipo y mientras seguimos avanzando con el proyecto. Seguramente unos y otros vayamos escribiendo sobre lo que estamos haciendo.
  • Lanzamos la nueva web de Outreach Tool. También tocó implementar algunos cambios a nivel de programación para soportar algunas necesidades que fueron surgiendo. Todavía quedan bastantes mejoras en el tintero que vamos a ir haciendo poco a poco.

Buena semana.

Semanas 407, 408 y 409

Casi hacemos el mes sin retro, que no tenía claro si esta semana terminaría sacando un rato para hacerlo. Como se puede imaginar, ha dado de mucho tantos días, incluida una semana santa menos fructífera de lo que me había planteado tener.

Algunas cosas que han pasado: He seguido trabajando en diferentes cosas para el (inminente) Startup Open Space de este año, he confirmado que voy a estar echando una mano como mentor a los equipos participantes en el hackathon Space Apps de Zaragoza, he ido a un puñado de conciertos, estuve en la charla sobre integraciones y chatbots del FridayDojo, he vuelto a entrenar, estuvimos de mudanza de oficinas para el estudio, mis futboles… Y al final se me ha juntado bastante estrés la última semana y pico.

A destacar que desde Coding Stones empezamos a trabajar nuestro primer proyecto de cierta entidad, y ya hicimos la primera iteración.

Más cosas:

  • En Bichomanía cambiamos el proveedor de mailing transaccional. Aparte encontramos algún problemilla con algunos cambios para hacer despliegues que dejamos medio resueltos, pero aún queda un fleco que no va fino.
  • Quise implementar la posibilidad de traer videos de diferentes proveedores para Mosica. Pero se quedó a medias por problemas con las gemas de ruby probadas. Sí pude hacer algunos arreglos de maquetación con vistas a mejorar el SEO.
  • Estuvimos trabajando en la maquetación del rediseño de Outreach Tool con Jesús (compañero de Coding Stones). Yo además estuve implementando cambios en la pasarela de pagos y revisando las secciones de la web y contenidos. Queda bastante por mejorar, pero ya dejamos la base del rediseño montada.
  • Con la gente de Maubic estuve trabajando en cambios en diferentes microservicios. Cosas muy de detalle de negocio, así que no se puede comentar demasiado sobre ello y tampoco creo que resulte especialmente interesante.

He comprimido bastante esta retro, que sigo con bastantes líos, pero esos ya los explico en la siguiente.

Buena semana.

Semana 406

La típica pereza post-vacacional durante la semana pasada mezclado con cierto acumulo de trabajo que me hizo andar un poco a idas y venidas, sin ser lo efectivo que me hubiera gustado. Además dediqué algunos ratos a trabajar en el Startup Open Space 2016, entre otras cosas tuve que dejar listo el vestibule para proponer sesiones.

Al final entre unas cosas y otras tuve que descartar ir a un par de saraos que habían durante la semana, no da tiempo a hacer todo lo que a uno le gustaría.

Esta semana me tocó estar centrado en 3 proyectos, y tener que dejar aparcadas algunas tareas que tengo pendientes desde hace algunas semanas en otros proyectos más pequeñas:

  • Mi colaboración con la gente de Maubic se llevó casi todo el foco de mi semana, ya que se acercan fechas importantes para el proyecto y necesitaban que diera algo más de dedicación. Estuve trabajando en un par de servicios diferentes nuevos.
  • Con Coding Stones tuvimos la reunión de arranque con un cliente, así que definitivamente empezaremos a trabajar tras la semana santa. Tengo muchísimas ganas de empezar a desarrollar con mis compañeros.
  • Tuvimos una reunión acerca de OutreachTool para plantear colaboraciones con algunos interesados en consultoría. Por mi parte también estuve con algunas cosillas del rediseño.

Buena (mini)semana.

Semanas 404 y 405

Ya estamos, casi como de costumbre, haciendo retro quincenal otra vez. Esta vez mi excusa es haber estado una semana de vacaciones, o de medio vacaciones, ya que la excusa de mis vacaciones era ir a Londres para asistir como voluntario a uno de los eventos sobre software más importantes de europa como es la QCon London. Y como era mi primera vez ahí quise aprovechar también para hacer bastante turismo y ver a algunos amigos del mundillo que andan por tierras británicas.

No sé si podré sacar un rato para escribir sobre el evento, ya que quiero volver a ver algunos videos de charlas de las que me perdí algunas partes por el trabajo como voluntario, pero intentaré hacerlo en algún momento.

La semana anterior, además de trabajar aún sin total normalidad (por andar todavía algo pachucho), saqué tiempo el viernes para ir al Friday Dojo sobre Jenkins. Además andamos en mitad de mudanza del estudio, aunque por ahora mi aportación ha sido muy poco y son mis compañeros los que se están haciendo cargo de casi todo.

Mientras que sobre proyectos:

  • En OutreachTool estuve implementando cambios y añadidos en la tienda, además estuve actualizando algunas gemas.
  • Con Coding Stones estuvimos revisando lo que un cliente nos ha pasado para empezar a trabajar en la definición de historias de usuario, vimos que tenemos bastante trabajo respecto a esto.
  • Hice algunas mejoras en Mosica para ver si le conseguimos gustar un poquito más a google, además resolví un bug con la generación de algunos ics que daban problemas.
  • Con Maubic estuvimos trabajando en un servicio nuevo, además de dando soporte y haciendo mejoras en otro de ellos; estas semanas me toca pisar un poco el acelerador con ellos. También perdí algo de tiempo en dejar listas algunas cosas en un jenkins.

Buena semana.

Semanas 402 y 403

De nuevo resumen de 2 semanas. La segunda me la he pegado prácticamente KO por un trancazo bastante gordo que no me ha dejado avanzar lo que me hubiera gustado, incluso tuve que dejar aparcada temporalmente alguna cosa hasta nueva orden.

Y es que aún ando bastante renqueante tras tantos días con fiebre, así que he dejado bastante escueta la retro:

  • Con Maubic estuve principalmente dándoles soporte en temas de backend y dedicando tiempo para la resolución de algunos problemas que fueron surgiendo.
  • Estuve a varios flancos con OutreachTool, tanto a nivel de desarrollo como de coordinación. Ya hay buena parte del rediseño hecho y hay que empezar a integrarlo en la web.
  • Tuvimos reunión de puesta al día de Bichomanía para alinear visiones. Además me tocó hacer algún pequeño arreglo.
  • A Mosica le dediqué un poquito de tiempo para hacer un par de cambios chorras. También aproveché para empezar a probar una herramienta de analítica de usuarios.
  • Con los CodingStones estuvimos haciendo trabajo de definición y revisando algunas cosas hechas por el equipo. Además, a falta de las formalidades, parece que a no mucho tardar vamos a trabajar por fin en un proyecto de cierta entidad.

Buena semana.

Page Objects con PHPUnit y Webdriver

A finales del año pasado me llegó la posibilidad de colaboración a modo de consultoría con Funidelia, un comercio electrónico de disfraces. Un comercio electrónico que además va como un tiro, por cierto.

Me contactaron para echarles una mano para empezar con el testing funcional (o de sistema, o end-to-end, o…). Ya que al parecer intentaron en el pasado ponerse con ello pero, como ocurre en muchas ocasiones, el día a día de una startup no permite que el equipo técnico pueda focalizarse en ello.

Así que tras una reunión inicial y alguna otra conversación teníamos claro que mi papel era sentar unas bases sobre las que ellos pudieran seguir.

¿Cuáles eran esas bases?:

  • Implementar casos los tests automáticos para la parte más crítica del negocio: los diferentes puntos dentro del proceso de compra.
  • Saber cuanto antes cuando se rompe un test. Así que se pueda lanzar correctamente desde un servidor de integración continua (que en su caso era un jenkins) sobre entornos de desarrollo.
  • Además del entorno de desarrollo que pudieran lanzar contra entornos de staging, o incluso producción. Teniendo en cuenta que la misma base de código del comercio electrónico se ejecuta en diferentes instancias y configuraciones (por país).
  • También se debían lanzar los tests con diferentes navegadores, es crítico que funcione correctamente con todos lo navegadores mayoritarios.
  • El lenguaje de programación a utilizar iba a ser PHP, ya que es el utilizado por el equipo.

Una cosa que estuvimos hablando fue el que los tests sólo cubrirían los escenarios optimistas del proceso de compra, esto es cuando se supone que al usuario todo le va bien y termina con su compra de disfraces hecha. No sólo para lo que yo iba a hacer, si no también para cuando el equipo siguiera evolucionando las baterías de tests. Al final son tests lentos, frágiles y mantenerlos tiene bastante coste, pero luego volvemos a ello.

Las herramientas:

Hacía mucho que no programaba en PHP y no estoy para nada al día de sus novedades, pero para esto estábamos de acuerdo que no creíamos que iba a ser un gran problema.

Aunque no estuviera muy al día sí tenía referencias de cosas como composer para gestionar las dependencias y era el punto de partida.

En cuanto al framework de testing se me pasó un momento por la cabeza el cacharrear con behat, pero como al final iban a ser tests sólo para los programadores me parecía añadir una indirección que no aportaba nada; así que tiramos a lo seguro con PHPUnit, que ir con algún framewrk xUnit es ir sobre seguro.

Para el lanzamiento de acciones de navegador también tenía claro la elección con Selenium Webdriver y el cliente PHP implementado por la gente de facebook.

Mientras para que para el soporte de ejecución frente a diferentes entornos, monté algo de código a medida para poder cargar configuraciones de ficheros json a partir de un parámetro enviado al comando de ejecución de la batería de tests.

Page Objects:

Y ya respecto a los propios tests, como escribía algo más arriba, los funcionales suelen ser considerados frágiles y lentos.

Decimos lentos para el contexto de que no nos sirven para dar feedback rápido de si algún cambio que hayamos introducido en el código ha roto algo, si los intentas usar para ello serán una tortura para tu flow. Si a alguno no le suena la Pirámide de Test siempre puede informarse de ello en la web de Fowler.

Pirámide de Test

Y decimos frágiles principalmente porque cualquier cambio de maquetación html por pequeño que sea puede romper el test: un texto, un class, un id… Así que, salvo que la UI no evolucione, suelen resultar caros de mantener frente a otros tipos de tests.

Una forma de abaratar bastante el mantenimiento de esos tests es el uso Page Objects. De modo que para cada página (aunque también podríamos tener Page Objects de elementos comunes, como quizás un menú de navegación) que queremos que participe en los tests abstraeremos sus detalles de implementación para utilizarlo como un objeto en cada caso de test, reduciendo de esta manera la duplicidad de código y mejorando la legibilidad de los propios tests.

En los Page Objects expondremos tanto métodos que crean/llevan a otros Page Objects como otros que lanzarán acciones para que sean ejecutadas en el navegador (un click, completar un formulario…) y de los que opcionalmente esperaremos algo en el retorno.

Además en mi caso implemento los Page Objects con la responsabilidad de los asserts en el propio Page Object. Ahí decido lo mucho o poco que quiero acoplarlo a la maquetación exponiéndolo como un assert con un lenguaje más de negocio. Esto lo comento porque al implementar Page Objects existen 2 vertientes ligeramente diferentes: incluir los asserts o proveer un modo para que el test sea el responsable de cómo se le hacen los asserts y así separar responsabilidades. El propio resumen final que enlazo, por lo general, desaconseja lo asserts en estos objetos; aunque a mi por el momento no me ha resultado problemático el hacerlo y se adapta más a mi gusto.

Y ya desde un punto de vista más práctico y sin meterme en detalle, este es como quedaría test de añadir un producto al carro de la compra:

Como se puede ver en el código, se mantiene encapsulado entre esos objetos. Podría cambiar completamente la maquetación de la UI y tendríamos que cambiar sólo la implementación de los Page Objects (que no es poco). Otro tema es que, por razones de diseño o negocio cambiara la lógica de navegación, claro.

Semanas 400 y 401

Un par de semanas algo duras estas 2 últimas, se han juntado algunos temas que las han puesto bastante cuesta arriba. No me vendrían mal unas vacaciones de las de verdad, no.

Desde Cachirulo Valley empezamos a coordinarnos y a trabajar en el próximo Startup Open Space. Además yo estuve presentando el colectivo y el evento en formato elevator pitch en el Startup Europe Week que se celebró en Zaragoza.

Algo a destacar de estas semanas es que hemos anunciado lo último en lo que llevo un par de meses embarcado, los Coding Stones (la web es temporal, pero había que lanzar algo ya). Una marca bajo la que estamos varias personas que llevamos bastante tiempo en esto del desarrollo de software y que queremos trabajar juntos, además que estamos convencidos de que aportamos más valor a nuestros clientes en conjunto que contratados individualmente.

Estuve en la presentación de Españopoly en Zaragoza. Y luego estuvimos tomando algo por ahí con David y Eva, buena gente de la Fundación Civio.

Para acabar esta última semana, este fin de semana me dio por extraer un pequeño plugin de JQuery para galería de fotos desde el proyecto de Alchups.

Estas semanas también tocó gestionar algún que otro lead, y hacer una primera reunión para conocer con mayor profundidad el proyecto de uno de ellos, además:

  • Dejamos listos algunos cambios en Bichomanía, principalmente relacionados con la arquitectura de información de la home.
  • Para Maubic estuve a temas variados. Los que me llevaron más tiempo fue dejar configurado un Jenkins listo para lanzar las builds de todos los proyectos, y montar un servicio de logging centralizado para los diferentes servicios.
  • Tuvimos la reunión de arranque para el proyectito con Refinery.
  • A Outreach Tool estuve dedicándole algunos ratos, además de hacer algo de soporte y coordinación.

Buena semana.

Alchups.com: Los aljibes de San Esteban

En Octubre anunciábamos el lanzamiento de la web Alchups.com, y hace meses que tenía un borrador de post sobre ello que fue cayendo en el olvido, hasta hoy. Sin ser la tipología de proyecto que haga, ni a la que quiera dedicarme a hacer habitualmente, era algo que venía de lejos y es un proyecto que me hizo mucha ilusión que viera la luz.

Hace mucho que empezábamos a hablar con Javier Viudas sobre la necesidad de documentar y dar a conocer todos los alchups (o aljibes) que hay en nuestro pueblo en una web, y al final han tenido que pasar algunos años para que esta idea que teníamos en nuestras cabezas haya podido hacerse realidad. Tenía bocetos en papel hechos y re-hechos desde hacía la tira, y antes de verano pudimos plantearnos desarrollarlo por fin.

Como se explicó a algunos medios comarcales, pudimos ejecutarlo enmarcado dentro del proyecto de limpieza y señalización de las rutas de alchups, gracias a una ayuda de la Diputación Provincial de Huesca al Ayuntamiento de San Esteban de Litera.

Como es de suponer, en este proyecto me tocó hacer un poco de todo: conceptualizar, coordinar y desarrollar.

Para conceptualización estuvimos trabajando con José Luis Lizano. Al tener mucha libertad por parte del cliente, una visión clara del proyecto y una idea bastante aproximada de los contenidos con los que íbamos a poder trabajar; pudimos avanzar bastante rápido directamente sobre bocetos en papel.

Así que partir de estos bocetos él ya pudo hacer el trabajo de diseño visual.

Una foto publicada por Dani Latorre (@danilat) el

En paralelo con Razvan Puscas empezamos a programar, principalmente la parte de gestión de contenidos. El backend lo implementamos con Ruby on Rails ayudándonos de algunas de las gemas habituales como devise, rspec, factory_girl o paperclip. Mientras para maquetar el gestor de contenidos utilizamos Twitter Bootstrap y añadimos mapas de Google Maps.

Cuando ya tuvimos cerrados los primeros PSDs, entró a echarnos una mano para hacer la maquetación de la web pública Guillermo Latorre (antes de ser nombrado CEO :)). Sass, Bourbon, Restive…

Una foto publicada por Dani Latorre (@danilat) el

Con eso quedaba unir el trabajo de todos y finiquitar detalles para empezar con la carga y gestión de contenidos.

La mayor parte de la aplicación encajaba bien con la rails way y resultó muy rápido de implementar, pero además tuvimos que hacer algunas cosillas un poco raras. Para la carga inicial de datos tuvimos que importar ficheros CSV y transformar las coordenadas desde UTM a latitud/longitud. Mientras que para pintar las rutas y el término municipal en el mapa escribimos un parser de KML para luego pasarlo a JSON/JS y poder usarlo con Google Maps.

En cuanto al despliegue, lo tenemos hospedado en heroku y para le almacenamiento de imágenes utilizamos Amazon S3.

Al ser un proyecto financiado con fondos públicos es norma de la casa el hacerlo en abierto desde el principio. Así que el código está disponible para el que quiera utilizarlo o para quien quiera conocer nuestras vergüenzas en más detalle en un repositorio de github. La licencia elegida fue la Affero GPL.

Así que nada, si un día os pasáis cerca de San Esteban de Litera, os propongo ese plan :)

Semanas 398 y 399

Este par se semanas hemos tenido festivo local y por eso no tenía demasiado lío para poder escaparme a Bilbao un año más para asistir a la Bilbostack. Y como siempre me lo he pasado muy bien, es un evento muy social, pero aún así me quedé con las ganas de hablar con alguna gente.

Pude acercarme al fin a unas Geeks Talks, que he perdido totalmente la rutina de ir y dudo mucho de ser capaz de recuperarla en el corto plazo.

Además esta semanas eché una mano en organizar el FridayDojo de Refactoring de Angular y el Zaragozarb con los amigos de Spines. En ambas charlas no se habló tanto de lo geniales que son los respectivos frameworks elegidos en cuestión (por mucho que lo puedan ser o no), si no que se ponía sobre la mesa el tema de cómo “protegerse” de ellos. Y cómo cada uno intentaba conseguir el equilibrio entre tratar de abstraerse y desacoplarse de estos frameworks, con el sacarle el mayor partido a la productividad que prometen a la hora de escribir código.

Hemos seguido trabajando algunos leads pero sin cerrar nada de cierta entidad. Aunque sí cerré una pequeña colaboración para tratar de terminar de lanzar un proyecto que ya está muy avanzado y que lleva ya mucho tiempo atascado, un proyecto basado en Refinery.

En cuanto a los proyectos y colaboraciones en marcha:

  • En Outreach Tool estuve refactorizando algunas cosas, limpiando código, actualizando algunas gemas y modificando parte de la lógica del proceso de compra de la tienda. También aprovechamos mi visita a Bilbao para hacer una pequeña reunión y vernos las caras.
  • Hice algún pequeño cambio en Bichomanía y tuvimos una comida de trabajo para ver cómo nos organizamos en los próximos meses para seguir haciendo pequeñas mejoras.
  • Con Maubic estuvimos, entre otras cosas, de despliegues a staging. Este par de semanas estuve trabajando en tratar de dejar lo más finos posibles los servicios en los que venía trabajando; además de empezar a trabajar en uno nuevo. También estuvimos revisando la cobertura de los tests, viendo algún analizador de código estático y poniéndonos ya serios con el logging en los servicios con vistas a los próximos meses.
  • Nos dieron la aceptación de One-step, así que desplegamos a producción y ya lo dejé facturado.

Buena semana.

Semana 397

Volviendo a la normalidad, ya salió una semana que pude sacar bastantes cosas. Incluido el recopilar las facturas para cumplir con la declaración trimestral.

Estuve trabajando en gestionar leads que fuero llegando después de navidades, respondiendo varios correos y hablando sobre un proyecto que parecía interesante, pero no nos terminó de encajar por varias cosas (tiempos, tecnologías…) y recomendamos a gente que pensamos que quizás pueda ayudarles.

Además estuvimos trabajando (yo la verdad que muy poco) en redactar el presupuesto formal para el posible proyecto sobre el que llevamos un tiempo trabajando.

En cuanto a lo que hay en marcha:

  • Hubo que hacer algún retoque en One-step, también en la configuración del despliegue. Así que volvemos a estar a las espera del OK del cliente final.
  • Con Maubic empecé la semana con poca dedicación dando soporte al equipo. Y acabé volviendo a una dedicación que venía siendo más habitual en semanas anteriores, para implementar y desplegar en staging un nuevo servicio y tener una sesión de trabajo para definir las siguientes tareas a realizar.
  • Continuamos trabajando en los cambios de Bichomanía, quedó pendiente resolver algunos recursos gráficos para poder lanzar los cambios de la home.
  • Como la semana empezó tranquila, aproveché para dedicar algo de tiempo a Mosica. Para coordinar y publicar un post resumen de conciertos en 2015 (como de costumbre, estas cosas dan más trabajo de lo que parece) y dedicarle algo de tiempo a hacer unas mejoras en la aplicación móvil, pero que se quedaron a medias.
  • Tuvimos una reunión para hablar del diseño visual de Outreach Tool, que va a quedar un poco a la espera de tener listos los prototipos de productos físicos.

Buena semana.