Google I/O 2012

Shiny Toys

Since it was Google I/O, every attendee received some shiny toys: a Nexus phone and Nexus 7 tablet, a Nexus Q streaming media player, and a Chromebox (the ChromeOS version of a Mac Mini).

The Nexus Q doesn't really have any impact on IT, and it's an odd system: it costs over 3 times as much as other streaming appliances, like Roku and Apple TV, but at this time, can only stream movies, TV and music from Google Play - no Netflix, Amazon Video or Pandora (i.e. all the services most people already use), and obviously no iTunes.

Unlike the Q, phone and tablet are actually useful. Not only do they both run the latest version of Android (4.1 aka JellyBean - preinstalled on the tablet, and upgraded over the air on the phone a day after I/O) - they run "pure" Android - no manufacturer or carrier software is installed on the device. The Nexus phone is unlocked, and can be used on any GSM carrier (although the pay-as-you-go plans available in the US aren't that great, and because I have a discounted AT&T contract through Stanford, I'd need to sign up for 2 year plan on the phone). Both devices were easy to setup with Stanford Email and Calendar (not surprising since I've already migrated to Google), and Google Drive on Android has support for multiple accounts (unlike the iOS client).

One of the big announcements was that Chrome is now the standard browser in Android 4.1, and that Chrome was being released for iOS too (the iPhone and iPad version were released later on the first day of I/O). All the mobile versions of Chrome support Chrome Sync, which allows you to sync bookmarks, open tabs, auto-fill information (and optionally passwords) to one of your Google Accounts. Obviously this has privacy issues, but being able to browse the list of open tabs in Chrome on your laptop from your phone or tablet is very convenient.

Google Glass

Sergey Brin interrupted the keynote on the first day to demonstrate Google Glass - a head mounted display that looks like eyeglasses with the lens replaced with a display, and a camera built into the frame. The demo, a Google+ Hangout with Glass-wearers skydiving from an airship, biking across the roof of the Moscone Center, and absailing down the side was pretty cool the first day… the repeat the second day (ostensibly a behind the scenes view, but with very little background information), was time that should have been better utilized.

Google Now

Another big announcement was Google Now, an extension to Google search on Android that attempts to predict what a user will search for, and provide commonly-searched-for information in a set of cards. After a few days of use, Google Now on my phone shows me the local weather, estimated time to/from work (and traffic news), and some links related to the Red Sox. Some Google searches will result in a card being displayed, others will not; in either case, the regular search results are also shown.

Interesting Sessions

Most of the sessions I attended were about web technologies, including:

The Web Can Do That?


A showcase of some of the new capabilities of web browsers, including new CSS layout features, dynamic CSS, data binding, the HTML5 filesystem API and client side downloads, efficient data transfer between pages and the new Device APIs: camera and audio access and streaming. The slides, including the demo are available at - since many of the demos use new features, it's best to use a browser like Chrome Canary to view it.

Better Web Tooling


Paul Irish described some common tools for building web apps, then describe a new project - Yeoman - which packages many of these tools into an easy-to-use framework. The goal of Yeoman is to enable developers to progress from an idea to a rough prototype in about 10 minutes, while still taking care of all the "right" things: unit tests, code linting, packaging, etc.

Web Intents


Web Intents(spec) are modeled after Android's Intents system, which allows Android apps to advertise services to other apps. Apps advertising Web Intents can use the proposed element to describe their capabilities, or intents objects in a manifest.json resource. A Javascript shim is available to add intent support to current browsers.

One of the interesting properties of web intents is that there's no direct connection between the two web apps; all communication is handled within the browser, so there's no trust between the web apps (in some ways, it's similar to how pipes work in Unix, with the browser doing the work of the pipe).

Web Components


Web Components is another emerging W3C standard. Web components are intended to replace the current mess of Javascript gadgets and widgets for UI components, or the various Like, +1, Tweet this sharing buttons. While developers using those gadgets are supposed to install them on a page or app, and not modify the internals, many are tempted to tweak the style or behavior; or developers try to use components from two Javascript frameworks and run into problems.

Even using modern Javascript frameworks and techniques, there's a whole lot of HTML construction from strings and extra div and span elements, rather than using proper semantic markup. Web Components use the shadow DOM, custom elements and templates to enable the creation of new, packaged components. The shadow DOM enforces encapsulation, so Web Component authors can define what the component users can modify, by pulling child elements from the semantic elements for content, and using CSS Variables for style.

Cloud Engine


Google announced Cloud Engine during the keynote on day 2: it exposes Google's VM infrastructure as an on-demand cloud VM service, designed to provide consistent CPU and storage performance. Cloud Engine is similar to Amazon's EC2, but data is encrypted at rest, and communication between regions uses Google's global private network. Google has partnered with companies like RightScale, OpsCode, MapR and PuppetLabs to provide management tools. During RightScale's demo they stated they had seen consistent 2 minute boot times.

MapR ran a live demo of a 1TB TeraSort job: it completed in 80 seconds, using 1,256 disks and 5,024 cores for a total cost of $16 (technically $720 since Cloud Engine is charged by the hour). The current record for a 1TB TeraSort (not the 100GB that many vendors use) is 62 seconds (which used a physical cluster with 4x the disk and 2 x the cores, and cost $5MM).

Cloud Engine is currently only available to customers who need large compute clusters; there's no date for when small numbers (or single) VMs will be available to users.

Other Things

Big Query

The Big Query session was mostly a case study, but the tool still looks interesting for a way to deal with "big data".

Apps Script

Apps script received several updates during I/O, most are summarized on the Google Apps Developer Blog - the big updates were the ability to create full HTML pages as output and the release of a new JSON-based database for Apps Script (called ScriptDb).

App Engine

Several updates were also announced for App Engine, including support for SSL on custom domains (using either SNI or virtual IPs), and Cloud Endpoints. Cloud Endpoints is currently only available via the Trusted Tester Program, but it provides an easy way to create RESTful APIs (and OAuth 2.0 support) via code annotation. The Cloud Endpoints service can also create API-specific client libraries for Objective C, Java and Javascript.


  • Cloud Engine could be useful for researchers (and some Stanford researchers already have access), but it's not an option for infrastructure services at this time
  • Web Intents, Web Components and the other improvements will make it easier to generate modular web apps (assuming the specs are widely adopted by browser vendors)
  • Cloud Endpoints and Custom SSL domains make App Engine a more attractive platform than in the past, although Custom Endpoints' OAuth support might be a potential lock-in problem