"¿Cómo se hizo..?" equipo #T49 en #abredatos y congresoabierto.com
El desafío
El desafío abredatos busca generar debate en torno a la necesidad de que los organismos públicos proporcionen datos (que al fin y al cabo son nuestros) de forma accesible, que permita al ciudadano su uso y reutilización
Para ello, equipos de toda españa se reunieron durante este pasado fin de semana (7 y 8 de mayo de 2011) para realizar, una aplicación que consumiese datos públicos, obtenidos de fuentes públicas, normalmente en formatos difíciles de procesar (si los datos fuesen realmente accesibles el trabajo se simplificaría mucho) en tan sólo 48 horas.
La pregunta que se quiere hacer llegar al ciudadano es:
"Si 4 personas en tan sólo 48 horas pueden crear esto, usando datos muy complicados de obtener, ¿que podría hacerse con fuentes de datos de calidad?"
Cómo se hizo www.congresoabierto.com?
Viernes por la tarde
El equipo (Rubén, Pablo, Alberto e Iván) se reune físicamente con todos sus integrantes por primera vez. Se plantean las líneas generales de la aplicación:
... iremos a la página web del congreso de los diputados, creamos un robot que busque todos los textos de sesiones de los últimos 4 años, después crearemos un motor que sea capaz de leer todos esos textos, identificar al autor, analizar las palabras clave para ver de que se ha hablado (economía, terrorismo, vivienda, etc), y comparar esas palabras clave con los resultados de las encuestas del CIS, para poder puntuar cada palabra clave con el peso proporcional a la preocupación de los ciudadanos obtenida del barómetro del CIS…
...Ah sí!, y obtener con otro robot todas las fotos de los diputados del congreso, pasarlas por un servicio de modificación de imágenes (funny.pho.to) – menos mal que estos si usan datos accesibles – para generar 3000 o 4000 caricaturas con las que darle un toque divertido a la aplicación..
.. después con todos estos datos, crear una web que permita elegir contrincantes, crear los efectos de lucha, y mostrar los resultados del ganador, basándonos en la puntuación obtenida por cada candidato en sus participaciones en el congreso..
..y si da tiempo, podemos hacer estadísticas en el tiempo de participación en el congreso, ver quienes son los diputados más activos, etc. - hubo muchas otras ideas.
Buenos, ya sabemos lo que queremos hacer, paso fundamental para poder hacerlo. Cenamos, unas cervezas y a dormir.. ;)
Sábado
A las 9:00 comenzamos. Mientras uno va investigando que tecnología de backend utilizamos (candidatas: ASP.NET MVC, node.js y RubyOnRails), otro miembro va trabajando en la concepción de la web, otro comienza a trabajar en el “robot” con la heurística de parseo de texto de sesión y el miembro restante empieza a programar un script que accederá a todas las sesiones del congreso para obtener el texto plano de cada una.
– commits, buena comida, cerveza, cena y más commits –
Al final del día tenemos lo siguiente:
- habemus backend!: después de probar cloudfoundry e investigar heroku, decidimos usar EC2 de amazon (por cierto, son instancias gratuitas, por si quieres probarlo), donde instalamos node.js y REDIS. Redirigimos los DNS y colocando www.congresoabierto.com leemos: “Hello yeeahh!”. Esto funciona!
- habemus textos de sesiones!: un script en ruby nos permite recorrer las más de mil sesiones de la última legislatura, descargando cada una de ellas al disco duro para posterior análisis.
- habemus estructura de página con html inicial!: a falta de pulir el diseño, ya tenemos definido el layout y concepción inicial!
- habemus número de intervenciones por diputado en cada sesión!, así como el número de palabras, y otros datos relacionados de cada una. Un problema no trivial, ya que ubicábamos las palabras de cada candidato en base a su nombre, que era representado en texto en formatos en cada ocasión diferentes (mayúsculas, solo nombre, nombre y apellidos, entre paréntesis, etc). Además, unas veces se aludía al diputado para cederle la palabra y otras veces para diferentes motivos.
- habemus imágenes divertidas!, con 4 procesos de generación de imágenes corriendo en paralelo (menos mal que funny.pho.to aguantó la caña que le dimos!) encolamos para manipulación más de 4000 caricaturas, que se fueron alojando en el disco de Amazon EC2. Tenemos que agradecer por cierto al servidor de EC2 que se quedara toda la noche trabajando en la generación de imágenes mientras el resto nos íbamos a jugar a la Xbox y tomar cerveza... ;)
commits y más commits, cena, cervezas, un poco de xbox 360 con kinect (cómo controlaba Rubén el juego de bolos!) y a eso de las 3 a.m a dormir.
Domingo
Sin madrugar mucho volvemos a la carga. Las imágenes ya estaban generadas pero viendo que nuestro servidor estaba tan ocioso le encargamos unas cuantas más xD. El parser de texto estaba funcionando, pero estaba desarrollado en .NET así que se creó un programa para generar código en node.js que insertara los datos en REDIS. :D
Ya teníamos logo, y el diseño mejoraba a cada hora a mejor!
No nos reímos ni nada usando el vozme.com. Si quieres hacerte una idea clica aquí!!!.
A media tarde teníamos combates y efectos de puños usando javascript.
La integración final nos llevó hasta las 11:59 (en los últimos minutos los botones HTML y estilos parece que cobraban vida propia….) habemus aplicación!
Agradecimentos
Gracias al proyecto scalabble, por ceder el espacio durante todo el fin de semana, a Fernando por su empatía y colaboración. También nos lo pasamos muy bien con los compañeros de http://polendamus.com/.Fué un fin de semana muy divertido!
Algunas fotos (cortesía de Pablo Jimeno)