Millón de Monos

Weblog de Manuel Aristarán

Arreglando el sitio de AFIP

La Administración Federal de Ingresos Públicos es frecuentemente citada como uno de los mejores ejemplos de uso de tecnología en el estado. Pero parece que andan flojos de web developers actualizados, porque hace años que la función de imprimir constancia de monotributo (que debe ser uno de los servicios más requeridos de todo el sitio) funciona solamente en Internet Explorer.

Este userscript para Firefox+Greasemonkey o Chrome soluciona el problemita.

En caso que algún programador voluntarioso de AFIP esté leyendo esto y tenga ganas de arreglarlo: no anda porque usan window.navigate.. Agreguen esto en algún lado y todos contentos:

window.navigate = function(u) { window.location.href = u };

Es una línea de código, AFIP. Media pila.

Actualización Felipe Lerena acaba de publicar una extensión para Firefox que usa este código: Modernizador de la AFIP


Elecciones para Gobernador de Córdoba

La justicia electoral de la provincia de Córdoba también publicó un sitio web con los escrutinios de la elección a gobernador.

Como en el caso de la Ciudad de Buenos Aires, el sitio cordobés provee una interfaz que se alimenta de datos estructurados (así, por ejemplo).

Como siempre, el proceso consistió en obtener los datos, procesarlos con un script para adecuarlos a un formato apropiado para subirlos a Google Fusion Tables.

Cuanto más oscuro el color, mayor el porcentaje obtenido por De La Sota.


Resultados de elecciones en Buenos Aires

(Publicado originalmente en la lista de correo de GarageLab)

En lo que ya podría llamarse “el mapa de la semana”, hice una visualización con datos de la primera vuelta de la elección para jefe de gobierno en Capital Federal:

Resultados primera vuelta elección jefe de gobierno. Cuanto más oscuro el color, mayor la diferencia que sacó Macri frente a Filmus.

Un poco de background técnico

Los porcentajes de la elección salieron de la página que puso el GCBA. No publican CSVs como en Santa Fe, pero los grafiquitos los generan con un Javascript convenientemente copypasteable (ahorrándonos el scraping), que tiene esta forma: candidatos_comuna_10 = {    'label': ['Porcentaje de Votos'],    'color': ['#9bc3d4','#547980','#45ada8','#9de0ad','#e5fcc2','#afb7e9'],    'values': [{       'label': 'PRO',       'values': [40.23]       },{       'label': 'FPV',       'values': [27.13]       }, ....    ] };

Esos objectos javascript los transformé en un CSV con Python y después un poco de limpieza con Google Refine. De ahí, derecho a un Fusion Table.

El mapa de las comunas porteñas está construído a partir de dos fuentes de datos: el shapefile de Barrios que publicó el USIG del GCBA y la relación Barrios-Comunas que creó Juan Codagnone en Freebase . Este proceso se hizo a mano editando el mapa con Quantum GIS. Exporté eso a KML y también lo subí a Fusion Tables.

Finalmente, se combinan (merge) las dos Fusion Tables, se configura el estilo de visualización para el mapa y listo: tabla final.

Quizás lo más aprovechable de todo esto sea el mapa de Comunas (en KML), que varios andaban necesitando .


Datos abiertos en elecciones de Santa Fé

La provincia de Santa Fé hizo un trabajo buenísimo con la publicación en la web de los resultados de las elecciones 24 de julio de 2011. También sorprendieron con la publicación de los datos crudos de los escrutinios. Con esto, no sólo permiten el acceso libre e irrestricto a la información sino que incentivan el análisis independiente y la combinación (mashup) con otras fuentes de datos.

Un ejemplo

Teniendo a disposición los datos en formato CSV, nos ahorramos el scraping (proceso largo, tedioso y cuya robustez depende de factores que están fuera del alcance del programador). Combinando los resultados de votación por departamento con un mapa departamental de Santa Fe (extraído de GeoINTA), sale este mapa:

(Elección de Gobernador. Amarillo: victoria de Del Sel, Rojo: victoria de Bonfatti. Hacé click sobre el mapa para ver los porcentajes. Mapa en formato KML)

Este es el ejemplo de aplicación más simple que se me ocurrió. Con un poco más de trabajo, combinando con otras fuentes de información e introduciendo otras herramientas, podemos alcanzar perspectivas diferentes de esta información. Ese es el espíritu de la trasparencia y la publicación de información: poner los datos bajo otra luz, aprovechar las potentísimas herramientas que tenemos a disposición, aprender nuevas maneras de leerlos.


Algunas notas sobre el Captcha-gate

Hace un año hice público a Gasto Público Bahiense. El objetivo del proyecto es brindar otra manera de explorar los datos de compras a proveedores que publica la Municipalidad de Bahía Blanca. El día 4 de julio de 2011 la Municipalidad lanzó el rediseño de su site, introduciendo una restricción al acceso a los datos de compras, implementada mediante un CAPTCHA. El CAPTCHA es un mecanismo usado por los sistemas online para diferenciar a sus usuarios entre seres humanos y robots. Plantean un problema fácil de resolver para nosotros (tipear un texto que aparece deformado es el más frecuente), pero muy difícil o imposible para nuestros amigos los robots. Google Bot es el agente automático que usa Google para recorrer la Web e indexar su contenido. Más humildemente, Gasto Público Bahiense cuenta con un robot que periódicamente extraía los datos del sitio del gobierno municipal bahiense y los almacenaba en una base de datos para luego mostrarlos a través de una interfaz más clara y fácil de usar que la que provee el municipio. Desde ayer, la Municipalidad obliga a los usuarios de su site a resolver un CAPTCHA para acceder a las órdenes de compra publicadas, en efecto impidiendo el acceso del robot de GPB a los datos de los que se alimenta.

Una pequeña crónica de los hechos

Me enteré de este rediseño ayer por la noche y ví que el acceso a la información de la sección “Transparencia” estaba protegida por un CAPTCHA. Me sorprendí: estos mecanismos no se utilizan en general para impedirle a un robot la lectura de información. Es más frecuente que estén ahí para impedir que, por ejemplo, un agente automático registre en un minuto mil cuentas de email gratuitas y luego las use para enviar spam. A raíz de estos cambios, el robot original de GPB quedó obsoleto luego de un año de fiel servicio. Construir (programar) uno nuevo lleva unos días de trabajo; tiempo muerto en el que GPB no va a actualizar la información. Informé acerca de esto en un anuncio que puse en el encabezado del sitio, lo publiqué en Twitter y pedí difusión. En el transcurso de la noche, muchos se hicieron eco del anuncio y propagaron la noticia. La difusión y discusión continuaron en Twitter durante todo el día de hoy. Eventualmente, la noticia fue levantada por el medio bahiense SoloLocal.info y un rato más tarde por La Nueva Provincia, el diario local. Esta última nota incluye la grabación de una entrevista hecha por la radio local LU2 a Ramiro Villalba, actual secretario de hacienda de Bahía Blanca, responsable de la publicación en la web de los datos de compras municipales. Voy a responder a algunos de los conceptos vertidos por Villalba, empezando por lo bueno.

‘Ahora publicamos mucha más información que antes’

Es cierto y me alegra muchísimo. Ahora hay información de compras devengadas, un listado de proveedores actualizado, información más detallada sobre las operaciones. Con respecto a lo anterior, progresó mucho. Intuyo que la existencia de GPB influyó en estas decisiones.

“La municipalidad no esconde nada, los datos pueden ser vistos por cualquiera”

Cierto. Lo que critico es que se obstruyó adrede el acopio automático de los datos. La información (de toda clase) nos inunda: necesitamos ayuda para poder interpretarla. ¿Qué mejor que un robot que trabaje por nosotros?. Hacen muy rápido y a costo nulo, el trabajo que a un ser humano le llevaría días. Imposible, se les negó el acceso.

“se hizo para evitar a los robots que hacen más lento el sistema”

Existen maneras mucho más apropiadas de optimizar el consumo de recursos de un servidor ante la actividad intensa que podría ocasionar la visita de un robot. Para sitios de “sólo lectura”, como el caso de los datos publicados por la MBB, la solución a este potencial problema es muy sencilla. Un enorme porcentaje de los servidores conectados a la Web reciben las visitas simultáneas de decenas de robots sin que ocasionen problema alguno. En particular, el robot de GPB efectuaba alrededor de 300 pedidos cada 3 días, cifra insignificante incluso para un sitio de bajo tráfico.

“si Gasto Público Bahiense publica la información, es porque la Municipalidad la provee”

Poco que decir al respecto, es cierto. La ordenanza Nº 11.162 así lo requiere.

‘Los robots vulneran la seguridad de la información’

Alguien que “vulnera la seguridad de la información” almacenada en un sistema, está comprometiendo la integridad de los datos. No veo de qué manera la mera lectura de datos públicos está poniendo en peligro la seguridad del sistema de la Municipalidad. Vale aclarar que el robot de GPB no usa trucos ni subterfugios: hace lo que haría una persona que navega el sitio, pero varias veces más rápido.

“A fin del año pasado intentamos algun contacto con [el responsable de GPB], pero vive en Bariloche y no pudimos concretar la reunión”

Lamento que la discusión se desvíe hacia los detalles, pero Villalba no es preciso en su relato. Hubo dos intentos de coordinar encuentros, en octubre del año pasado y en marzo de este año. En octubre todavía vivía en Bahía Blanca, expresaron interés a través de un intermediario y hasta ahí llegamos, no supe más nada. En Marzo, cuando nuevamente manifestaron su interés de reunirse conmigo, yo ya estaba instalado en Bariloche. Propuse una reunión vía Skype, pero no se concretó porque preferían verme en persona. Luego, el mismo intermediario me dijo que Villalba iba a contactarme por email, todavía estoy esperando.

Redondeando

Confío en que la MBB revisará la decisión de restringir el acceso a medios automáticos: así como GPB está transitoriamente imposibilitado de acceder, se prohibió permanentemente la entrada a los robots de los buscadores de propósito general (Google, Yahoo, Bing, etc). Tratándose de información pública, es prioritario facilitar en lugar de entorpecer el acceso.