Esta semana no hemos publicado aún porque estamos en el Google I/O, aprendiendo, hablando con programadores, y cogiendo muchas y buenas ideas para traerlas a Madrid el 25 de Septiembre. Podría escribir largo y tendido sobre todo lo que está pasando aquí, con las charlas y los talleres de programación que se están llevando a cabo, pero voy a resumirlo en tres momentos que, a mi parecer, han sido los mejores. El primero, durante la bienvenida, mientras Steve Horowitz, Engineering Director de Android, nos estaba enseñando algunas de las aplicaciones creadas por vosotros, los programadores. La última era una aplicación que utilizaba StreetView y el acelerómetro del teléfono, de modo que al desplazar el iPhone hacia los lados en posición vertical, las imágenes de StreetView se movían en la misma dirección, como si estuvieses girando sobre ti mismo, físicamente, en el lugar en cuestión del mapa. No pudimos contenernos y los 3000 asistentes, al unísono, dijimos: GUAU.
El segundo mejor momento de las sesiones a las que atendí fue la presentación de Michael T. Jones, Chief Technology Advocate de Google, sobre la información mundial en contexto con Google Earth, durante la que presentó el API de Google Earth. Esta nueva API permite, con una línea de javascript, darle a tus mashups de Google Maps la apariencia de Google Earth e incluir un globo terráqueo 3D en tus aplicaciones. Aunque todavía sólo está disponible para Windows (Mac y Linux en Agosto), se mereció, claramente, un gran aplauso de todos los asistentes. Ya podéis consultar la documentación online y algunas demos, e incluso ver una simpática muestra de un juego online que utiliza el plugin de Google Earth.
Por último, otro gran momento ha sido la bienvenida esta mañana de Marissa Mayer, VP Search Products & User Experience, de la cual me quedo con la siguiente frase: “La imaginación es un músculo”. Ha sido una presentación que nos ha inspirado a todos para enfrentarnos a otro día intenso de sesiones y programación. Y la última anécdota del día: me he encontrado a tres programadores españoles entre 3000 asistentes. ¡Espero que vengan al Developer Day 2008 en Madrid!
Leyendo las entradas que tenía pendientes en mi Google Reader el otro día me encontré con una entrada del blog de Manu, tufunción, que me pareció muy interesante. Esta entrada "Generar imágenes de mapas con Google Chart" nos explica cómo usar el API de gráficos de Google para generar gráficos que representen información numérica en un mapa, en la entrada se nos muestran varios ejemplos y entre ellos:
Distribución de la población mundial
Densidad de la población mundial
De esta entrada me gustó el hecho de que para generar los ejemplos se apoye en la estructura de tablas Word.sql, me parece una pista fantástica para ayudarnos en la generación de este tipo de mapas. Si además nos aporta una función simpleEnconde en php (en el API sólo está en JavaScript) mejor que mejor. En definitiva una lectura muy recomendada para quienes quieran iniciarse en la generación de imágenes con mapas.
Puedes definir el número de fotos que mostrar usando "from=X" y "to=Y", donde Y-X es el número de fotos incluidas. El valor 0 representa la última foto subida a Panoramio. Por ejemplo, "from=0 to=20" extraerá un grupo con las últimas 20 fotos subidas a Panoramio, "from=20 to=40" el grupo anterior de 20 fotos y así sucesivamente. El máximo número de fotos que puedes extraer en una petición es 100.
{"count": 773840,"photos": [ { "photo_id": 532693, "photo_title": "Wheatfield in afternoon light", "photo_url": "http://www.panoramio.com/photo/532693", "photo_file_url": "http://static2.bareka.com/photos/medium/532693.jpg", "longitude": 11.280727, "latitude": 59.643198, "width": 500, "height": 333, "upload_date": "22 January 2007", "owner_id": 39160, "owner_name": "Snemann", "owner_url": "http://www.panoramio.com/user/39160", }, { "photo_id": 505229, "photo_title": "Etangs près de Dijon", "photo_url": "http://www.panoramio.com/photo/505229", "photo_file_url": "http://static2.bareka.com/photos/medium/505229.jpg", "longitude": 5.168552, "latitude": 47.312642, "width": 350, "height": 500, "upload_date": "20 January 2007", "owner_id": 78506, "owner_name": "Philippe Stoop", "owner_url": "http://www.panoramio.com/user/78506" }, ...]}
"count" es el número total de fotos disponible en el set de fotos de esa área. "Photos" es una matriz con las fotos pedidas. Las variables de cada "photo" deberían ser fáciles de interpretar, excepto quizás "owner_id" que indica el id del usuario que subió esa foto, por ejemplo, el 78506 indica que la página de ese usuario es http://www.panoramio.com/user/78506
Hace unas semanas lanzamos Google App Engine, un producto que permite a los programadores ejecutar sus aplicaciones en la infraestructura de Google. Las aplicaciones de App Engine son fáciles de crear, de mantener y de redimensionar a medida que aumenta su tráfico.
En el foro alguno preguntó si había invitaciones, porque de momento el lanzamiento se ha restringido a los primeros 10.000 programadores. Por ahora, a los que ya han pedido la invitación, se les ha dado una cuenta gratuita. Este tipo de cuentas permite un almacenamiento persistente de 500MB así como CPU y ancho de banda suficiente para aproximadamente cinco millones de páginas vistas mensuales. Y podéis utilizar un dominio gratuito appspot.com o utilizar el vuestro propio.
Desde el lanzamiento hemos seguido trabajando y, por ejemplo, el equipo de las APIs de datos de Google acaba de lanzar una actualización de la librería de Python que incluye soporte para Google App Engine. Con esta librería vuestras aplicaciones podrán utilizar AuthSub para acceder a los feeds de vuestros usuarios. Ahora, si todavía no habéis probado el Google App Engine, ya podéis crear una aplicación para escribir en vuestro blog sobre las fiestas a las que vais a ir, añadirlas a vuestros calendarios e invitar a todos vuestros amigos de golpe. Y después de la fiesta, ver las fotos y los vídeos en la misma aplicación.
¿Necesitáis más inspiración? Miguel Cuesta ya nos mandó un ejemplo de aplicación, transcurridas apenas 24 horas desde el lanzamiento. También podéis consultar OnThaFly, un servicio para crear y compartir emoticonos utilizando tus propias fotos, o TweetWheel, que muestra las conexiones de tus contactos de Twitter en una "rueda". Por último, además de leer la documentación, os recomendamos que escuchéis el episodio 15 de nuestros Google Developer Podcasts en el que primero se describe por qué se creó Google App Engine y por qué Python fue el primer lenguaje, y por supuesto, después se entra en detalles técnicos (por ahora, estos podcasts están solo en inglés). Podéis descargar el episodio directamente, o suscribiros (haced clic aquí para suscribiros mediante un clic en iTunes).