Libro: Javascript. The definitive guide. David Flanagan.

Hace poco terminé de leer JavaScript. The definitive guide, de David Flanagan (la sexta edición). El libro tiene unas mil página aunque la segunda parte es una guía de referencia (que viene bastante bien para cuando trabajas off-line).

El libro cubre tanto el core del lenguaje como la API de cliente, es decir las funcionalidades que proporcionan los navegadores, y también tiene un capítulo sobre jQuery. A pesar de ser de 2011 está orientado hacia HTML5 y ECMAScript 5, así que cubre cosas como la API de Geolocalización, WebWorkers, WebSockets, Client Side Databases, …

Empecé a leerlo, sin conocer demasiado javascript y con la idea de adquirir buenas prácticas de desarrollo en javascript y en ese sentido me decepcionó un poco. El libro está bien, pero es poco opinativo. Javascript es un lenguaje muy amplió de por sí, y creo que cuando empiezas con él, es necesario que te fijen un par de ideas claras en la cabeza y no que te presenten todas las opciones disponibles. Por ejemplo, presenta muchos ejemplos de código donde enseña a lidiar con las diferencias entre navegadores, o como gestionar eventos, cuando en la práctica la mayoría usamos una librería tipo jQuery que nos abstraiga de esos problemas.

Mi próxima lectura seguramente será Javascript, the good parts, de Douglas Crockford, que es bastante más corto, y más orientado a promocionar buenas prácticas que a orientarse en el lenguaje. Cuando lo lea podré comparar, pero me da la impresión de que es mejor leer primero el de Crockford y luego el de Flanagan.

Supongo que las partes más interesantes variarán según para que tengas que usar javascript, para mi lo mejor del libro seguramente es:

  • Que dedica bastante tiempo al Cross Origin y problemas relacionados. Por ejemplo en la sección 13.6.2, 18.1.6. En la 22.3 que explica la API para que un script pueda pasar mensajes a otro objeto Window. Y en la 18.2 explica como gestionar JSONP.
  • El capítulo 18 en general, donde habla de Ajax (y algo de Commet) es bastante útil para aclarar conceptos.
  • El capítulo 10, es el típico sobre expresiones regulares, pero la verdad es que este merece la pena leerlo. Está bastante bien explicado incluido algunos conceptos avanzados que suelen obviarse.
  • Los capítulos del 6 (Objetos), 7 (Arrays), 8 (Funciones) y 9 (Clases), son para mi la parte central del libro. Conviene leerlos con calma y repasarlos para entender como funciona Javascript. En él tratan temas como los constructores y prototype, el hoisting, closures, o los atributos de las propiedades de los objetos o sparse arrays

Este libro es una muy buena opción si ya sabes algo de Javascript y quieres adquirir fundamentos más sólidos en el lenguaje. Si buscas un libro de introducción al desarrollo web o a la programación en javascript seguramente haya opciones mejores.

 

Otras críticas al libro

Libro: Matar a un ruiseñor

Matar a un ruiseñor es una de las entradas de la wikipedia sobre un libro más largas que he leído. Creo que el libro ha crecido con esa mitificación que tienen los escritores de novela única animada con las teorías conspiranoicas de haber sido escrito por Truman Capote, amigo de la autora.

No me entiendan mal, Matar a un ruiseñor es un buen libro, de hecho un muy buen libro. Pero, cuando lo lees buscando una novela sobre La Gran Depresión, no puede compararse con Las Uvas de la Ira, y cuando lo lees porque aparece de primero en un montón de rankings distintos, decepciona un poco.

También puede ser simplemente que debería haberlo leído hace unos cuantos años, o que sea demasiado americano y que cada vez que leo una novela de aprendizaje lo comparo con Memorias dun neno labrego y por contexto y la edad en lo que lo leí, no hay color.

Matar a un ruiseñor es una buena opción si buscas una novela sobre la américa de la primera mitad del siglo XX o eres un (pre) adolescente buscando algo un poco más interesante que Crepúsculo.

Puedes comprarlo en tu tienda habitual.

Referencias

Aptana. Un IDE para desarrollo web

Hace unos meses escribía en el blog que estaba buscando un IDE para desarrollo web el cliente. Al final no me he dedicado tanto a web-cliente como pensaba y he estado jugando más en la parte de backend sobre todo con nodejs.

Dado que es el primer IDE (para web) que pruebo y tampoco tengo gran experiencia en desarrollo web me resulta difícil hacer una buena revisión, pero aquí van algunos pros y contras de programar Javascript en Aptana desde el punto de vista de alguien que viene de Java+Eclipse.

Contras

* El debugger de Apata es incompatible con la última versión de firebug por lo que debes instalar una más antigua. Tuve unos cuantos problemas intentando instalarlo y no he sido capaz de hacer un cambio en el código y recargar la página sin tener que relanzar todo firefox a través del debugger. En resumen el debugger no he sido capaz de hacerlo funcionar de una forma cómoda y he vuelto a firebug.
* El preview de la página cuando está puesto el código del google analytics hace que se cierre aptana.
* Para que el Code Assist funcione correctamente, hay que tener unos ficheros de documentación en un formato especial (ScriptDoc), y practicamente ninguna librería los tiene.
* En el «Save Action» sólo se pueden quitar los trailing spaces, estaría bien que permitiera al menos reformatear el código
* No es capaz de navegar por ocurrencias correctamente. Si marco una variable no soy capaz de moverme entre las apariciones de esa variable (Ctrl + .) como en java. Tampoco es capaz de encontrar desde donde se llama a una función (aunque este es un problema genérico de los lenguajes dinámicos). Aquí hay un listado de funcionalidades aunque no está del todo actualizado. No he probado a documentar las funciones con ScriptDoc, tal vez así el editor sea más inteligente.
* La documentación es escasa
* Así como cuando programo en Java todo el equipo usa Eclipse, con web no pasa lo mismo. Así que la idea de tener que crear workspaces y proyectos dentro del workspace llenos de directorios de configuración ocultos me resulta conceptualmente incómodo.

Pros

* Me gusta la consola interactiva. Puedo probar código sin tener que abrir la consola javascript del navegador.
* Me gusta el Content Assist de html, creo que funciona bastante bien.
* Al margen del problema con el debugger, me gusta la funcionalidad de preview ( https://wiki.appcelerator.org/display/tis/Side-by-Side+Previewing ). Me permite poner en dos pestañas paralelas mi código (html, css, js) y el navegador empotrado de aptana, al salvar uno de los ficheros la previsualización se recarga automáticamente. Está bien para ir viendo como queda. Una pena que no haya encontrado forma de debuguear desde el preview.
* Me gusta el «Go To Declaration (F3)», aunque se equivoca de vez en cuando, si por ejemplo has estado haciendo pruebas en otro fichero, poniéndolo a las funciones el mismo nombre puede saltar a la que no es.
* Me gusta la buena integración (heredada de eclipse) con el escritorio. Poder copiar un fichero en el explorador de archivos y pegarlo en una vista de aptana, o copiar un snippet de código de una página web y pegarlo en Aptana creando automáticamente un nuevo fichero
* El sistema de templates para no arrancar proyectos como una página en blanco funciona bien.
* Es relativamente fácil, extender la funcionalidad a través de Snippets y Rubles. Aunque los Rubles hay que escribirlos en Ruby

Enlaces de interés sobre aptana

* Una revisión genérica de Aptana.
* Documentación sobre html, css, y javascript

Conclusiones

Me da la impresión de que la mayoría de opiniones favorables vienen de gente que lo uso en su día cuando no había opciones libres/gratuitas mejores. Además da la impresión de que el proyecto está muerto desde que lo compró Appcelerator.

Creo que el caso de uso más favorable para Aptana es que ya estés usando el IDE en el backend (ruby, php, python) y sólo toques ocasionalmente el cliente por lo que no te merece cambiar de entorno.

Memrise, una plataforma para memorización

logo de memriseLlevo un tiempo haciendo algunos cursos en memrise.com. Una página que dice usar los últimos descubrimientos científicos para mejorar la forma en la que aprendemos:


Memrise is based on several important scientific discoveries about how we learn. First, our system of mems (mnemonics and memory aids) promotes elaborate encoding- encouraging the learning brain to do more by engaging the imagination, and thus helping lay down stronger, more durable memories.

Secondly, Memrise makes use of Spaced Repetition, helping you review items at expertly spaced intervals to help you maintain them in memory in the most efficient manner possible. Reminders space out in time as your knowledge for an item gets deeper, meaning you don’t forget, but don’t waste time reviewing what you already know.

Third, Memrise systematically exploits the Testing Effect, which shows that by actively recalling a memory, you strengthen it. Because the degree of strengthening to a memory correlates with the difficulty of the test, Memrise automatically makes the tests more difficult over time, again helping you boost your learning in the best way possible.

Tiene cursos de todo tipo y en bastantes idiomas distintos, pero al contrario de lo que dice en la página no está enfocada hacia el aprendizaje si no hacia la memorización. Digamos que con este sistema no vas a aprender inglés, ni química, ni a desarrollar pensamiento espacial, pero aprenderás nuevo vocabulario, la tabla periódica o las capitales del mundo.

Lo que menos me gusta de Memrise es la calidad irregular de los cursos. Son los propios usuarios los que los crean por lo que hay de todo, y es difícil saber a priori cual está bien y cual está mal. La forma en que son ordenados en la web no coincide con mis criterios. Los comentarios que dejé en algún curso comentando errores nunca fueron respondidos, …

Los cursos que más me han gustado son:

* Administración territorial de españa. Es el único de geografía que he visto que incluye mapas en el proceso de memorización. Al contrario que la mayoría que son sólo una ristra de textos tipo país – capital, este muestra un pequeño mapa de ubicación como elemento principal de la memorización.
* Curso completo de inglés. Este me ha gustado porque se limita al apredizaje de vocabulario o frases sencillas sin dobles traducciones. Además todas las palabras incluyen un audio de pronunciación, y aparece un ejemplo de uso en una frase.

En resumen, la página tiene posibilidades como demuestran los dos cursos que he citado pero la calidad de los cursos por ahora es regular. Es una pena por ejemplo que no se pudiera «copiar» un curso, modificarlo y republicarlo mejorado. Si publicaran el código de la página o hicieran una especie de github de cursos con forks y pull-request creo que tendría muchas más posibilidades.

Por ahora el único éxito que le veo, es quien quiera pasarse 10′ al día en la página en lugar de en el facebook, o profesores con un poquito de innovación en la sangre que se curren cursos en la plataforma como complemento para sus clases.

Trabajar con Word (docx) y Excel (xls y xlsx) desde Java

Iconos Word y Excel de MS OfficeEn Cartolab hemos trabajado ultimamente en procesar y generar documentos de Excel (xls y xlsx) y de Word (docx) desde Java. Tras probar algunas librerías open source las que estamos usando son:

Apache POI Spreadsheet para hojas de cálculo de Excel. Es fácil de usar y funciona bien tanto para los formatos binarios antiguos de xls (Excel 97-2007) como para xlsx (Excel 2007 OOXML). El How-To y la Quick Guide de la web son suficientes para empezar a escribir código.

Docx4j para documentos docx (OpenXML de Word 2007). La mejor forma de usarla es crear un documento vacio o con las cabeceras y pies de página desde Word o LibreOffice y definir en él los estilos. Desde nuestro código abrimos el documento y vamos añadiendo nuevos párrafos u otros elementos asignándole los estilos que hemos definido mediante el método addStyledParagraphOfText(styleID, text);. El styleID lo obtendremos consultado el fichero styles.xml que está comprimido dentro del docx. Si tenemos que hacer cosas más elaboradas el código se complica bastante pero al menos permite hacerlas. Para arrancar puedes leer como substituir placeholders por tu propio contenido, este otro artículo un poco más general y los ejemplos de código que vienen con la librería.

Para trabajar con documentos .doc de Word también probamos con Apache POI pero es complicado de usar y el resultado no es demasiado bueno. Así que por ahora no tenemos una alternativa válida para este formato.

En algún otro momento también hicimos pruebas con:

  • JasperReports que está muy bien para generar pdf pero el odt y el word lo saca maquetado en forma de tablas por lo que no nos valía.
  • iText. Que en versiones antiguas de la librería permitía sacar los resultados en rtf y era sencilla de emplear. Pero las últimas versiones se ha creado una nueva librería que no hemos probado todavía.

En esta pregunta de StackOverflow dan más alternativas. ¿Alguien usa otras librerías, preferiblemente open source y gratuitas, distintas a estas?

Serie: Los Soprano

the_sopranosLa casualidad hizo que empezara a ver Los Soprano el día anterior a la muerte de Gandolfini.

Es difícil (si no imposible) aportar algo sobre la serie que no haya sido contado ya. Y mucho menos sobre ese famoso final del que se han escrito sesudos ensayos (contiene spoilers).

Yo empecé a verla con ánimo crítico, me la comparaban con The Wire y eso eran palabras mayores. No cometas ese error. Son series distintas y no tienen nada que ver. Y cada una es muy grande a su modo. Si tuviera que escoger una me seguiría quedando con The Wire, por lo que me aporta como contexto, pero Los Soprano, con Gandolfini a la cabeza es inolvidable e increiblemente entretenida.

No te la pierdas (en idioma original).

Organizar los ficheros de routes en nodejs – expressjs

Una de las tecnologías que estamos probando en Cartolab para aplicaciones web es nodejs con express como framework. Hay un montón de tutoriales de como empezar a usarlos, pero a poco que escribas empiezas a preguntarte como organizar el código, y ahí empiezan los problemas. express es un framework no opinativo, es decir proporciona un montón de utilidades pero da liberar total al usuario sobre como mezclarlas, así que se van desarrollando distintos modos de hacerlo.

La primera pregunta en mi casa sobre organizar el código fue acerca de los ficheros bajo el directorio routes. Podemos entender las routes de express como el equivalente al controlador en ese patrón llamado MVC que cada framework implementa como quiere, o viéndolo de otro modo como el mapeo entre una url y una función.

Vamos a ver cuatro estrategias distintas, cada una con sus ventajas e incovenientes.

Todo en app.js

La versión que se suele emplear en los tutoriales de iniciación. Escribimos en un único fichero todo el código de la aplicación.

  • Poco código boilerplate
  • Añadir una nueva url implica tocar un sólo fichero
  • Nada reusable
  • Sólo válido para proyectos pequeños

Es tan sencillo como escribir el mapeo antes de crear el servidor y usar funciones anónimas para la lógica


app.get('/', function(){res.send('root page'});

Mapear en app y la lógica en ficheros distintos

Este es el segundo ejemplo más habitual. Las url se definen en el fichero principal y las funcionalidades se agrupan en distintos ficheros bajo el directorio routes.

  • Añadir una nueva url implica tocar como mínimo dos ficheros
  • Favorece la reutilización, pero siempre debemos colocar las url a mano
  • Implica escribir más código que en el anterior y perder legibilidad

A pesar de que es muy habitual ver esto no me gusta porque no ganamos demasiado, y tener que hacer cambios en dos ficheros acaba introduciendo errores.


// app.js
var routes = require('./routes');  // Coje el fichero ./routes/index.js por defecto
var user = require('./routes/user');

app.get('/', routes.index);
app.get('/users', user.list);


// routes/user.js
exports.list = function(req, res){
res.send("respond with a resource");
};


// routes/index.js
exports.index = function(req, res){
res.send("root page");
};

Hacer el objeto app global y derivar todo hacia los ficheros de routes

Evitamos declarar app como variable local, para poder usarla en el resto de ficheros sin tener que preocuparnos de pasar parámetros. El código queda muy limpio pero se dificulta el testing y se pueden introducir bugs difíciles de detectar.

A mi me gusta esta aproximación cuando tenemos poco código y queremos hacer algo rápido, pero hay que ser consciente de los problemas que tiene.

  • No es una muy buena práctica hacer app global, en el siguiente punto vemos una mejora. Pero al hacerlo así obtenemos código más legible
  • Es bastante modular (excepto por hacer app global)
  • Es bastante legible
  • Hay separación de conceptos, cada fichero se encarga de unas determinadas url y funcionalidades

Referencias

Veamos como quedaría la implementación


// app.js
app = express(); //IMPORTANT! define the global app variable prior to requiring routes!
require('./routes');


// routes/index.js
require('./main');
require('./users');


// routes/main.js
app.get('/', function(req, res) {
res.send("root page");
});


// routes/users.js. list() could be an anonymous function, this is only for showing it in another way.

function list(req, res) {
res.send("user list");
};

app.get("/users", list);

Inyectar app en los ficheros de routes

Es similar al ejemplo anterior, pero el objeto principal es inyectado en los controladores en lugar de usarlo como una variable global. Sacrificamos un poco de legibilidad (hay que meter bastante código «inútil») pero a cambio ganamos en modularidad y testabilidad.

Veamos una posible implementación, teniendo en cuenta que este código no lo he visto en ningún sitio, lo he escrito a partir del artículo de dailyjs y podría tener algún otro problema.

A mi esta es la aproximación que más me gusta, cuando el código aumenta y no nos queremos ir a soluciones más complicadas.


// app.js
var app = express();
// ...
app.use(express.json());
require('./routes')(app); // Must be called after app.use(express.json()) and urlencoded;


// routes/index.js
module.exports = function(app) {
require('./main')(app);
require('./users')(app);
};


// routes/main.js
module.exports = function(app) {
function index(req, res) {
res.send("root page");
};
app.get('/', index);
};

Otras estrategias

Hay estrategias más complejas, que por ahora no me ha hecho falta probar.

Montar un firefox independiente para desarrollo web

Firefox_ScreenshotEn Cartolab llevamos ya una temporada investigando en uso de tecnologías web en el ámbito de la ingeniería cvil.

Una de las cosas que me incomodaron durante los primeros experimentos, era no tener un entorno de desarrollo específico. Al margen del IDE, en desarrollo web son fundamentales las herramientas que proporciona el navegador que usas para el testeo. En este caso, me molesta el mezclar plugins de desarrollo, con plugins normales que uso para la navegación. Tengo la sensación que se me descontrola el entorno de trabajo.

La solución es configurar un navegador específico para desarrollo. Lo cual, al menos en el caso de firefox, es más sencillo de lo que parece:

  1. Le echamos un ojo a las instrucciones de mozilla de como instalar firefox a mano. En resumen: descargar y descomprimir. Yo lo descargue en /usr/local/development
  2. Si ahora simplemente ejecutamos el fichero binario firefox veremos que no hemos ganado nada, aún tendremos nuestros marcadores, plugins, etc… Esto es porque firefox, guarda esta información en perfiles y usa por defecto el perfil indicado en el fichero $HOME/.mozilla/firefox/profiles.ini
  3. Debemos por tanto crear un nuevo perfil, pero antes haremos una copia de profiles.ini
  4. Creamos el perfil como recomiendan desde mozilla, ejecutando firefox -P. Yo cree el perfil dentro de la propia carpeta del firefox descargado a mano, para poder tener un sistema autocontenido.
  5. El paso anterior habrá modificado el fichero profiles.ini, añadiendo el nuevo. Pero lo que nosotros queremos es tener el modo desarrollo lo más aislado posible así que restauramos la copia que hicimos anteriormente
  6. Creamos un miniscript en nuestro PATH o donde queramos que ejecute nuestro firefox de desarrollo y le pase el parámetro -profile y el path al perfil de desarrollo que creamos. Yo cree un script ffdev en /usr/local/bin con el siguiente contenido

    #!/bin/sh
    cd /usr/local/development/firefox
    ./firefox -profile development-profile

Los menos puristas habrán observado, que en realidad, no es necesario complicarse tanto la vida bajando un firefox aparte. Llegaría con:

Crear un perfil nuevo en la carpeta por defecto, marcar el antiguo perfil como el que hay que usar por defecto y crear un script que arranque el nuevo perfil firefox -P "Nombre del Nuevo Perfil"

Si hemos optado por la primera altenativa y finalmente decidimos pasar a la segunda, un sólo firefox en el sistema que se actualice al ritmo que marca nuestra distribución, el cambio es tan sencillo, como copiar la carpeta de perfil de desarrollo a una nueva ubicación (el
directorio por defecto de perfiles sería lo lógico) y modificar el script para indicarle la nueva ruta del perfil y que firefox tiene que
usar. Si quisieramos poder abrirlo desde el Gestor de Perfiles o con la opción -P en lugar de -profile deberemos añadirlo a profiles.ini

¿Creéis que es útil configurar un perfil para desarrollo o no hace falta? ¿Cual de los dos métodos preferís?

Qué es Twitter Bootstrap y cómo aprender a usarlo

Generar una plantilla básica sobre la que empezar un proyecto web que tenga en cuenta los distintos navegadores y tamaños de dispositivos consume mucho más tiempo del que debería. Para minimizar este problema durante los últimos dos o tres años han surgido varios frameworks de diseño web. Si te dedicas a esto y no has estado debajo de una piedra este tiempo, sin duda habrás oído hablar de twitter-bootstrap, que es el que se ha hecho más popular.

¿Qué es bootstrap?

Bootstrap o twitter-bootstrap es un framework creado originalmente por dos desarrolladores/diseñadores de twitter para acelerar el diseño de nuevas aplicaciones web.

El framework proporciona clases css y código javascript para definir el layout de la página, crear componentes que respondan a eventos y estilizar los elementos html más habituales. Estos ejemplos están hechos con la versión 2, pero valen para hacerse una idea.

Podemos decir que los principios en los que se basa la última versión (la 3) son:

  • Responsive Design: Que según mi definición particular consiste en que la página trata de «hacer lo correcto» al ser visualizada independientemente del dispositivo y tamaño de la pantalla. El término fue acuñado por Ethan Marcotte en 2010.
  • Mobile first: Al contrario que en la versión 2, en la 3, el diseño responsivo es la opción por defecto al trabajar con bootstrap
  • Cross Browser: Trata de ser compatible con la mayoría de navegadores.
  • Integración con jQuery: Está muy integrado con jquery para el que define nuevos plugins
  • Buenas prácticas: Trata de emplear algunas de las prácticas más extendidas en cuanto a usabilidad, uso de css3/html5, organización del código, …

¿Qué me aporta bootstrap?

Si eres desarrollador con poca experiencia en diseño te proporciona una forma muy rápida de crear un layout responsivo básico de la página en la que empezar a meter tu código.

Si eres diseñador, obtienes una enorme cantidad de clases CSS que personalizar a tu gusto, sin tener que partir de cero.

Si quieres aprender a hacer las cosas mejor, es un compendio de buenas prácticas.

Aprendiendo a usar bootstrap

La documentación de la página de bootstrap debería ser tu principal fuente de información, sobre todo porque el resto de documentación tiende a quedar más desactualizada, aún así, hay una serie de tutoriales que a mi me han resultado más útiles para empezar, sobre todo porque te permiten coger ideas más generales de lo que permite hacer.

Los enlazo en el orden que creo que merece la pena seguirlos:

  1. Tutorial de w3resource: Hay partes del tutorial que están con la versión 2, pero cubre muchos aspectos
  2. Understanding twitter bootstrap 3. También se le escapa alguna etiqueta de la v2 como el container-fluid, pero en general te permite aprender a diseñar un ejemplo básico.
  3. Una introducción a los componentes que proporciona bootstrap como el scrollspy o las ventanas modales
  4. Actualizado 31/Agosto/2015. En Udemy acaban de publicar un post con una muy buena introducción a boostrap.
  5. Bootstrap 3 Tutorial – An Introductory Course | Udemy. Una serie de videotutoriales muy chulos donde emplean unas cuantas clases que no he visto en otros sitios. Es de pago pero barato. Con los recursos anteriores seguramente ya no te será necesario este curso, así que mira alguno de los vídeos de muestra antes de comprarlo

Otros recursos

Desde que nació bootstrap han ido apareciendo un montón de recursos que sacan partido a este framework

Conclusiones

En un par de días puedes revisar los enlaces que se proporcionan en este artículo, y refactorizar alguna web sencilla que tengas para que use bootstrap. Será un tiempo bien empleado que recuperarás con creces.

No he probado otros frameworks del estilo, pero supongo que serán parecidos, cada uno con sus fortalezas y debilidades. Si le tienes manía a bootstrap, escoge otro, pero desde luego es una herramienta a meter en tu caja si eres desarrollador web.

Pregunta abierta al INE. ¿Por qué las geometrías de las secciones censales no son públicas?

Con motivo del Open Data Day, hemos intentado hacer una visualización para la que necesitábamos las geometrías de las secciones censales.

Al parecer por la política del INE respecto a estos datos no es posible obtenerlos así que les he escrito un correo. Actualizaré este artículo con lo que respondan.

 

Con motivo del Open Data Day [1] estamos intentando hacer una visualización para la que necesitamos las geometrías de los distritos censales.

He visto que es posible obtener información de las secciones censales a través de WMS [2] pero se especifica que no es posible obtener las geometrías a través de WFS [3].

Parece ser que esto es debido a la política del INE, que es el propietario de esta información [4].

Me gustaría que me informaran si esto es correcto y en caso de no serlo de donde puedo obtener dicha información.

En caso de que efectivamente exista una política de no publicación acerca de esos datos, me gustaría saber cual es el motivo de que la ciudadadanía no tenga acceso a ellos.

Les hago saber que he reproducido este mensaje en mi blog [5] y que con su permiso reproduciré también la respuesta que me den.

Muchas Gracias.

[1] http://opendataday.org/
[2] http://www.idee.es/wms/IDEE-Limite/IDEE-Limite
[3] http://www.cartociudad.es/portal/web/guest/directorio-de-servicios
[4] http://listserv.gva.es/pipermail/gvsig_usuarios/2012-February/021286.html
[5] http://conocimientoabierto.es/pregunta-abierta-al-ine-por-que-las-geometrias-de-las-secciones-censales-no-son-publicas/659/

 

Actualización 25/02/2014

El lunes por la mañana me llegó este correo de respuesta del INE:

Estimado Sr.Sra.: En relación con su consulta le informamos lo siguiente :

el INE facilita como petición a medida los Ficheros de Cartografía Digital, estos ficheros contienen la digitalización de los contornos georeferenciados de todos los municipios y de gran parte de las secciones censales, según coordenadas UTM, huso 28, 29, 30 y 31. Los ficheros tienen formato EXPORT de Arclnfo (e009) y SHAPE.

en la siguiente dirección puede consultar las secciones disponibles

http://www.ine.es

-productos y servicios

-información estadística

-información a medida y ficheros especiales

http://www.ine.es/ss/Satellite?L=es_ES&c=Page&cid=1254735550786&p=1254735550786&pagename=ProductosYServicios%2FPYSLayout

-estos ficheros tienen un coste dependiendo de si solo quiere uno o todos.

hay que solicitarlos como petición a medida

las peticiones a medida se pueden realizar mediante este medio o bien directamente al Area de Atención a Usuarios. Fax 91-5839158

en las peticiones de información a medida se indicará los datos de la persona de contacto (nombre, dirección postal, teléfono, fax y correo electrónico si dispone de él) y detallando lo mejor posible la información que se desea

-Atentamente

-Área de Difusión por Internet.

— CALIDAD DE LA INFORMACIÓN —
La presente información se ha obtenido siguiendo estrictos procedimientos de control de calidad; no obstante, pueden producirse errores involuntarios o de interpretación, por lo que las cifras ofrecidas pueden, en algún caso, no ser correctas o adecuadas a su petición.

NOTA: Por favor, no responda a este correo ya que los correos electrónicos recibidos en esta dirección se borran automáticamente. Si necesita volver a contactar con nosotros utilice un nuevo formulario de consulta http://www.ine.es/infoine indicando su número de referencia.

En resumen, que hay que pagar por los datos. La verdad es que les escribí inicialmente por curiosidad, no porque tenga ninguna necesidad de los datos y no querría alargar esto de forma indefinida, por lo que si alguien se anima a colaborar con una respuesta o dar alguna idea se lo agradecería. Estaba pensando en enviarles como respuesta un correo parecido al que escribo a continuación. ¿Qué opináis?. Para facilitar la colaboración he pegado este documento en un etherpad de libre modificación.

Hola,

Les escribo de nuevo con relación a la cuestión con número de referencia XXXX. Esta cuestión era relativo al acceso pública a las geometrías de las secciones censales.

Lo primero darles las gracias por su pronta respuesta y la claridad de la misma y notificarles de  nuevo que estoy copianda mis preguntas y sus respuestas de forma abierta en esta dirección de internet [1].

El motivo de solicitarles esta información en primer lugar, era para demostrar el poder que tiene el disponer de datos abiertos a la hora de la toma de decisiones y la participación ciudadana en un trabajo que estaba realizando junto a otra gente de forma voluntaria como motivo del Open Data Day.

No quiero alargar esto de forma indefinida, pero a la vista de su respuesta me surgen una serie de dudas que les manifiesto:

* ¿Por qué los costes de acceso a esta información no son claramente enunciados? A pesar de ser el INE un «organismo autónomo» entiendo que en el fondo tiene un carácter (¿y financiación?) público y por tanto sería interesante hacer un esfuerzo en detallarlos.

* Si bien creo que ni la LISIGE ni la Ley de Reutilización de la Información Pública obligan a la publicación gratuita de la información, el espíritu de estas normativas es el facilitar lo máximo posible el acceso. Si bien es difícil cuantificar [2] las ventajas de disponer de la  mayoría de información geográfica de forma gratuita, si que parece existir un consenso general de que ello favorece el desarrollo económico y social de un país. Con esto en cuenta, mi pregunta sería si los ingresos obtenidos por el instituto por la comercialización de esta información son lo suficientemente significativos como para que compense limitar el acceso a los mismos a las empresas y ciudadanía.

* Mi última cuestión de índole más práctica sería bajo que terminos o licencia de uso se distribuyen las geometrías de las secciones censales. En concreto, en caso de adquirirlas podría luego revenderlas o publicarlas de forma abierta en internet.

Por último, felicitarles por el trabajo que realizan, dado que somos muchos los que podemos realizar una labor comercial o investigadora gracias a los datos que publican.

Atentamente

[1] http://conocimientoabierto.es/pregunta-abierta-al-ine-por-que-las-geometrias-de-las-secciones-censales-no-son-publicas/659/

[2] http://blog-idee.blogspot.com.es/2011/11/que-valor-tiene-la-informacion.html