Blog

¡Aventura Oceánica vuelve a la carga!

Kike y José Carlos vuelven a subirse al Bahari para retomar la Aventura Oceánica, tras un año de parón tras partir el mástil poco después de cruzar el cabo de hornos. El sábado pasado salieron de Valparaíso (Chile) hacia la Isla de Pascua. Desde Prodevelop les deseamos toda la suerte para que sigan con su impresionante viaje alrededor del mundo, esta vez en pleno Pacífico.

Aventura Oceánica en 2012-02-01

Puedes seguir su itinerario día a día desde su web gracias a un sencillo desarrollo que llevamos a cabo en Prodevelop hace ya más de dos años utilizando PostgreSQL/PostGIS, Spring y Java Mail en el servidor y Open Layers en la capa de presentación.

Experimental SQLite/Spatialite layer in gvSIG Mobile

Xerial is a SQLite JDBC driver developed by Taro L. Saito. It includes the necessary native libraries to access SQLite databases from a Java application and it also provides a slower pure-Java version of it which extends the number of platforms where this can be used.

I have implemented an experimental vector driver in gvSIG Mobile 0.3 to read/write Spatialite-compatible SQLite databases. Xerial is not aware of the Spatialite requirements, but it's very easy to create the right tables and fields so that other applications can recognize the resulting SQLite file as a Spatialite DB.

This short video shows the result. The steps shown are:

  1. Open a shapefile in gvSIG Mobile.
  2. Export the layer to SQLite.
  3. Open the resulting SQLite DB as a new layer.
  4. Add a polygon to the layer and save it.
  5. Use ogr2ogr to export the resulting SQLite DB to SHP. This proves that everything was OK and our file is recognized as a Spatialite DB.
  6. Open the new shapefile in gvSIG Mobile to see the changes again.

Rendering local shapefiles with HTML5

Thanks to Tom Carden's javascript functions from his shapefile-js project and the new HTML5 local file access API, it is very easy to load and render any shapefile stored in the client's device.

You can test it here.

If you don't have a shapefile close at hand, get one of these: [China], [Europe], [South America], [United States].

Comments:

  • I have only tested it on Windows 7 + Google Chrome v. 15.x and Mozilla Firefox 8. I'm curious to see if it works on smartphones.
  • Choose a line or polygon SHP file (not a very big one).

Esta es la idea: establecer área de interés arbitraria sin perder velocidad

En este ejemplo en desarrollo se trata de una tabla Oracle Spatial en la que hemos filtrado el área de interés señalada "a mano alzada" por el usuario:

Video de las JIDEE 2011

La semana pasada tuvo lugar las JIDEE 2011, también conocidas como II Jornadas de Infraestructuras de Datos Espaciales, que desde el año pasado se celebran conjuntamente entre España y Portugal.

Dicen que una imagen vale más que mil palabras. Probablemente se pueda extender, exagerando, a que un vídeo vale más que mil imágenes. Aquí dejo el video resumen de la organización, donde aparece entrevistada nuestra compañera Amelia del Rey, responsable del área geoespacial de Prodevelop.

User Scripts and Open Layers

Yesterday we have a visit to the office and we wanted to show an application on a development server on a customer facilities. They opened for us the port to access the app, but they forgot to open the TileCache web server so our OpenLayers map was full of pink tiles and we cannot open the service.

What to do? Well we didn't have the time to catch de sys admins so I figured that changing somehow the map Base Layer by any other suitable WMS layer from our national SDI, precisely our great ortophoto service (called PNOA) would be enough to not get the embarrassing pink tiles.

So I ended up writing an small User Script (my very first one) that could be easily added to the Chrome/Chromium browser using the Tampermonkey extension (similar to the Greasemonkey extension of Mozilla Firefox). The script looks for a layer called "Base" and changes its url and the layer name of the parameters object. It also does the same task on the overview map.

// ==UserScript==
// @name Dirty OL Hack
// @namespace http://www.prodevelop.es
// @description Changes the OL base map
// @include http://my-great-ol-app/path/*
// ==/UserScript==

window.addEventListener("load", function(e) {

  Ext.onReady(function(){
    map = path.to.my.map;
    l = map.getLayersByName("Base")[0]
    l.params.LAYERS = "pnoa";
    l.url = "http://www.idee.es/wms/PNOA/PNOA";
    map[map.getLayerIndex(l)] = l;

    c = map.getControlsByClass("OpenLayers.Control.OverviewMap")[0];
    c.layers[0] = l;
    c.ovmap.layers[0].url[0] = c.layers[0].url
    c.ovmap.layers[0].params.LAYERS = c.layers[0].params.LAYERS

    l.redraw();
    c.ovmap.layers[0].redraw()

  });
}, false);

The point is that this code has to run when all the Ext.JS layout and OpenLayers code has been initialized.

It has more holes than an emmental cheese for sure, but as dirty as is, it worked fine for the demo. I have no idea why it doesn't work on Firefox but works on Chrome and in Opera but who cares? :-).

Reflexiones sobre las JIIDE 2011

Hoy @visancal y yo, junto con Amelia hemos estado en las Jornadas Ibéricas de Infraestructuras de Datos Espaciales celebradas en Barcelona. Hemos tenido la oportunidad de hablar del "Nuevo Geoportal de la Diputación de Valencia: Guía Urbana" y de la "Implantación de Geoportales con soporte técnico profesionalizado en software libre".

La experiencia una vez más ha sido muy positiva. A parte de sumar una presentación más, he tenido la oportunidad de aprender más cosas a cerca de tecnologías geoespaciales e IDEs. Se ha hablado mucho de estándares, interoperabilidad, software libre, nos hemos encontrado y con compañeros de profesión y hemos compartido experiencias...

El formato de las jornadas ha sido, para mi gusto, demasiado compacto, 80 ponencias con 5 sesiones en paralelo, no daban para seguir o enterarte de todo, así que me ha dado tiempo a estar en un par de presentaciones de implantaciones de IDE y una en la que se comparaban los datos entre OSM y Cartociudad para unas determinadas zonas de la Comunidad de Madrid.

Lo que más me ha llamado la atención es lo que se ha hablado en las dos ponencias plenarias, la de la mañana y la de la tarde. Por la mañana el director del IGN (Alberto Sereno) y el del Instituto Geográfico de Catalunya (Jaume Miranda) han improvisado una ponencia (debido a la falta del ponente principal) en la que han mostrado opiniones contrarias respecto a la calidad de los datos geográficos en España, la (des)organización de los distintos organismos públicos que se encargan de la publicación de esos datos y lo más importante a cerca de la usabilidad y difusión del trabajo que se está haciendo de liberación de servicios y datos a través de las IDE.

La conclusión a la que se ha llegado es que hay un problema de usabilidad: el ciudadano no conoce las IDE, no las entiende y en definitiva no le son de utilidad. Al final, parece que todo el esfuerzo que se hace de publicación y liberación de datos geográficos acaban "muriendo" en usuarios técnicos, lo cual no es malo, pero podría ser mejor.

Por la tarde, el ponente plenario era @edparsons, responsable del contenido geográfico de Google Earth y Google Maps. No sé si ha sido casualidad pero ha tocado de pleno y ha dado en el clavo respecto a las conclusiones que se habían sacado por la mañana, el tema de la usabilidad. La conferencia ha sido muy "a la Google - don't be evil". Ha empezado predicando a cerca de la colaboración entre las IDE tradicionales y los servicios geográficos de Google: ha comparado las IDE con el servicio Google earth builder, la directiva INSPIRE con la publicación de APIs sencillos y útiles. Pero finalmente, ha habido una diapositiva y un comentario aplastante: Google Earth ha llegado a los mil millones de descargas y ponía una gráfica donde se pretendía poner de manifiesto que las IDE tienen un número muy bajo de usuarios y muy técnicos (lo que él ha llamado "people in white coat") mientras que por ejemplo Google Earth está destinado al "mass market". Ese es el punto clave que ha querido transmitir, conseguir utilizar la tecnología para hacer llegar la información geográfica al gran público.

Así pues, mientras por la mañana directores de institutos geográficos se lamentaban de que nadie les entendía y nadie "les usaba", por la tarde se hablaba de cómo un producto que expone información geográfica es usado por millones de personas de manera natural. Respecto a esto, sólo dos apuntes más: mientras que la ponencia plenaria de la mañana, se ha pasado 45 minutos del tiempo previsto (desbaratando el resto de ponencias), la de la tarde la ha clavado en 45 minutos (que era el tiempo que tenía), sin parar de hablar todo el tiempo, con avería del proyector incluida. El otro apunte es respecto a la herramienta Google earth builder, es un servicio que permite almacenar en la nube información geográfica para posteriormente publicarla con un click en Google Earth/Maps o a través de un servicio WMS, más sencillo imposible.

En definitiva, visto lo visto, parece que se habla demasiado de estándares, interoperabilidad, IDEs, que están muy bien y son necesarias, pero al final el gran caballo de batalla que es acercar la información geográfica al ciudadano de a pie es algo que está muy lejano. Sin duda es algo para reflexionar.

gvSIG Mini and POIProxy

This summer I've spent some of my time playing around with a personal project called POIProxy.

POIProxy is a service that handles requests to any public POI service providing a well defined REST API. It's able to parse JSON and XML responses and serve standard GeoJSON format, just providing a configuration file containing the URL and response format of the POI service to consume. And the best part, it's free software ;)



So, the service can be consumed by any GIS client, for example it's being used at this demo of OpenLayers social that @jacarma, @xurxosanz and @visancal developed for this year's FOSS4G. Although one of my pending tasks was giving support to gvSIG Mini to load the data provided by POIProxy, and that's what I've done this weekend.

At the moment it's just a "Proof of Concept" as I have no more time to spend on that (but I needed to see all that POIs on Android :P). So gvSIG Mini now is able to load, display the points and alphanumerical data of any layer provided by POIProxy and cache the data on disk, to speed up the data load after the first download.




As POIProxy is able to serve points from any WFS layer, now gvSIG Mini has also that capability. This is a snapshot loading the sample "world:cities" layer that comes into a standalone geoserver distribution.



Next step should be support search and reverse geocoding from POIProxy to gvSIG Mini, so we can finally replace the retired Namefinder service.

gvSIG Mini, KML and multi-layer support

These days, @fergonco and me have been refactoring gvSIG Mini. The refactor was intended to decouple the MapView from any Activity, so it can be a (more) reusable widget.

Well, that goal has been fully accomplished, so while @fergonco has been giving support to add controls to the map (in the OpenLayers way), I've been playing around with the brand new vector API and adding support to load several tiled layers to the MapView. The result seems (in my opinion) very promising, besides there's some work left to have it fully working.

Here are some snapshots of gvSIG Mini loading two raster tiled layers and several local and remote KML files (some of them from the Geoportal de la Comunitat Valenciana, developed by Prodevelop some months ago)


PNOA (TMS) + Cartociudad (WMS)



PNOA (TMS) + Cartociudad (WMS) + KMLs



OSM + Google Maps transparent layer + KMLs



OSM + Google Maps transparent layer + KMLs



I will try to have all that features available in gvSIG Mini (at least for a demo) for the 7th gvSIG conference next December.

Curso de Scrum Manager

Esta semana pasada he asistido a un curso de Scrum (Manager) organizado por el COIICV.

No voy a entrar a explicar qué es Scrum... de eso ya hay millones de páginas que lo hacen, pero sí algunas conclusiones que he sacado.

Scrum vs CMMI

Scrum es una metodología que se opone al modelo o los procesos de CMMI y se entiende... mientras Scrum tiene su origen en el desarrollo de productos innovadores buscando velocidad y adaptabilidad, CMMI tiene su origen en proyectos militares. El primero se centra en las personas y en la flexibilidad, el segundo en los procesos.

La diferencia fundamental entre ambos es que Scrum se centra en obtener un producto de valor para el cliente, mientras que CMMI en obtener ese producto con la calidad, costes y fechas pre-establecidas.

He estado leyendo opiniones al respecto de cómo sacar partido de Scrum y CMMI (a la vez) en una organización, pero no he sacado nada en claro... supongo que dependerá de cada caso.

Como curiosidad, el curso realmente trataba de Scrum Manager... que se supone que es la síntesis entre metodologías ágiles (como Scrum) y modelos predictivos (como CMMI), pero la verdad es que no vi ninguna diferencia entre Scrum y Scrum Manager.

Scrum no es una bala de plata

Ni Scrum ni probablemente ninguna metodología. Habrá casos (proyectos u organizaciones) en los que Scrum encaja perfectamente y es posible aplicar esa filosofía y otros en los que no. Se habló que es útil en proyectos, con requisitos muy cambiantes o incluso donde no los hay y se van ocurriendo sobre la marcha (por ejemplo al desarrollar productos innovadores)

En mi opinión, creo que puede ser una ventaja competitiva en start-ups o empresas jóvenes que pueden "vender" o proponer al cliente esa metodología como elemento diferenciador de empresas más tradicionales.

Scrum y las personas

Una de las cosas que me ha llamado la atención es que cuando se habla en Scrum del equipo de desarrollo se hace referencia a: multi-disciplinar, auto-organizado y experto. Entiendo que hay perfiles de personas que encajan mucho más en Scrum que en CMMI. Mientras en el primero el conocimiento está en las personas en el segundo está en los procesos. Da la impresión que Scrum "forma" personas comprometidas y con una clara vocación de mejora y CMMI "forma" personas disciplinadas.

Artefactos

Respecto a los artefactos de Scrum hay varios que me parecen muy útiles y que se deberían utilizar sea cual fuere la metodología:

El gráfico burn-down: Esencial para responder a la típica pregunta de "¿Cuánto os falta para acabar?". Además creo que es la mejor manera que he visto de visualizar el progreso de una iteración y fácil y rápida de mantener.

Las reuniones diarias del equipo de desarrollo: La forma más rápida y directa de conocer cada día el estado de las tareas.

Añadiría además, algún mecanismo de visualización, para las tareas de un Sprint, como por ejemplo Kanban.

Hay otros que no me parecen demasiado novedosos: Por ejemplo, los sprints en realidad se parecen a las iteraciones en un ciclo de vida iterativo-incremental o el product backlog que parece simplemente el alcance del proyecto...

Otros como que el cliente forme parte del equipo o se implique tanto en la metodología, es algo que ya se me escapa...

Scrumban

Dicho esto, hay una cosa que ni Scrum, ni CMMI y que ninguna metodología resuelven: Las estimaciones.

De hecho en Scrum, se puede utilizar la técnica de estimación póker, donde participa todo el equipo, pero al final se habla del "juicio de expertos", es decir, tienes que tener a unas cuantas personas expertas en estimar (eso existe?). A todo esto, la estimación poker, vale la pena probarla :).

Vamos que al final, si la cagas estimando, tendrás tus sprints, pero igualmente no llegarás a tiempo, y sí, cuando acabes un sprint podrás "negociar" lo que entra en el siguiente con el cliente, pero igualmente como la estimación es algo tan volátil, los retrasos se producen igual y el desastre ocurrirá. A parte de esto, puede ocurrir que en los sprints se tienda a postergar las tareas hacia el final o que no se mantenga la tensión durante toda la duración de este y se produzcan retrasos.

Sobre esto, leí algo este verano y consiste en mezclar Scrum con Kanban (Scrumban). Con Kanban lo que se consigue es tener un flujo de trabajo continuado, ajustar la carga de trabajo y predecir con mayor claridad los tiempos de entrega de tareas, eso sí, desaparecen los sprints (o iteraciones).

En definitiva, recomendable el curso de Scrum y más para un novato en la gestión de proyectos como yo :). Para los interesados, en este vídeo dice todo lo que hay que saber sobre Scrum en 6 minutos y en esta presentación está todo el contenido del curso.
Distribuir contenido