Uno de los conceptos básicos que suelo explicar a los desarrolladores que son nuevos con el API de Google Maps es "geocoding": el proceso de convertir una dirección en un par de coordenadas de latitud/longitud. Casi el 99,9% de los programadores tienen que usar un "geocoder" para poner sus propios datos en el mapa, o para que los usuarios del mapa puedan ubicarse en él. Por suerte, ofrecemos tanto el servicio HTTP Geocoder para hacer "geocoding" en la parte del servidor, como la más reciente "clase GClientGeocoder para hacer "geocoding" en la parte del cliente.


Uno de los conceptos básicos que suelo explicar a los desarrolladores que son nuevos con el API de Google Maps es "geocoding": el proceso de convertir una dirección en un par de coordenadas de latitud/longitud. Casi el 99,9% de los programadores tienen que usar un "geocoder" para poner sus propios datos en el mapa, o para que los usuarios del mapa puedan ubicarse en él. Por suerte, ofrecemos tanto el servicio HTTP Geocoder para hacer "geocoding" en la parte del servidor, como la más reciente "clase GClientGeocoder para hacer "geocoding" en la parte del cliente.



Hoy os presento el concepto más avanzado de "reverse geocoding": el proceso de convertir un par de coordenadas de latitud/longitud a una dirección. Un porcentaje más pequeño (pero importante) de desarolladores querrán usar un "reverse geocoder" para que sus usuarios sepan la dirección de cualquier punto en el mapa, quizás para rellenar un formulario de forma mas rápida (¿por qué teclear cuando puedes hacer clic?). Para esos programadores ahora ofrecemos "address-level reverse geocoding" tanto para nuestro servicio de HTTP como para nuestra clase GClientGeocoder. Para que sea muy fácil de usar, el interfaz de "reverse geocoding" es casi el mismo que el de "forward geocoding" - la única diferencia es que se envía una combinación de lat/lng en vez de una dirección. Aquí os muestro un poco de código para hacer "client-side reverse geocoding":



geocoder.getLocations(latlng, function(addresses) {
if(addresses.Status.code != 200) {
alert("reverse geocoder failed to find an address for " + latlng.toUrlValue());
} else {
var result = addresses.Placemark[0];
map.openInfoWindow(latlng, result.address);
}
});


Para ver una demostración del "reverse geocoder", visita Meetways, una página que combina Google AJAX Local Search API con nuestra API de Google Maps y un poquito de matemáticas. Esta página calcula el punto entre dos direcciones en el mapa, usa el reverse geocoder para averiguar la dirección de este punto, y entonces hace una búsqueda local cerca de la dirección para encontrar lugares que están a medio camino. Dado que "reverse geocoding" funciona en todos los lugares donde funciona el "forward geocoding", puedes reunirte con tus amigos en más de ">70 países (incluyendo España, claro).



Para ver una demostración un tanto ridiculo, visita este juego en cual tienes que hacer clic en el punto correcto para una dirección. Hay que saber mucho sobre el mundo para ganar en este juego... pero solamente hay que aprender JavaScript para usar el codigo. :)



Para mas información de este nuevo servicio, lee la documentación de referencia y los códigos de ejemplo. Nos encantará ver las diversas maneras en que los desarolladores usan el "reverse geocoder" - por favor, no dudes en poner un enlace a tu demo de "reverse geocoding" en el grupo. ¡Que lo disfrutéis!



Después del día tan intenso que tuvimos, sólo queda rememorarlo en imágenes (incluidas las de la fiesta).

Después del día tan intenso que tuvimos, sólo queda rememorarlo en imágenes (incluidas las de la fiesta).

Para ello, podéis encontrarlas todas aquíaquí y aquí.

De nuevo, agradeceros a todos vuestra asistencia y colaboración y, sobre todo, las ganas de participar y el buen ambiente que habéis creado.

¡Hasta el año que viene!


Después de un día extenuante, ha llegado el momento de dedicarnos a otro de los intereses de los asistentes al GDD: conocer gente. Y qué mejor manera de hacerlo que en una fiesta en el Parque de Atracciones de Madrid con comida y bebida y con una atracción abierta sólo para nosotros: la Lanzadera. Sólo para los más osados : ...

Después de un día extenuante, ha llegado el momento de dedicarnos a otro de los intereses de los asistentes al GDD: conocer gente. Y qué mejor manera de hacerlo que en una fiesta en el Parque de Atracciones de Madrid con comida y bebida y con una atracción abierta sólo para nosotros: la Lanzadera. Sólo para los más osados :)

Éste es el cierre de la jornada de este año dedicada a los desarrolladores de España y que esperamos que haya cumplido las expectativas de los asistentes. 

De este modo, sólo nos queda añadir... ¡Hasta el año que viene!



Y ésta es la lista de los ganadores de los talleres que han tenido lugar a lo largo del día:

Geo Codelab de la mañana
  • Equipo de Lucas Ayala
  •  Equipo de Alex Barras
  • Lino Uruñela
Geo  Codelab de la tarde
  • Alberto Nuñez
  • Alberto Garcia Pañoso
Geo Wiki: 
  • Juan Manuel Merlos
  • Daniel Remeseiro
  • Angel Gonzalo Ruiz
Wiki Preview:
  • Héctor Rodes López
  • Gerardo Prieto
  • Equipo de Sebastian Breit
Classfied Ads
  • Pablo Pazos Rey
  • Wiki with diff and versioning
  • Gabriel Robles & Raul Ochoa
OpenSocial Codelab de la mañana
  • Domingo Garcia
  • Maso Gato
  • Jordi Roura
  • Enrique Puertas
OpenSocial  Codelab de la tarde
  • Ines Binusida
  • Jorge Alvaro
  • Chimeno2
  • Joan Fisbein


Chris Dibona ha sido el maestro de ceremonias del cierre de esta intensa jornada. Comenzó sorprendiéndonos a todos con las capacidades del teléfono equipado con Android y desarrollado junto a T Mobile. Explicarlo en un blog sería imposible: es incomparable con la experiencia de tenerlo en las manos.


Chris Dibona ha sido el maestro de ceremonias del cierre de esta intensa jornada. Comenzó sorprendiéndonos a todos con las capacidades del teléfono equipado con Android y desarrollado junto a T Mobile. Explicarlo en un blog sería imposible: es incomparable con la experiencia de tenerlo en las manos.

 

Además, hizo uso de la nueva herramienta Moderator para seleccionar las preguntas más votadas de la jornada y responderlas en directo a todos los asistentes. Preguntas tan interesantes como “Cuándo estará Chrome disponible para Linux”, “Cuándo podré comprar en España un móvil equipado con Android” o “Dónde es la fiesta” o incluso sugerencias como “una GD Week”.

 

Laurence Fontinoy, por su parte, cerró la jornada agradeciendo a los asistentes y colaboradores de la jornada y haciendo una mención especial a Clara Rivera, quien ha organizado este evento al detalle.



Ya sabemos que no podemos vivir sin Internet pero pasamos más tiempo desconectados de lo que pensamos. Por eso Google ha pensado en Gears, que nos permite trabajar con las aplicaciones cuando no tenemos conexión a Internet, aunque parezca increíble. Dion nos visita desde la oficina de Mountain View para contarnos un poco en qué consiste todo esto de Gears y cómo puede ayudarnos sobrevivir sin Internet.



Ya sabemos que no podemos vivir sin Internet pero pasamos más tiempo desconectados de lo que pensamos. Por eso Google ha pensado en Gears, que nos permite trabajar con las aplicaciones cuando no tenemos conexión a Internet, aunque parezca increíble. Dion nos visita desde la oficina de Mountain View para contarnos un poco en qué consiste todo esto de Gears y cómo puede ayudarnos sobrevivir sin Internet.

El co-fundador de Panoramio, Eduardo, abre esta charla sobre las start-ups y el desarrollo de las comunidades de usuarios. Lim, de la oficina de Londres, toma el relevo y nos habla del interés de Google por conocer a programadores como vosotros que estén haciendo cosas interesantes y tengan una comunidad activa.  

El co-fundador de Panoramio, Eduardo, abre esta charla sobre las start-ups y el desarrollo de las comunidades de usuarios. Lim, de la oficina de Londres, toma el relevo y nos habla del interés de Google por conocer a programadores como vosotros que estén haciendo cosas interesantes y tengan una comunidad activa.  

Pero lo mejor está por llegar. Una vez que nuestros compañeros terminan su charla, los programadores que abarrotan la sala, no se atreven a hacer preguntas. No sabemos si es porque no dominan el inglés o porque son así de tímidos. Eduardo les anima y ya se van soltando hasta que nos pasamos de la hora programada J  


Después de las extenuantes jornadas de la mañana, ha llegado el momento de tomarse un respiro. A lo largo de la mañana ha habido talleres y charlas de AppEngine, OpenSocial, Android, Chrome, GWT, API de YouTube y Productos cartográficos, así que a las 2 llegó el momento del merecido descanso.


Después de las extenuantes jornadas de la mañana, ha llegado el momento de tomarse un respiro. A lo largo de la mañana ha habido talleres y charlas de AppEngine, OpenSocial, Android, Chrome, GWT, API de YouTube y Productos cartográficos, así que a las 2 llegó el momento del merecido descanso.

 

El bufete, a pesar de contar con comida sana, era el menú más apropiado para la ocasión: diferentes tipos de carnes, de pasta, de patatas y de fritos. ¡Sólo faltaban las pizzas!

 

Y esta tarde, más talleres y charlas: Presentación de aplicaciones finalistas del Android Developer Challenge, gadgets sociales, Orientación para start-ups, App Engine, APIs de datos, productos cartográficos, Android, OpenSocial y Gears.

 

Y después… ¡el fin de fiesta! Fiesta, copas y picoteo en el Parque de Atracciones.

Después de comer, superando el "momento siesta", nos hemos vuelto a reunir para escuchar una charla sobre Gadget sociales. Menos mal que los ponentes son Iñaki y Ludo, y nos hacen superar la modorra de la primera hora de la tarde.

Ellos son parte de Madpixel, una agencia creativa que lleva tiempo trabajando con Google España. Aúnan diseño y tecnología en todas sus creaciones, entre las que destacan un gadget realizado para iGoogle con motivo de la Euroliga, el gadget que lanzamos durante las pasadas elecciones y que facilitaba el conteo en tiempo real de los datos electorales, etc.

La charla está siendo amena, con la sala casi completa, Iñaki y Ludo nos proponen encontrar las 7 diferencias en dos dibujos. Premio!! Camiseta para el más rápido!! Pero ahora lo más difícil, encontrar las diferencias entre dos textos de código ... vaya esto ya no es tan fácil. Una buena metáfora para iniciar una exposición sobre aquellas dificultades a las que se pueden enfrentar los desarrolladores al crear un gadget social. Gracias a los dos, seguro que vuestros consejos son útiles para más de uno!!

Después de comer, superando el "momento siesta", nos hemos vuelto a reunir para escuchar una charla sobre Gadget sociales. Menos mal que los ponentes son Iñaki y Ludo, y nos hacen superar la modorra de la primera hora de la tarde.

Ellos son parte de Madpixel, una agencia creativa que lleva tiempo trabajando con Google España. Aúnan diseño y tecnología en todas sus creaciones, entre las que destacan un gadget realizado para iGoogle con motivo de la Euroliga, el gadget que lanzamos durante las pasadas elecciones y que facilitaba el conteo en tiempo real de los datos electorales, etc.

La charla está siendo amena, con la sala casi completa, Iñaki y Ludo nos proponen encontrar las 7 diferencias en dos dibujos. Premio!! Camiseta para el más rápido!! Pero ahora lo más difícil, encontrar las diferencias entre dos textos de código ... vaya esto ya no es tan fácil. Una buena metáfora para iniciar una exposición sobre aquellas dificultades a las que se pueden enfrentar los desarrolladores al crear un gadget social. Gracias a los dos, seguro que vuestros consejos son útiles para más de uno!!


Terminamos las sesiones de la mañana con nuestro compañero Sumit Chandel, que nos visita desde San Francisco. Sumit es ingeniero y trabaja en el proyecto GWT, una plataforma diseñada para crear aplicaciones Ajax con el lenguaje de programación Java. En esta sesión, Sumit nos explica las ventajas de la plataforma GWT con muestras de código y ejemplos para mejorar la experiencia de los usuarios y para obtener mayores funcionalidades para los programadores. 


Terminamos las sesiones de la mañana con nuestro compañero Sumit Chandel, que nos visita desde San Francisco. Sumit es ingeniero y trabaja en el proyecto GWT, una plataforma diseñada para crear aplicaciones Ajax con el lenguaje de programación Java. En esta sesión, Sumit nos explica las ventajas de la plataforma GWT con muestras de código y ejemplos para mejorar la experiencia de los usuarios y para obtener mayores funcionalidades para los programadores. 


Ya metidos en materia nuestros compañeros, Jean-Laurent, ingeniero de la oficina de Londres, y Nicola Ferioli, ingeniero de la oficina de Milán, nos presentan las APIs de YouTube, uno de nuestros productos más populares. Tras una breve presentación en español, comienzan a hablarnos (en inglés) sobre las funcionalidades más interesantes que nos ofrecen las APIs de YouTube. Nos muestran consejos útiles para sacar un mayor provecho del API de YouTube y utilizar feeds de vídeo, listas de reproducción y "projections". Es de destacar la sincronización entre vídeos de YouTube y mapas de Google Maps. 


Ya metidos en materia nuestros compañeros, Jean-Laurent, ingeniero de la oficina de Londres, y Nicola Ferioli, ingeniero de la oficina de Milán, nos presentan las APIs de YouTube, uno de nuestros productos más populares. Tras una breve presentación en español, comienzan a hablarnos (en inglés) sobre las funcionalidades más interesantes que nos ofrecen las APIs de YouTube. Nos muestran consejos útiles para sacar un mayor provecho del API de YouTube y utilizar feeds de vídeo, listas de reproducción y "projections". Es de destacar la sincronización entre vídeos de YouTube y mapas de Google Maps. 

¡Muchas gracias por vuestros divertidos vídeos!


Empezamos la mañana con Javier Arias, ingeniero de ventas de la oficina de Madrid habla sobre el API de Google Maps y los archivos KML. Los asistentes tienen un nivel bastante bueno y conocen a fondo estos productos así que pasa directamente a hablar de las nuevas funcionales de las APIs. Entre estas, habla sobre el API AJAX de búsqueda, el AJAX loader, el API de mapas estáticos, el Flash Maps API y el API de Earth.


Empezamos la mañana con Javier Arias, ingeniero de ventas de la oficina de Madrid habla sobre el API de Google Maps y los archivos KML. Los asistentes tienen un nivel bastante bueno y conocen a fondo estos productos así que pasa directamente a hablar de las nuevas funcionales de las APIs. Entre estas, habla sobre el API AJAX de búsqueda, el AJAX loader, el API de mapas estáticos, el Flash Maps API y el API de Earth.

Podeís encontrar más información en nuestro Code Site o en el blog del API de Google Maps. ¡No dudéis en enviarnos vuestras preguntas y sugerencias!

Kasper Lund ha venido de la oficina de Dinamarca para explicarnos todos los detalles del nuevo navegador de Google: Chrome. Kasper se unió a Google hace 2 años para trabajar en secreto en este proyecto, y ahora le resulta difícil hacerse a la idea de que ya puede hablar libremente de este navegador ;-)

Lo primero que nos ha comentado es que Chrome se desarrolló bajo el siguiente lema: "stability, speed and easy of use", es decir, facilitar la experiencia al usuario a la hora de utilizar un navegador. Además, se trata de un navegador de código abierto, por lo que cualquier desarrollador puede contribuir con su trabajo a optimizar esta experiencia.

Estamos seguros de que ya has instalado Chrome en tu ordenador. Pero si aún no lo has hecho, aquí tienes toda la información, sólo te llevará 5 minutos!

Kasper Lund ha venido de la oficina de Dinamarca para explicarnos todos los detalles del nuevo navegador de Google: Chrome. Kasper se unió a Google hace 2 años para trabajar en secreto en este proyecto, y ahora le resulta difícil hacerse a la idea de que ya puede hablar libremente de este navegador ;-)

Lo primero que nos ha comentado es que Chrome se desarrolló bajo el siguiente lema: "stability, speed and easy of use", es decir, facilitar la experiencia al usuario a la hora de utilizar un navegador. Además, se trata de un navegador de código abierto, por lo que cualquier desarrollador puede contribuir con su trabajo a optimizar esta experiencia.

Estamos seguros de que ya has instalado Chrome en tu ordenador. Pero si aún no lo has hecho, aquí tienes toda la información, sólo te llevará 5 minutos!


En la sala R2D2 seguimos compartiendo conocimientos. Patrick Chanezon, embajador de Google para productos de desarrolladores, está ahora mismo presentando las últimas novedades de OpenSocial. Patrick, que se unió a Google en el 2005, tiene una amplia experiencia en el desarrollo de aplicaciones sociales ya que previamente trabajó en portales y blogs de distintas empresas como AOL, Netscape, etc.

Como muchos sabréis, OpenSocial es una aplicación abierta que funciona en diferentes redes sociales como MySpace, Plaxo, Hi5 (muy popular en Latinoamérica), Orkut, Friendster, LindedIn y muchas otras. La ventaja es que los desarrolladores tan solo tienen que aprender una vez cómo escribir una aplicación social que será compatible con muchas otras redes. Sin duda el lema es: "aprende una vez y escribe en cualquier sitio".


En la sala R2D2 seguimos compartiendo conocimientos. Patrick Chanezon, embajador de Google para productos de desarrolladores, está ahora mismo presentando las últimas novedades de OpenSocial. Patrick, que se unió a Google en el 2005, tiene una amplia experiencia en el desarrollo de aplicaciones sociales ya que previamente trabajó en portales y blogs de distintas empresas como AOL, Netscape, etc.

Como muchos sabréis, OpenSocial es una aplicación abierta que funciona en diferentes redes sociales como MySpace, Plaxo, Hi5 (muy popular en Latinoamérica), Orkut, Friendster, LindedIn y muchas otras. La ventaja es que los desarrolladores tan solo tienen que aprender una vez cómo escribir una aplicación social que será compatible con muchas otras redes. Sin duda el lema es: "aprende una vez y escribe en cualquier sitio".


Patrick no solo nos está explicando qué es OpenSocial, sino que también nos ha mostrado algunos ejemplos además de demostrar en vivo cómo crear una aplicación con OpenSocial. Esperamos que sea de utilidad a todos los desarrolladores que nos acompañan hoy.



Las fotografías de las sesiones, de los asistentes y de los ponentes las puedes encontrar aquí. ¡Entra y búscate! Es posible que nuestra cámara te haya encontrado. 


La sesión de OpenSocial ha comenzado con un anuncio: se ha presentado NetLog con muy buena acogida entre los asistentes. Chewy Trehella y Thomas Steiner han dirigido es presentación.

 

Además, se ha inaugurado un concurso de OpenSocial: quien desarrolle el mejor Gadget, recibirá ¡un premio sorpresa!


La sesión de OpenSocial ha comenzado con un anuncio: se ha presentado NetLog con muy buena acogida entre los asistentes. Chewy Trehella y Thomas Steiner han dirigido es presentación.

 

Además, se ha inaugurado un concurso de OpenSocial: quien desarrolle el mejor Gadget, recibirá ¡un premio sorpresa!


La jornada ha empezado con fuerza, una de las primeras charlas que se ha desarrollado en el "Cinema 4D" ha versado sobre GData. Mark Stahl, technical lead de Google Data APIs, ha venido de la oficina de Nueva York para impartir esta presentación.

Los Google Data APIs pretenden ofrecer un mecanismo común para acceder a tus datos. Construidos sobre Atom Publishing Protocol, expone datos de servicios de Google como Picasa, YouTube, Google Calendar, Blogger y muchos más. En esta charla Mark nos ha mostrado una visión general del protocolo de Google Data y cómo podemos utilizar los APIs. 

Unos 100 asistentes se han beneficiado de los conocimientos impartidos por Mark. Y esto no ha hecho más que empezar!

La jornada ha empezado con fuerza, una de las primeras charlas que se ha desarrollado en el "Cinema 4D" ha versado sobre GData. Mark Stahl, technical lead de Google Data APIs, ha venido de la oficina de Nueva York para impartir esta presentación.

Los Google Data APIs pretenden ofrecer un mecanismo común para acceder a tus datos. Construidos sobre Atom Publishing Protocol, expone datos de servicios de Google como Picasa, YouTube, Google Calendar, Blogger y muchos más. En esta charla Mark nos ha mostrado una visión general del protocolo de Google Data y cómo podemos utilizar los APIs. 

Unos 100 asistentes se han beneficiado de los conocimientos impartidos por Mark. Y esto no ha hecho más que empezar!


Los intereses de los asistentes son variados, pero sus objetivos para el día de hoy son los mismos: aprender y pasarlo bien.

 

Lo más valorado es la oportunidad que ofrece el GDD de conocer gente con los mismos intereses y aficiones. Esto permite, como afirma Sebastián Brait, estudiante de Ingeniería Informática, “contactar con gente para poder desarrollar proyectos juntos”. También es muy valorado el ambiente distendido en el que se desarrolla la  jornada, que ayuda precisamente a establecer estos valorados contactos.


Los intereses de los asistentes son variados, pero sus objetivos para el día de hoy son los mismos: aprender y pasarlo bien.

 

Lo más valorado es la oportunidad que ofrece el GDD de conocer gente con los mismos intereses y aficiones. Esto permite, como afirma Sebastián Brait, estudiante de Ingeniería Informática, “contactar con gente para poder desarrollar proyectos juntos”. También es muy valorado el ambiente distendido en el que se desarrolla la  jornada, que ayuda precisamente a establecer estos valorados contactos.


Además, como coinciden en afirmar Jorge Fernández – jefe de proyecto en BBVA- y Miguel Poyatos –programador en la Universidad de Castilla La Mancha- familiarizarse con estas herramientas es muy importante para su trabajo, ya que “las usamos continuamente en mi trabajo”.


Una jornada con muchas expectativas que seguro no se van a defraudar.


Madrid es de nuevo una de las sedes para el Google Developer Day. A pocos minutos del comienzo, todo está listo para recibir a los desarrolladores, quienes podrán informarse y comprender mejor Android, Chrome, Open Social, Geo o GWT (Google Web Toolkit).


Madrid es de nuevo una de las sedes para el Google Developer Day. A pocos minutos del comienzo, todo está listo para recibir a los desarrolladores, quienes podrán informarse y comprender mejor Android, Chrome, Open Social, Geo o GWT (Google Web Toolkit).

Coincide, además, con el lanzamiento de Moderator, una herramienta muy útil, gracias a la cual los desarrolladores podrán resolver sus dudas sobre los productos Google.


Todo está listo para comenzar. Sólo nos faltáis vosotros. ¡Feliz GDD!

Sundar Pichai y Linus Upson

En Google utilizamos los navegadores web como medio de trabajo para realizar búsquedas, chatear, enviar y recibir correo electrónico y compartir información y recursos. Además, como usuarios de Internet, también los utilizamos para comprar por Internet, realizar operaciones bancarias, leer el periódico y contactar con nuestros amigos. Cada vez pasamos más tiempo en Internet haciendo cosas que jamás imaginamos poder hacer cuando se creó la Web hace ya 15 años.

Sundar Pichai y Linus Upson

En Google utilizamos los navegadores web como medio de trabajo para realizar búsquedas, chatear, enviar y recibir correo electrónico y compartir información y recursos. Además, como usuarios de Internet, también los utilizamos para comprar por Internet, realizar operaciones bancarias, leer el periódico y contactar con nuestros amigos. Cada vez pasamos más tiempo en Internet haciendo cosas que jamás imaginamos poder hacer cuando se creó la Web hace ya 15 años.


Por esta razón, nos pusimos a pensar en el tipo de navegador que podríamos crear si empezásemos de cero y aprovecháramos las novedades que existen en Internet en la actualidad. Llegamos a la conclusión de que Internet ha pasado de albergar páginas web que sólo contenían texto hasta aplicaciones interactivas y multimedia en la actualidad y, por tanto, nos replanteamos el concepto de navegador. Lo que necesitábamos era algo más que un mero navegador y por eso hemos creado una plataforma moderna para poder visualizar e interactuar en sitios web y aplicaciones.


Hoy lanzamos la versión beta de un nuevo navegador de código abierto: Google Chrome.


En líneas generales, Google Chrome tiene una interfaz sencilla y funcional. Para la mayoría de los usuarios el navegador no es lo más importante en su experiencia en la Red: sólo es una herramienta donde visualizar y ejecutar los sitios, páginas web y las aplicaciones que la conforman. Al igual que la página de inicio de nuestro buscador, Google Chrome es rápido y fácil de utilizar. Su objetivo es que los usuarios obtengan la información que buscan y accedan a los sitios web con la mayor rapidez posible.


Desde el punto de vista técnico hemos sentado las bases de un navegador que es capaz de ejecutar con mayor eficacia las complejas aplicaciones web de hoy en día. Las pestañas de Google Chrome son independientes, de forma que si se produce un error en una de ellas, el resto no se ven afectadas. La rapidez y el tiempo de respuesta también se han mejorado por completo. Además, hemos creado V8, un motor JavaScript más potente que abre la puerta a una generación de aplicaciones web que se beneficiarán de este nuevo concepto de navegador.


Y esto es sólo el comienzo, Google Chrome es susceptible de mejoras y actualizaciones. Hemos lanzado la versión beta para Windows con el fin de introducir este nuevo concepto a la comunidad de usuarios y comprobar su acogida. Estamos trabajando también en las versiones para Mac y Linux y continuaremos trabajando para que Google Chrome sea cada vez más rápido y estable.


Debemos una gran parte de este proyecto a otras iniciativas de software libre y estamos decididos a seguir trabajando en esta dirección. Hemos utilizado elementos de los navegadores WebKit de Apple y Firefox de Mozilla, entre otros, y con este objetivo estamos haciendo posible que nuestro código también sea abierto. Esperamos colaborar con toda la comunidad para que la Red avance.


Internet mejora gracias a nuevas alternativas e innovaciones. Google Chrome es una opción más y esperamos que contribuya a crear una Web mejor.


Aquí acaba nuestra presentación, pero lo mejor es que pruebes Google Chrome y decidas por ti mismo. Puedes descargarlo en http://chrome.google.com.

Patricia Gómez Jurado

La duodécima edición de la Campus Party ha llegado a su fin y Google ha estado en ella con toda una serie de actividades, desde Google App Engine hasta el API de Google Earth. Si queréis echar un vistazo a las actividades que hemos llevado a cabo estos días en la Campus, podéis visitar el Sitio de Google en la Campus. Pero a continuación os contamos los últimos dos días.

Patricia Gómez Jurado

La duodécima edición de la Campus Party ha llegado a su fin y Google ha estado en ella con toda una serie de actividades, desde Google App Engine hasta el API de Google Earth. Si queréis echar un vistazo a las actividades que hemos llevado a cabo estos días en la Campus, podéis visitar el Sitio de Google en la Campus. Pero a continuación os contamos los últimos dos días.



Ayer, uno de nuestros ingenieros de la oficina de Google en Londres nos dio una breve charla sobre las herramientas que Google pone a disposición de los webmasters. Seguro que estás interesado en conocer si nuestro buscador ha rastreado tu página, si la misma está indexada, etc. Así que, si no pudiste acudir a la presentación, puedes encontrar toda esta información en nuestro centro para webmasters en la siguiente dirección: http://www.google.es/webmasters. Además, puedes seguir las últimas novedades en el blog oficial para webmasters o interactuar con otros usuarios en nuestro foro.

La primera de nuestras charlas de hoy ha tratado sobre Android y cómo trabajar con el SDK (Software Developer Kit). Android es una pila de software para dispositivos móviles que incluye un sistema operativo, aplicaciones esenciales y middleware. Está siendo desarrollado por la Open Handset Alliance, un grupo de más de 30 empresas de tecnología y aplicaciones móviles.



Los desarrolladores pueden crear aplicaciones para la plataforma mediante el kit de desarrollo de Android. Podéis descargarlo aquí o visitar la sección de Android de la página de Google Code. Sólo tenéis que hacer clic en el enlace del paso 2 de la sección de Introducción para empezar a trabajar con él. ¡Animaos a probarlo!


La penúltima de las charlas que hemos dado en la zona Google estaba relacionada con iGoogle, la página de inicio personalizada de Google y los temas que podéis añadir.


Y por fin llegó la sesión más esperada por los desarrolladores: OpenSocial. Dos de nuestros ingenieros han dado una visión general de lo que es OpenSocial y han presentado un concurso para animar a la comunidad de programadores a crear aplicaciones sociales. Más información en el sitio de Google en la Campus Party y en Google Code.



En unas pocas horas, y para cerrar nuestras actividades, se realizará la entrega de premios del concurso organizado por Electronic Arts en el que hemos colaborado, que consistía en crear la mejor criatura de Spore, hacerle un video y subirlo a YouTube. Spore utiliza las APIs de YouTube e incluye un uploader para subir vídeos directamente a YouTube. En menos de una semana, los campuseros han subido más de 220 vídeos de criaturas.



El año pasado Google participó en la Campus Party por primera vez. En nuestra zona de contenido hubo presentaciones sobre gadgets, mapplets, Google Web Toolkit, etc. Y nos gustó tanto que este año repetimos.


El año pasado Google participó en la Campus Party por primera vez. En nuestra zona de contenido hubo presentaciones sobre gadgets, mapplets, Google Web Toolkit, etc. Y nos gustó tanto que este año repetimos.



En esta edición, por primera vez en España, haremos una presentación sobre Android, que sabemos que a muchos os interesa, y estaremos como jurado en el reto Maddog. ¿Alguno tenía una idea y llegó tarde al Android Developer Challenge? Pues esta es vuestra oportunidad de presentar vuestras aplicaciones. Pero habrá mucho más, como por ejemplo, un hackatón de OpenSocial, presentaciones de AppEngine, y alguna que otra sorpresa. Y por supuesto, también este año habrá tiendas. :)



Si no te lo quieres perder, tenemos 30 entradas para que vengas con nosotros a la Campus (y con tu acompañante, claro). Si queréis participar, no tenéis más que enviarnos un breve email a programacongoogle@google.com y contarnos por qué os apetece venir (sobre todo, nos interesa el código, así que si has programado alguna aplicación que tengas online, mándanos la URL). Y no olvidéis mencionar en el asunto del mensaje: Campus Party. ¡Nos vemos en Valencia!



Hace unas semanas que volvimos de la bonita capital española donde tuvo lugar la conferencia SMX Madrid. Fueron dos días llenos de sesiones presentadas por expertos de la comunidad tanto de lengua española como internacional. Aparte de lo interesante de las sesiones en sí, una de las mejores cosas de este tipo de conferencias es la oportunidad de preguntar aquello que siempre quisiste saber. Así que para todos los que no tuvisteis la oportunidad de venir a la conferencia, aquí están algunas de las preguntas frecuentes y nuestras respuestas.


Hace unas semanas que volvimos de la bonita capital española donde tuvo lugar la conferencia SMX Madrid. Fueron dos días llenos de sesiones presentadas por expertos de la comunidad tanto de lengua española como internacional. Aparte de lo interesante de las sesiones en sí, una de las mejores cosas de este tipo de conferencias es la oportunidad de preguntar aquello que siempre quisiste saber. Así que para todos los que no tuvisteis la oportunidad de venir a la conferencia, aquí están algunas de las preguntas frecuentes y nuestras respuestas.



Mi página web está en español pero no se puede orientar geográficamente hacia todos los países hispanohablantes/de Latinoamérica. ¿Por qué Google no me deja hacerlo por idioma?
Si quieres que todos los hispanohablantes puedan tener acceso a tu contenido, te recomendamos que registres un dominio de primer nivel como .com o .net. Si tienes un dominio .es o .com.ar, por poner dos ejemplos, Google considerará que el contenido se dirige más bien a los usuarios de un país u otro.

La herramienta de orientación geográfica sigue siendo la mejor opción si tienes contenido específico para diferentes países. Con esta herramienta no hace falta escoger un país para todo el sitio, puedes estructurar tu sitio para que el contenido específico de cada país se encuentre en diferentes subdominios o carpetas:

ejemplo.com/mx/
o
mx.ejemplo.com/

Una vez hecho esto, puedes añadir cada carpeta o subdominio de forma independiente en las Herramientas para Webmasters y usar la herramienta de orientación geográfica para asociar una carpeta con un país. Esta práctica sólo se aconseja si tu contenido cambia según el país o si tienes oficinas en diferentes países.

Estoy usando metaetiquetas descriptivas en mis páginas, pero Google sigue mostrando el texto de DMOZ en la descripción de mi sitio. ¿Qué conviene hacer?
Si no quieres que Google u otros buscadores usen la descripción de DMOZ para tu página, usa la siguiente metaetiqueta:
<meta content="noodp" name="robots">

Puede que el cambio tarde un poco en verse en las descripciones de los resultados de búsqueda. Recuerda también que Google produce estos fragmentos según las palabras clave que aparecen en la consulta. Por ejemplo, si alguien busca [Playas Costa del Sol], la descripción puede mostrar partes de la página que incluyen estas palabras en vez de la meta descripción. En este artículo del Centro de Ayuda puedes encontrar algunos consejos y sugerencias.

He diseñado mi sitio en Flash. ¿Cómo me aseguro de que pueda indexarse correctamente?
Puesto que Flash es en sí un medio visual, a muchos usuarios (no sólo personas con discapacidad visual, sino también máquinas como Googlebot) les será difícil tener acceso a su contenido. La primera pregunta que te tienes que hacer es: ¿Estoy seguro de querer un sitio totalmente diseñado en Flash? Aconsejamos que sólo se use cuando sea estrictamente necesario. Para contenido y navegación, mejor HTML.

Si estás seguro de querer un sitio totalmente diseñado en Flash, todavía existen opciones. sIFR: Algunas páginas web usan Flash para hacer que el navegador muestre cabeceras, citas o cualquier texto con una fuente que el usuario no tenga instalada. Esta técnica permite leer una página incluso a los visitantes que no vean Flash, puesto que el contenido/navegación está en el código HTML, sólo que se enseña con un objeto Flash embebido. Usa una versión HTML que complemente al Flash. Una idea es usar Flash en la página de bienvenida, pero incluyendo un enlace HTML a la versión no Flash de tu sitio. Para más recomendaciones sobre Flash, puedes visitar una entrada en inglés del blog oficial Google Webmaster Central.


No quiero que Google tenga cierta parte de mi contenido en el índice. ¿Cómo se hace?
Existen varias posibilidades muy simples. Añade una metaetiqueta noindex a las páginas que no quieres que estén indexadas. Usa un archivo robots.txt para excluir páginas. Sigue las instrucciones del enlace o usa la herramienta que hay en las Herramientas para Webmasters para generar uno. Con este método, tu contenido no será rastreado, pero si otro sitio enlaza a una de tus páginas, aún existe la posibilidad de que la URL y otra información de acceso libre como puede ser el título del Open Directory Project pueda aparecer en los resultados de búsqueda. Puedes encontrar más información en este artículo del Centro de Ayuda.

Si el contenido ya no existe, asegúrate de que el servidor devuelva errores 404 o 410 para estas URLs.Una vez completado todo lo anterior, puedes acelerar el proceso diciéndoselo a Google. ¿Cómo puedes hacerlo? Muy fácil: Registra tu sitio en las Herramientas para Webmasters y encontrarás un enlace para hacer lo dicho en la categoría Herramientas. Entonces Google sabrá que debe desindexar esa página incluso antes de que Googlebot visite tu sitio. No olvidéis que las Herramientas de Google para Webmasters son muy útiles y ponen a vuestra disposición multitud de servicios y herramientas que os ayudarán para la correcta indexación de vuestro sitio.

¿Las redirecciones 301 realmente permiten que un sitio mantenga el PageRank?
Tanto el PageRank como el resto de las propiedades a nivel de página se pasarán correctamente usando redirecciones 301. Acordaros de configurar las redirecciones 301 no sólo en la página de inicio sino también en cada una de las páginas internas de vuestro sitio. Esto ayudará a vuestros antiguos visitantes a encontrar el contenido y también permitirá a Googlebot entender que el sitio ha sido migrado a un nuevo dominio. De todas formas, tened presente que durante el proceso es posible que haya fluctuaciones en cuanto a rendimiento en los resultados de búsqueda. Es totalmente normal y es necesario tener un poco de paciencia.

Esperamos que estas respuestas hayan sido útiles y, si tenéis algún comentario, os animamos a que dejéis vuestros comentarios aquí o en el Foro español de ayuda para webmasters.


En Google queremos que la web geográfica se convierta en realidad y que cada vez haya más contenidos geoposicionados. El API de Google Maps y todas las herramientas para programadores de Google pretenden estimular la creación de ese contenido y esperamos que surjan muchas comunidades que consiguan animar a la gente a añadir información geoposcionada. Este es el primer post de una serie que tratará sobre comunidades en torno al API de Google Maps.


En Google queremos que la web geográfica se convierta en realidad y que cada vez haya más contenidos geoposicionados. El API de Google Maps y todas las herramientas para programadores de Google pretenden estimular la creación de ese contenido y esperamos que surjan muchas comunidades que consiguan animar a la gente a añadir información geoposcionada. Este es el primer post de una serie que tratará sobre comunidades en torno al API de Google Maps.


De nuestra experiencia con Panoramio pensamos que generar comunidad es una de las mejores maneras de crear contenido geoposicionado. No es la única manera de hacerlo, pero si una de las que mejor se puede escalar y que más información de valor puede aportar.


La potencia de una comunidad está en los que se llama “efecto de red” es decir, cuanto más se usa, más útil se vuelve, es decir, cuantos más usuarios la usen más usuarios vendrán en el futuro. Por ejemplo, si yo escribo una opinión sobre un restaurante, estaré aumentando la utilidad de a web para futuros usuarios. A mayor número de opiniones más probable es que la web resulte interesante y retenga a más usuarios, además de aumentar los contenidos indexables para Google, etc. Si, por ejemplo, pongo un comentario a tu foto en Panoramio, recibirás una alerta con mi comentario y es posible que termines visitando Panoramio, que te animes a subir una foto o a escribir otro comentario, etc. En definitiva, la actividad de unos genera más actividad de otros.


La diferencia de una comunidad con respecto a otros sitios donde los usuarios pueden escribir comentarios o generar contenidos, por ejemplo, una tienda online donde la gente puede opinar sobre un artículo, es que ese contenido hace que los usuarios interactúen y esa comunicación entre usuarios es lo que los motiva a generar más contenidos. La interacción se genera de muchas maneras, pero es algo natural, no forzado. Se trata de despertar auténtico interés de los usuarios, unos por otros, ganas de establecer conversaciones, etc.


Los efectos de red son los que permiten a pequeños proyectos basados en comunidades crecer exponencialmente sin publicidad y apenas inversiones. Esto hace a las comunidades muy atractivas para los desarrolladores a la hora de decantarse por un proyecto y por eso tenemos esa explosión de sitios comunitarios actualmente.

No hay una formula mágica para generar comunidad, a fin de cuentas cada comunidad es única porque cada tipo de contenidos genera una interacción diferente entre los usuarios. Lo que hace funcionar a una comunidad y generar esos efectos de red son muchos detalles que no suelen ser virguerías tecnológicas, son detalles que están determinados por el entendimiento profundo de los objetivos de la gente al participar en la comunidad y cómo se establecen las relaciones entre los usuarios. El foco de la comunidad, es decir, su especialización en un tema específico, es lo que determina cómo construirla, y será el tema del próximo post.

Cuando lanzamos las herramientas de edición de mapas en Google Maps, el comentario con el que reaccionaron los desarrolladores fue: "Es una idea genial, pero ¿cómo puedo utilizarlas en mi propio sitio web?" Dado que en un principio, el API para Google Maps y su extraordinaria comunidad de desarrolladores fue, en parte, lo que hizo que me uniera a Google, decidí comprometerme a conseguir que los desarrolladores pudiesen utilizar las herramientas de Mis mapas en sus propios sitios web. Por fin, desde hace unas semanas, el API de Google Maps ya cuenta con la posibilidad de utilizar nuestra interfaz de usuario para la edición de polilíneas y polígonos.

Cuando lanzamos las herramientas de edición de mapas en Google Maps, el comentario con el que reaccionaron los desarrolladores fue: "Es una idea genial, pero ¿cómo puedo utilizarlas en mi propio sitio web?" Dado que en un principio, el API para Google Maps y su extraordinaria comunidad de desarrolladores fue, en parte, lo que hizo que me uniera a Google, decidí comprometerme a conseguir que los desarrolladores pudiesen utilizar las herramientas de Mis mapas en sus propios sitios web. Por fin, desde hace unas semanas, el API de Google Maps ya cuenta con la posibilidad de utilizar nuestra interfaz de usuario para la edición de polilíneas y polígonos.


Pongamos que tienes un GPoligon y quieres que los usuarios puedan editarlo. Solo tienes que usar el comando GPolygon.enableEditing() y el polígono incluirá vértices de control de edición que el usuario podrá arrastrar cuando desplace el cursor sobre él. Si no quieres que se edite, utiliza el comando GPolygon.disableEditing().


También hemos creado más eventos de GPolygon y GPolyline para que puedas imitar con facilidad el comportamiento de Mis mapas (en mashups o Mapplets) mediante el uso de los comandos enableEditing en "mouseover" y disableEditing en "mouseout". Cada vez que el usuario realice una edición, recibirás un evento "lineupdated". Y si quieres que los usuarios puedan dibujar una GPolyline completamente nueva, sólo tienes que utilizar el comando enableDrawing que se muestra a continuación:


var polyline = new GPolyline([]);
map.addOverlay(polyline);
polyline.enableDrawing();


Cada clic que se haga sobre el mapa añadirá otro vértice a la polilínea hasta que el usuario haga un doble clic o vuelva a hacer clic en el último vértice. También puedes usar el comando enableDrawing para permitir que los usuarios añadan vértices a cualquiera de los extremos de una polilínea ya existente. Y como a todos nos gustan los colorines, te proporcionamos métodos que te permiten cambiar el estilo de una polilínea o de un polígono: setStrokeStyle and setFillStyle. Diviértete y comparte tu opinión con nosotros en nuestra dirección de correo programacongoogle@google.com o en los comentarios del blog. Y para terminar, puedes echar un vistazo a este sencillo ejemplo. Seguro que se os ocurren un montón de aplicaciones.



Normalmente, nuestros lectores son rápidos respondiendo pero, en este caso, sólo habían pasado unas horas desde que Clara había publicado su entrada desde San Francisco cuando Luistxo ya nos había enviado un mensaje contándonos que en ...


Normalmente, nuestros lectores son rápidos respondiendo pero, en este caso, sólo habían pasado unas horas desde que Clara había publicado su entrada desde San Francisco cuando Luistxo ya nos había enviado un mensaje contándonos que en Tagzania habían implementado una funcionalidad con el API de Google Earth.


Como podéis ver en la imagen, han añadido un enlace justo debajo del mapa en el que se muestran los tags. Al pulsar en el enlace, se llega a una página que nos muestra la vista 3D en Google Earth del tag.



Con tan pocas horas de trabajo desde el lanzamiento, la implementación todavía era básica, no podía ser de otra manera. Pero nos sirve como ejemplo de implementación sencilla y, lo más importante, nos deja con las ganas y la curiosidad de ver cómo Luistxo y sus compañeros de Tagzania sacan provecho a todo el potencial de la nueva API. Mientras tanto yo no he podido reprimirme y me he dado una vuelta por nuestras oficinas de Madrid y de Mountain View.

Otros programadores ya han empezado también a jugar con el API, como por ejemplo Jesús Barrio de GoolzOOm o Jordi Ramot de Wikiloc. Esperamos ver muchas otras aplicaciones próximamente.



Hace algún tiempo lanzamos un concurso de gadgets de iGoogle que atrajo un gran número de entradas interesantes e innovadoras. Desde entonces, iGoogle ha crecido considerablemente, con un directorio de ...


Hace algún tiempo lanzamos un concurso de gadgets de iGoogle que atrajo un gran número de entradas interesantes e innovadoras. Desde entonces, iGoogle ha crecido considerablemente, con un directorio de gadgets más amplio, nuevos destacados, e incluso la posibilidad de personalizar las pestañas con tu tema favorito o crear el que más te guste.

Sin embargo, iGoogle sigue girando en torno a lo mismo: ofrecer a los usuarios la información que quieren, donde quieran y cuando la quieran. La ganadora de nuestro concurso, Adela Pérez Vázquez, creó un gadget que precisamente hace eso: permitir que los usuarios personalicen los clasificados que les interesan y naveguen por ellos de forma pasiva.

iGoogle es una gran plataforma para contenido de todo tipo y, con el reciente lanzamiento del sandbox, esto no va a hacer que mejorar. ¡Enhorabuena a Adela por su trabajo!

Mark Pilgrim


La red abierta es la red construida sobre estándares abiertos: HTML, JavaScript, CSS, etc. La red abierta es una colorida ensalada de clientes y servidores apenas compatibles. Comprende miles de millones de páginas, millones de usuarios y miles de aplicaciones basadas en un navegador. Se puede acceder a la red abierta mediante navegadores, sistemas operativos y equipos informáticos tanto comerciales como de código abierto.

Mark Pilgrim


La red abierta es la red construida sobre estándares abiertos: HTML, JavaScript, CSS, etc. La red abierta es una colorida ensalada de clientes y servidores apenas compatibles. Comprende miles de millones de páginas, millones de usuarios y miles de aplicaciones basadas en un navegador. Se puede acceder a la red abierta mediante navegadores, sistemas operativos y equipos informáticos tanto comerciales como de código abierto.


Google ha construido su negocio en la red abierta y queremos ayudaros a que vosotros también lo hagáis. Con esta finalidad, hace un par de semanas anunciamos la creación de una enciclopedia elaborada por y para desarrolladores: Google Doctype.


En su versión actual (beta), Google Doctype contiene multitud de artículos escritos por los Googlers sobre temas importantes para todos los programadores: seguridad, rendimiento, caching, manipulación DOM y estilos con CSS, entre otros. Contiene más de 8.000 líneas de código JavaScript: la experimentadísima biblioteca JavaScript de Google, publicada hoy bajo una amplia licencia de código abierto. Además, contiene las bases para ser una referencia en la red abierta avalada por pruebas: una referencia para todos los elementos, atributos, métodos DOM y propiedades CSS, respaldada con casos de prueba.


Bueno, seguramente no para todas las propiedades; al menos, por ahora. Aún estamos trabajando para completar algunos detalles pendientes sobre la mayor plataforma de desarrollo del mundo jamás concebida, y necesitamos vuestra ayuda. Por eso, ofrecemos humildemente esta nueva enciclopedia bajo una licencia de Reconocimiento Creative Commons e invitamos a los programadores de todo el mundo a que contribuyan a ella. Identificaos con vuestra cuenta Google y editad cualquier página, cualquier artículo, en cualquier lugar. Cread unos nuevos, actualizad los viejos y contribuid a ampliar la comprensión del mundo sobre la red abierta.




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.

Joaquín Cuenca

Si habeis conseguido crear una aplicación web (¡felicidades!), lo más probable es que la hayais escrito en inglés o en castellano. No creo que tenga que convencer a nadie de que en ese caso, estais dejando pasar un mercado potencial enorme, ya que hay más gente en el mundo qué no habla inglés o castellano qué la que lo hablan. Para aprovechar el trabajo que teneís hecho y lanzaros a esos nuevos mercados es necesario (aunque tal vez no sea suficiente) traducir vuestra página web a otros idiomas.
Joaquín Cuenca

Si habeis conseguido crear una aplicación web (¡felicidades!), lo más probable es que la hayais escrito en inglés o en castellano. No creo que tenga que convencer a nadie de que en ese caso, estais dejando pasar un mercado potencial enorme, ya que hay más gente en el mundo qué no habla inglés o castellano qué la que lo hablan. Para aprovechar el trabajo que teneís hecho y lanzaros a esos nuevos mercados es necesario (aunque tal vez no sea suficiente) traducir vuestra página web a otros idiomas.

El mayor problema con el que os vais a encontrar es la falta de conocimientos sobre internacionalización. Es increíble como muchos programadores, por lo demás perfectamente capacitados, parecen convertirse en Paris Hilton cuando hablan de internacionalización. Eso si llegan a hablar... Vamos a empezar sentando las bases de lo que es un juego de carácteres (charset) y una codificación (encoding). El juego de carácteres es la tabla que traduce de un número a un "carácter" (o para ser más precisos un "codepoint"), y la codificación es el algoritmo que hemos seguido para guardar ese número.

Por ejemplo, el juego de carácteres ISO-8859-1 (también conocido como ISO-Latin-1) es una tabla idéntica a ASCII para números menores de 128, y entre 128 y 255 incluye todos los carácteres necesarios para las lenguas usadas en Europa occidental, excepto por los carácteres Š, š, Ž, ž, Œ, œ, Ÿ, y el €. ISO-8859-15 es idéntico a ISO-8859-1 excepto por la inclusión de estos ocho carácteres. Si usais ISO-Latin-1 y siempre os habeis preguntado por qué había que usar &euro; para conseguir el € en HTML en lugar de poder escribirlo directamente, ya conoceis el motivo. Dado que estos dos charsets, al igual que todos los de la familia ISO-8859 sólo contienen 255 carácteres, el encoding que siempre se usa es el más trivial: guardar cada carácter en un byte.

Sirviendo las páginas siempre en este juego de carácteres podremos tener textos en cualquier idioma de europa occidental. Pero ¿qué pasa con el resto del mundo? podríamos imaginarnos un sistema donde elegimos un juego de carácteres en función del idioma, pero esto no funcionaría si tenemos una página con una mezcla en varios idiomas (muy común si tenemos un sistema de comentarios, y una audiencia internacional) y en general es engorroso e innecesario. Afortunadamente, este problema ha sido resulto por el consorcio Unicode, que se lanzó a la creación de un juego de carácteres que incluyese todos los carácteres usados en el mundo.

Para codificar Unicode se empezó usando dos bytes por carácter. Este encoding se llama UCS-2, y se sigue usando en Windows y en Java. Por algún motivo, en toda la documentación tanto para usuarios como para desarrolladores, a UCS-2 se le llama "Unicode". Dependiendo de la arquitectura en la que estemos, el byte menos significativo de un carácter puede ser el primero, o el segundo, así que tenemos dos variantes de UCS-2, UCS-2LE (LittleEndian) y UCS-2BE (BigEndian). Para distinguir qué variante se está usando se le añade al principio del texto el carácter 0xFEFF "ZERO WIDTH NO-BREAK SPACE" (también conocido como el "BOM", Byte Order Marker). Así, si nos encontramos con un carácter BOM sabemos que estamos leyendo UTF-16 en el orden correcto. Si nos encontramos con un BOM reflejado (0xFFFE) sabemos que estamos leyendo al revés, ya que 0xFFFE no existe en Unicode.

Cuando UCS-2 se quedó corto para almacenar todos los carácteres del mundo y hubo que ir más allá de 0xFFFF, se añadió una extensión y se le llamó UTF-16, donde se usan dos carácteres especiales (llamados surrogates pair) para indicar que los bytes siguientes están fuera del plano básico. Se pierde así el único interés que tenía UTF-16, y es que se podía saltar directamente al carácter en la posición "n", ya que se conocía el tamaño de cada carácter (2 bytes). En realidad UCS-2 nunca tuvo esta cualidad, ya que ciertos carácteres en Unicode no son tales (por eso su nombre técnico es¨"codepoint"). Algunos codepoints son sólo un indicador que dice que hay que modificar el carácter que le sigue, por ejemplo añadiéndole un acento. ¿Y por qué no podían codificar cada carácter con un acento por separado, sin tener que recurrir a modificadores? Empezaron así, por eso tenemos un carácter independiente para "á", pero este método dejó de funcionar cuando se llegó al vietnamita (echadle un vistazo a un texto en vietnamita y vereis en seguida el motivo...).

También se creó otra codificación alternativa, UTF-32 (o UCS-4), qué consistía en guardar cada codepoint con 4 bytes. En realidad 3 bastan, pero en aras de mantener todos los carácteres alineados para arquitecturas de 4 bytes se añade uno extra (ya que estamos desperdiciando espacio...). Este es el motivo por el que en linux wchar_t mide 4 bytes, mientras que en Windows mide 2.

Estos dos encodings tienen en común que para los carácteres occidentales incluyen un byte con valor 0. Pero en una cadena C, el byte con valor 0 tiene el significado especial de ser el final de la cadena de texto. Todos los programas que usan C y leen texto tienen que cambiarse, ya que strlen, strcpy, etc. ya no funcionan con estos textos.

Así estaban las cosas cuando Ken Thompson y Rob Pike inventaron un nuevo encoding de tamaño variable llamado UTF-8. UTF-8 es idéntico a ASCII para todos los carácteres inferiores a 128, y usa uno o varios bytes extra (hasta un máximo de 4) cuando tiene que almacenar un número superior a 128. Cualquier texto ASCII en inglés es automáticamente un texto UTF-8 válido. Los textos europeos son en torno a un 2% más grandes que usando ISO-8859-15, ya que sólo los carácteres acentuados aumentan de tamaño. Los únicos que realmente salen perdiendo son aquellos que tenían un alfabeto pequeño (griego, ruso, ...) sin nada en común con el inglés, ya que antes podían codificar cada carácter con un 1 byte y ahora necesitan más. UTF-8 no usa ningún byte 0 en su codificación, y funciones como strcpy funcionan con textos UTF-8.

Mi recomendación es usar UTF-8 tanto en la base de datos como en la interfaz web. Algunos consejos prácticos:

Si guardais un texto en Windows como UTF-8, teneis muchas posibilidades de que el editor añada un "BOM" (también llamado "signature"). El BOM era útil para UTF-16, pero para UTF-8 es totalmente irrelevante, ya que en UTF-8 los carácteres se leen en un array de bytes, y el orden de la arquitectura no cambia nada (no existe un UTF-8 LE o UTF-8 BE). Pero en Windows lo siguen escribiendo para poder distinguir texto codificado en UTF-8 del codificado con otro encoding. Cuidad de usar un editor que os permita guardar en UTF-8 sin BOM, o vereis como vuestras páginas escriben tres bytes de más al principio de cada página web (el carácter BOM escrito en UTF-8 es EF BB BF). Si no la función headers en PHP os da un error porque ya habeis escrito "algo" en la página, y no sabeis lo que es, comprobad si el BOM está ahí y quitadlo.

Codificar vuestros textos en UTF-8 es el primer paso, pequeño pero significativo, para la internacionalización de vuestra página. En el próximo artículo veremos un ejemplo práctico de como traducir una página web.

Por último, es interesante saber que no basta con conocer el carácter que se le quiere mostrar al usuario para saber que grafía (en inglés, el glyph) hay que mostrar en pantalla.

Algunos idiomas como el árabe son contextuales, el mismo carácter puede tener 4 grafías distintas según esté solo, empiece la palabra, esté en medio, o la termine. Otros idiomas comparten carácteres, pero cambian ligeramente (o radicalmente) su grafía. El ejemplo más conocido es el de los scripts hanzi (Chino), kanji (Japonés) y hanja (Koreano). Estos scripts tienen un origen común, pero con el tiempo la forma de representar esos carácteres ha ido evolucionando. Así, si tenemos que mezclar en un mismo documento un carácter kanji Japonés con su equivalente en Chino tradicional, debemos indicar de alguna forma que una parte del texto está en Japones y otra en Chino tradicional. El mismo problema tiene el serbio, que se puede escribir en latín, o en cirílico, pero con la particularidad de que en cirílico algunas grafías cambian con respecto al cirílico ruso (ver este artículo sobre tipografía para más información). A pesar de que en HTML podemos indicar el language del documento, o de trozos de texto, usando el atributo "lang".

Ningún navegador cambia las grafías en función del idioma elegido, así que podeis considerar el párrafo anterior como puramente teórico, pero aún así es interesante poner correctamente el atributo "lang" ya que la pronunciación al igual que las grafías dependen del idioma (¡y de forma muchísimo más marcada!) y para personas invidentes es importante que su lector sepa con que voz debe de leer el texto.

Por cierto, Rob Pike trabaja en Google. Si quieres trabajar en un ambiente genial, con brillantes compañeros, envía tu CV a Google.