Semana 311

Aún estoy recuperándome de estos días en Granada por el UXSpain, donde he podido atender a un puñado de charlas relacionadas con el diseño y la experiencia de usuario, además de pasármelo genial y acabar totalmente agotado.

En las ediciones anteriores los compañeros del estudio me animaban a ir pero por fechas no me cuadró ninguna de las 2 ocasiones, al fin este año me pude estrenar y acompañarles.

image

Seguramente haya gente a la que le sorprenda que un tipo como yo, supuestamente dedicado más que nada cuestiones de programación backend, se cruce la península para asistir a un evento de diseñadores. Hace mucho tiempo que me interesan cuestiones de diseño y en algunos proyectos me ha resultado de mucha utilidad tener ciertos conocimientos. Además, pienso que todo desarrollador debería tener algunas nociones de diseño/UX, a nada que se involucre una interfaz de usuario en el software que se desarrolla.

En fin, que como tocaba salir el jueves de buena mañana, mi semana sólo tuvo 3 días productivos:

  • En mhop hice más pequeñas mejoras en la publicación de piezas por parte de los diseñadores, además de hacer algunos cambios en la zona de administración relacionados con la gestión de campañas.
  • Terminé el scraping de Doc, no sin problemas, generando un par de ficheros JSON con un puñado de decenas de miles de registros de datos.

Buena semana.

Semana 310

Esta semana tocó trabajar mucho en temas de web scraping, cosa que no es muy agradecido a nivel de resultados y en el que rara vez no encuentras impedimentos nuevos que te hagan la puñeta. Tengo pendiente ordenar ideas y escribir un poco sobre este tema.

El lunes/martes tocaba un nuevo viaje relámpago al pueblo, pasándome antes por el EINA de la Universidad de Zaragoza para ver la charla de iniciación a Agile organizada por Agile Aragón. Otra cosa para la que saqué tiempo fue para pedir el voto por correo para las europeas, aún estoy dudando entre el par de opciones que más me llaman la atención.

Por cierto, este jueves me pasé a ver The Coup en concierto. No los conocía hasta hace poco, pero muy recomendables.

Los proyectos en marcha:

  • Terminé los detalles del scraping del servicio que tenía pendiente para ShuttleCloud.
  • En mhop estuve mejorando algunas cosas de la UI para hacer más intuitivas un par de funcionalidades nuevas y analizando algunos procesos que hay que tratar de automatizar. También estuvimos hablando y estudiando un pequeño experimento que seguramente llevemos a cabo antes de verano.
  • Empecé a trabajar en Doc, el pequeño trabajo de scraping. Al final lo estoy haciendo con una combinación de requests, lxml y selenium.

Buena semana.

Semana 309

Empezaba a tener pinta de que se me volvían a juntar el resumen de 2 semanas, pero no! :P

Fue una semana un poco rara, empecé un tanto desconcentrado y un poco bajo de ánimos sin saber muy bien porqué, supongo que se juntan un puñado de pequeñas cosas y ya te despiertas con el pie cambiado. Tener un par de días así evidentemente afectan a la productividad de uno. Y no, estoy seguro que no tiene que ver con lo de que iba hacerme un poco más viejo :D

De saraos esta semana sólo me pasé por la quedad mensual de AgileAragón, donde estuvimos hablando acerca de la charla de Pedro y María del lunes (ya ayer) y dándoles feedback. Luego nos fuimos a tomar algo y unos pocos terminamos cenando algo ligero.

Al final me contrataron esta semana el presupuesto de web scraping, aunque como es bastante pequeño no sé ni si vale la pena poner nombre en clave. También se llevó algo de tiempo una pequeña gestión relacionada con proyectoSinNombre.

Y el finde jaranas, claro.

Los proyectos en marcha:

  • En mhop algunas mejoras de copy, puesta en producción la subida de piezas para los diseñadores, alguna pequeña mejora con vistas al SEO.
  • Darle caña a hacer scraping de un nuevo servicio para ShuttleCloud.
  • Con minchador estuve trabajando en automatizar los despliegues, que hasta ahora aún eran muy manuales, pero aún falta alguna cosa que mejorar. También una pequeña funcionalidad para permitir añadir el código de analytics a los restaurantes para no perder trazabilidad de sus visitas. Y acabar con el poder descargar un icalendar de las reservas tras haber sido confirmada.

Buena semana.

Semana 308

Otra semana con un festivo justo en medio, va a resultar hasta extraña esta semana sin ninguna fiesta que rompa en seco el ritmo, con cenas y aniversarios varios de por medio tampoco el fin de semana saqué tiempo para hacer gran cosa.

Durante la semana estuve trasteando con un pequeño experimento usando mini_magick para editar imágenes, pero nada medianamente serio. No es que sea la gran cosa, pero me puse por fin a donar a la Fundación Civio una pequeña aportación mensual, por dar un pequeño apoyo (sí, lo publico para ver si alguno más se anima :P). Tras una pequeña reunión que tuvimos cerca del CIEM, relacionada precisamente con Open Data, me pasé a trabajar una tarde por las oficinas de Spines.

También estuve preparando un presupuesto para un pequeño trabajo de web scraping del que estuve en conversaciones la semana anterior, aunque no tengo nada claro que vaya a salir.

Sobre los trabajos que hay en curso:

  • Esta semana el grueso del trabajo se lo llevó mhop. Varias reuniones por skype, solucionar algunas peticiones para mejorar la gestión del contenido, empezar a usar file upload para la subida de imágenes y terminar la versión inicial de creación de campañas por parte de los diseñadores.
  • También actualizar la versión de Grails en minchador y empezar a trabajar en generar ics en las confirmaciones de las reservas.
  • Cruzar algunos mails para preparar la puesta en producción de parte del proyectoSinNombre.

Buena semana.

Poniendo a los bancos de alimentos en el mapa con CartoDB

Hace cosa de un mes que escribí y me publicaron un guest post en el blog de CartoDB: Mapping food banks in Spain with CartoDB, en el que explicaba como hice mi pequeño proyecto sobre los Bancos de Alimentos.

Si ya me cuestan mis esfuerzos el escribir, mi inglés es bastante flojo, por lo que lo escribí antes en castellano para centrarme en lo que quería explicar y dejar para después la traducción y revisión. En fin, que lo dejo a continuación en castellano.


Hace ya cosa de un par de meses que me propuse buscar información de bancos de alimentos, tras navegar bastante por ahí tan sólo encontré un listado de los miembros de FESBAL (Federación Española de Bancos de Alimentos). Pero mi principal era tratar de recopilar el máximo, fueran de esa federación, de organizaciones religiosas o totalmente autogestionados.

No me gusta la caridad, una cita que leía hace poco de Eduardo Galeano decía: "A diferencia de la solidaridad, que es horizontal y se ejerce de igual a igual, la caridad se practica de arriba-abajo, humilla a quien la recibe y jamás altera ni un poquito las relaciones de poder". Estando de acuerdo y viendo que la solidaridad por parte del estado es más bien poca, más importante es que alguien pueda tener un plato en su mesa, aunque sea por caridad.

En fin, la cosa es que a esto se sumaba que hacía tiempo que conozco CartoDB y tenía pendiente probarlo en algún momento, y esto encajaba a la perfección. Debo decir que no pasarían de las 2 horas desde que tuve los datos en crudo hasta que tenía hecho el mapa y lo tenía integrado con la web hecha con Sinatrarb.

Obteniendo los datos

Para empezar estuve haciendo un web scraper de la web de FESBAL con python (usando Mechanize y BeautifulSoup) para generar un CSV con todos los datos[1] en crudo para poderlo importar a una tabla de CartoDB.

Importando los datos a CartoDB

Una vez en el dashboard de CartoDB, simplemente tuve que crear una nueva tabla importando datos desde ese CSV. Una vez procesados los datos utilizando la opción de georeferenciación automática de las direcciones de cada banco de alimentos (tuve que arreglar unas pocas a mano al ser direcciones un tanto extrañas).

Dándole estilo a la visualización

Y luego crear la visualización a partir de esa tabla, para jugar con el wizard de visualizaciones. Elegir el estilo de los marcadores, el contenido de los infowindow, los tiles del mapa...

Una vez teniendo la visualización la incrusté en una pequeña web hecha con sinatrarb y Foundation CSS para darle la estructura.

Usando el API de CartoDB

En esta web también hay una integración (bastante simple) con el SQL API para mostrar el forma de listado los banco de alimentos y el poder añadir más por parte de los visitantes. Desde luego que es un API para que el que teniendo tiene mucho potencial a nada que se tengan conocimientos de SQL y manejar mínimamente las respuestas en JSON.

Para el listado se muestran sólo los que estén georeferenciados, cosa que se hace desde la gestión de tablas de cartoDB, de este modo sirve también de moderación de contenidos: si no está georeferenciado no aparece en el mapa ni en el listado.

Aunque no se conozca mucho Ruby, el código es bastante explicativo:

El añadir nuevos bancos de alimentos, también resulta bastante evidente con unos mínimos conocimientos de SQL, como puede verse en este snippet de código:

El resultado se puede ver en http://bancosdealimentos.herokuapp.com/, mientras que tanto el código de scraping como de la aplicación Sinatra están disponibles para su libre consulta y uso en mi cuenta de Github.

 

Mapa de Bancos de Alimentos