Sunday, December 23, 2007

[Gd] Don't stare out the window to track Santa - use Google Maps or Earth instead!

| More

Official Google Maps API Blog: Don't stare out the window to track Santa - use Google Maps or Earth instead!

As announced on the Google blog in November, we've partnered with NORAD to provide real-time Santa tracking via iGoogle, Youtube, Google Earth, and the Google Maps API. The tracking started at 2AM MST today, and will continue until Santa's finished his global route at 2AM tomorrow. And since we're all about dishing technical details here, we figured we'd give you an inside scope on the Maps API & KML implementations!

In the Maps API tracker (screenshot below), the map displays a Santa icon for his current location, gift icons for previously visited locations, and play icons for locations with embedded Youtube clips. Every 5 minutes, Santa's position updates to a new nearby location. Here are some of the Maps API features we used:

  • The open sourced Marker Manager with a modification to auto-open the info window on the santa marker.
  • GControl extensions to create the special 'Find Santa' and 'Zoom to World' left-hand controls.
  • The newly added Terrain map type (G_PHYSICAL_MAP).
  • Localized map controls and messages for the 6 supported languages, passed in through the hl= parameter in the script tag.

In the Google Earth KML tracker file (screenshot below), you'll see a 3-d model of Santa and his reindeer changing locations, with a smooth fly-in to each location.

The general design principle here is that every client should fetch the model of Santa only once and then, every minute or so, we simultaneously update its location and move the camera to the new position.

The basic mechanism is an initial file with two NetworkLinks: one to fetch the <Model> KML file, and one to fetch the <Update> KML file every 60 secs. The update uses <Change> to adjust the coordinates of the model's <Location>, and it also includes a new <LookAt> position.

The NetworkLink that fetches the update has <flyToView> enabled and the LookAt of the update KML is what drives the viewer to the new location of the model. The Updates in KML document provides additional details for those interested.


Friday, December 21, 2007

[Gd] Brian McCallister on Ning, OpenSocial, and Apache Shindig

| More

Google Code Blog: Brian McCallister on Ning, OpenSocial, and Apache Shindig

When I read an email sent to an Apache Software Foundation mailing list suggesting an open source project for OpenSocial, I wasn't surprised to see it come from Brian McCallister, a prolific open source developer that I met years ago in a former life.

Brian McCallister now works at Ning, the social network outsourcer, and sat down to talk to me about topics revolving around Ning, OpenSocial, and Apache Shindig.

What will you learn from this chat?
  • What Ning is all about
  • Why Ning and Brian think about OpenSocial, and why developers should be interested
  • The parts and pieces of OpenSocial from the standpoint of a developer, and a third party container
  • How Brian thinks that we will get more than just "Write one, learn everywhere"
  • What Apache Shindig is all about
  • How Shindig allows you to do simple local development, which changes the game with respect to your development lifecycle


Monday, December 17, 2007

[Gd] The Roundup: An offline Shindig that is off the Charts!

| More

Google Code Blog: The Roundup: An offline Shindig that is off the Charts!

I just got back from a trip to Belgium that had me speaking at JavaPolis, a conference full of Java and Web folk from Europe and beyond. Google engineers were all over, and we gave talks on Gears, GWT, Google data APIs, Guice, Google Java Collections, and Java language issues. It was capped off with an informal pub meetup where Google and Atlassian took the bill. Remember, they take pride in that Belgian beer.

GWT was in full force at the event. Many people came up to me to discuss their GWT implementations, and a lot of cool APIs and applications have been announced recently. For example, JSTM, the Java Shared Transacted Memory for GWT is a promising new library that gives you a transactional cache that can keep clients in sync. Map this onto Google Gears, and you can get offline caching. The author of the library is taking a lot at that feature right now. We also saw GWT Voices, which gives GWT developers with a cross browser sound API. Finally, Chronoscope showed us that you could take a GWT application, and with a small amount of work get it running on Android. A huge benefit of using the Java programming language across the board.

Speaking of Android, we got to have a nice long chat with Dianne Hackborn and Jason Parks of the Android team about many facets of the platform.

We also got to speak to developers from Zoho, on the release of Zoho Writer that uses Google Gears for full read/write access.

OpenSocial has been chugging away too, and it was exciting to see Apache Shindig, the open source set of components around OpenSocial, get released. This release includes a core gadget container foundation, an open source version of the renderer, an OpenSocial Container, and an implementation of the server interface to container-specific information, including the OpenSocial REST APIs.

A fun new API was released recently too, which got a lot of buzz in the community. Out of the Zurich office, we saw the Google Charts API, which allows you to create dynamic charts in very short order. You can even integrate the new API with KML for quick data visualization.1

The open source side of Google Code has had a busy time too. We released the Google Mac Developer Playground, which is a home for useful open source code produced by the Google Mac team, and any engineers at Google. With this release, Dave MacLachlan announced Statz which has already seen a major upgrade, allowing you to talk to a large swath of services.

On the back of the Google Summer of Code project, the team wanted to keep spreading open source goodness, and announced the Google Highly Open Participation Contest, and have already updated us of its performance. It is outstanding to see so many people coming together to help the myriad of open source communities out there.

To finish up, how about taking a peak at the new Knol effort, or looking at the new developer community calendar, or firing off a video download in the background to watch:

As always, check out the latest tech talks, subscribe to the Google Developer Podcast and visit the Google Code YouTube channel.


[Gd] Our new Developer Community Calendar: View it, Map it, Add to it!

| More

Google Code Blog: Our new Developer Community Calendar: View it, Map it, Add to it!

I was scheduling a trip to New York City last month to visit some friends and thought, "Well, it'd be nice to take in a conference or two." I proceeded to search online for hours -- including queries like "new york city ajax," "conferences new york," "user group new york" -- and came up basically empty handed. Frustrated, I cornered my co-worker Austin Chau, and we did what us geeks tend to do when we want something: we hacked it up ourselves!

Google's 'Developer Events Calendar' has always listed Google-sponsored and/or Google-attended events, but today we're launching a second calendar for the developer community at large. You can view both calendars side-by-side in either calendar view or map view, and with a Google Calendar account, you can add your own meetup to the list. (If you're keen on the project's technical specs, we'll be writing about the code itself shortly, so check back soon for an article and source links.)

We hope you find the calendars useful, and we look forward to your feedback. Try it out now: add your upcoming conference, user group, or party. (Yes, we developers know how to party. If you don't know how, I'll graciously volunteer to show you).


Friday, December 14, 2007

[Gd] ExtInfoWindow 1.0: Ajax powered, CSS customization

| More

Official Google Maps API Blog: ExtInfoWindow 1.0: Ajax powered, CSS customization

I'm Joe Monahan, a 27 year old cyclist originally from South Plainfield, NJ and now living in Chicago, IL where I work the days away as a User Interface Engineer with

I'm excited to announce an addition to the Google Maps Open Source utility library: the ExtInfoWindow, an "extended" info window that allows much more customization than the standard info window. Have you ever wanted to tweak the look and feel of your map's info windows? With ExtInfoWindow and a little CSS you can customize your windows to fit the theme of your site. Do you have a lot of content to place in 50+ markers' info windows, slowing your page load time? ExtInfoWindow can retrieve its content as static HTML strings upon page load, or, for more efficient and real-time data, it can pull data dynamically via an Ajax call when the info window opens. On top of all that, the ExtInfoWindow also mimics the behavior of the regular GInfoWindow, panning the map when needed, closing itself when another window opens, etc.

Sounds too good to be true? Let's check out a quick demo. Given the current season, and the fact that I'm writing this while the snow is falling in Chicago, let's create an ExtInfoWindow around the theme of "winter." All of the window's styles come from an externally linked CSS file, while the content is supplied by an Ajax request to grab the lyrics to "Let it snow! Let it snow! Let it snow!". (I apologize in advance if the song gets stuck in your head)

Want to see more? Check out the class reference documentation and more examples. As always, please report any issues you find in the developer forum.

Let me finish up by thanking Pamela Fox for making such a great Open Source Utility Library, and for all the help in getting this utility integrated. Second, I have to thank the authors of "Beginning Google Maps Applications with Rails and Ajax: From Novice to Professional": Andre Lewis, Michael Purvis, Jeffrey Sambells, and Cameron Turner. The sample code in their book is really what jump-started this utility. Last but not least, I also have to give a quick shout-out to my team over at Orbitz Traveler Update for giving me the extra time to develop the ExtInfoWindow utility and release it as open source.

Disclaimer: These views are mine and not the views of OWW or (subsidiary). I am not a spokesperson for OWW or (subsidiary) and neither OWW nor (subsidiary) endorse any material, content and/or links or assume any liability for any of my actions.


[Gd] Maps from another world

| More

Official Google Maps API Blog: Maps from another world

Google Moon and Google Mars are great examples of what can be done with the Google Maps API. But in the rush to get both products out the door, we never quite got around to going the extra step and providing support in the Maps API itself for the tiles that Google Moon and Google Mars use. Until now, that is!

Fresh out of the oven, Maps API v2.95 includes explicit support for Moon and Mars map types. Want to plan your next moon landing, maintain a database of alien colonies, or just keep track of things you've lost on Mars? All these things and more are now just as easy to do as creating any other Maps mashup. The sky's the limit!

Speaking of the sky... while we were at it, we didn't stop at Moon and Mars tiles. We added support for Google Earth's sky imagery, too. That's right, you can now use the Maps API to create web-based versions of the cosmos, pulling from our huge tileset of merged telescope images. Note that we haven't yet perfected inter-galactic geocoding or driving directions, so you'll have to stick to Earth maps when you want to search for pizza joints and coffee shops. At least for now.

Michael Kosowsky of was kind enough to whip up some great example applications that make use of these new map types. You can use his Cosmic Visibility page to see and understand the phases of the Moon or Mars. You can even see where the planets are in the sky, and where the horizon is, custom-drawn for your specific time and location. We hope these are just the first of many science mashups created from this feature.

All of this is made possible by the following pre-defined GMapType constants, which were added in the v2.95 Maps API:

These work just like the familiar G_NORMAL_MAP and G_SATELLITE_MAP constants. See our examples for more info. As a teaser, here's a quick demo:

Be aware that the sky data is referenced to the celestial coordinate system, which takes some getting used to for us Earth-dwellers. The vertical axis is known as declination, and the horizontal axis is right ascension (which increases to the left, unlike longitude which increases to the right). A good search engine can be used to help you find more info on this coordinate system. We also have some documentation of our own on this topic, for those interested in overlaying KML on the sky in Google Earth. Note that KML isn't yet fully supported on sky maps, due to the coordinate system reversal.

Now go create some other-worldly maps!


Tuesday, December 11, 2007

[Gd] Store Connector

| More

Featured Projects on Google Code: Store Connector

Google APIs used:
A utility that enables online sellers to connect their eBay Stores, Amazon zShops and Marketplaces, and Yahoo! Stores to Google Base so searchers can find their items for sale on Google. It demonstrates Programmatic Login.


[Gd] Verkoops

| More

Featured Projects on Google Code: Verkoops

Google APIs used:
A dynamic web page built from the attributes feed that shows snippet results.


[Gd] Blogoscoped

| More

Featured Projects on Google Code: Blogoscoped

Google APIs used:
A simple search engine that uses the real PHP5 native XML capabilities. The link to the PHP5 source code is on the page.


[Gd] Warmoth

| More

Featured Projects on Google Code: Warmoth

Google APIs used:
Has a search interface for Google Base that uses ColdFusion to search for products that they've uploaded. It sends a query to Google Base (appending a string that is present in only their item descriptions) and parses the returned XML into a page of product links, descriptions, and thumbnail images. You can find the code here.


[Gd] Agent Earth

| More

Featured Projects on Google Code: Agent Earth

Screenshot Job Central
Google APIs used:Displays real estate listings from Google Base in Google Earth.


[Gd] Job Central

| More

Featured Projects on Google Code: Job Central

Screenshot Job Central
Google APIs used:A national non-profit labor exchange. They use the Google Base data API to include job listings from Google Base in their search results.


[Gd] LetMeDo

| More

Featured Projects on Google Code: LetMeDo

Google APIs used:
Provides a search interface to UK housing listings in Google Base.


[Gd] Safarri

| More

Featured Projects on Google Code: Safarri

Google APIs used:
Lets you browse classifieds in Google Base. It overlays query results on Google Earth.


Monday, December 10, 2007

[Gd] Keeping OpenSSL up-to-date

| More

Google Code Blog: Keeping OpenSSL up-to-date

OpenSSL is perhaps the most widely used of all cryptographic libraries, both in the open source world and by commercial enterprises. The OpenSSL team is often approached by such enterprises seeking assistance with specific problems or features of particular interest to that enterprise. Less often they are approached by a sponsor with a technical need and the vision to address that need in a way that benefits the open source community as a whole.

OSSI has had a long association with OpenSSL, beginning with work over a five year period on the groundbreaking FIPS 140-2 validation of an OpenSSL derived crypto library (implemented largely by Googler Ben Laurie) and continuing with additional validations currently underway with extensive improvements by Dr. Stephen Henson and others. We were pleased to help facilitate Google's sponsorship of RFC4507 support to OpenSSL.

RFC 4507, also known as "stateless session resumption," is a relatively new draft standard for a mechanism that enables a secure web (TLS) server to resume sessions without explicitly preserving per-client session state. The TLS server encapsulates the session state into a ticket that is preserved in encrypted form and subsequently provided to a client. That client can then resume the previous session using the information in that ticket, avoiding the need for the full TLS negotiation.

This mechanism may be used with any TLS ciphersuite. It makes use of TLS extensions defined in RFC4366 and defines a new TLS message type.

Stateless session resumption is of particular value in the following situations:

  1. For servers that handle a large volume of transactions from many users

  2. For servers that must cache sessions for a long time

  3. For load balancing requests across servers

  4. For embedded servers with little memory

As an added bonus, RFC4366 support includes the Server Name Indication extension, which allows browsers to specify a server name when connecting to an SSL host. This means that SSL hosts can finally use name-based virtual hosting instead of burning an IP address per host.

The implementation in OpenSSL and the interoperability testing were performed by Steve Henson. This support is available in both the current 0.9.8 product branch and in the development trunk (0.9.9).


[Gd] The GoogleBar: Now with Options!

| More

Official Google Maps API Blog: The GoogleBar: Now with Options!

About a month ago we introduced Gmap2.enableGoogleBar(), a command that puts our normal logo against a white background and adds an expandable local search box. The local search box is based on the configurable LocalSearchControl, so developers immediately asked when they'd be able to use the same options for the GoogleBar.

Well, a ton of you clamored for customization, so we put a rush order on it. Now, in v2.95, we have a new GMapOptions option: googleBarOptions (I know, so many options!). Those options will get fed into the LocalSearchControl when you call enableGoogleBar. It currently supports all the same options as the LocalSearchControl (with some constants renamed to our namespace), and also adds a showOnLoad boolean to let you pop out the search box upon map load. You can play with the options in the playground below to see some simple customization - but I bet that with all the callbacks available, you can come up with more innovative uses of the control than alerting after the search is complete. :) As always, please post questions (or examples of what you've done) in the forum.

Link to GoogleBar Options Playground


Saturday, December 8, 2007

[Gd] Using the Chart API in KML for Quick Data Visualization

| More

Official Google Maps API Blog: Using the Chart API in KML for Quick Data Visualization

Google just released the the Google Chart API. We don't often boast about other non-Geo APIs in this blog, but this one is amazing, easy to use, and, best of all, has great potential for use in Geo apps.

Using the chart API is simple. By passing various parameters in the URL to the chart server, you can control how the chart looks in the image that is returned. Your custom chart image can be placed in Maps API info windows, KML balloons, etc. Let's look at how that second scenario works.

Let's suppose that you wanted to show pizza deliveries at particular locations based on significant points in a romantic relationship. You know how it goes — someone likes pizza, they order it. When they get involved with someone, sometimes they order at a that person's house, so deliveries go down. Around the holidays, they eat less pizza because they're going to parties, but when they break up with someone, they eat a lot of pizza because they're lonely and depressed at home. Very sad. Anyway, I've created a sample using KML, and I placed it in a park in New York so no one thinks I'm watching their actual pizza consumption.

 <?xml version="1.0" encoding="utf-8"?> <kml xmlns="">   <Placemark>     <name />     <visibility>1</visibility>     <Snippet>Relationship versus Pizza</Snippet>     <description><![CDATA[<img src=" chs=200x150&chd;=t:10,15,25,13,3,35& chxt=x,x&chxl;=0:|Jul|Aug|Sept|Oct|Nov|Dec|1:|Start|||Thanksgiving||Breakup& chtt=Pizza%20Deliveries|by%20Relationship%20Progress"/>]]></description>     <Point>       <coordinates>-74.01490535558324,40.70396174218289,0</coordinates>     </Point>   </Placemark> </kml>

See, pretty simple. I'll leave it up to you exploring the Chart API documentation to get more info on creating the chart, but I wanted to show something else you could do with KML 2.2. This will only work in Google Earth, but it's pretty cool. You use the new <ExtendedData> and <Data> elements to create a Balloon template, putting the entity replacements (those codes that look like: $[something]) in the URL. That way, you can put only the data relevant to a particular point in a particular balloon, and you don't have to recreate the whole URL for each <Placemark>. And if you change the chart, but not the data, all you have to change is one <BalloonStyle>.

 <?xml version="1.0" encoding="utf-8"?> <kml xmlns="">   <Document>     <name></name>     <open>1</open>     <Style id="pizza">       <BalloonStyle>         <text><![CDATA[<img src=";=200x150&chd;=t:$[PizzaDeliveries1],$[PizzaDeliveries2],$[PizzaDeliveries3],$[PizzaDeliveries4],$[PizzaDeliveries5],$[PizzaDeliveries6]&chxt;=x,x,y&chxl;=0:|$[PizzaDeliveries1/displayName]|$[PizzaDeliveries2/displayName]|$[PizzaDeliveries3/displayName]|$[PizzaDeliveries4/displayName]|$[PizzaDeliveries5/displayName]|$[PizzaDeliveries6/displayName]|1:|$[RelationshipDataPoint1]|$[RelationshipDataPoint2]|$[RelationshipDataPoint3]|$[RelationshipDataPoint4]|$[RelationshipDataPoint5]|$[RelationshipDataPoint6]&chtt;=Pizza%20Deliveries|by%20Relationship%20Progress"/>]]></text>       </BalloonStyle>     </Style>     <Placemark>       <name>Pizza Deliveries</name>       <styleUrl>#pizza</styleUrl>       <...       <ExtendedData>         <Data name="PizzaDeliveries1">           <displayName>Jul</displayName>           <value>10</value>         </Data>         ...       </ExtendedData> ... 
You can find the full sample here: here. For more info about creating templates, check out Adding Custom Data.


Friday, December 7, 2007

[Gd] v2.94: Terrain and a New MapTypeControl to show it off!

| More

Official Google Maps API Blog: v2.94: Terrain and a New MapTypeControl to show it off!

As announced on the Google Lat Long Blog last week, Google Maps has added a new Terrain map type that displays physical features and, quite frankly, is just dang pretty to look at. If you haven't tried it out yet, search for Mount Everest, the Grand Canyon, Glacier Bay National Park, or any other place that's suffered (enjoyed?) the natural forces of erosion and tectonic activity. We didn't enable the Terrain map type by default in the API as we didn't want to "surprise" developers and suddenly pop a new button on your maps, but we have made it very easy to add this type. Just insert code like this after initializing GMap2 to get a Terrain button on your map: map.addMapType(G_PHYSICAL_MAP);

In addition to the new map type, another subtle change was made to the Google Maps interface: the Hybrid button was removed, and was replaced with a drop-down menu under the Satellite button with a Show Labels checkbox. This new UI reflects the fact that the hybrid layer really just consists of satellite tiles combined with a transparent tile layer of information from the standard map tiles. We've released this new UI functionality to developers within the GHierarchicalMapTypeControl. The new control defines functions to add relationships to the control so you can specify how these drop-down lists will appear. For information on how to set up these relationships, see Modifying the Makeup of Standard Controls in the API documentation.

For those who want to mimic the current maps UI, just replace your GMapTypeControl object with a GHierarchicalMapTypeControl object — the existing G_SATELLITE_MAP/G_HYBRID_MAP relationship is specified by default. For those who want to use this control for their custom maps, however, you can clear the defaults and specify whatever relationships make sense for you.

As an example, I used the awesome Google Maps Creator java application from UCL-CASA to turn freely available ESRI SHP files into tile layers. After getting the custom map API code generated automatically by the application for all my layers, I combined them into one map and added in the new map type control. The result is a map with a drop-down that lets you switch between the four tile layers (various data for San Francisco county). Try it out below — and hopefully you'll be inspired to use the control for your own custom maps! As always, please post questions in the forum.

Link to Custom Map + HierarchicalMapTypeControl Example


[Gd] Open Source in Zurich with vigor and Vim

| More

Google Code Blog: Open Source in Zurich with vigor and Vim

Looking for a cool place to hack with like-minded colleagues? Going to be in or around Zurich on December 13th? If so, please join us for our inaugural Open Source Jam held at Google Switzerland. We'll provide the hacking lounge, Wi-Fi, pizza, beer and the creator of the Vim text editor, Bram Moolenaar. You supply your laptop, good ideas and community spirit.

You can find full details and information on how to register in our Open Source Jam Zurich Google Group. If you haven't already done so, please join the group and let us know your thoughts. And if you happen to attend the event, post a comment and let us know how it went.


Thursday, December 6, 2007

[Gd] In just seven days

| More

Google Code Blog: In just seven days

We announced the Google Highly Open Participation Contest a little over a week ago, and the response has been phenomenal. We already have over 350 student contributors, and the participating organizations have let us know that they're overwhelmed by all the great contributions they've received from their contestants. We're delighted to bring you this video status update, with an extra treat: Guido van Rossum, the creator of Python, stopped in to tell us a little bit more about the Python Software Foundation's participation in the contest.

We always love to hear from you, so feel free to contribute some task ideas and join the contest discussion list.


[Gd] Embed charts in webpages with one of our simplest APIs yet

| More

Google Code Blog: Embed charts in webpages with one of our simplest APIs yet

Today we're launching the Google Chart API, a really simple tool for creating charts and graphs that are perfect for websites.

Let's get straight in with an example. This URL:|World

Creates this image:

That's it - no state, no calls, just send your data in an http request and get a png image graph back. Embed the request in an img tag and you're done. We currently support line charts, bar charts, pie charts, scatter plots, and sparklines.

We actually built this originally to use internally - we use it on Video and Finance for example. It seemed like it would be a good thing to open up to other users too. You can find out all about it at on the Google Chart API homepage and there's a Google Chart API group for questions and support.

The Google Chart API started out as a 20% time project here in Zurich, and we're really happy to be launching it to the world today. Let the charting begin!


Wednesday, December 5, 2007

[Gd] Google Developer Podcast Episode Twelve: Android with Dianne Hackborn and Jason Parks

| More

Google Code Blog: Google Developer Podcast Episode Twelve: Android with Dianne Hackborn and Jason Parks

As soon as Android and the Open Handset Alliance was out in the wild, we were chomping at the bit to talk with some of the people behind the platform to discuss the developer-related information.

We were lucky enough to get some time from Dianne Hackborn and Jason Parks, who have been doing this work for a long time. They used to be at Be, and PalmSource, and you will hear how that experience has come through to Android. In fact, you will see how the Android team has engineers from many other platforms (Linux, Danger, and Windows Mobile).

Dick Wall himself is an advocate on Android, and you can hear how excited he is to talk about this!

What will you learn on this podcast?
  • Some history behind the project
  • The high level architecture of Android. For example, how Linux processes handle the VM and manage security (the VM doesn't handle it)
  • Details on the Dalvik VM and how it is optimized for small devices
  • The architecture: From Intents to Views to Permissions and more
  • How XML is slow, but the tools convert the XML to a nicer format for you
  • The tooling and steps for building an application on Android
  • How so many objects have a URL, and how the environment is like a mini-SOA (Services across processes instead of across the network)
  • Thoughts on how you program for small devices, and things to watch out for if you move from the desktop
  • The control, or lack of control that you have over the application lifecycle
  • "Everything you do drains the battery"
  • The thread story: they exist, you don't have to deal with them if you don't want too, and the UI
  • Using XMPP for messaging

You can download the episode directly, or subscribe to the show (click here for iTunes one-click subscribe).

Want to learn more about Android? Read the book or watch the movie depending on how you are feeling!



Friday, November 30, 2007

[Gd] Google Data Ideathon

| More

Google Code Blog: Google Data Ideathon

The Google Data team is holding a local event for developers Thursday, December 13th, 5:00pm-10:30pm at the Googleplex (Mountain View, CA). It'll be part hackathon, part unconference, part user group, part food, and part fabulous prizes.

Besides a short kick-off session, everything else will be up to you. We'll provide the wi-fi, power and food, and you can utilize the time however you want -- whether it's to pick the brain of someone on the GData team, meet other local developers, hack away on your current project, sit in on impromptu sessions about things like GData + Gears and GME, or hold your own lightning talk about the project you're working on.

Head over to the GData blog for the full announcement and the event page to RSVP and for more info.

Hope to see you there!


Thursday, November 29, 2007

[Gd] Google Gadgets going cross-platform

| More

Google Code Blog: Google Gadgets going cross-platform

For about two years now, people have been writing gadgets for Google Desktop on
Windows and for iGoogle on the web. Today, with the announcement of Google
Gadgets for Mac OS X, Google Desktop users on the Mac can now run the same
Windows and web-based gadgets in Apple's Dashboard with zero (or very few)
changes. Check it out for yourself.

Google Gadgets for the Mac uses WebKit's JavaScript engine inside Dashboard, so
the majority of gadgets just work if they're written properly. The rest can be
fixed by following a few guidelines:
  • Use JavaScript, not JScript
    • WebKit is case-sensitive, JScript is not, which can lead to problems if you assume can you do things like interchange SetTimeOut() and setTimeout().
    • Avoid JScript-only features like collections and ActiveX.
    • Avoid IE-specific DOM extensions, just as if you were writing a multi-browser web application.
  • Avoid Windows-specific APIs
    • You shouldn't assume ActiveX or certain DLLs are available. Neither WebKit nor Mac OS X supports ActiveX, so these gadgets must be rewritten.
    • Avoid Windows-only APIs such as Google Talk. These APIs are not (yet) available on Mac OS X.
  • Understand how Dashboard is different
    • The Dashboard environment is very different from a web page or the Desktop sidebar on Windows in that it comes and goes as the user activates it. Don't rely on your gadget always being visible. Your gadget won't run or update when Dashboard isn't in the foreground.
    • Don't rely on access to the file system. The security model for Dashboard doesn't allow arbitrary file access to the hard disk, although your gadget does have access to files in its own archive. Things like file pickers won't work. Note that while restricted file system access is a departure from how gadgets work on Windows, it's consistent with Dashboard's security model and the behavior of other widgets developed for Mac OS X.

For more details, see Writing a Cross-Platform Gadget, part of the Desktop Gadget API documentation.

If you're interested in developing your own gadget, visit the Gadgets API homepage. If you're already a gadget developer, download the beta today to test your gadget and ensure that it works correctly.


Wednesday, November 28, 2007

[Gd] Chronoscope: 2 + 2 = 5 with GWT and Android

| More

Google Code Blog: Chronoscope: 2 + 2 = 5 with GWT and Android

Timepedia has released Chronoscope, an open source charting and visualization library, built using GWT.

It features:
  • Canvas abstraction for drawing vector graphs
  • Graph Style Sheets abstraction for configuring the look-and-feel of charts
  • Scalable multiresolution rendering supporting up to tens of thousands of points
  • Zoom and pan at interactive frame rates, from centuries to milliseconds
  • Auto-ranging, auto-layout of chart axes and ticks.
  • Auto-legend, and mini-chart Overview
  • Add pushpin markers, domain and range markers, and overlays like Google Maps
  • Bookmarkable chart state, works with Back button
  • JS interopability. GWT API can be used by pure Javascript programmers
  • Microformat support. Charts can be configured without programming.
  • Server-side Font assistance. Render rotated text.
  • Portable, Chronoscope is not tied to GWT, can be used to render from servlets, applets, or other environments.

What is particularly interesting is how the Chronoscope team was able to take their existing Java source code, add 8 hours of Android exploration, and ended up with the same charting and visualization library that works on Android using their graphics support.

This is one area that GWT truly shines. The fact that you write your code in the Java programming language means that you can reuse it in other places where Java runs. Being able to write one application and quickly have it run on Android and the iPhone is pretty compelling.

Here you can see it running:


Tuesday, November 27, 2007

[Gd] It's here: the Google Highly Open Participation Contest

| More

Google Code Blog: It's here: the Google Highly Open Participation Contest

The Google Summer of Code program has been a joint labor of love between Google and the open source community for the past three years, and the results have been spectacular: hundreds of college students have been introduced to open source software, thousands of people across the globe have begun development together and millions of lines of open code have been produced, 4 million last year alone. We've been particularly proud of this program and how much it has helped the community and we've spent a lot of time thinking about ways we can continue helping open source projects find even more contributors. Today, we're pleased to announce the Google Highly Open Participation Contest, our new effort to get pre-university students involved in all aspects of open source development, from fixing bugs to writing documentation and doing user experience research.

While we're very excited about many aspects of the contest, the best part is that everyone can participate. Contestants must meet the eligibility requirements, but anyone interested in helping out can simply suggest a task to be included in the contest. Our contestants have a chance to win t-shirts, cash prizes, and a visit the Googleplex for a day of technical talks, delicious food and a photo with our very own Stan T. Rex.

Want to learn more? Check out the contest FAQs and tell your favorite pre-college students to pick a task or two to complete. You can always visit our discussion group to get help or share your thoughts.


[Gd] New Article: Creating a User-Contributed Map App

| More

Official Google Maps API Blog: New Article: Creating a User-Contributed Map App

In this crazy Web 2.0 world, it's all about one thing: the user. It's about what the user wants from your site, and what the user can contribute to your site. That's particularly true about map sites - the world is a big complicated place full of users who are experts on the 10 mile radius around them. That's part of the reason why added user-created maps, geocode editing, and local business reviews this year. Now, the question pulsing through your mind is probably: "How can I get in on some of this user-contributed action??" Good news, we have an answer!

Our latest article, "Creating a User-Contributed Map with PHP and Google Spreadsheets" describes what's necessary to set up a shared Community Map application. The article takes you through the steps of registering a user, logging in a user, letting users add map places, and creating the map. The article uses Google Spreadsheets for a pseudo-database and the PHP client library to perform HTTP operations, giving you the advantage of a nice frontend for database editing/viewing ( and a database that's not dependent on a particular hosting provider. However, those of you who are more comfortable with PHP/MySQL should be able to read through the article and apply the same principles to a MySQL database instead. As always, please post in the forum with questions.


[Gd] Is Google Maps in your neck of the woods? A new, interactive way to find out!

| More

Official Google Maps API Blog: Is Google Maps in your neck of the woods? A new, interactive way to find out!

The good news: here at Google, we're constantly increasing their map coverage internationally: pushing out new tile updates, geocoding/routing data, local business results, etc. The bad news: it's not easy keeping up with the coverage and remembering where we have what. I can barely keep track, and it's my job. :)

So, we've collaborated on a spreadsheet that details our coverage for every country where we have anything, and hooked it up to a nifty auto-filter mechanism so that you can quickly answer questions like:

  • Which countries have map tiles and local business results?
  • Which countries have localized map controls?
  • Which countries have driving directions and geocoding? (shown below)

The FAQ item pointing to the spreadsheet is here, the auto-filterable spreadsheet is here, and for good measure, the published spreadsheet is here. Please post in the forum if you have any questions or suggestions for improving the spreadsheet. Now, go forth and make internationally relevant mashups!


[Gd] ZXing 1d/2d Barcode decoding source code released

| More

Google Code Blog: ZXing 1d/2d Barcode decoding source code released

Recently in the New York Times, we placed a small graphic as part of a Google Print Ad. You aren't looking at one of those eye focus games (It's a sailboat! Or a shark!) but a two-dimensional barcode. Those of us who already know what it is pulled out our phones and "clicked" it with the camera, and were connected to the advertiser's web site. "Wha?", you say? See While this kind of thing has been a common sight in Asia for years, this ad is one of many signs that the technology is arriving in Europe and North America.

But Advertising is only part of the story here. Engineering is also involved and we want to improve the quality and availability of barcode reader software available to developers and end users. So today I would like to announce the "ZXing" (from: "zebra crossing") project, an open-source, Java, multi-format 1D/2D barcode reader which can be built into a reader application for Java and Java ME -- and later, Android.

This project began as a 20% project and is not yet complete, so opening it up is a bit of an experiment. It's not yet the Best Barcode Reader Ever, but it's looking pretty good. For now we want to find those those who can make use of and help improve what's here, so that those good ideas are shared to all developers and everybody wins.

Developers can find the ZXing project on Google Code, and we hope you'll join us on our Google Group and tell us about what you like and don't like about the code.


Friday, November 16, 2007

[Gd] Weekly Google Code Roundup: The Androids are openly social

| More

Google Code Blog: Weekly Google Code Roundup: The Androids are openly social

I just have to take a breath as I start this posting. The last couple of weeks have been a real trip as we first announced OpenSocial and then Android, both announcements that have drawn a lot of interest.

Let's start with Android. We started out announcing the Open Handset Alliance and made sure people realise that this effort is bigger than a Google Phone. It is a mobile platform, with many phones to come! After some of the initial surprise we released the part that you, as a developer, care about: Android SDK.

We have been astonished at the response. We now have over three and a half thousand messages on the Google Group with four thousand members. The discussion has been all over the map, from initial Eclipse setup, to discussing the sample code, to working on how to write native applications on the platform.

We have plenty of material for you to absorb, but a great way to start it:

We are so excited to see the developer interest, and can't wait to see the applications that win money from the $10M prize pool.

Finally, to show how open platforms propel themselves, we got to release open drivers for the QualcommMSM7K.

It's the social

Just before the Android launch, we unveiled the group that worked together to create the OpenSocial APIs.

We have only just begun here, and the current API is a baby 0.5 release, but it is contagious to see the container and social developers work together. Patrick Chanezon sat down and chatted with us about the new APIs and the Campfire One announcement shows you a lot.

To enable developers to get containers going quickly we have put out an opensource container sample and have also seen the beginnings of Apache Shindig, another potential container.

The container partners are coming online quickly. We have already seen the hi5, Ning, and Plaxo sandboxes go live and more are coming.

To get a feel for the various containers and applications that have already been developed, check out video interviews that tell the story nicely.

And in other news...

Android and OpenSocial are not the only bits of news out there. Let's have a quick roundup:

Gmail got a backend facelift and we announced a new email migration API.

There are a couple of fun new open source projects announced: AxsJAX aims to make accessible Ajax applications more possible, and nsscache is an open source named services system.

We put together a nice piece on a spider's view of Web 2.0 which discusses SEO principles and how Web 2.0 practices affect, or do not affect them. What about Web -1.0? That is discussed in this great tech talk on
">the Web that wasn't
. A nice history lesson.

I got to host my first tech talk at Google. I was lucky enough to pull in Steve Souders, Chief Performance Yahoo!, to discuss High Performance Web Sites and YSlow. If you want to make sure your sites run well, check out his core principles.

Oh, and one other thing. The Google Code team did a huge amount of work in revamping Google Code which coincided with the major launches. We believe that the site is a lot cleaner now, and gives us a base to work on as we move forward to do a better job at serving all developers out there. Thanks for joining us so far.

As always, check out the latest tech talks, subscribe to the Google Developer Podcast and visit the Google Code YouTube channel.


Thursday, November 15, 2007

[Gd] Each and every email

| More

Google Code Blog: Each and every email

With hundreds (if not thousands) of popular email clients and mail servers out there, importing email into another service can be challenge, especially when you consider the troves of old email most people save. To ease this pain, we created the Google Apps Email Migration API.

This new API is available in Google Apps Premier, Partner, and Education Editions, and you can use it to migrate your existing email from anywhere into Google Apps. Let's say, for example, you want to import email from your Obscurix Email Server v2.0001715. Just write some parsing code and use our simple API to upload that email into the desired mailbox. For convenience, you can authenticate to the API not only as the end user of the destination mailbox, but also as a Google Apps administrator, and target any mailbox in the domain. This API uses Google data protocol, which means there are a host of client libraries to make importing even easier.

LimitNone (one of our Enterprise Professional partners) has already built a migration utility that works with calendars, email and contacts.

For more info, check out the Google Enterprise Blog, or just dive right into the developer's guide. And please, let us know what you think!


Tuesday, November 13, 2007

[Gd] Pump up your info windows to the max!

| More

Official Google Maps API Blog: Pump up your info windows to the max!

Are your map's info windows bursting with information, barely able to contain it all? Well, let them burst — into maximized info windows. In v2.93, the team has added various options, functions, and events to expand GInfoWindow, letting you mimic the behavior of the Google Maps local search result info windows, which expand to include a wealth of information about particular businesses. By specifying maxContent and maxTitle in GInfoWindowOptions, your info window will automatically be given a maximize button and a (really addictive to watch) maximization animation. The example inlined below shows you how you can use this on map click or marker click, and how you can pass in Strings or DOM nodes to the options:

(Link to simple example of Maximized InfoWindows)

If you're a power developer, you may be interested in dynamically loading the contents of the maximized info window once clicked (so that you only have to download information in which your users are interested). By listening to the 'maximizeclick' event, we can replace the innerHTML of the maxContent DOM node once GDownloadUrl returns with our data. The example here shows loading the contents of another file (in this case, one of our old blog posts) into the maximized info window.

Start playing around with these examples and let us know if you encounter problems in the Maps API forum. Try not to get too addicted to the maximize animation. ;)


[Gd] Introducing AxsJAX -- Access-Enabling AJAX

| More

Google Code Blog: Introducing AxsJAX -- Access-Enabling AJAX

As the developer behind Fire Vox I've always wanted to make AJAX web applications truly usable for the blind and visually impaired. The challenge is that these users have to deal with a much higher learning curve than sighted users. Instead of simply learning the controls for a web application, they have to also learn how to get their assistive technology of choice to go to the interesting parts of that application to find out what is currently there.

When I started as a Noogler, I was extraordinarily impressed with the tools that T.V. Raman had built into Emacspeak for efficiently performing specific tasks. An insight that I gained from watching him use Emacspeak is that the application should just say the right thing in response to user actions; users should not have to do an action in the application and then use their assistive technology to go hunting around the screen to figure out what happened.

In my first week at Google, I discovered Google Reader a highly optimized feed reader with very good keyboard support. For my starter project at Google, I decided to access-enable this application using W3C ARIA. Using Greasemonkey, I could inject JavaScript code to add the needed ARIA bits to make Google Reader say the right things at the right time.

Connecting The Dots

Based on the experience of access-enabling Reader, we have now refactored the code to come up with a common JavaScript framework for enhancing the accessibility of AJAX applications. This framework is called AxsJAX, and it was refined in the process of access-enabling Web Search.

We're now excited to open-source this framework since we believe that there is nothing Google-specific in the techniques we have implemented. We invite the Web developer community to help us collectively define a robust framework for rapid prototyping of accessibility enhancements to Web 2.0 applications.

The ability to rapidly prototype end-user interaction has led to an explosion in the number of AJAX applications; until now, visually impaired users have been left behind in this process. We hope that the AxsJAX framework encourages the Web community to bring the power of Web 2.0 development to solving the problem of accessing rich Web interaction in an eyes-free environment.


Monday, November 12, 2007

[Gd] Yahoo Pipes

| More

Featured Projects on Google Code: Yahoo Pipes

Google APIs used:
An interactive feed aggregator and manipulator.


[Gd] TimesShare

| More

Featured Projects on Google Code: TimesShare

TimesShare Author: The New York Times Get the latest news and share articles with your friends.
Author: NY Times
APIs used:
Get the latest news and share articles with your friends.


[Gd] Android SDK, MSM7K kernel patches and blog now available

| More

Google Code Blog: Android SDK, MSM7K kernel patches and blog now available

Many of those subscribed to this blog have heard our recent announcement about the Open Handset Alliance, and we thought we'd bring everyone up to date. Today, the team released an early look at the Android SDK for developers interested in building applications for Android.

By the way, we've released more than just the SDK. Those of you who follow the development of the Linux kernel on ARM may have seen that we released our initial patches that provide kernel support for the QualcommMSM7K. This release means that support in the Linux kernel is now available for the on board serial, i2c, timer, NAND flash controller, MDP/MDDI framebuffer, gpio controller, and high speed USB client controller. This code also provides access to the baseband features of the chip. The announcement to the kernel developer community can be found on the ARM Linux mailing list. Like all proper Linux kernel code, these patches were released under v2 of the GNU GPL. Stay tuned for more open source related details.

We're really excited about all of these developments and can't wait to see what results. To help get things started, we've also announced the Android Developer Challenge, a $10 million challenge to reward developers for working with the platform. Head over the Android Developers blog to find out more about this exciting mobile platform.


Monday, November 5, 2007

[Gd] nsscache: open source named services system release

| More

Google Code Blog: nsscache: open source named services system release

Remember remember the fifth of november, especially if you have to manage unix Named Services (NSS) on a lot of workstations! We're releasing a small python utility, called nsscache, that is used to cache remote NSS maps locally on a given host. Combined with cron, it provides a simple and effective way to remove a critical network dependency from your hosts and potentially speed things up a bit.

You'd be surprised how upset a system can get with a slow, unresponsive, or missing NSS.

This initial release supports pulling passwd, shadow, and group maps from an RFC 2307 LDAP schema and storing them in either nssdb or flat text files. In a wee bit, we'll also release support for netgroup and automount maps as well. The utility is fairly plug and play; our hope is that folks who use it with other data sources (sql databases, soap, etc) and possibly other data stores will extend our codebase and share their extensions with the rest of the open source community.

Why you may be interested?

As soon as you have more than one machine in your network, you want to share usernames between those systems. Linux administrators have been brought up on the convention of LDAP or NIS as a directory service, and /etc/nsswitch.conf,, and nscd to manage their nameservice lookups.

Even small networks will have experienced intermittent name lookup failures, such as a mail receiver sometimes returning "User not found" on a mailbox destination because of a slow socket over a congested network, or erratic cache behaviour by nscd. To combat this problem, we have separated the network from the NSS lookup codepath, instead using an asynchronous cron job and a glorified script, improving the speed and reliability of NSS lookups.

We'll be giving a small presentation about our motivations and experiences at the upcoming event in Melbourne Australia, if you happen to be down under in February!


[Gd] Calling all PHP/MySQL Developers: Come get your sample code!

| More

Official Google Maps API Blog: Calling all PHP/MySQL Developers: Come get your sample code!

Recently, we surveyed developers to find out who had read and benefited from one of our popular PHP/MySQL articles: "Using PHP/MySQL with Google Maps" and "Using PHP and MySQL to create KML." We got quite a few responses. Here are just two of the nifty sites they told us about:

  • SuburbView: This Australian real estate listings site includes a map with checkboxes to let you filter results, and a KML with prominent labels to indicate the all-important price of the listing.
  • Crete Property Map: This is another real estate listings site that also uses checkboxes for filtering, plus our open-source DragZoomControl and nicely styled sidebar items and info windows. The developer then includes the KML output in his sitemap to make sure his real estate listings are indexed by Google and searchable by users on Google Maps.

Since it's become obvious to us that there's a huge and eager PHP/MySQL developer community out there, we're releasing two new articles for you:

All of our PHP/MySQL articles use the same table and data, so it should be easy for you to setup a similar table once and use the techniques described throughout all the articles. In addition, all articles been updated with both PHP 4 and PHP 5 code. (Challenge: How many articles can you do in one sitting, coffee breaks allowed?)

As always, please post in the forum with questions, suggestions on future articles or enhancements, or if you just want to show what you've created.


[Gd] Animoto

| More

Featured Projects on Google Code: Animoto

Google APIs used:
The End of Slideshows - automatically create customized video orchestrations using your images and music.


Saturday, November 3, 2007

[Gd] Introducing... the GoogleBar!

| More

Official Google Maps API Blog: Introducing... the GoogleBar!

Over the past few months, the AJAX Search API team has launched and improved their LocalSearch control for the Maps API. The LocalSearch control makes it easy for developers to add local business search functionality to their mashups.

Here on the Maps API team, we liked the LocalSearch control so much that we wanted to make it really easy for developers to add it to their maps. Today, we've released a new feature for the Maps API, which we've called the GoogleBar.

Developers who enable the GoogleBar will see the "Powered By Google" Logo on their map replaced with a shiny new control, which pops up a search box for the user so they can search the map for local listings. Take a look at the example below. You're looking at my old haunt in the old town of Edinburgh, Scotland. Try searching for a pub!

To enable the GoogleBar, simply call the enableGooglebar() method on the map object within your mashup:

 var map = new GMap2(document.getElementById("map")); ... map.enableGoogleBar(); 

As always, please post questions or comments in the Maps API forum.