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.




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:



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.



Si tienes un mashup que utiliza Google Maps quizás te resulte interesante saber que con el API de Panoramio puedes añadirle imágenes para enriquecer esos mapas. Las fotos geolocalizadas de Panoramio pueden ser útiles para otros sitios web y, por ejemplo, ilustrar el vecindario de un inmueble, los alrededores de un hotel o casa rural, los puntos de interés de una ciudad, etc. Las posibilidades son infinitas y su implementación es muy simple.


Si tienes un mashup que utiliza Google Maps quizás te resulte interesante saber que con el API de Panoramio puedes añadirle imágenes para enriquecer esos mapas. Las fotos geolocalizadas de Panoramio pueden ser útiles para otros sitios web y, por ejemplo, ilustrar el vecindario de un inmueble, los alrededores de un hotel o casa rural, los puntos de interés de una ciudad, etc. Las posibilidades son infinitas y su implementación es muy simple.

El API de Panoramio es una simple api REST en la que hay que hacer un GET a:

http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx=-180&miny=-90&maxx=180&maxy=90&size=medium

Con "order" las fotos pueden ordenarse por popularidad o fecha de subida, con "set" pueden escogerse todas las fotos subidas a Panoramio o solo las seleccionadas para Google Earth (fotos de lugares) y con "size" se puede escoger el tamaño de la imagen: original, medium (valor por defecto), small, thumbnail, square y mini_square. Los minx, miny, maxx, maxy definen el área donde mostrar las fotos (longitud mínima, latitud, longitud máxima y latitud, respectivamente).


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.


La información resultante está formateada usando JSON. Por ejemplo:


{
"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


Podeis ver ejemplos del uso del API, los requisitos y más información en la página del API de Panoramio.



El equipo de Google Maps nos vuelve a ofrecer una nueva funcionalidad (por cierto, de las más solicitadas por los propios programadores), que nos permite exprimir al máximo la experiencia del usuario con los mapas. El API de Google Maps hace posible que los desarrolladores podamos construir aplicaciones geográficas basadas en Google Maps como componentes Flash, lo que nos abre la posibilidad de introducir fácilmente contenido dinámico en los mapas.



El equipo de Google Maps nos vuelve a ofrecer una nueva funcionalidad (por cierto, de las más solicitadas por los propios programadores), que nos permite exprimir al máximo la experiencia del usuario con los mapas. El API de Google Maps hace posible que los desarrolladores podamos construir aplicaciones geográficas basadas en Google Maps como componentes Flash, lo que nos abre la posibilidad de introducir fácilmente contenido dinámico en los mapas.

Esta nueva librería, que forma parte de tanto de la versión gratuita del API de Google Maps como de la versión de pago, nos aporta una mayor riqueza a la hora de crear aplicaciones interactivas en las que podemos dar rienda suelta a nuestra creatividad. Si programas aplicaciones construidas con el API de Google Maps, este lanzamiento te resultará atractivo para aprovechar las ventajas de esta nueva funcionalidad, pero si por el contrario eres un desarrollador de aplicaciones Flash, también te gustará porque podrás introducir en ellas contenido geográfico.

En el repositorio de código de Google, tenéis disponibles algunas demos realizadas con el API de Google Maps para Flash. ¡A ver quién se anima a mandarnos enlaces a aplicaciones Flash, desarrolladas con esta librería por vosotros mismos!

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.

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).



Si además de programar sois usuarios de Panoramio, os interesará saber que hoy estaremos en Barcelona celebrando los 5 millones de fotos compartidas. Sé que este post no trata sobre código, lanzamientos, o developer days, pero como Eduardo y yo somos colaboradores frecuentes de este blog y siempre nos encanta conoceros en persona, hemos pensado que quizás tambíén os podría interesar asistir. Si es así, estaremos en el ...


Si además de programar sois usuarios de Panoramio, os interesará saber que hoy estaremos en Barcelona celebrando los 5 millones de fotos compartidas. Sé que este post no trata sobre código, lanzamientos, o developer days, pero como Eduardo y yo somos colaboradores frecuentes de este blog y siempre nos encanta conoceros en persona, hemos pensado que quizás tambíén os podría interesar asistir. Si es así, estaremos en el Mirablau, al final de la Avenida del Tibidabo, a partir de las 18:30. Para apuntarse solo hay que incluir nombre y correo electrónico en la página del encuentro. ¡Nos vemos en Barcelona!



En nuestra entrada sobre los Custom Search Engine ( CSE) os proponíamos que nos enviáseis vuestros CSEs y así participar en un miniconcurso con una de las camisetas exclusivas para nuestros colaboradores como premio. Vamos a comentar en esta entrada algunos de los CSEs que hemos recibido cuyos autores recibirán una de las camisetas del blog.


En nuestra entrada sobre los Custom Search Engine (CSE) os proponíamos que nos enviáseis vuestros CSEs y así participar en un miniconcurso con una de las camisetas exclusivas para nuestros colaboradores como premio. Vamos a comentar en esta entrada algunos de los CSEs que hemos recibido cuyos autores recibirán una de las camisetas del blog.

El "concurso" ha tenido una gran acogida, y estamos muy agradecidos por todos los CSEs que nos habéis hecho llegar. El mismo día que se publicó la entrada ya estábamos recibiendo vuestros CSEs. Unos creados exclusivamente para practicar con esta tecnología, como el que nos envió Víctor Esparza desde México, un CSE especializado en blogs en español sobre blogging y posicionamiento. Otros que ya habíais creado hace tiempo pero que querías compartir con nosotros, como el que nos envió Daniel Latorre , un buscador en portales de artículos de segunda mano y de clasificados.

Uno de los detalles más sorprendentes es la diversidad de los temas sobre los que se puede crear un CSE. Por ejemplo, Jesús Suárez nos envía desde Asturias su buscador especializado en I+D+i biosanitaria, Alberto Pastor nos envía el suyo especializado en los Juegos Olimpicos de Pekin 2008 y Álvaro el suyo especializado en museos, del que además tiene una versión dedicada a museos franceses.

Precisamente la especialización por zonas geográficas es otra de las posibilidades de los CSEs. Por ejemplo José Frechín nos envía dos CSEs uno especializado en los distintos portales de las distintas Administraciones Públicas Canarias y otro especializado en blogs canarios, y Francisco Aurelio García nos envío uno pensado para ser una búsqueda local en su ciudad, Ciudad Obregón Sonora México.

Está claro que nuestros lectores han sabido captar el potencial que los CSE tienen. Aunque ya sea fuera de concurso no dudéis en enviarnos vuestros CSEs, comentarios o ideas a nuestra dirección de correo (programacongoogle@google.com). Siempre nos encanta saber de vosotros.



Una de las herramientas que más me ha sorprendido últimamente es Google Web Toolkit (en adelante GWT) especialmente al conocer que Óscar Frías lo ha utilizado en su proyecto ...


Una de las herramientas que más me ha sorprendido últimamente es Google Web Toolkit (en adelante GWT) especialmente al conocer que Óscar Frías lo ha utilizado en su proyecto Trabber.com. Conozco a Óscar desde que le hice esta entrevista sobre Trabber, así que me he decidido a hacerle algunas preguntas sobre su experiencia con GWT, cuyas respuestas sintetizo en este post.

Comenta Óscar que Google Web Toolkit le ha sido útil porque Trabber busca en muchas webs de vuelos y hoteles simultáneamente y necesita presentar una página de resultados muy rica en información donde los comportamientos dinámicos (Ajax) son muy importantes para encontrar los mejores precios.

Me aclara Óscar que la ventaja principal de GWT para él ha sido el aumento de la productividad. La página de resultados de hoteles de Trabber le ha sido mucho más rápida y fácil de desarrollar que la página de resultados de la búsqueda de vuelos que hicieron hace ya tiempo a mano. A Óscar le gusta especialmente GWT porque todo el desarrollo se realiza en Java, que es su lenguaje favorito, y en el que se siente más productivo. Además puede utilizar herramientas para Java como IntelliJ IDEA o Eclipse para aumentar aún más su productividad y como el resto de Trabber también está hecho en Java la integración es aún más fácil. La productividad es un elemento clave en un equipo como el de Trabber compuesto por sólo 2 personas y que compite con grandes empresas del sector.

Óscar recomienda GWT para páginas web que funcionen como pequeñas aplicaciones y que no necesiten ser indexadas por Google. Por ejemplo, páginas con contenidos dinámicos que se actualizan constantemente o con muchas opciones de ordenación/filtrado, es decir, páginas similares a los resultados de la búsqueda de hoteles en Trabber.com.


Óscar cree que GWT está especialmente indicado para programadores que prefieren evitar el lenguaje Javascript y no tener que lidiar con las particularidades de cada navegador, así como los problemas de compatibilidad, ya que GWT genera automáticamente un código javascript compatible con todos los navegadores. En el caso de Trabber el javascript generado es muy pequeño, unos 40 Kb comprimido, que además solo se baja una vez porque se cachea para siempre.

Otra ventaja añadida de GWT son las llamadas remotas (RPC) para la actualización de los resultados de los hoteles en tiempo real, a medida que los proveedores devuelven sus resultados a Trabber. En el caso de Trabber se transmiten bastantes datos que incluyen por ejemplo la descripción de todos los hoteles, pero a pesar de eso Óscar nos confirma que el tiempo de respuesta es muy bueno.

Por último la Javascript Native Interface (JSNI) ha permitido integrar fácilmente Google Maps en Trabber.com y ademas GWT tiene soporte para internacionalización, algo especialmente interesante para aplicaciones como Trabber que tiene versiones para 6 países en diferentes idiomas.

Si queréis saber más podéis consultar la página de Google Web Toolkit.