Datos libres, públicos y accesibles

Los datos públicos que manejan las administraciones han de ser dispuestos libremente para todos los ciudadanos. Han de serlo de manera gratuita, pues el coste de replicación de los mismos es cero, además de que ya hemos pagado a los técnicos, funcionarios , etc, que se encargan de mantenerlos. Más aún, estos datos deben de publicitarse, ser accesibles e interrogables. Con esto último me refiero a que cualquiera pueda consultarlos, sea una persona o una aplicación de cualquier entidad o empresa.

Razones para liberar los datos

Los motivos son de los más variados:

  • Transparencia en el gobierno de la nación, las comunidades y los municipios
  • Ofrecer servicios de información de lo que emergerían nuevas oportunidades empresariales. Por ejemplo, Idealista podría ofrecer servicios de búsqueda basados en la cantidad de servicios, como colegios u hospitales, existentes en una determinada zona.
  • Rebajar los costes de las empresas por mantener duplicados de bases de datos públicas como apartados de correos o municipios.
  • Ofrecer elementos reales de contraste para que cualquiera puede ejercerse una opinión meditada, especialmente los medios de información.

Ejemplos de datos a liberar

Algunos ejemplos de datos susceptibles de ser libres, públicos y accesibles, aunque pensando un poco seguro que se te ocurren una docena más:

  • Códigos postales y municipios
  • BOE
  • Censo
  • Datos demográficos: densidad de población, colegios, personas por hospital, policiías…
  • Datos de económicos, como la cesta de la compra, el PIB, etc
  • Datos de votación según encuestas públicas
  • Información sobre transporte público
  • Información del tráfico
  • Datos de empresas y marcas
  • Patrimonio de los cargos públicos
  • Presupuestos y contabilidad de las diferentes administraciones
  • El tiempo, el clima
  • Índices de contaminación y alergias
  • Diccionario de la RAE

Ejemplos a seguir

EE.UU. lleva mucha ventaja en esto, prácticamente es posible conseguir cualquier dato público de manera gratuita. Además, últimamente han aparecido iniciativas para hacer evidente toda esta información, bien mediante APIs abiertas, bien mediante la la representación de la misma mediante diversas soluciones gráficas. Sirvan como ejemplo GapMinder adquirida recientemente por Google y de la que hablé en Una presentación perfecta; la más reciente Freebase; Swivel aun en alfa;Citizendium de los creadores de Wikipedia; ManyEyes de IBM para explorar gráficamente conjuntos de datos; Neighboroo tiene cientos de datos demográficos de EE.UU.

Todo esto viene de conocer nomecalles, del Sistema de Información Territorial del Instituto de Estadística de la Comunidad de Madrid. De cara al usuario resulta muy pobre y la usabilidad dista muchísimo de la mínimamente deseable, pero la cantidad ingente de datos accesibles de manera pública la convierten en una herramienta muy poderosa: fotos aéreas desde 1950, mapas topográficos, de parcelas, negocios, instituciones, transporte público, barrios, distritos y un largo etc. Y además se pueden explotar miles de datos, de hecho no es posible conocer de que tipo. Una vez que entras al mapa, arriba a la izquierda hay un iconito con el mapa en colorines de Madrid, justo antes del interrogante, llamado “Proyectar variable temática”. Al pinchar sobre el se pueden realizar búsquedas del más diverso tipo sobre todos los datos del Instituto, como se puede ver en el video de demostración.

Ejemplos: “prestamos de las bibliotecas por municipio”, “lineas de ADSL en la comunidad”, etc

Si fuese sencillo de usar resultaría muy útil, y se además se ofreciese como servicio para usar por otras empresas vía API, entonces sería la leche.

Conclusión

El objetivo es complejo y los implicados incontables, pero se puede hacer poco a poco. Los beneficiados somos todos: más y mejor información, más útil. Menos dinero para el autobombo de las distintas administraciones y más inversión en tecnologías para desarrollar APIs abiertas que, más pronto que tarde, redundarán en su beneficio. Ciudadanos más inteligentes, con mejor información para decidir; menos buro-políticos, más democracia directa. ¿Acaso hay alguien a quien no le interese?

Caso práctico: interfaz de compra de entradas

¿Cómo solicitaríamos una entrada de cine a la taquillera con una interfaz de búsqueda típica web? Más o menos sería algo así.

Vía Buscarama.

DhtmlHistory (+ bug en IE7)

dhtmlHistory

DhtmlHistory es un interesante mini framework para simular el comportamiento del botón “Atrás” en aplicaciones web realizadas con AJAX, desarrollado por Brad Neuberg.

En la página del autor podeis encontrar varios ejemplos de funcionamiento junto a una explicación mas detallada, así como descargaros la última versión.

Error en IE7

A continuación un caso curioso que me ha acontecido recientemente usando DhtmlHistory junto a IE7.

Estamos desarrollando una aplicación web con AJAX que requería controlar el botón “Atrás”. En IE7 experimentaba un comportamiento extraño al cambiar estilos dinámicamente, siempre que tenían que ver con ocultar o mostrar partes de la página. El efecto era que la página se desplazaba o centraba en la venta aleatóriamente.

Finalmente pudimos comprobar que eliminando el javascript dhtmlHistory.js el efecto no se producía. Centrados en el objeto de error nos dimos cuenta gracias al DOM Explorer Toolbar que el HTML se estaba generando incorrectamente, con todo el código HTML en la etiqueta HEAD y únicamente con un TEXTAREA en el BODY:

DOM Explorer Toolbar for IE

Al eliminar el dhtmlHistory.js, el HTML se generaba corréctamente. Supongo que, pese a que renderizaba bien el HTML generado por incorrecto que fuese (recuperación de errores lo llaman), cuando se aplicaban estilos de manera dinámica se hacía incorrectamente al encontrarse en el HEAD.

La solución

La solución es sencilla: generar el HTML necesario una vez que la página se ha cargado, para lo que se han modificado los métodos init() y create() en dhtmlHistory.js:

init():

   /** private */ init: function() {
      // write a hidden form into the page
      var styleValue = "position: absolute; top: -1000px; left: -1000px;";
      if (this.debugging == true) {
         styleValue = "width: 30em; height: 30em;";
      }

      var newContent =
         "<form id='historyStorageForm' "
               + "method='GET' "
               + "style='" + styleValue + "'>"
            + "<textarea id='historyStorageField' "
                      + "style='" + styleValue + "'"
                              + "left: -1000px;' "
                      + "name='historyStorageField'></textarea>"
         + "</form>";
      document.body.innerHTML+=newContent; // CHANGED:

      this.storageField = document.getElementById("historyStorageField");

   },


create():

   /** private */ create: function() {
      // get our initial location
      var initialHash = this.getCurrentLocation();

      // save this as our current location
      this.currentLocation = initialHash;

      // write out a hidden iframe for IE and
      // set the amount of time to wait between add() requests
      if (this.isInternetExplorer()) {
         var aux = "<iframe style='border: 0px; width: 1px; "
                               + "height: 1px; position: absolute; bottom: 0px; "
                               + "right: 0px; visibility: visible;' "
                               + "name='DhtmlHistoryFrame' id='DhtmlHistoryFrame' "
                               + "src='blank.html?" + initialHash + "'>"
                               + "</iframe>";
        document.body.innerHTML+=aux; // CHANGED
         // wait 400 milliseconds between history
         // updates on IE, versus 200 on Firefox
         this.WAIT_TIME = 400;
      }

Y finalmente, mover la inicialización que hay al final del fichero al manejador de carga de la página, en nuestro caso:

    Event.observe(window, 'load', init_page, false);

    function init_page(){
        /* Initialize dhtmlHistory*/
        window.historyStorage.init();
        window.dhtmlHistory.create();
    }

Actualización [28.feb.2007]

La solución que aporta Stefan Gustafsson en los comentarios es bastante más secilla y además funciona en IE 5. Consiste en mover la inicialización al final de la página, os la recomiendo.

Que aproveche.

Test de usabilidad del sistema de aparcamiento automático de Lexus

Regálale una cámara a unos tipos para que prueben el nuevo sistema de aparcamiento automático de Lexus y te darán algo como ésto.

Lexus Park Assist

Aquí, sin embargo, parece que tiene más éxito.