<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEQMQng_eCp7ImA9WhFSFko.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195</id><updated>2013-06-19T13:06:23.640-07:00</updated><category term="google friend connect" /><category term="cloud platform" /><category term="MIT CSAIL" /><category term="font api" /><category term="wtm" /><category term="stuff" /><category term="topp" /><category term="SVG" /><category term="community" /><category term="analytics" /><category term="OAuth playground" /><category term="jetpack" /><category term="picasa" /><category term="discovery service" /><category term="classes" /><category term="oreilly" /><category term="email" /><category term="tranparency" /><category term="karaoke" /><category term="freebsd" /><category term="myspace" /><category term="c++" /><category term="google grants" /><category term="google compute engine" /><category term="jaiku" /><category term="visualization" /><category term="firevox" /><category term="java" /><category term="I/O Extended" /><category term="google checkout" /><category term="google visualization api" /><category term="ical" /><category term="best practices" /><category term="Winter of Code" /><category term="django" /><category term="preview" /><category term="Google tech talk" /><category term="africa" /><category term="web fonts" /><category term="google code" /><category term="mac" /><category term="silverstripe" /><category term="bespin" /><category term="Google Developers Live" /><category term="ubuntu" /><category term="web exponents" /><category term="gdg" /><category term="conferences" /><category term="google.org" /><category term="google data protocol" /><category term="I/O Live" /><category term="podcast" /><category term="cryptography" /><category term="apis" /><category term="ajax search books news apis" /><category term="hacking" /><category term="website optimizer" /><category term="creative commons" /><category term="osx" /><category term="internationalization" /><category term="guice" /><category term="chronoscope" /><category term="student programs" /><category term="doubleclick" /><category term="PowerMeter API" /><category term="gdd09" /><category term="axsjax" /><category term="atom publishing protocol" /><category term="code for educators" /><category term="GWSOP" /><category term="named" /><category term="WhiteHouse.gov" /><category term="advogato" /><category term="extensions" /><category term="collada" /><category term="google doctype" /><category term="result snippets" /><category term="howto" /><category term="Google Developers site" /><category term="startup" /><category term="google gadgets" /><category term="google io" /><category term="google storage" /><category term="gdd08" /><category term="google technoloy user groups" /><category term="openssh" /><category term="image search" /><category term="fusion tables" /><category term="google earth" /><category term="unix" /><category term="Marketplace" /><category term="samba" /><category term="gdd07" /><category term="standards" /><category term="Google Developers University Consortium" /><category term="camino" /><category term="gmail" /><category term="mylar" /><category term="mobile" /><category term="calendar" /><category term="countdown to I/O 2012" /><category term="google tv" /><category term="courses" /><category term="finance" /><category term="documentation" /><category term="html5" /><category term="gadgets" /><category term="souders" /><category term="documents list api" /><category term="firebug" /><category term="oss devs" /><category term="sketchup" /><category term="storage" /><category term="phone" /><category term="salesforce" /><category term="open source blog" /><category term="Imara" /><category term="hpux" /><category term="css" /><category term="cloud datastore" /><category term="web platform docs" /><category term="weekly roundup" /><category term="performance" /><category term="ocr" /><category term="ajax search" /><category term="bigquery" /><category term="barcodes" /><category term="ODF" /><category term="devfest developer chrome maps social wave apps" /><category term="GDD11" /><category term="cloud storage" /><category term="spa2007" /><category term="kml" /><category term="cifs" /><category term="ubiquity" /><category term="GPE" /><category term="openssl" /><category term="Google Developers Academy" /><category term="goo.gl" /><category term="virtual keyboard" /><category term="cloud sql" /><category term="Vim" /><category term="android" /><category term="soap search api" /><category term="#freeandopen" /><category term="code jam" /><category term="labs" /><category term="interviews" /><category term="kernel summit" /><category term="amarok" /><category term="transit" /><category term="devfest" /><category term="sxsw" /><category term="yahoo" /><category term="gsoc" /><category term="javascript" /><category term="Google Fonts" /><category term="googlewebelements googleio" /><category term="WebP" /><category term="ietf" /><category term="social" /><category term="youtube" /><category term="photos" /><category term="igoogle" /><category term="gdl" /><category term="dart" /><category term="developers" /><category term="Who's at Google I/O" /><category term="browser" /><category term="ajax apis" /><category term="windows" /><category term="oauth" /><category term="oha" /><category term="sitemaps" /><category term="codeedu" /><category term="plone sprint" /><category term="non-profit" /><category term="google apps for your domain" /><category term="narratives" /><category term="internet explorer" /><category term="all for good" /><category term="google code search" /><category term="webmaster" /><category term="games" /><category term="faster web" /><category term="apis. charts" /><category term="prediction api" /><category term="blogger" /><category term="green linux" /><category term="gtags" /><category term="closure tools" /><category term="search" /><category term="chromium" /><category term="developers. meetup" /><category term="hangouts" /><category term="mozilla" /><category term="maps" /><category term="LoCo" /><category term="contextual gadgets" /><category term="open web" /><category term="google+" /><category term="native client" /><category term="ignite" /><category term="Moderator" /><category term="google code project hosting" /><category term="translate" /><category term="shopping" /><category term="picasa web" /><category term="linux virtual server" /><category term="speakers" /><category term="guest post" /><category term="events" /><category term="api" /><category term="google code university" /><category term="book search" /><category term="opensocial" /><category term="chrome" /><category term="google mashup editor" /><category term="objective-c" /><category term="ossjam" /><category term="buzz" /><category term="bootcamp" /><category term="O3D" /><category term="git" /><category term="latitude" /><category term="web performance" /><category term="CardDAV" /><category term="rails" /><category term="social graph" /><category term="google developer days" /><category term="crisis response" /><category term="gdata" /><category term="video" /><category term="nosql" /><category term="developer" /><category term="campfire one" /><category term="israel" /><category term="sign-in" /><category term="joomladayus2007" /><category term="hg" /><category term="solaris" /><category term="google summer of code" /><category term="khronos" /><category term="googleio" /><category term="getpaid" /><category term="spdy" /><category term="play services" /><category term="gtug" /><category term="lca" /><category term="commerce" /><category term="agpl" /><category term="geo" /><category term="themes" /><category term="hackthon" /><category term="dojo" /><category term="dns" /><category term="portugal" /><category term="google cloud storage" /><category term="summer of code" /><category term="Fridaygram" /><category term="rhino" /><category term="chinese" /><category term="random hacks of kindness" /><category term="contacts api" /><category term="subversion" /><category term="feeds" /><category term="#io12" /><category term="zurich" /><category term="education" /><category term="shindig" /><category term="building ajax apps" /><category term="nss" /><category term="webfonts" /><category term="python sprint" /><category term="OCaml" /><category term="github" /><category term="event" /><category term="project hosting" /><category term="google chart api" /><category term="Gmail APIs" /><category term="ZXing" /><category term="chrome apps" /><category term="sixapart" /><category term="google buzz" /><category term="xauth" /><category term="speed tracer" /><category term="haproxy" /><category term="london" /><category term="Google I/O" /><category term="Go" /><category term="KDE" /><category term="speed" /><category term="docs" /><category term="orkut" /><category term="dreamweaver" /><category term="Google Wave" /><category term="apis console" /><category term="google gears" /><category term="syndication" /><category term="gnome women's summer outreach program" /><category term="+1" /><category term="Google" /><category term="Drive" /><category term="googlenew" /><category term="places API" /><category term="payments" /><category term="adsense" /><category term="identity" /><category term="kernel" /><category term="awards" /><category term="gcc" /><category term="EMEA" /><category term="korean" /><category term="joomladayusa" /><category term="custom search" /><category term="templates" /><category term="client libraries" /><category term="openid" /><category term="meetup" /><category term="3d" /><category term="windows programming" /><category term="gwt" /><category term="google apps marketplace" /><category term="pactester" /><category term="fosdem" /><category term="open source" /><category term="freenet" /><category term="google docs" /><category term="firefox" /><category term="py3k" /><category term="#io2013" /><category term="ubucon" /><category term="iphone" /><category term="hackathon" /><category term="accessibility" /><category term="google health" /><category term="conversations" /><category term="danish linux forum" /><category term="tasks API" /><category term="apps script" /><category term="eclipse" /><category term="google web elements" /><category term="books API" /><category term="nonsense" /><category term="chrome web store" /><category term="soc" /><category term="contest" /><category term="apis explorer" /><category term="#io13" /><category term="google apps api" /><category term="MySQL" /><category term="scalability" /><category term="#io2012" /><category term="google developer day" /><category term="security" /><category term="licenses" /><category term="GDE" /><category term="datastore" /><category term="css3" /><category term="Google Drive" /><category term="cloud" /><category term="google web toolkit" /><category term="custom search api" /><category term="webgl" /><category term="caldav" /><category term="chrome os" /><category term="gears" /><category term="posix" /><category term="geolocation" /><category term="tutorials" /><category term="playground" /><category term="pubsubhubbub" /><category term="html" /><category term="linux summit" /><category term="testing" /><category term="OOXML" /><category term="zlib" /><category term="google apps" /><category term="screencast" /><category term="asia" /><category term="sandbox" /><category term="couchdb" /><category term="lessons" /><category term="page speed" /><category term="google data apis" /><category term="joomla" /><category term="apple" /><category term="cricket" /><category term="subscribed links" /><category term="ipad" /><category term="caja" /><category term="evolution" /><category term="gnome" /><category term="chrome extensions" /><category term="linux foundation" /><category term="in-app payments" /><category term="unit test" /><category term="python" /><category term="cms" /><category term="enterprise" /><category term="sites api" /><category term="iiw" /><category term="sidewiki" /><category term="netbsd" /><category term="app engine" /><category term="osi" /><category term="code review" /><category term="apache" /><category term="linux" /><category term="dot net" /><category term="hibernate" /><category term="iguanas" /><category term="authsub" /><category term="cloud services" /><category term="research" /><category term="eclipsecon" /><category term="oscon" /><category term="ajax" /><category term="GDA" /><category term="students" /><category term="programming" /><category term="openajax alliance" /><category term="20% project" /><category term="cloud portability" /><category term="mythtv" /><category term="caption" /><category term="google chrome" /><category term="linuxconf eu" /><category term="about.com" /><category term="plone" /><category term="MacFuse" /><category term="geoserver" /><category term="oscon2007" /><category term="mod_pagespeed" /><category term="KDE 4.0" /><category term="drupal" /><category term="ghop" /><category term="mercurial" /><category term="reader" /><title>Google Developers Blog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://googledevelopers.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>ewood</name><uri>http://www.blogger.com/profile/12341551220176883769</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>1233</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/GDBcode" /><feedburner:info uri="gdbcode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEQMQng9eCp7ImA9WhFSFko.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-2369369088883653109</id><published>2013-06-19T13:06:00.000-07:00</published><updated>2013-06-19T13:06:23.660-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-19T13:06:23.660-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dart" /><title>Dart: Faster Editor and more</title><content type="html">&lt;br/&gt;
&lt;em&gt;By Dan Rubel, Productivity Enhancer, Dart Editor team&lt;/em&gt;&lt;br/&gt;&lt;br/&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://blog.chromium.org/2013/06/dart-faster-editor-and-more.html"&gt;Chromium Blog&lt;/a&gt;&lt;/em&gt;&lt;br/&gt;

&lt;p&gt;Today's release of the Dart SDK and Editor is the first beta release, and contains performance and productivity improvements across the platform. This latest release helps Dart developers automate code evolution, produce smaller JavaScript code and deploy Dart web apps.&lt;/p&gt;

&lt;p&gt;The Editor's analysis engine, responsible for reporting warnings and errors, is completely rewritten and is 20% faster at parsing and analyzing. Now, there’s no need to run all the unit tests just to discover a typo.  The Dart Editor watches your back &lt;i&gt;as you type&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;In addition, Dart Editor makes it easier for developers to manage an evolving app. Some of the new features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Rename Library" refactoring&lt;/li&gt;
&lt;li&gt;"Convert Method to Getter" and "Convert Getter to Method" refactorings&lt;/li&gt;
&lt;li&gt;"Import Library" quick fix&lt;/li&gt;
&lt;li&gt;"Create Class" and "Create part" quick fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Code completion has also improved. For example, completion is now camelcase aware. Type iE and Dart Editor finds isEmpty.
&lt;/p&gt;

&lt;p&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-a1rvpPDhkx8/UcHhYuzru8I/AAAAAAAAB_c/3S-e7pLZGok/s1600/image01.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-a1rvpPDhkx8/UcHhYuzru8I/AAAAAAAAB_c/3S-e7pLZGok/s1600/image01.gif" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
Compiling Dart to JavaScript now results in smaller code. For example, some Dart programs that use reflection and HTML can compile to &lt;a href="https://code.google.com/p/dart/issues/detail?id=11218"&gt;JavaScript that is 3.7x smaller&lt;/a&gt; than previous compilation sizes. 
&lt;/p&gt;

&lt;p&gt;
Dart VM performance has also improved. Compared against the previous release of Dart, &lt;a href="http://www.dartlang.org/performance"&gt;DeltaBlue is 33% faster and Tracer is 40% faster&lt;/a&gt;. This release also includes full &lt;a href="http://www.dartlang.org/slides/2013/02/Bringing-SIMD-to-the-Web-via-Dart.pdf"&gt;SIMD acceleration&lt;/a&gt; in Dart VM.
&lt;/p&gt;

&lt;p&gt;
Finally, deploying a Dart web app is now easier, with the beta &lt;code&gt;pub deploy&lt;/code&gt; command. It creates a directory with your app's code and assets and prepares it for hosting on your favorite web server. You can use this command from Dart Editor or the &lt;a href="http://pub.dartlang.org/"&gt;pub&lt;/a&gt; command-line utility.
&lt;/p&gt;

&lt;p&gt;
That's just the highlights - there are more improvements across the platform. You can read the full &lt;a href="http://news.dartlang.org/2013/06/release-notes-for-darts-beta-release.html"&gt;release notes&lt;/a&gt; for more details and changes. You can download the latest version of Dart Editor, including everything you need for Dart development, from &lt;a href="http://www.dartlang.org"&gt;dartlang.org&lt;/a&gt;. We look forward to your feedback!
&lt;/p&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;em&gt;Written by Dan Rubel, Dart Editor Team&lt;/em&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/ETgQc5Qvd-Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/2369369088883653109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/dart-faster-editor-and-more.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2369369088883653109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2369369088883653109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/ETgQc5Qvd-Q/dart-faster-editor-and-more.html" title="Dart: Faster Editor and more" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-a1rvpPDhkx8/UcHhYuzru8I/AAAAAAAAB_c/3S-e7pLZGok/s72-c/image01.gif" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/dart-faster-editor-and-more.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNRXg9fyp7ImA9WhFSFks.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-495455732880653415</id><published>2013-06-19T10:34:00.001-07:00</published><updated>2013-06-19T10:34:54.667-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-19T10:34:54.667-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google Developers Live" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="#io13" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="gdl" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Google Developers Live: our first year</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://1.bp.blogspot.com/-xxUZ7g5NmAw/UcHrYIzEVMI/AAAAAAAAANA/93X82R86Zac/s1600/DSC02195.JPG" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Louis Gray, Program Manager, Google Developers Live&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
One year ago, we took the magic of Google I/O and brought it home with Google Developers Live (&lt;a class="g-profile" href="http://plus.google.com/104600989437225677892" target="_blank"&gt;+GDL&lt;/a&gt;)&amp;nbsp;&amp;nbsp;- engaging with our developer community &lt;a href="http://goo.gl/Do0Qz"&gt;all year round&lt;/a&gt;, live, from our offices around the world. Nearly 1,000 videos and several million views later, we’ve seen you connect with Googlers and industry experts every day, gaining knowledge, sharing insights, and getting feedback on how to create incredible apps and leverage Google’s tools.&lt;br /&gt;
&lt;br /&gt;
Thanks to the combination of Google+ Hangouts and YouTube Live, you can now see our engineers face to face and gain up to the minute insights on &lt;a class="g-profile" href="http://plus.google.com/104629412415657030658" target="_blank"&gt;+Android&lt;/a&gt;,&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/100585555255542998765" target="_blank"&gt;+Google Chrome&lt;/a&gt;,&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/117105793163182226623" target="_blank"&gt;+Google Cloud Platform&lt;/a&gt;, and many more.&lt;br /&gt;
&lt;br /&gt;
But Google Developers Live is not just all Google products, all the time. It’s an interactive platform for innovative applications, design wizards and entrepreneurs. We’ve hosted initiatives like &lt;a href="https://developers.google.com/women-techmakers/"&gt;Women Techmakers&lt;/a&gt;, Google Top Geek from Mexico City, Android Design In Action and Root Access, and we hear directly from the minds behind applications many of us use every day.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/luP5yW07HIQ" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
It was on GDL where we saw Google Fellow &lt;a class="g-profile" href="http://plus.google.com/101416274833608453021" target="_blank"&gt;+Sebastian Thrun&lt;/a&gt;&amp;nbsp;introduce &lt;a href="https://developers.google.com/live/shows/116425520"&gt;a new HTML5 course on Udacity&lt;/a&gt;. GDL debuted &lt;a href="https://developers.google.com/live/shows/546261298"&gt;the Mirror API&lt;/a&gt; for &lt;a class="g-profile" href="http://plus.google.com/111626127367496192147" target="_blank"&gt;+Project Glass&lt;/a&gt;. And it was on GDL where we first demonstrated &lt;a href="http://www.youtube.com/watch?v=tlcWiP7OLFI"&gt;YouTube API v3&lt;/a&gt;, went &lt;a href="https://developers.google.com/live/shows/34197954"&gt;behind the scenes with Santa Tracker&lt;/a&gt;, and answered &lt;a href="https://developers.google.com/live/shows/327888772"&gt;questions on the Blink rendering engine&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
And when we returned to I/O last month, it was Google Developers Live with wall-to-wall broadcasts, featuring exceptional guests like &lt;a href="http://www.youtube.com/watch?v=8wQT6-nkNBM"&gt;Megan Smith of Google[x]&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=9_FBMgjJ9m4"&gt;Bradley Horowitz of Google+&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=GZBLgd07Ra4"&gt;Hiroshi Lockheimer and Hugo Barra&lt;/a&gt; of Android.&lt;br /&gt;
&lt;br /&gt;
While we love the live interaction, Google Developers Live is more than just live. Our &lt;a href="http://developers.google.com/live/browse"&gt;archives&lt;/a&gt; make it easy for you to watch on your own schedule - in any order, on any product.&lt;br /&gt;
&lt;br /&gt;
Although GDL is only a year old, we’re now broadcasting from Mountain View, New York, Sydney, Tokyo, Milan, Moscow, Buenos Aires, and many places around the world, to bring you the latest Google tools for developers in your time zone, in your language. And we’ve got a lot more planned. So make sure you don’t miss a show, by subscribing to &lt;a href="http://www.youtube.com/GoogleDevelopers"&gt;Google Developers on YouTube&lt;/a&gt;&amp;nbsp;and staying tuned to &lt;a href="https://developers.google.com/live/"&gt;https://developers.google.com/live/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a class="g-profile" href="http://plus.google.com/100535338638690515335" target="_blank"&gt;+Louis Gray&lt;/a&gt;&amp;nbsp;is a Program Manager on Google's Developer Relations Team, running Google Developers Live. He believes life is but a (live) stream.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/105627346610764729807" target="_blank"&gt;+Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/GovDdEegwVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/495455732880653415/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/google-developers-live-our-first-year.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/495455732880653415?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/495455732880653415?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/GovDdEegwVs/google-developers-live-our-first-year.html" title="Google Developers Live: our first year" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-xxUZ7g5NmAw/UcHrYIzEVMI/AAAAAAAAANA/93X82R86Zac/s72-c/DSC02195.JPG" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/google-developers-live-our-first-year.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEDSXszcSp7ImA9WhFSEEg.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-1810790503620354306</id><published>2013-06-12T10:04:00.000-07:00</published><updated>2013-06-12T10:04:38.589-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-12T10:04:38.589-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chromium" /><title>Play Cube Slam, a real-time WebRTC video game</title><content type="html">&lt;img height="80" src="http://1.bp.blogspot.com/-kElTmTR8RR0/UbJjsZxZKUI/AAAAAAAAAos/mdfy6rj_H0s/s320/uberti.jpg" alt="Author Picture" style="float: right; margin-left: 1em; text-align: right;" /&gt;
&lt;em&gt;By &lt;a href="http://code.google.com"&gt;Justin Uberti,&lt;/a&gt; Chromium team&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;Cross-posted with the &lt;a href="http://blog.chromium.org/"&gt;Chromium Blog&lt;/a&gt;&lt;/em&gt;

&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;
&lt;a href="https://www.cubeslam.com/"&gt;Cube Slam&lt;/a&gt; is a Chrome Experiment built with &lt;a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/"&gt;WebRTC&lt;/a&gt;, an open web technology that lets you communicate in real-time in the browser (and in this case, play an old-school arcade game with your friends) without downloading and installing any plug-ins. In this post, we wanted to explain a bit about how Cube Slam works.
&lt;/p&gt;

&lt;p&gt;
Cube Slam uses &lt;a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-mediastream"&gt;getUserMedia&lt;/a&gt; to access your webcam and microphone (with your permission, of course), &lt;a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-rtcpeerconnection"&gt;RTCPeerConnection&lt;/a&gt; to stream your video to a friend, and &lt;a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-rtcdatachannel"&gt;RTCDataChannel&lt;/a&gt; to transfer the bits that keep the gameplay in sync. If you and your friend are behind firewalls, RTCPeerConnection uses a &lt;a href="http://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT"&gt;TURN&lt;/a&gt; relay server (hosted on Google Compute Engine) to make the connection. When there are no firewalls in the way, however, the entire game happens directly peer-to-peer, reducing latency for players and server costs for developers.
&lt;/p&gt;

&lt;br /&gt;
&lt;div style="margin-left: 1em; margin-right: 1em;"&gt;
&lt;img src="http://4.bp.blogspot.com/-KYN2wbuLmZI/UbJixtM1v3I/AAAAAAAAAog/sTNgNmq9x7w/s1600/4_cube_slam_game_over.jpg" alt="CubeSlame Game Over screen" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/div&gt;

&lt;p&gt;Cube Slam is the first large-scale application to use RTCDataChannel, which provides an API similar to &lt;a href="http://www.html5rocks.com/en/tutorials/websockets/basics/"&gt;WebSocket&lt;/a&gt;, but sends the data over the RTCPeerConnection peer-to-peer link. RTCDataChannel sends data securely, and supports an "unreliable" mode for cases where you want high performance but don't care about every single packet making it across the network. In cases like games where low delay often matters more than perfect delivery, this ensures that a single stray packet doesn't slow down the whole app.
&lt;/p&gt;

&lt;p&gt;
RTCDataChannel only supports unreliable mode in desktop Chrome today. We're working on implementing the latest &lt;a href="http://dev.w3.org/2011/webrtc/editor/webrtc.html"&gt;WebRTC spec&lt;/a&gt;, where we'll use the standard &lt;a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol"&gt;SCTP&lt;/a&gt; protocol to support reliable mode. WebRTC will also be available on Chrome for Android later this year, and you can &lt;a href="https://groups.google.com/forum/?fromgroups#!searchin/discuss-webrtc/android/discuss-webrtc/uFOMhd-AG0A/81p3dE_5peYJ"&gt;try it now&lt;/a&gt; by flipping “Enable WebRTC Android” in chrome://flags. Several browsers are currently working on implementing WebRTC, and we’re looking forward to the day when you can have a Cube Slam face-off against your friends on any browser and any device.
&lt;/p&gt;

&lt;p&gt;
To learn more about the tech in Cube Slam, you can check out our &lt;a href="https://www.cubeslam.com/tech"&gt;technology page&lt;/a&gt; and &lt;a href="https://code.google.com/p/cubeslam/"&gt;source code&lt;/a&gt;. Disable the shields! Destroy the screen! &lt;a href="https://www.cubeslam.com/"&gt;Have fun&lt;/a&gt;!
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Justin Uberti is one of the co-creators of the WebRTC initiative, and leads the WebRTC engineering team at Google. Previously, Justin helped create Google+ Hangouts.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Posted by &lt;a href="https://plus.google.com/107757668297288466839/about"&gt;Ashleigh Rentz&lt;/a&gt;, Editor Emerita&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/UBpNJ-s3hVk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/1810790503620354306/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/play-cube-slam-real-time-webrtc-video.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1810790503620354306?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1810790503620354306?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/UBpNJ-s3hVk/play-cube-slam-real-time-webrtc-video.html" title="Play Cube Slam, a real-time WebRTC video game" /><author><name>Ashleigh Rentz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-hLs75eaOvag/T9o-k_MR_NI/AAAAAAAAAco/J0pO48GDfE8/s220/IMG_20120112_130505%2B%25281%2529.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-kElTmTR8RR0/UbJjsZxZKUI/AAAAAAAAAos/mdfy6rj_H0s/s72-c/uberti.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/play-cube-slam-real-time-webrtc-video.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIEQn8zeip7ImA9WhFTGUs.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-2030966838407703854</id><published>2013-06-11T09:01:00.000-07:00</published><updated>2013-06-11T09:01:43.182-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-11T09:01:43.182-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chromium" /><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><title>Race across screens and platforms, powered by the mobile web</title><content type="html">&lt;img height="80" src="http://4.bp.blogspot.com/-aAC65M3_vkw/Tzqz3PATGGI/AAAAAAAABCs/q9X5BVpobko/s1600/pete_lepage.jpg" alt="Author Picture" style="float: right; margin-left: 1em; text-align: right;" /&gt;
&lt;em&gt;By &lt;a href="https://google.com/+PeteLePage"&gt;Pete LePage,&lt;/a&gt; Chromium team&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;Cross-posted with the &lt;a href="http://blog.chromium.org/"&gt;Chromium Blog&lt;/a&gt;&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;

You may have seen our recent demo of &lt;a href="http://www.chrome.com/racer"&gt;Racer&lt;/a&gt; at &lt;a href="https://developers.google.com/events/io/"&gt;Google I/O&lt;/a&gt;, and wondered how it was made.  So today we wanted to share some of the web technologies that made this &lt;a href="http://www.chromeexperiments.com/"&gt;Chrome Experiment&lt;/a&gt; “street-legal” in a couple of months. Racer was built to show what’s possible on today’s mobile devices using an entirely in-browser experience. The goal was to create a touch-enabled experience that plays out across multiple screens (and speakers). Because it was built for the web, it doesn’t matter if you have a phone or a tablet running Android or iOS, everyone can jump right in and play.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&amp;nbsp;

&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/17P67Uz0kcw" width="560"&gt;&lt;/iframe&gt;&amp;nbsp;&lt;/div&gt;
Racer required two things: speedy pings and a consistent experience across screens. We delivered our minimal 2D vector drawings to each device’s &lt;a href="http://en.wikipedia.org/wiki/Canvas_element"&gt;HTML5 Canvas&lt;/a&gt; using the &lt;a href="http://paperjs.org/"&gt;Paper.js&lt;/a&gt; vector library. Paper.js can handle the path math for our custom race track shapes without getting lapped. To eke out all the frame rate possible on such a large array of devices we rendered the cars as image sprites on a DOM layer above the Canvas, while positioning and rotating them using CSS3’s &lt;a href="http://dev.opera.com/articles/view/understanding-the-css-transforms-matrix/"&gt;transform: matrix()&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Racer’s sound experience is shared across multiple devices using the &lt;a href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html"&gt;Web Audio API&lt;/a&gt; (available in latest iOS and &lt;a href="http://blog.chromium.org/2013/05/chrome-28-beta-more-immersive-web.html"&gt;Android M28 beta&lt;/a&gt;). Each device plays one slice of &lt;a href="http://www.youtube.com/watch?v=YT0k99hCY5I"&gt;Giorgio Moroder’s symphony of sound&lt;/a&gt;—requiring five devices at once to hear his full composition. A constant ping from the server helps synchronize all device speakers allowing them to bump to one solid beat. Not only is the soundtrack divided across devices, it also reacts to each driver’s movements in real time—the accelerating, coasting, careening, and colliding rebalances the presence of every instrument.&lt;br /&gt;
&lt;br /&gt;
To sync your phones or tablets, we use &lt;a href="http://www.html5rocks.com/en/tutorials/websockets/basics/"&gt;WebSockets&lt;/a&gt;, which enables rapid two-way communication between devices via a central server. WebSocket technology is just the start of what multi-device apps of the future might use. We’re looking forward to when &lt;a href="http://www.w3.org/TR/2012/WD-webrtc-20120821/#peer-to-peer-data-api"&gt;WebRTC data channels&lt;/a&gt;—the next generation of speedy Web communication—is supported in the stable channel of Chrome for mobile. Then we’ll be able to deliver experiences like Racer with even lower ping times and without bouncing messages via a central server. Racer’s backend was built on the &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt; using the same structure and web tools as another recent Chrome Experiment, &lt;a href="http://blog.chromium.org/2013/06/a-classic-boardwalk-game-rolls-from.html"&gt;Roll It&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
To get an even more detailed peek under the hood, we just published two new case studies on our HTML5 Rocks site. Our friends at &lt;a href="http://plan8.se/"&gt;Plan8&lt;/a&gt; wrote one about &lt;a href="http://www.html5rocks.com/en/tutorials/casestudies/racer-sound/"&gt;the sound engineering&lt;/a&gt; and &lt;a href="http://activetheory.net/home"&gt;Active Theory&lt;/a&gt; wrote one about &lt;a href="http://www.html5rocks.com/en/tutorials/casestudies/racer/"&gt;the front-end build&lt;/a&gt;. You can also join the team at Active Theory for a &lt;a href="https://developers.google.com/events/713739702/"&gt;Google Developers Live event&lt;/a&gt; this Thursday, June 13, 2013 at 3pm GMT for an in depth discussion.&lt;br /&gt;
&lt;br /&gt;

&lt;em&gt;Pete LePage is a Developer Advocate on the Google Chrome team and helps developers create great web applications and mobile web experiences.&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://plus.google.com/107757668297288466839/about"&gt;Ashleigh Rentz&lt;/a&gt;, Editor Emerita&lt;/em&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/k_x7CigIaig" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/2030966838407703854/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/race-across-screens-and-platforms.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2030966838407703854?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2030966838407703854?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/k_x7CigIaig/race-across-screens-and-platforms.html" title="Race across screens and platforms, powered by the mobile web" /><author><name>Ashleigh Rentz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-hLs75eaOvag/T9o-k_MR_NI/AAAAAAAAAco/J0pO48GDfE8/s220/IMG_20120112_130505%2B%25281%2529.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-aAC65M3_vkw/Tzqz3PATGGI/AAAAAAAABCs/q9X5BVpobko/s72-c/pete_lepage.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/race-across-screens-and-platforms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERHs-fip7ImA9WhFTGUs.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-8027917863522861634</id><published>2013-06-11T08:00:00.000-07:00</published><updated>2013-06-11T08:00:05.556-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-11T08:00:05.556-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bigquery" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Google BigQuery new features: bigger, faster, smarter</title><content type="html">&lt;img height="80" src="http://1.bp.blogspot.com/-vEH0qYuweMI/UbZEnfgwRvI/AAAAAAAAApA/7bLI-haOKsA/s320/hoffa.jpg" alt="Author Picture" style="float: right; margin-left: 1em; text-align: right;" /&gt;
&lt;em&gt;By &lt;a href="https://plus.google.com/111774950438652910367/"&gt;Felipe Hoffa,&lt;/a&gt; Cloud Platform team&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;p&gt;
&lt;a href="https://cloud.google.com/products/big-query"&gt;Google BigQuery&lt;/a&gt; is designed to make it easy to analyze large amounts of data quickly.  &lt;a href="http://googledevelopers.blogspot.com/2013/06/google-bigquery-new-features-bigger.html"&gt;Today  we announced several updates&lt;/a&gt; that give BigQuery the ability to handle arbitrarily large result sets, use window functions for advanced analytics, and cache query results. You are also getting new UI features, larger interactive quotas, and a new convenient tiered pricing scheme. In this post we'll dig further into the technical details of these new features.
&lt;/p&gt;

&lt;h2&gt;Large results&lt;/h2&gt;
&lt;p&gt;BigQuery is able to process terabytes of data, but until today BigQuery could only output up to 128 MB of compressed data per query. Many of you asked for more and from now on BigQuery will be able to output results as large as the largest tables our customers have ever had.&lt;/p&gt;

&lt;p&gt;To get this benefit, you should enable the new "&lt;code&gt;&lt;a href="https://developers.google.com/bigquery/docs/queries#largequeryresults"&gt;--allow_large_results&lt;/a&gt;&lt;/code&gt;" flag when issuing a query job, and specify a destination table. All results will be saved to the new specified table (or appended, if the table exists). In the updated web UI these options can be found under the new "Enable Options" menu.&lt;/p&gt;

&lt;p&gt;With this feature, you can run big transformations on your tables, plus get big subsets of data to further analyze from the new table.&lt;/p&gt;

&lt;h2&gt;Analytic functions&lt;/h2&gt;
&lt;p&gt;BigQuery's power is in the ability to interactively run aggregate queries over terabytes of data, but sometimes counts and averages are not enough. That's why BigQuery also lets you calculate quantiles, variance and standard deviation, as well as other &lt;a href="https://developers.google.com/bigquery/docs/query-reference#aggfunctions"&gt;advanced functions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To make BigQuery even more powerful, today we are adding support for &lt;a href="https://developers.google.com/bigquery/docs/query-reference#windowfunctions"&gt;window functions&lt;/a&gt; (also known as "analytical functions") for ranking, percentiles, and relative row navigation. These new functions give you different ways to rank results, explore distributions and percentiles, and traverse results without the need for a self join.&lt;/p&gt;

&lt;p&gt;To introduce these functions with an advanced example, let's use the dataset we collected from the &lt;a href="http://data-sensing-lab.appspot.com/"&gt;Data Sensing Lab at Google I/O&lt;/a&gt;. With the &lt;code&gt;percentile_cont()&lt;/code&gt; function it's easy to get the median temperature over each room:&lt;/p&gt;

&lt;pre&gt;
SELECT percentile_cont(0.5) OVER (PARTITION BY room ORDER BY data) AS median, room
FROM [io_sensor_data.moscone_io13]
WHERE sensortype='temperature'
&lt;/pre&gt;

&lt;p&gt;In this example, each original data row shows the median temperature for each room. To visualize it better, it's a good idea to group all results by room with an outer query:&lt;/p&gt;

&lt;pre&gt;
SELECT MAX(median) AS median, room FROM (
  SELECT percentile_cont(0.5) OVER (PARTITION BY room ORDER BY data) AS median, room
  FROM [io_sensor_data.moscone_io13]
  WHERE sensortype='temperature'
)
GROUP BY room
&lt;/pre&gt;

&lt;p&gt;We can add an additional outer query, to rank the rooms according to which one had the coldest median temperature. We'll use one of the new ranking window functions, &lt;code&gt;dense_rank()&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;
SELECT DENSE_RANK() OVER (ORDER BY median) rank, median, room FROM (
  SELECT MAX(median) AS median, room FROM (
    SELECT percentile_cont(0.5) OVER (PARTITION BY room ORDER BY data) AS median, room
    FROM [io_sensor_data.moscone_io13]
    WHERE sensortype='temperature'
  )
  GROUP BY room
)
&lt;/pre&gt;

&lt;p&gt;We've updated the &lt;a href="https://developers.google.com/bigquery/docs/query-reference#windowfunctions"&gt;documentation&lt;/a&gt; with descriptions and examples for each of the new window functions. Note that they require the &lt;code&gt;OVER()&lt;/code&gt; clause, with an optional &lt;code&gt;PARTITION BY&lt;/code&gt; and sometimes required &lt;code&gt;ORDER BY&lt;/code&gt; arguments. &lt;code&gt;ORDER BY&lt;/code&gt; tells the window function what criteria to use to rank items, while &lt;code&gt;PARTITION BY&lt;/code&gt; allows you to define multiple groups to be analyzed independently of each other.&lt;/p&gt;

&lt;p&gt;The window functions don't work with the big &lt;code&gt;GROUP EACH BY&lt;/code&gt; and &lt;code&gt;JOIN EACH BY&lt;/code&gt; operators, but they do work with the traditional &lt;code&gt;GROUP BY&lt;/code&gt; and &lt;code&gt;JOIN BY&lt;/code&gt;. As a reminder, &lt;a href="http://googledevelopers.blogspot.com/2013/03/bigquery-gets-big-new-features-to-make.html"&gt;we announced&lt;/a&gt; &lt;code&gt;GROUP EACH BY&lt;/code&gt; and &lt;code&gt;JOIN EACH BY&lt;/code&gt; last March, to allow large join and group operations.&lt;/p&gt;

&lt;h2&gt;Query caching&lt;/h2&gt;
&lt;p&gt;BigQuery now remembers values that you've previously computed, saving you time and the cost of recalculating the query.
To maintain privacy, queries are cached on a per-user basis. Cached results are only returned for tables that haven't changed since the last query, or for queries that are not dependent on non-deterministic parameters (such as the current time). Reading cached results is free, but each query still counts against the max number of queries per day quota.
Query results are kept cached for 24 hours, on a best effort basis.
You can disable query caching with the new flag &lt;a href="https://developers.google.com/bigquery/docs/cli_tool"&gt;&lt;code&gt;--use_cache&lt;/code&gt; in bq&lt;/a&gt;, or "&lt;a href="https://developers.google.com/bigquery/docs/queries#querycaching"&gt;&lt;code&gt;useQueryCache&lt;/code&gt;&lt;/a&gt;" in the API. This feature is also accessible with the new query options on the BigQuery Web UI.&lt;/p&gt;

&lt;h2&gt;BigQuery Web UI:  Query validator, cost estimator, and abandonment&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://bigquery.cloud.google.com/"&gt;BigQuery UI&lt;/a&gt; gets even better: You'll get instant information while writing a query if its syntax is valid. If the syntax is not valid, you'll know where the error is. If the syntax is valid, the UI will inform you how much the query would cost to run. This feature is also available with the bq tool and API, using the &lt;code&gt;--dry_run&lt;/code&gt; flag.&lt;/p&gt;

&lt;p&gt;An additional improvement: When running queries on the UI, previously you had to wait until its completion before starting another one. Now you have the option to abandon it, to start working on the next iteration of the query without waiting for the abandoned one.&lt;/p&gt;

&lt;h2&gt;Pricing updates&lt;/h2&gt;
&lt;p&gt;Starting in July, BigQuery &lt;a href="https://developers.google.com/bigquery/pricing"&gt;pricing&lt;/a&gt; becomes more affordable  for everyone: Data storage costs are going from $0.12/GB/month to $0.08/GB/month. And if you are a high-volume user, you'll soon be able to opt-in for tiered query pricing, for even better value.&lt;/p&gt;

&lt;h2&gt;Bigger quota&lt;/h2&gt;
&lt;p&gt;To support larger workloads we're &lt;a href="https://developers.google.com/bigquery/docs/quota-policy"&gt;doubling interactive query quotas&lt;/a&gt; for all users, from 200GB + 1 concurrent query, to 400 GB of concurrent queries + 2 additional queries of unlimited size.&lt;/p&gt;

&lt;p&gt;These updates make BigQuery a faster, smarter, and even more affordable solution for ad hoc analysis of extremely large datasets. We expect  they'll help to scale your projects, and we hope you'll share your use cases with us on &lt;a href="https://plus.google.com/+googlecloudplatform/"&gt;Google+&lt;/a&gt;.&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;&lt;em&gt;The BigQuery UI features a collection of public datasets for you to use when trying out these new features. To get started, visit our sign-up page and Quick Start guide. You should take a look at our API docs, and ask questions about BigQuery development on Stack Overflow. Finally, don't forget to give us feedback and join the discussion on our Cloud Platform Developers Google+ page.&lt;/em&gt;&lt;/p&gt;

&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;Felipe Hoffa has recently joined the Cloud Platform team. He'd love to see the world's data accessible for everyone in BigQuery.&lt;/em&gt;

&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://plus.google.com/107757668297288466839/about"&gt;Ashleigh Rentz&lt;/a&gt;, Editor Emerita&lt;/em&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/gKqkvOYt0U0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/8027917863522861634/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/google-bigquery-new-features-bigger.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8027917863522861634?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8027917863522861634?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/gKqkvOYt0U0/google-bigquery-new-features-bigger.html" title="Google BigQuery new features: bigger, faster, smarter" /><author><name>Ashleigh Rentz</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-hLs75eaOvag/T9o-k_MR_NI/AAAAAAAAAco/J0pO48GDfE8/s220/IMG_20120112_130505%2B%25281%2529.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-vEH0qYuweMI/UbZEnfgwRvI/AAAAAAAAApA/7bLI-haOKsA/s72-c/hoffa.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/google-bigquery-new-features-bigger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4ESHo_fCp7ImA9WhFTFEk.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-6978822959452145784</id><published>2013-06-05T09:15:00.000-07:00</published><updated>2013-06-05T09:15:09.444-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-05T09:15:09.444-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="caldav" /><category scheme="http://www.blogger.com/atom/ns#" term="CardDAV" /><category scheme="http://www.blogger.com/atom/ns#" term="apis" /><title>Making Google’s CalDAV and CardDAV APIs available for everyone</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://3.bp.blogspot.com/-8VnCIwbUdUo/Ua9dox6xz6I/AAAAAAAAAMg/6jcfuzzaOsc/s1600/piotr.jpeg" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Piotr Stanczyk, Tech Lead&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
In March we announced that &lt;a href="https://tools.ietf.org/html/rfc4791"&gt;CalDAV&lt;/a&gt;, an open standard for accessing calendar data across the web, would become a partner-only API because it appeared that almost all the API usage was driven by a few large developers. Since that announcement, we received many requests for access to CalDAV, giving us a better understanding of developers’ use cases and causing us to revisit that decision. In response to those requests, we are &lt;a href="https://developers.google.com/google-apps/calendar/caldav/v2/guide"&gt;keeping the CalDAV API public&lt;/a&gt;. And in the spirit of openness, today we’re also making &lt;a href="http://tools.ietf.org/html/rfc6352"&gt;CardDAV&lt;/a&gt; – an open standard for accessing contact information across the web – &lt;a href="https://developers.google.com/google-apps/carddav/"&gt;available to everyone&lt;/a&gt; for the first time.&lt;br /&gt;
&lt;br /&gt;
Both of these APIs are getting other updates as well:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Integration with the &lt;a href="https://code.google.com/apis/console"&gt;Google APIs Console&lt;/a&gt;. To start using CalDAV or CardDAV in your project, just enable it in the Console.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/accounts/docs/OAuth2"&gt;OAuth 2.0 authentication&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;In addition, the CalDAV API now has a new endpoint: &lt;br /&gt;
https://apidata.googleusercontent.com/caldav/v2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Piotr Stanczyk is the Tech Lead of the Google Calendar APIs group. His current focus is to provide next generation Calendar APIs which make developers’ lives easier. He also participates in CalConnect consortium.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/VNyZBQAg5zY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/6978822959452145784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/making-googles-caldav-and-carddav-apis.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6978822959452145784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6978822959452145784?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/VNyZBQAg5zY/making-googles-caldav-and-carddav-apis.html" title="Making Google’s CalDAV and CardDAV APIs available for everyone" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-8VnCIwbUdUo/Ua9dox6xz6I/AAAAAAAAAMg/6jcfuzzaOsc/s72-c/piotr.jpeg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/making-googles-caldav-and-carddav-apis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8CSH07fSp7ImA9WhFTE0U.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-8554892495283832430</id><published>2013-06-04T16:00:00.000-07:00</published><updated>2013-06-04T16:01:09.305-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-04T16:01:09.305-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hackthon" /><title>Hacking for change at Google</title><content type="html">&lt;img alt="Author Picture" height="80" src="https://lh3.googleusercontent.com/-LK_dMxzl5_A/AAAAAAAAAAI/AAAAAAAFtAs/P1FstgH_xlQ/photo.jpg?sz=80" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Patrick Copeland, Google.org&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted with the &lt;a href="http://blog.google.org/"&gt;Google.org Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
On June 1st and 2nd, thousands of developers from across the U.S. came together at nearly 100 different locations to participate in the first ever &lt;a href="http://hackforchange.org/"&gt;National Day of Civic Hacking&lt;/a&gt;. Using &lt;a href="http://hackforchange.org/datasets"&gt;public data&lt;/a&gt; recently released by the government on topics like crime, health and the environment, developers built new applications that help address social challenges.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tA8dKxDgRRU/Ua5o873ZDhI/AAAAAAAAAMM/W7UkPGKF6mg/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="262" src="http://1.bp.blogspot.com/-tA8dKxDgRRU/Ua5o873ZDhI/AAAAAAAAAMM/W7UkPGKF6mg/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
At the Googleplex in Mountain View, we hosted nearly 100 developers, statisticians, data scientists, and designers, who stayed long into the night hacking together prototypes that show how data on health and the environment can be used to enrich lives. &lt;a href="https://developers.google.com/fusiontables/"&gt;Fusion Tables&lt;/a&gt; and &lt;a href="https://cloud.google.com/products/"&gt;Google App Engine&lt;/a&gt; were used to prototype, and groups relied on &lt;a href="https://developers.google.com/bigquery/"&gt;BigQuery&lt;/a&gt; as a workhorse to crunch the biggest datasets. Participants used Google+ Hangouts to connect with hackathons in other states and collaborated with Google Apps and platforms.&lt;br /&gt;
&lt;br /&gt;
Here are a few highlights from the hackathon that stood out as useful, visually stunning, and informative ways to use public data:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://eathealthyforless.org/"&gt;Eat Healthy for Less&lt;/a&gt;, the winner of our Mountain View hackathon, is a mobile web application that uses the Consumer Pricing Index to suggest healthy recipes that can be made on a budget.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dataplus.cog1.net/"&gt;Data+&lt;/a&gt;, a reimagining of how we access data, can make exploring public datasets more intuitive and easily understandable for everyone.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://detoxic.org/"&gt;Detoxic.org&lt;/a&gt; is a web experience and Android app that shows you toxic sites and landfills nearby that you might not know about so that you can take civic action against toxic waste.&lt;/li&gt;
&lt;/ul&gt;Many of the ideas have great potential, and we are encouraging participants to continue their work. We hope that the National Day of Civic Hacking will be a catalyst for innovation in this space, and encourage you to keep track of our tools for civic developers at &lt;a href="http://g.co/civicdevelopers"&gt;g.co/civicdevelopers&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Z0yoFsU57ZM/Ua5o4zWByWI/AAAAAAAAAME/7MKZSPlAFmo/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/-Z0yoFsU57ZM/Ua5o4zWByWI/AAAAAAAAAME/7MKZSPlAFmo/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Congratulations and thanks to everyone who participated!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="http://patrickcopeland.org/"&gt;Patrick Copeland&lt;/a&gt; is director of engineering at Google.org, where he works to build systems that leverage Google's reach to help people around the world.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://profiles.google.com/u/0/105627346610764729807/about"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/dn5RW8L5MvU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/8554892495283832430/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/hacking-for-change-at-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8554892495283832430?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8554892495283832430?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/dn5RW8L5MvU/hacking-for-change-at-google.html" title="Hacking for change at Google" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-LK_dMxzl5_A/AAAAAAAAAAI/AAAAAAAFtAs/P1FstgH_xlQ/s72-c/photo.jpg?sz=80" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/hacking-for-change-at-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IHQHw7cSp7ImA9WhFTE0s.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-438277060187210693</id><published>2013-06-04T09:00:00.000-07:00</published><updated>2013-06-04T10:05:31.209-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-04T10:05:31.209-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>A classic boardwalk game rolls from your phone to your computer—using only your browser</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://4.bp.blogspot.com/-aAC65M3_vkw/Tzqz3PATGGI/AAAAAAAABCs/q9X5BVpobko/s1600/pete_lepage.jpg" style="float: right; margin-left: 1em; text-align: right;" /&gt;
&lt;em&gt;By Pete LePage, Developer Advocate and Boardwalk King&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://blog.chromium.org/2013/06/a-classic-boardwalk-game-rolls-from.html"&gt;Chromium Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Last week we &lt;a href="http://chrome.blogspot.com/2013/05/roll-across-platforms-and-race-across.html"&gt;launched&lt;/a&gt; &lt;a href="http://g.co/rollit"&gt;Roll It&lt;/a&gt;, a &lt;a href="http://www.chromeexperiments.com/"&gt;Chrome Experiment&lt;/a&gt; that links phones to computers and gets people out of their chairs and swinging. We wanted to share how we built a physical game experience with no dedicated hardware. It requires just the web, your computer and a phone.&lt;br /&gt;
&lt;br /&gt;
Here’s a look at the APIs and browser-based features we used to create it.&lt;br /&gt;
&lt;br /&gt;
&lt;div center="" text-align:=""&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-fcVmF0-emTk/Ua1cpd2iG1I/AAAAAAAAA1A/Q43BhGwKbLo/s1600/rollit-screenshot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/-fcVmF0-emTk/Ua1cpd2iG1I/AAAAAAAAA1A/Q43BhGwKbLo/s400/rollit-screenshot.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Roll It is a three-dimensional (3D) experience, from the swing of your phone’s &lt;a href="http://www.html5rocks.com/en/tutorials/device/orientation/"&gt;accelerometer&lt;/a&gt; right up to the virtual models rendered on your computer’s &lt;a href="http://en.wikipedia.org/wiki/Canvas_element"&gt;HTML5 Canvas&lt;/a&gt;. On the phone side, we hooked into browser events like &lt;span style="font-family: Courier New, Courier, monospace;"&gt;DeviceOrientation&lt;/span&gt; and &lt;span style="font-family: Courier New, Courier, monospace;"&gt;DeviceMotion&lt;/span&gt; to detect the speed and direction of a swing. On the computer side we rendered our scene using &lt;a href="http://threejs.org/"&gt;Three.js&lt;/a&gt; and plugged in &lt;a href="http://chandlerprall.github.io/Physijs/"&gt;Physijs&lt;/a&gt; to add physics to the ball and environment.&lt;br /&gt;
&lt;br /&gt;
To sync the phone to the computer we employed &lt;a href="http://www.html5rocks.com/en/tutorials/websockets/basics/"&gt;WebSockets&lt;/a&gt; which enable rapid two-way communication between devices via a central server.&lt;br /&gt;
&lt;br /&gt;
For extra stability we built our backend on &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;
Our &lt;a href="https://cloud.google.com/products/"&gt;Google App Engine&lt;/a&gt; application, built in &lt;a href="http://golang.org/"&gt;Go&lt;/a&gt;, dynamically balances users across our relay servers.&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://cloud.google.com/products/compute-engine"&gt;Google Compute Engine&lt;/a&gt; server maintains game state across synced devices.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/products/cloud-storage"&gt;Google Cloud Storage&lt;/a&gt; speedily serves up the static assets.&lt;/li&gt;&lt;/ul&gt;
We couldn’t have brought this experiment to life without a great team. The theme for Roll It was composed by &lt;a href="http://www.shroom.biz/index.html"&gt;Mr. Tim Healey&lt;/a&gt;. &lt;a href="http://www.legworkstudio.com/"&gt;Legwork Studio&lt;/a&gt; developed the interfaces and game environment, and teamed up with &lt;a href="http://modeset.com/"&gt;Mode Set&lt;/a&gt; for the development.&lt;br /&gt;
&lt;br /&gt;
To dig deeper into the technology behind Roll It, check out the &lt;a href="http://www.html5rocks.com/en/tutorials/casestudies/roll-it/"&gt;HTML5 Rocks Case Study&lt;/a&gt;, or join the team for a &lt;a href="https://developers.google.com/events/717274144/"&gt;Google Developers Live&lt;/a&gt; event this Friday, June 7, 2013 at 5pm GMT for an in-depth discussion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://google.com/+PeteLePage"&gt;Pete LePage&lt;/a&gt; is a Developer Advocate on the Google Chrome team and helps developers create great web applications and mobile web experiences.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/R3WkZcF-MEs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/438277060187210693/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/06/a-classic-boardwalk-game-rolls-from.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/438277060187210693?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/438277060187210693?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/R3WkZcF-MEs/a-classic-boardwalk-game-rolls-from.html" title="A classic boardwalk game rolls from your phone to your computer—using only your browser" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-aAC65M3_vkw/Tzqz3PATGGI/AAAAAAAABCs/q9X5BVpobko/s72-c/pete_lepage.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/06/a-classic-boardwalk-game-rolls-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4MSHk4fCp7ImA9WhFTEE8.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-6510550919103273705</id><published>2013-05-31T12:19:00.001-07:00</published><updated>2013-05-31T12:19:49.734-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-31T12:19:49.734-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Fridaygram" /><title>Fridaygram: supporting nonprofits, yawning dogs, Easter egg in space</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img height="80" src="http://1.bp.blogspot.com/-lhxdSpwCR9w/Uaj1tZZSnOI/AAAAAAAAALw/-dwT8Ox0GQs/s1600/scottk.jpg" style="margin-left: auto; margin-right: auto; text-align: right;" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Scott&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img height="80" src="http://1.bp.blogspot.com/-mjWge2UaRqQ/Uaj1td1T3dI/AAAAAAAAALs/RKeYiwFlonI/s1600/maya_photo.png" style="margin-left: auto; margin-right: auto; text-align: right;" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Maya&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;em&gt;By Maya Amoils, Google.org, and Scott Knaster, Developer Relations&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Throughout this month, we’ve asked developers around the world to sign up for &lt;a href="http://www.mindfulinmay.org/"&gt;Be Mindful in May&lt;/a&gt;, a one-month meditation campaign that challenges participants to learn about meditation while simultaneously dedicating their efforts to a global cause: providing clean water to people in developing nations. So far the campaign has raised over $75,000 AUD for this important issue, and the &lt;a href="https://www.mycause.com.au/page/googledevelopers"&gt;Google Developers team&lt;/a&gt; has raised $1700 AUD.  &lt;br /&gt;
&lt;br /&gt;
The money raised through Be Mindful in May will go to &lt;a href="http://www.charitywater.org/"&gt;charity:water&lt;/a&gt;, an organization that’s helping to bring clean, safe drinking water to the nearly 1 billion people who struggle every day without it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;br /&gt;
&lt;a href="http://www.google.com/onetoday/"&gt;&lt;img src="http://2.bp.blogspot.com/-RGznPyKj9DU/Uaj0ngLpofI/AAAAAAAAALg/paFpP7B34bI/s1600/water-changes-everything_phone.jpg" alt="" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="214" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
To help support nonprofits like charity:water, last month we released the &lt;a href="http://www.google.com/onetoday/"&gt;One Today&lt;/a&gt; mobile app as a limited pilot in the US. One Today introduces users to new projects each day across a wide range of issues, and enables users to donate $1 to the cause. One Today users can amplify their impact by matching their friends’ donations. If you’re in the US, you can join the One Today pilot by &lt;a href="http://www.google.com/onetoday/"&gt;requesting an invite&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
From making a difference in the world to wacky science, studies suggest that &lt;a href="http://blogs.scientificamerican.com/not-bad-science/2013/05/28/why-do-dogs-yawn-when-they-see-sleepy-humans/"&gt;dogs yawn in response to humans&lt;/a&gt;. And not only that: further research shows that sometimes, dogs yawn in empathy with humans yawning, while other times, dogs yawn because they’re feeling stress, as when they’re listening to their owners. Much more research involving yawning dogs and people will be necessary to fully sort this out.&lt;br /&gt;
&lt;br /&gt;
Finally, if you’re previewing the &lt;a href="http://google-latlong.blogspot.com/2013/05/meet-new-google-maps-map-for-every.html"&gt;new Google Maps&lt;/a&gt;, you might be interested in &lt;a href="https://plus.google.com/105417976649853791222/posts/NP2g8wZvmBc"&gt;this cool Easter egg&lt;/a&gt;. And if you’re &lt;i&gt;not&lt;/i&gt; on the new Google Maps, you can &lt;a href="http://maps.google.com/help/maps/helloworld/desktop/preview/"&gt;request an invite&lt;/a&gt;. It’s really nice, and might even keep you from yawning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="http://googledevelopers.blogspot.com/search/label/Fridaygram"&gt;Fridaygrams&lt;/a&gt; provide a chance for us to focus on fun and interesting stuff that’s not necessarily related to writing code. Sometimes we even get to feature inspiring content, like this week’s information about helping nonprofits.&lt;br /&gt;
&lt;br /&gt;
Maya Amoils is a member of the Google.org marketing team where she works on a number of the team's charitable giving initiatives. Maya holds a BA in Science Technology &amp; Society from Stanford University. Outside of work, you can find her biking around the Bay Area or making playlists on Spotify.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt; is the editor of &lt;a href="http://googledevelopers.blogspot.com"&gt;Google Developers Blog&lt;/a&gt;. He likes family time, technology, and watching the San Francisco Giants win baseball games.&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/EqwuS5u6jJQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/6510550919103273705/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/fridaygram-supporting-nonprofits.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6510550919103273705?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6510550919103273705?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/EqwuS5u6jJQ/fridaygram-supporting-nonprofits.html" title="Fridaygram: supporting nonprofits, yawning dogs, Easter egg in space" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-lhxdSpwCR9w/Uaj1tZZSnOI/AAAAAAAAALw/-dwT8Ox0GQs/s72-c/scottk.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/fridaygram-supporting-nonprofits.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EHQ308fCp7ImA9WhBaFEw.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-7650355636843838919</id><published>2013-05-24T11:20:00.003-07:00</published><updated>2013-05-24T11:20:32.374-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-24T11:20:32.374-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="maps" /><category scheme="http://www.blogger.com/atom/ns#" term="Fridaygram" /><title>Fridaygram: Galapagos images, smart dog, timely entanglement</title><content type="html">&lt;a href="https://google.com/+ScottKnaster"&gt;&lt;img height="80" src="http://3.bp.blogspot.com/-zuKki-wX6-w/Tuuip-vap8I/AAAAAAAAA78/BqFcmzSEsDA/s1600/scottk-1.png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;By &lt;a href="http://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, &lt;a href="http://googledevelopers.blogspot.com/"&gt;Google Developers Blog&lt;/a&gt; Editor&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
On &lt;a href="http://googledevelopers.blogspot.com/search/label/Fridaygram"&gt;Fridaygram&lt;/a&gt; we love to celebrate amazing new Street View images. This week we announced new panoramic views of the &lt;a href="https://www.google.com/maps/preview#!q=galapagos+islands&amp;data=!1m4!1m3!1d1244795!2d-90.4509259!3d-0.3831406!4m10!1m9!4m8!1m3!1d1631999!2d-121.888337!3d36.97404!3m2!1i1024!2i768!4f13.1"&gt;Galapagos Islands&lt;/a&gt;, collected with with the &lt;a href="http://maps.google.com/help/maps/streetview/learn/cars-trikes-and-more.html"&gt;Street View Trekker&lt;/a&gt; in partnership with the &lt;a href="https://en.wikipedia.org/wiki/Charles_Darwin"&gt;Charles Darwin Foundation&lt;/a&gt; (CDF) and the &lt;a href="http://www.galapagospark.org/"&gt;Galapagos National Parks Directorate&lt;/a&gt; (GNPD). These images will go live on Google Maps later this year, but you can see a preview below and on the &lt;a href="http://googleblog.blogspot.com/2013/05/capturing-beauty-and-wonder-of.html"&gt;Official Google Blog&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;br /&gt;
&lt;a href="http://googleblog.blogspot.com/2013/05/capturing-beauty-and-wonder-of.html"&gt;&lt;img src="http://3.bp.blogspot.com/-pJR05lMLvPg/UZ-MqAM2TaI/AAAAAAAAALM/dgU2nJzJ3f8/s1600/Trekker+4+-+corrected.jpg" alt="giant turtle" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The Maps team’s 10-day adventure included lots of interaction with local wildlife, but didn’t take place entirely on land. The team worked with the &lt;a href="http://catlinseaviewsurvey.com/"&gt;Catlin Seaview Survey&lt;/a&gt; to collect underwater ocean images too. And in addition to being beautiful and fun, these pictures have a practical use: they act as a visual record that can be compared to changes observed in the future. &lt;br /&gt;
&lt;br /&gt;
Speaking of wildlife, do you have a smart dog? And does your smart dog know 1000+ words, plus have a basic comprehension of grammar? Meet &lt;a href="http://www.sciencenews.org/view/generic/id/350585/description/Dog_sniffs_out_grammar"&gt;Chaser, a 9-year-old border collie&lt;/a&gt; who has been taught to recognize the names of 1000 objects, as well as the meaning of some verbs and prepositions. In tests, Chaser correctly (most of the time) responded to commands such as “take ball to Frisbee”, or even “to Frisbee take ball”. If only our friends and family were that helpful.&lt;br /&gt;
&lt;br /&gt;
Finally, there’s some typically mind-blowing news from the world of quantum physics. We already know that quantum particles can share a connection called &lt;a href="https://en.wikipedia.org/wiki/Quantum_entanglement"&gt;entanglement&lt;/a&gt;, which allows one particle to reflect the state of another no matter how far apart they are. Now an experimental discovery shows that &lt;a href="http://news.sciencemag.org/sciencenow/2013/05/physicists-create-quantum-link-b.html?ref=hp"&gt;particles can be entangled even if they don’t exist at the same time&lt;/a&gt;. We agree with experimenter Jeremy O'Brien of the University of Bristol, who said “It’s really cool”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="http://googledevelopers.blogspot.com/search/label/Fridaygram"&gt;Fridaygram&lt;/a&gt; is about randomly cool and nerdy stories that we hope will amuse you and possibly inspire your weekend. Around here we’re still feeling the &lt;a href="https://developers.google.com/events/io/"&gt;Google I/O&lt;/a&gt; afterglow, so we’re going to recommend you spend some time this weekend watching some of the many &lt;a href="http://www.youtube.com/user/GoogleDevelopers/videos"&gt;session videos&lt;/a&gt; from I/O. If that’s not your thing, maybe you’d like this &lt;a href="http://www.youtube.com/watch?v=Dr3STRBtTp0"&gt;brief but inspiring video&lt;/a&gt; that kicked off the conference.&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/QfCk0675gu8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/7650355636843838919/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/fridaygram-galapagos-images-smart-dog.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7650355636843838919?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7650355636843838919?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/QfCk0675gu8/fridaygram-galapagos-images-smart-dog.html" title="Fridaygram: Galapagos images, smart dog, timely entanglement" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-zuKki-wX6-w/Tuuip-vap8I/AAAAAAAAA78/BqFcmzSEsDA/s72-c/scottk-1.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/fridaygram-galapagos-images-smart-dog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMEQ346cCp7ImA9WhBbGE4.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-5806455414225459229</id><published>2013-05-17T16:30:00.000-07:00</published><updated>2013-05-17T16:30:02.018-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T16:30:02.018-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="#io13" /><category scheme="http://www.blogger.com/atom/ns#" term="Google I/O" /><title>Google I/O 2013: For the developers</title><content type="html">&lt;a href="https://google.com/+ScottKnaster"&gt;&lt;img alt="Author Photo" height="80" src="http://3.bp.blogspot.com/-zuKki-wX6-w/Tuuip-vap8I/AAAAAAAAA78/BqFcmzSEsDA/s1600/scottk-1.png" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;/a&gt;&lt;em&gt;By Scott Knaster, &lt;a href="http://googledevelopers.blogspot.com/"&gt;Google Developers Blog&lt;/a&gt; Editor&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;“Google I/O is an annual developer conference featuring highly technical, in-depth sessions, and showcasing the latest from Google's product teams and partners.” &lt;br /&gt;
&amp;nbsp;&amp;nbsp;  – official description&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Google I/O 2013 has just ended, and even more than usual, this one was for you, our &lt;a href="http://www.youtube.com/watch?v=Dr3STRBtTp0"&gt;developers&lt;/a&gt;. This year, we focused on providing new tools and services you’ve been asking for, plus a few surprises that we hope inspired and delighted you.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Android gets its own IDE: &lt;a href="http://android-developers.blogspot.com/2013/05/android-studio-ide-built-for-android.html"&gt;Android Studio&lt;/a&gt;, based on IntelliJ IDEA Community Edition.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://android-developers.blogspot.com/2013/05/social-gaming-location-and-more-in.html"&gt;Google Play Services 3.1&lt;/a&gt; brings &lt;a href="http://googledevelopers.blogspot.com/2013/05/introducing-google-play-game-services.html"&gt;game services&lt;/a&gt;, location APIs, Google Cloud Messaging enhancements, and &lt;a href="http://googledevelopers.blogspot.com/2013/05/cross-platform-sso-technology.html"&gt;Cross-Platform Single Sign On&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An updated &lt;a href="http://android-developers.blogspot.com/2013/05/new-ways-to-optimize-your-business-in.html"&gt;Google Play Developer Console&lt;/a&gt; adds a very cool app translation service, revenue graphs, alpha and beta testing and staged rollouts, optimization tips, and referral tracking.&lt;/li&gt;
&lt;li&gt;We showed off a &lt;a href="http://googlegeodevelopers.blogspot.com/2013/05/a-fresh-new-look-for-maps-api-for-all.html"&gt;whole new look for Google Maps and Maps APIs&lt;/a&gt;, featuring new base map tiles, a new default marker, a new info window style, and a style refresh for controls.&lt;/li&gt;
&lt;li&gt;In Google Cloud Platform news, we announced that &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/google-compute-engine-is-now-open-to-all.html"&gt;Google Compute Engine is now open to everyone&lt;/a&gt; and has sub-hour billing, we’ve added a &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/app-engine-adds-php-support.html"&gt;PHP runtime to App Engine&lt;/a&gt;, and we introduced &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/get-started-with-google-cloud-datastore-nosql-database.html"&gt;Google Cloud Datastore&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We showed new Google Wallet features: the &lt;a href="http://googlecommerce.blogspot.com/2013/05/fast-and-easy-checkout-for-android-apps.html"&gt;Instant Buy Android API&lt;/a&gt;, which makes buying in native Android apps fast and easy, and the &lt;a href="http://googlecommerce.blogspot.com/2013/05/connect-your-loyalty-programs-offers.html"&gt;Wallet Objects API&lt;/a&gt;, which lets you connect your loyalty programs, offers and more to Google Wallet.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="text-align: center;"&gt;&lt;br /&gt;
&lt;a href="https://plus.google.com/u/1/photos/+GoogleDevelopers/albums/5872864614942094113/5878318568050694242?pid=5878318568050694242&amp;oid=111395306401981598462"&gt;&lt;img alt="" src="http://1.bp.blogspot.com/-tF8dlsEfPpg/UZattNpmepI/AAAAAAAAAK8/GENeTO1TwuE/s1600/entrance.JPG" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Although we put developer announcements first this year, we didn’t skimp on the &lt;a href="http://googleblog.blogspot.com/2013/05/live-from-google-io-mo-screens-mo.html"&gt;cool stuff for everyone&lt;/a&gt;: we refreshed the look of the &lt;a href="http://googleplusproject.blogspot.com/2013/05/new-google-stream-hangouts-and-photos.html"&gt;Google+ stream, launched expanded Hangouts, totally revamped Google+ photos&lt;/a&gt;, announced &lt;a href="http://officialandroid.blogspot.com/2013/05/androidio-just-press-play.html"&gt;Google Play Music All Access&lt;/a&gt;, showed off &lt;a href="http://insidesearch.blogspot.com/2013/05/a-multi-screen-and-conversational.html"&gt;conversational search&lt;/a&gt;, and demoed some &lt;a href="http://www.thehobbit.com/middle-earth/"&gt;amazing Chrome Experiments&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, Google I/O isn’t just about announcements. It’s our chance to share what’s new with you in those &lt;em&gt;highly technical, in-depth sessions&lt;/em&gt; and for you to meet and interact with our engineers and other Googlers, in person and via the Internet. Once again this year, all sessions were recorded and are being posted to &lt;a href="https://developers.google.com/live/"&gt;Google Developers Live (GDL)&lt;/a&gt; for you to peruse whenever it’s convenient for you.&lt;br /&gt;
&lt;br /&gt;
We love putting on Google I/O, and that’s one reason we created GDL. With GDL, we don’t have to pack all our presentations into a 3-day conference. You’ll find new programs on GDL every week, from the same people who present at Google I/O. Just like during I/O, you can watch live or see recordings whenever you want. You can &lt;a href="http://www.youtube.com/googledevelopers"&gt;subscribe to the Google Developers channel on YouTube&lt;/a&gt; to be notified when new programs are posted.&lt;br /&gt;
&lt;br /&gt;
Whether you came to San Francisco, participated in &lt;a href="https://developers.google.com/events/io/io-extended"&gt;I/O Extended&lt;/a&gt;, or watched our live streams, we thank you for your attention and dedication. Here’s to Google I/O 2014!&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/ROu8voGRC4o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/5806455414225459229/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/google-io-2013-for-developers.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5806455414225459229?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5806455414225459229?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/ROu8voGRC4o/google-io-2013-for-developers.html" title="Google I/O 2013: For the developers" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-zuKki-wX6-w/Tuuip-vap8I/AAAAAAAAA78/BqFcmzSEsDA/s72-c/scottk-1.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373502 -123.06486250000002 38.176356999999996 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/google-io-2013-for-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8AR3s7eip7ImA9WhBaEE0.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-5155906012925873743</id><published>2013-05-16T14:51:00.001-07:00</published><updated>2013-05-19T16:57:26.502-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-19T16:57:26.502-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Get started with App Engine for PHP: scalable, secure and reliable</title><content type="html">&lt;img height="80" src="http://3.bp.blogspot.com/-lV4TTiRp1TA/UZUVCWpI3bI/AAAAAAAAAKE/CK7IYtWJilg/s1600/andrew.jessup.png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Andrew Jessup, Product Manager&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/app-engine-adds-php-support.html"&gt;Google Cloud Platform Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
At &lt;a href="https://developers.google.com/events/io/"&gt;Google I/O&lt;/a&gt;, we announced &lt;a href="https://developers.google.com/appengine/docs/php"&gt;PHP&lt;/a&gt; as the latest supported runtime for &lt;a href="https://cloud.google.com/products/"&gt;Google App Engine&lt;/a&gt; in Limited Preview. PHP is one of the world's most popular programming languages, used by developers to power everything from simple web forms to complex enterprise applications.&lt;br /&gt;
&lt;br /&gt;
Now PHP developers can take advantage of the scale, reliability and security features of App Engine. In addition, PHP runs well with other parts of &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt;. Let's look at how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Connecting to Google Cloud SQL from App Engine for PHP&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Many PHP developers start with MySQL when choosing a database to store critical information, and a wide variety of products and frameworks such as WordPress make extensive use of MySQL’s rich feature set. Google Cloud SQL provides a reliable, managed database service that is MySQL 5.5 compatible and works well with App Engine.&lt;br /&gt;
&lt;br /&gt;
To set up a Cloud SQL database, sign into &lt;a href="https://cloud.google.com/console"&gt;Google Cloud Console&lt;/a&gt; - create a new project, choose Cloud SQL and create a new instance. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ImmZwPUUzdA/UZSTbDveVFI/AAAAAAAAABg/bnupdin4uk0/s1600/Screen+Shot+2013-05-09+at+9.33.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-ImmZwPUUzdA/UZSTbDveVFI/AAAAAAAAABg/bnupdin4uk0/s1600/Screen+Shot+2013-05-09+at+9.33.55+PM.png" height="176" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
After you create the instance, it's automatically associated with your App Engine app.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-P9RXhZfx29A/UZSVdkVYqOI/AAAAAAAAACI/m_oAh4rwqDk/s1600/authorize.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-P9RXhZfx29A/UZSVdkVYqOI/AAAAAAAAACI/m_oAh4rwqDk/s1600/authorize.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
You will notice Cloud SQL instances don’t need an IP address. Instead they can be accessed via a compound identifier made up of their project name and instance name, such as hello-php-gae:my-cloudsql-instance.&lt;br /&gt;
&lt;br /&gt;
From within PHP, you can access Cloud SQL directly using the standard PHP MySQL libraries - mysql, mysqli or PDO_MySQL. Just specify your Cloud SQL database with its identifier, such as:&lt;br /&gt;
&lt;pre&gt;&amp;lt;?php

$db = new PDO(
  'mysql:unix_socket=/cloudsql/hello-php-gae:my-cloudsql-instance;dbname=demo_db;charset=utf8',
  'demo_user',
  'demo_password'
);

foreach($db-&amp;gt;query('SELECT * FROM users') as $row) {
  echo $row['username'].' '.$row['first_name']; //etc...
}
&lt;/pre&gt;Methods such as query() work just as you’d expect with any MySQL database. This example uses the popular PDO library, although other libraries such as mysql and mysqli work just as well.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Storing files with PHP and Google Cloud Storage&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Reading and writing files is a common task in many PHP projects, whether you are reading stored application state, or generating formatted output (e.g., writing PDF files). The challenge is to find a storage system that is as scalable and secure as Google App Engine itself. Fortunately, we have exactly this in Google Cloud Storage (GCS).&lt;br /&gt;
&lt;br /&gt;
The first step in setting up Google Cloud Storage is to create a bucket:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9e0q8xj16Qw/UZST2V047iI/AAAAAAAAABw/gDc7ihSz8mg/s1600/Screen+Shot+2013-05-10+at+1.11.02+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-9e0q8xj16Qw/UZST2V047iI/AAAAAAAAABw/gDc7ihSz8mg/s1600/Screen+Shot+2013-05-10+at+1.11.02+PM.png" height="227" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
With the PHP runtime, we’ve implemented native support for GCS. In particular, we’ve made it possible for PHP’s native filesystem functions to read and write to a GCS bucket.&lt;br /&gt;
&lt;br /&gt;
This code writes all prime numbers less than 2000 into a file on GCS:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;?php

$handle = fopen('gs://hello-php-gae-files/prime_numbers.txt','w');

fwrite($handle, "2");
for($i = 3; $i &amp;lt;= 2000; $i = $i + 2) {
  $j = 2;
  while($i % $j != 0) {
    if($j &amp;gt; sqrt($i)) {
      fwrite($handle, ", ".$i);
      break;
    }
    $j++;
  }
}

fclose($handle);
&lt;/pre&gt;The same fopen() and fwrite() commands are used just as if you were writing to a local file. The difference is we’ve specified a Google Cloud Storage URL instead of a local filepath. &lt;br /&gt;
&lt;br /&gt;
And this code reads the same file back into memory and pulls out the 100th prime number, using file_get_contents():&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;?php

$primes = explode(",",
  file_get_contents('gs://hello-php-gae-files/prime_numbers.txt')
);

if(isset($primes[100]))
  echo "The 100th prime number is ".$primes[100];
&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; &lt;b&gt;And more features supported in PHP&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Many of our most popular App Engine APIs are now supported in PHP, including our zero-configuration Memcache, Task Queues for asynchronous processing, Users API, Mail API and more. The standard features you’d expect from App Engine, including SSL support, Page Speed Service, versioning and traffic splitting are all available as well.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Open today in Limited Preview&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://cloud.google.com/appengine/php"&gt;Today we’re making App Engine for PHP available &lt;/a&gt;in Limited Preview. Read more about the runtime in our online documentation, download an early developer SDK, and sign up to deploy applications at &lt;a href="https://cloud.google.com/appengine/php"&gt;https://cloud.google.com/appengine/php&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Andrew Jessup is a Product Manager at Google, working on languages and runtimes for Google App Engine.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/lKHdrRbPNzI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/5155906012925873743/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/get-started-with-app-engine-for-php.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5155906012925873743?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5155906012925873743?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/lKHdrRbPNzI/get-started-with-app-engine-for-php.html" title="Get started with App Engine for PHP: scalable, secure and reliable" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-lV4TTiRp1TA/UZUVCWpI3bI/AAAAAAAAAKE/CK7IYtWJilg/s72-c/andrew.jessup.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373502 -123.06486250000002 38.176356999999996 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/get-started-with-app-engine-for-php.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQMQXk8fip7ImA9WhBbF0o.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-3268305010998099326</id><published>2013-05-16T09:00:00.000-07:00</published><updated>2013-05-16T23:49:40.776-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-16T23:49:40.776-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cloud datastore" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Get started with Google Cloud Datastore - a fast, powerful, NoSQL database</title><content type="html">&lt;img height="80" src="http://2.bp.blogspot.com/-m4cXJmxfPnM/UZUC-eEsLKI/AAAAAAAAAJ4/58RpYXBh2xQ/s1600/photo_7.jpg" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Chris Ramsdale, Product Manager&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/get-started-with-google-cloud-datastore-nosql-database.html"&gt;Google Cloud Platform Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;At &lt;a href="https://developers.google.com/events/io/"&gt;Google I/O&lt;/a&gt;, we announced &lt;a href="http://developers.google.com/datastore"&gt;Google Cloud Datastore&lt;/a&gt;, a fully managed solution for storing non-relational data.  Based on the popular Google App Engine High Replication Datastore (HRD), Cloud Datastore provides a schemaless, non-relational datastore with the same accessibility of &lt;a href="https://cloud.google.com/products/cloud-storage"&gt;Google Cloud Storage&lt;/a&gt; and &lt;a href="https://cloud.google.com/products/cloud-sql"&gt;Google Cloud SQL&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Cloud Datastore builds off the strong growth and performance of HRD, which has over 1PB of data stored, 4.5 trillion transactions per month and a 99.95% uptime.  It also comes with the following features:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;Built-in query support: near SQL functionality that allows you to search, sort and filter across multiple indexes that are automatically maintained&amp;nbsp;&lt;/li&gt;
&lt;li&gt;ACID transactions: data consistency (both Strong and Eventual) that spans multiple replicas and requests&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Automatic scaling: built on top of Google’s &lt;a href="http://research.google.com/archive/bigtable-osdi06.pdf"&gt;BigTable infrastructure&lt;/a&gt;, the Cloud Datastore will automatically scale with your data&amp;nbsp;&lt;/li&gt;
&lt;li&gt;High availability: by utilizing Google’s underlying &lt;a href="http://www.cidrdb.org/cidr2011/Papers/CIDR11_Paper32.pdf"&gt;Megastore&lt;/a&gt; service, the Cloud Datastore ensures that data is replicated across multiple datacenters and is highly available&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Local development environment: the Cloud Datastore SDK provides a full-featured local environment that allows you to develop, iterate and manage your Cloud Datastore instances efficiently&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Free to get started: 50k read &amp;amp; write operations, 200 indexes, and 1GB of stored data for free per month &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Getting started with Cloud Datastore&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To get started, head over to the &lt;a href="https://cloud.google.com/console"&gt;Google Cloud Console&lt;/a&gt; and create a new project. After supplying a few pieces of information you will have a Cloud Project that has the Cloud Datastore enabled by default. For this post we’ll use the project ID &lt;i&gt;cloud-demo&lt;/i&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KO38x9zrcU4/UYxVoE04ynI/AAAAAAAAAKw/Ecmq8EYwaO8/s1600/landing_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-KO38x9zrcU4/UYxVoE04ynI/AAAAAAAAAKw/Ecmq8EYwaO8/s1600/landing_page.png" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
With the project created and the Cloud Datastore enabled, we’ll need to download the &lt;a href="https://developers.google.com/datastore/docs/downloads"&gt;Cloud Datastore client library&lt;/a&gt;. Once installed, it’s time to start writing some code. For the sake of this post, we’ll focus on accessing the Cloud Datastore from a Python application running on a Compute Engine VM (&lt;a href="http://googlecloudplatform.blogspot.com/2013/05/google-compute-engine-is-now-open-to-all.html"&gt;which is also now in Preview&lt;/a&gt;). We’ll assume that you’ve already created a new VM instance.'  &lt;br /&gt;
&lt;pre&gt;import googledatastore as datastore

def main()
  writeEntity()
  readEntity()
&lt;/pre&gt;Next include writeEntity() and readEntity() functions: &lt;br /&gt;
&lt;pre&gt;def WriteEntity():
  req = datastore.BlindWriteRequest()
  entity = req.mutation.upsert.add()
  path = entity.key.path_element.add()
  path.kind = 'Greeting'
  path.name = 'foo'
  message = entity.property.add()
  message.name = 'message'
  value = message.value.add()
  value.string_value = 'to the cloud and beyond!'
  try:
    datastore.blind_write(req)
  except datastore.RPCError as e:
    # remember to do something useful with the exception pass

def ReadEntity(): 
  req = datastore.LookupRequest()
  key = req.key.add()
  path = key.path_element.add()
  path.kind = 'Greeting0'
  path.name = 'foo0'
  try:
    resp = datastore.lookup(req)
    return resp
  except datastore.RPCError as e:
    # remember to do something useful with the exception pass
&lt;/pre&gt;First create a new file called “demo.py”. Inside demo.py, we’ll add code to write and then read an entity from the Cloud Datastore. &amp;nbsp;Finally we can update main() to print out the property values within the fetched entity: &lt;br /&gt;
&lt;pre&gt;def main()
  writeEntity();
  resp = readEntity();

  entity = resp.found[0].entity
  for p in entity.property:
    print 'Entity property name: %s', p.name
    v = p.value[0]
    print 'Entity property value: %s', v.string_value
&lt;/pre&gt;Before we can run this code we need to tell the SDK which Cloud Datastore instance we would like to use. This is done by exporting the following environment variable: &lt;br /&gt;
&lt;pre&gt;~$ export DATASTORE_DATASET cloud-datastore-demo
&lt;/pre&gt;Finally we’re able to run the application by simply issuing the following:  &lt;br /&gt;
&lt;pre&gt;~$ python demo.py&lt;/pre&gt;Besides the output that we see in console window, we’re also able to monitor our interactions within the Cloud Console. By navigating back to Cloud Console, selecting our cloud-datastore-demo project, and then selecting the Cloud Datastore we’re taken to our instance’s dashboard page that includes number of entities, properties, and property types, as well as index management, ad-hoc query support and breakdown of stored data.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-c-NsVpB1-m0/UZSQMpZXjFI/AAAAAAAAABI/d8Q8SSobNfg/s1600/metrics_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-c-NsVpB1-m0/UZSQMpZXjFI/AAAAAAAAABI/d8Q8SSobNfg/s1600/metrics_page.png" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
And that’s really just the beginning. To fully harness the features and functionality that the Cloud Datastore offers, be sure to check out the larger &lt;a href="https://developers.google.com/datastore/docs/getstarted/"&gt;Getting Started Guide&lt;/a&gt; and the &lt;a href="https://developers.google.com/datastore/docs/downloads"&gt;Cloud Datastore documentation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Cloud Datastore is the latest addition to the Cloud Platform storage family, joining Cloud Storage for storing blob data, Cloud SQL for storing relational data, and Persistent Disk for storing block data.  All fully managed so that you can focus on creating amazing solutions and leave the rest to us.&lt;br /&gt;
&lt;br /&gt;
And while this is a Preview Release, the team is off to a great start. As we move the service towards General Availability we’re looking forward to improving JSON support, more deeply integrating with the Cloud Console, streamlining our billing and driving every bit of performance that we can out of the API and underlying service.&lt;br /&gt;
&lt;br /&gt;
Happy coding!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/111170642690965429119/"&gt;Chris Ramsdale&lt;/a&gt; has worked extensively in the mobile space, starting as a Software Engineer at Motorola in 1997, and then joining local start ups as a Tech Lead and Product Manager. Chris is currently a Product Manager for Google Cloud Platform focused on developer tools and platform services like Google App Engine and Google Cloud Datastore.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/z73nO21Pzek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/3268305010998099326/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/get-started-with-google-cloud-datastore.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3268305010998099326?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3268305010998099326?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/z73nO21Pzek/get-started-with-google-cloud-datastore.html" title="Get started with Google Cloud Datastore - a fast, powerful, NoSQL database" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-m4cXJmxfPnM/UZUC-eEsLKI/AAAAAAAAAJ4/58RpYXBh2xQ/s72-c/photo_7.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373502 -123.06486250000002 38.176356999999996 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/get-started-with-google-cloud-datastore.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUMRHs8eyp7ImA9WhBbFks.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-5242554706507585185</id><published>2013-05-15T18:00:00.000-07:00</published><updated>2013-05-15T18:04:45.573-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-15T18:04:45.573-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google compute engine" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Google Compute Engine is now open to all</title><content type="html">&lt;img height="80" src="http://2.bp.blogspot.com/-iNTd-rgFVWg/UZOizm7Hm1I/AAAAAAAAAJo/HJOmdm4FF8w/s1600/njoneja_thumb.jpg" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Navneet Joneja, Product Manager&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/google-compute-engine-is-now-open-to-all.html"&gt;Google Cloud Platform Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Last year we announced Google Compute Engine to enable any business or developer to use Google’s infrastructure for their applications. Now we’re taking the next step: &lt;a href="https://cloud.google.com/products/compute-engine"&gt;Google Compute Engine&lt;/a&gt; is open to everyone in preview, and you can &lt;a href="https://cloud.google.com/products/compute-engine"&gt;sign up online&lt;/a&gt; now.&lt;br /&gt;
&lt;br /&gt;
Over the past year, we’ve &lt;a href="http://googlecloudplatform.blogspot.com/2013/04/google-compute-engine-expanded.html"&gt;launched several features&lt;/a&gt; and made significant improvements behind the scenes. We’re now announcing several new capabilities that make it easier and more economical to use Compute Engine for a broader set of applications.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Sub-Hour Billing:&lt;/b&gt; We heard feedback from our early users who wanted more granular billing increments so they could run short-lived workloads. Now all instances are charged for in one-minute increments with a ten-minute minimum, so you don’t pay for compute minutes that you don’t use.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;New shared-core instance types:&lt;/b&gt; Compute Engine’s new micro and small instance types are designed as a cost-effective option for running small workloads that don’t need a lot of CPU power, like development and test workloads.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Larger Persistent Disks:&lt;/b&gt; We’re increasing the size of Persistent Disks that can be attached to instances by up to 8,000%. You can now attach up to 10 terabytes of persistent disk to a Compute Engine virtual machine, giving you plenty of persistent storage for a wide variety of applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Advanced Routing Capabilities:&lt;/b&gt; Compute Engine now supports &lt;a href="http://developers.google.com/compute/docs/networking#routing"&gt;software-defined routing capabilities&lt;/a&gt; based on our broad &lt;a href="http://research.google.com/pubs/Networking.html"&gt;SDN innovation&lt;/a&gt;.  These capabilities are designed to handle your advanced network routing needs like configuring instances to function as gateways, configuring VPN servers and building applications that span your local network and Google’s cloud.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ISO 27001 Certification:&lt;/b&gt; We’ve also completed ISO 27001:2005 certification for Compute Engine, App Engine, and Cloud Storage to demonstrate that these products meet the international standard for managing information security.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
To get started, go to the &lt;a href="https://cloud.google.com/console"&gt;Google Cloud Console&lt;/a&gt;, select Compute Engine and click the “New Instance” button.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-woWTOYjKAL8/UZM25Ohe2-I/AAAAAAAAAA0/OtNZfQnIUFo/s1600/png;base6492a3e8c88ed5452e.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-woWTOYjKAL8/UZM25Ohe2-I/AAAAAAAAAA0/OtNZfQnIUFo/s1600/png;base6492a3e8c88ed5452e.png" height="320" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Fill out the required information and click “Create” on the right hand side. Your new virtual machine will be ready to use in about a minute.&lt;br /&gt;
&lt;br /&gt;
To all of our customers who helped us evolve the product over the past months, thank you; your feedback has helped shape Compute Engine. To those of you who have been eager to try Compute Engine, the wait is over and you can &lt;a href="https://cloud.google.com/products/compute-engine"&gt;sign up for Compute Engine online&lt;/a&gt; today.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/116502719085908548819/posts"&gt;Navneet Joneja&lt;/a&gt; loves being at the forefront of the next generation of simple and reliable software infrastructure, the foundation on which next-generation technology is being built. When not working, he can usually be found dreaming up new ways to entertain his intensely curious three-year-old.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/GsDy3YFDyhI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/5242554706507585185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/google-compute-engine-is-now-open-to-all.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5242554706507585185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5242554706507585185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/GsDy3YFDyhI/google-compute-engine-is-now-open-to-all.html" title="Google Compute Engine is now open to all" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-iNTd-rgFVWg/UZOizm7Hm1I/AAAAAAAAAJo/HJOmdm4FF8w/s72-c/njoneja_thumb.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373509999999996 -123.06486250000002 38.176349 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/google-compute-engine-is-now-open-to-all.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cFR3Y6fSp7ImA9WhBbFkg.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-7684546369252317698</id><published>2013-05-15T14:00:00.000-07:00</published><updated>2013-05-15T16:03:36.815-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-15T16:03:36.815-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google+" /><category scheme="http://www.blogger.com/atom/ns#" term="sign-in" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Cross-Platform SSO technology</title><content type="html">&lt;img height="80" src="http://3.bp.blogspot.com/-ANihFGWuNDQ/UZLdU7OHlnI/AAAAAAAAAJE/iDUl3-dkcDI/s1600/tba+(1).png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Tim Bray, Google Identity Team&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
During the Android portion of the Google I/O keynote, we showed Cross-Platform Single Sign-On; the effect was that for Wallet and Google+ users, signing in to a Web browser resulted in automatic download of, and sign-in to, an Android app.&lt;br /&gt;
&lt;br /&gt;
To support this, we have introduced general-purpose API tools which allow developers to achieve cross-client authentication and authorization, in particular between Android and Web apps. &lt;br /&gt;
&lt;br /&gt;
Not having to sign in repeatedly feels so natural for users that they don’t even notice it.  But as more and more apps deploy this sort of magic, you don’t want to be the hold-out that’s pestering users for passwords on Web sites or, worse, on tiny mobile-device keyboards.&lt;br /&gt;
&lt;br /&gt;
On the Android side, client libraries like &lt;a href="http://developer.android.com/reference/com/google/android/gms/plus/PlusClient.html"&gt;PlusClient&lt;/a&gt;, GamesClient, and WalletClient have “connect” methods that take care of this as automatically as possible; they check whether any of the accounts on the phone have already been authorized for access to the service in question, conduct sign-in if necessary but avoid it if possible, and when they return to your code, everything’s all set up.&lt;br /&gt;
&lt;br /&gt;
If you’re writing server-side code and using libraries like Google+ Sign-In, once again, all the right things happen automatically; when you start accessing the service, the software imposes the minimum necessary pain on the user, ideally zero, and lets you get to work.&lt;br /&gt;
&lt;br /&gt;
Of course, some people want less automation, and finer control over how things work.  If you want to access our services at the HTTP level rather than via a library, or to deal with multiple accounts on an Android device in a customized way, you can do these things and in most cases still deliver the no-sign-in magic.&lt;br /&gt;
&lt;br /&gt;
Of course, this involves working with HTTP message flows, validating tokens, and securing shared secrets.  This may sound intimidating but will be straightforward for one well-versed in HTTP-level Web programming.  If you’re one of those, check out the low-level protocols and APIs that support this, in “&lt;a href="https://developers.google.com/accounts/docs/CrossClientAuth"&gt;Cross-Client Identity&lt;/a&gt;”.&lt;br /&gt;
&lt;br /&gt;
The time is now to start moving your apps towards a sign-in-free future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Tim says: By day, I help in the struggle against passwords on the Internet.&lt;br /&gt;
The rest of my life is fully documented on &lt;a href="https://www.tbray.org/ongoing/"&gt;my blog&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/SIJhOhZck0o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/7684546369252317698/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/cross-platform-sso-technology.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7684546369252317698?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/7684546369252317698?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/SIJhOhZck0o/cross-platform-sso-technology.html" title="Cross-Platform SSO technology" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ANihFGWuNDQ/UZLdU7OHlnI/AAAAAAAAAJE/iDUl3-dkcDI/s72-c/tba+(1).png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373498 -123.06486250000002 38.176361 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/cross-platform-sso-technology.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMDSHw8fip7ImA9WhFTFEs.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-1555733889218957313</id><published>2013-05-15T12:45:00.000-07:00</published><updated>2013-06-05T14:41:19.276-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-06-05T14:41:19.276-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google compute engine" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud datastore" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud storage" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Ushering in the next generation of computing at Google I/O</title><content type="html">&lt;img height="80" src="http://2.bp.blogspot.com/-Ud7StrFThoY/UZLnvUg6_2I/AAAAAAAAAJY/NiXRtKbfp7U/s1600/Screen+Shot+2013-05-14+at+6.40.27+PM.png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Urs Hölzle, Senior Vice President, Technical Infrastructure, and Google Fellow &lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/ushering-in-next-generation-of.html"&gt;Google Cloud Platform Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://developers.google.com/events/io/sessions/333265959"&gt;Watch the video of the Cloud track kickoff.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Over the last fourteen years we have been developing some of the best infrastructure in the world to power Google’s global-scale services. With &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt;, our goal is to open that infrastructure and make it available to any business or developer anywhere. Today, we are introducing improvements to the platform and making &lt;a href="https://cloud.google.com/products/compute-engine"&gt;Google Compute Engine&lt;/a&gt; available for anyone to use.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Google Compute Engine - now available for everyone&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Google Compute Engine provides a fast, consistently high-performance environment for running virtual machines. Later today, you’ll be able to go online to cloud.google.com and start using Compute Engine.&lt;br /&gt;
&lt;br /&gt;
In addition, we’re introducing new Compute Engine features:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Sub-hour billing&lt;/b&gt; charges for instances in one-minute increments with a ten-minute minimum, so you don’t pay for compute minutes that you don’t use&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Shared-core instances&lt;/b&gt; provide smaller instance shapes for low-intensity workloads&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Advanced Routing&lt;/b&gt; features help you create gateways and VPN servers, and enable you to build applications that span your local network and Google’s cloud&lt;/li&gt;
&lt;li&gt;Large &lt;b&gt;persistent disks&lt;/b&gt; support up to 10 terabytes per volume, which translates to 10X the industry standard&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
We’ve also completed ISO 27001:2005 international security certification for Compute Engine, &lt;a href="https://cloud.google.com/appengine"&gt;Google App Engine&lt;/a&gt;, and &lt;a href="https://cloud.google.com/products/cloud-storage"&gt;Google Cloud Storage&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Google App Engine adds the PHP runtime&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://code.google.com/p/googleappengine/w/list"&gt;App Engine 1.8.0&lt;/a&gt; is now available and includes a Limited Preview of the &lt;a href="http://cloud.google.com/appengine/php"&gt;PHP runtime&lt;/a&gt; - your &lt;a href="https://code.google.com/p/googleappengine/issues/list"&gt;top requested feature&lt;/a&gt;. We’re bringing one of the most popular web programming languages to App Engine so that you can run open source apps like WordPress. It also offers deep integration with other parts of Cloud Platform including &lt;a href="https://cloud.google.com/products/cloud-sql"&gt;Google Cloud SQL&lt;/a&gt; and Cloud Storage. &lt;br /&gt;
&lt;br /&gt;
We’ve also heard that we need to make building modularized applications on App Engine easier. We are &lt;a href="https://docs.google.com/a/google.com/forms/d/1qjuLxnAHQeq2YQMCMAITbC6St_NrfzHDxrbkuTqvmfY/viewform"&gt;introducing&lt;/a&gt; the ability to partition apps into components with separate scaling, deployments, versioning and performance settings.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Introducing Google Cloud Datastore&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://developers.google.com/datastore"&gt;Google Cloud Datastore&lt;/a&gt; is a fully managed and schemaless solution for storing non-relational data. Based on the popular &lt;a href="https://developers.google.com/appengine/docs/python/datastore/"&gt;App Engine High Replication Datastore&lt;/a&gt;, Cloud Datastore is a standalone service that features automatic scalability and high availability while still providing powerful capabilities such as ACID transactions, SQL-like queries, indexes and more.&lt;br /&gt;
&lt;br /&gt;
Over the last year we have continued our focus on feature enhancement and developer experience across &lt;a href="http://googlecloudplatform.blogspot.com/2013/04/app-engine-177-released_9.html"&gt;App Engine&lt;/a&gt;, &lt;a href="http://googlecloudplatform.blogspot.com/2013/04/google-compute-engine-expanded.html"&gt;Compute Engine,&lt;/a&gt; &lt;a href="http://googledevelopers.blogspot.com/2013/03/bigquery-gets-big-new-features-to-make.html"&gt;Google BigQuery&lt;/a&gt;, &lt;a href="http://googledevelopers.blogspot.com/2012/11/google-cloud-storage-more-value-for.html"&gt;Cloud Storage&lt;/a&gt; and &lt;a href="http://googledevelopers.blogspot.com/2012/11/get-started-at-no-cost-with-faster.html"&gt;Cloud SQL&lt;/a&gt;. We also introduced  &lt;a href="http://googlecloudplatform.blogspot.com/2013/02/java-7-and-cloud-endpoints-preview.html"&gt;Google Cloud Endpoints&lt;/a&gt; and &lt;a href="https://cloud.google.com/console"&gt;Google Cloud Console&lt;/a&gt;.  &lt;br /&gt;
&lt;br /&gt;
With these improvements, we have seen increased usage with over 3 million applications and over 300,000 unique developers using Cloud Platform in a given month. Our developers inspire us everyday, and we can’t wait to see what you build next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Urs Hölzle is Senior Vice President of Technical Infrastructure and Google Fellow. As one of Google's first ten employees and its first VP of Engineering, he has shaped much of Google's development processes and infrastructure.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/XdmV1eHrgyo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/1555733889218957313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/ushering-in-next-generation-of.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1555733889218957313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/1555733889218957313?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/XdmV1eHrgyo/ushering-in-next-generation-of.html" title="Ushering in the next generation of computing at Google I/O" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Ud7StrFThoY/UZLnvUg6_2I/AAAAAAAAAJY/NiXRtKbfp7U/s72-c/Screen+Shot+2013-05-14+at+6.40.27+PM.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373498 -123.06486250000002 38.176361 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/ushering-in-next-generation-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAEQXg-fyp7ImA9WhBbFkk.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-8686679257122672608</id><published>2013-05-15T12:00:00.000-07:00</published><updated>2013-05-15T12:05:00.657-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-15T12:05:00.657-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="games" /><category scheme="http://www.blogger.com/atom/ns#" term="play services" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Introducing Google Play game services</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://1.bp.blogspot.com/-D0tfkEEK4SU/UZLONTUy00I/AAAAAAAAAIQ/ZHo1rEvej0Q/s1600/greg.hartrell.jpeg" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Greg Hartrell, Lead Product Manager&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
We love to talk about games at Google. Especially the old ones, like Pac-man, Pitfall and Frogger. Since those classics, games have changed a lot. They’ve moved from that clunky box in your living room to the screen that you carry with you in your pocket wherever you go. They’re mobile, they’re social, and they’re an important part of Google Play. &lt;br /&gt;
&lt;br /&gt;
Today, we’re launching Google Play game services, a core part of building a gaming platform for the next generation of games. These services help you make your games more social, with achievements, leaderboards, and multiplayer, as well as more powerful, storing game saves and settings in the cloud. They are available on Android, and many on iOS or any other connected device. By building on Google’s strengths in mobile and cloud services, you can focus on what you’re good at as game developers: creating great gaming experiences for your users.&lt;br /&gt;
&lt;br /&gt;
With game services, you can incorporate:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Achievements&lt;/b&gt; that increase engagement and promote different styles of play.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Social and public leaderboards&lt;/b&gt; that seamlessly use Google+ circles to track high scores across friends and across the world.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cloud saves&lt;/b&gt; that provide a simple and streamlined storage API to store game saves and settings. Now players never have to replay Level 1 again.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Real-time multiplayer&lt;/b&gt; for easy addition of cooperative or competitive game play on Android devices. Using Google+ Circles, a game can have up to 4 simultaneous friends or auto-matched players in a game session together with support for additional players coming soon.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/-DkFKN3BHZ7A/UZLO5H0IIVI/AAAAAAAAAIY/QUnPFp7-GtI/s1600/games.png" imageanchor="1"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Jd9DJjlO_hE/UZLRFGPRfvI/AAAAAAAAAIo/avG6K6kvdxU/s1600/Screen+Shot+2013-05-14+at+5.03.57+PM.png" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Several great Android games are already using these new game services, including &lt;a href="https://play.google.com/store/apps/details?id=com.twodboy.worldofgoofull"&gt;World of Goo&lt;/a&gt;, &lt;a href="https://play.google.com/store/apps/details?id=com.noodlecake.ssg2"&gt;Super Stickman Golf 2&lt;/a&gt;, &lt;a href="https://play.google.com/store/apps/details?id=com.vectorunit.yellow"&gt;Beach Buggy Blitz&lt;/a&gt;, &lt;a href="https://play.google.com/store/apps/details?id=com.ironhidegames.android.kingdomrush"&gt;Kingdom Rush&lt;/a&gt;, &lt;a href="https://play.google.com/store/apps/details?id=com.glu.ewarriors2"&gt;Eternity Warriors 2&lt;/a&gt;, and &lt;a href="https://play.google.com/store/apps/details?id=com.hemispheregames.osmos"&gt;Osmos&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
And many more titles launch today as well:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qx1Q9DfAa7A/UZLbcbOmgHI/AAAAAAAAAI0/Uvl_xIbfYHE/s1600/Google_Play_Game_Services_Launch_Titles+copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/-qx1Q9DfAa7A/UZLbcbOmgHI/AAAAAAAAAI0/Uvl_xIbfYHE/s400/Google_Play_Game_Services_Launch_Titles+copy.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Google Play game services are available today through an SDK for Android, and a native iOS SDK for iPhone and iPad games. Web and other platform developers will also find corresponding REST APIs, with libraries for JavaScript, Java, Python, Go, Dart, PHP, and more.&lt;br /&gt;
&lt;br /&gt;
We’re excited to see what games will do with these new services and experiences, and this is only the beginning. Wait until you get to the boss battle... er.. Check out our developer site to get started:  &lt;a href="https://developers.google.com/games/"&gt;https://developers.google.com/games/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Greg Hartrell is Lead Product Manager on Google Play game services, devoted to helping developers make incredible games through Google Play. In his spare time, he enjoys jumping from platform to platform, boss battles and matching objects in threes.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/punuCmvb_a8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/8686679257122672608/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/introducing-google-play-game-services.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8686679257122672608?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8686679257122672608?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/punuCmvb_a8/introducing-google-play-game-services.html" title="Introducing Google Play game services" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-D0tfkEEK4SU/UZLONTUy00I/AAAAAAAAAIQ/ZHo1rEvej0Q/s72-c/greg.hartrell.jpeg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.41941550000001</georss:point><georss:box>37.373509999999996 -123.06486250000002 38.176349 -121.77396850000001</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/introducing-google-play-game-services.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UGRHg5fSp7ImA9WhBbFEs.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-3180737354622190333</id><published>2013-05-13T10:00:00.000-07:00</published><updated>2013-05-13T10:13:45.625-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-13T10:13:45.625-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="#io2013" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud platform" /><title>Data Sensing Lab at Google I/O 2013: Google Cloud Platform meets the Internet of Things</title><content type="html">&lt;img height="80" src="http://commondatastorage.googleapis.com/manoochehri/manoochehri_80x80.png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Michael Manoochehri, Developer Programs Engineer, Google Cloud Platform&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted with the &lt;a href="http://googlecloudplatform.blogspot.com/2013/05/data-sensing-lab-at-google-io-2013.html"&gt;Google Cloud Platform Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
After last year's Google I/O conference, the Google Cloud Platform Developer Relations team started to think about how attendees experienced the event. We wanted to help attendees gain more insight about the conference space and the environment itself. Which developer Sandboxes were the busiest? Which were the loudest locations, and which were the best places to take a quick nap? We think about data problems all the time, and this looked like an interesting big data challenge that we could try to solve. So this year, we decided to try to answer our questions with a project that's a bit different, kind of futuristic, and maybe a little crazy.&lt;br /&gt;
&lt;br /&gt;
Since we love open source hardware hacking as much as we love to share open source code, we decided to team up with the &lt;a href="http://datasensinglab.com/google-io-2013/"&gt;O'Reilly Data Sensing Lab&lt;/a&gt; to deploy hundreds of &lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt;-based environmental sensors at Google I/O 2013. Using software built with the Google Cloud Platform, we'll be collecting and visualizing ambient data about the conference, such as temperature, humidity, air quality, in real time! Altogether, the sensors network will provide over 4,000 continuous data streams over a ZigBee mesh network managed by &lt;a href="http://www.etherios.com/products/devicecloud/"&gt;Device Cloud by Etherios&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;br /&gt;
&lt;a href="https://developers.google.com/events/io/sessions/332908798"&gt;&lt;img src="http://3.bp.blogspot.com/-weihm3GwvCw/UY_4wAvSsiI/AAAAAAAAAIA/L80p6PYn0w8/s1600/motes.jpg" alt="photo of sensors" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In addition, our motes will be able to detect fluctuations in noise level, and some will be attached to footstep counters, to understand collective movement around the conference floor. Of course, since a key goal of Google I/O is to promote innovation in the open, the project's Cloud Platform code, the Arduino hardware designs, and even the data collected, will be open source and available online after the conference.&lt;br /&gt;
&lt;br /&gt;
Google Cloud Platform, which provides the software backend for this project, has a variety of features for building applications that collect and process data from a large number of client devices - without having to spend time managing hardware or infrastructure. &lt;a href="https://developers.google.com/appengine/docs/python/datastore/overview"&gt;Google App Engine Datastore&lt;/a&gt;, along with &lt;a href="https://developers.google.com/appengine/docs/python/endpoints/"&gt;Cloud Endpoints&lt;/a&gt;, provides a scalable front end API for collecting data from devices. &lt;a href="https://cloud.google.com/products/compute-engine"&gt;Google Compute Engine&lt;/a&gt; is used to process and analyse data with software tools you may already be familiar with, such as R and Hadoop. &lt;a href="https://developers.google.com/bigquery/"&gt;Google BigQuery&lt;/a&gt; provides fast aggregate analysis of terabyte datasets. Finally, App Engine's web application framework is able to surface interactive visualizations to users.&lt;br /&gt;
&lt;br /&gt;
Networked sensor technology is in the early stages of revolutionizing business logistics, city planning, and consumer products.  We are looking forward to sharing the Data Sensing Lab with Google I/O attendees, because we want to show how using open hardware together with the Google Cloud Platform can make this technology accessible to anyone.&lt;br /&gt;
&lt;br /&gt;
With the help of the Google Maps DevRel team, we'll be displaying visualizations of interesting trends on several screens around the conference. Members of the Data Sensing Lab will be on hand in the Google I/O Cloud Sandbox to show off prototypes and talk to attendees about open hardware development.  Lead software developer Amy Unruh and Kim Cameron from the Cloud Platform Developer Relations team will talk about how we built the software involved in this project in a talk called "&lt;a href="https://developers.google.com/events/io/sessions/332908798"&gt;Behind the Data Sensing Lab&lt;/a&gt;". In case you aren't able to attend Google I/O 2013, this session will be available online after the conference. Learn more about the &lt;a href="https://cloud.google.com/"&gt;Google Cloud Platform&lt;/a&gt; on our site, and to dive in to building applications, check out our &lt;a href="https://developers.google.com/cloud/"&gt;developer documentation&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/+MichaelManoochehri"&gt;Michael Manoochehri&lt;/a&gt; is a Developer Programs Engineer supporting the Google Cloud Platform. He is passionate about making cloud computing and data analysis universally accessible and useful.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/22y_VyJLeqg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/3180737354622190333/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/data-sensing-lab-at-google-io-2013.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3180737354622190333?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/3180737354622190333?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/22y_VyJLeqg/data-sensing-lab-at-google-io-2013.html" title="Data Sensing Lab at Google I/O 2013: Google Cloud Platform meets the Internet of Things" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-weihm3GwvCw/UY_4wAvSsiI/AAAAAAAAAIA/L80p6PYn0w8/s72-c/motes.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/data-sensing-lab-at-google-io-2013.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIBQXg-fip7ImA9WhBbEkQ.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-6245697392318705102</id><published>2013-05-11T11:55:00.001-07:00</published><updated>2013-05-11T11:55:50.656-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-11T11:55:50.656-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="youtube" /><category scheme="http://www.blogger.com/atom/ns#" term="apis" /><title>Find the hidden patterns with YouTube’s new Analytics API</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://4.bp.blogspot.com/-X5HPaQ5WvDE/UY6Sw0k2-LI/AAAAAAAAAHw/pg4wOnSWwF0/s1600/ted.png" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Ted Hamilton, YouTube Analytics&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://apiblog.youtube.com/2013/05/find-hidden-patterns-with-youtubes-new.html"&gt;YouTube API Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Trying to figure out how YouTube’s &lt;a href="http://youtube-global.blogspot.com/2013/03/onebillionstrong.html"&gt;one billion monthly users&lt;/a&gt; are interacting with your videos? Try the &lt;a href="https://developers.google.com/youtube/analytics/"&gt;new YouTube Analytics API&lt;/a&gt; to get custom reports of the YouTube statistics you care about in a direct JSON or CSV response, perfect for dashboards and ad hoc reports. &lt;br /&gt;
&lt;br /&gt;
The new API includes all the standard &lt;a href="https://developers.google.com/youtube/analytics/v1/dimsmets/mets#View_Metrics"&gt;view&lt;/a&gt; and &lt;a href="https://developers.google.com/youtube/analytics/v1/dimsmets/mets#Engagement_Metrics"&gt;engagement&lt;/a&gt; metrics you would expect, including views, shares, and subscriber numbers. Compared to the previous &lt;a href="https://developers.google.com/youtube/2.0/developers_guide_protocol_insight"&gt;Insight Data API&lt;/a&gt;, you also get:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Watch metrics: Track estimated minutes watched across channel, content owner, or video, and dive into the video details with average view time and average view percentage.&lt;/li&gt;
&lt;li&gt;Earning performance metrics: Track estimated earnings (net revenue) from select advertising sources across your content.&lt;/li&gt;
&lt;li&gt;Ad performance metrics: Break down video performance with monetized playbacks, ad impressions, gross revenue, and cost per impression reports.&lt;/li&gt;
&lt;li&gt;Annotation metrics: Optimize overlays/annotations with click through and close rate metrics.&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Client libraries and code samples&lt;/b&gt;&lt;br /&gt;
You’ll find &lt;a href="https://developers.google.com/youtube/analytics/libraries"&gt;client libraries&lt;/a&gt; for the languages you use most, with nine different languages available today. You can also make HTTP RESTful requests directly, and with our &lt;a href="http://developers.google.com/apis-explorer/#p/youtubeAnalytics/v1/youtubeAnalytics.reports.query?ids=channel%3D%3DYOUR_CHANNEL_ID&amp;amp;start-date=2012-01-01&amp;amp;end-date=2013-01-01&amp;amp;metrics=views&amp;amp;_h=2&amp;amp;"&gt;API Explorer&lt;/a&gt;, you can try out sample reports before writing any code.  &lt;br /&gt;
&lt;br /&gt;
Don’t write your code from scratch! Get started with &lt;a href="https://developers.google.com/youtube/analytics/v1/#examples"&gt;code examples&lt;/a&gt; in Java, JavaScript, Python, and Ruby. If you want a step-by-step walkthrough of building a complete web application, have a look at our &lt;a href="https://developers.google.com/youtube/analytics/v1/sample-application"&gt;JavaScript exercise&lt;/a&gt;.  &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;App examples&lt;/b&gt;&lt;br /&gt;
Check out some apps that are already using the API: &lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/-3hbydQbL2dQ/UY6Qid9BTGI/AAAAAAAAAHM/14LXs618EOk/s1600/nextbigsound.png"&gt;&lt;img src="http://2.bp.blogspot.com/-3hbydQbL2dQ/UY6Qid9BTGI/AAAAAAAAAHM/14LXs618EOk/s1600/nextbigsound.png" alt="app screen shot" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="https://www.nextbigsound.com/"&gt;Next Big Sound&lt;/a&gt; provides analytics and insights for the music industry by tracking billions of social signals including YouTube. This enables record labels, artists, and band managers to make better decisions on everything from promotion strategies to tour locations.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://vidiq.com/"&gt;vidIQ&lt;/a&gt; is an audience development suite that works with global brands to organically grow their views and subscribers. Their features include cross-platform social analytics, advanced comment management, SEO tools, social syndication and influencer identification.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8Ot8SZ_X8Aw/UY6QiSXDT9I/AAAAAAAAAHI/_cYK1gXPSyA/s1600/Wizdeo.png"&gt;&lt;img src="http://1.bp.blogspot.com/-u1IH80wp4mw/UY6SGLzmsvI/AAAAAAAAAHg/pNmAhpiBanc/s1600/Wizdeo.png" alt="app screen shot" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wizdeo.com/"&gt;Wizdeo’s WizTracker&lt;/a&gt; provides in-depth analysis of YouTube channels to help with cross promotion and video comparisons during their initial launch. Users get access to detailed analytics about views, subscriber engagement, traffic sources and demographics.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vidyard.com/"&gt;Vidyard&lt;/a&gt; is a video marketing platform. With powerful analytics, built-in marketing tools, and integration with key marketing automation platforms, Vidyard helps marketers drive results with video content.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nywUCgUkoKU/UY6QiHczJ1I/AAAAAAAAAHE/uac83Oo3jrQ/s1600/Fullscreen.png"&gt;&lt;img src="http://1.bp.blogspot.com/-fblrWf-Xy04/UY6SGUgzmzI/AAAAAAAAAHk/aXO99gurG-0/s1600/Fullscreen.png" alt="app screen shot" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://fullscreen.net/"&gt;Fullscreen&lt;/a&gt; is building a global network of YouTube channels with content creators and brands. Fullscreen provides a full suite of end-to-end YouTube tools and uses the new API for internal, business-intelligence tools.  &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Learn more&lt;/b&gt;&lt;br /&gt;
In addition to the &lt;a href="https://developers.google.com/youtube/analytics/"&gt;documentation&lt;/a&gt;, check out our Analytics API &lt;a href="https://www.youtube.com/playlist?list=PLhBgTdAWkxeBaWmqlg-NUTn8f7jbUDAKB&amp;amp;feature=view_all"&gt;playlist&lt;/a&gt; to make getting started even easier.  &lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/WtsS8sEzEeY?list=PLhBgTdAWkxeBaWmqlg-NUTn8f7jbUDAKB" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
If your goal is to export all statistics for a large number of channels on a recurring basis for your data warehouse, look forward to using the upcoming scheduled reports feature of the API, expected to launch later this year.&lt;br /&gt;
&lt;br /&gt;
To get more info on the YouTube APIs, subscribe to our &lt;a href="http://www.youtube.com/user/YouTubeDev"&gt;YouTube for Developers channel&lt;/a&gt; and &lt;a href="https://plus.google.com/+YouTubeDev"&gt;YouTubeDev&lt;/a&gt; on Google+. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/114054307975443559753/posts"&gt;Ted Hamilton&lt;/a&gt; is the Product Manager for YouTube Analytics based out of Zurich, Switzerland. Prior to Google, Ted was a consultant at Bain and Company in London. Ted has a Computer Science degree from Northwestern University and holds an MBA from MIT Sloan. &lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/EDlbZpiiz6s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/6245697392318705102/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/find-hidden-patterns-with-youtubes-new.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6245697392318705102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/6245697392318705102?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/EDlbZpiiz6s/find-hidden-patterns-with-youtubes-new.html" title="Find the hidden patterns with YouTube’s new Analytics API" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-X5HPaQ5WvDE/UY6Sw0k2-LI/AAAAAAAAAHw/pg4wOnSWwF0/s72-c/ted.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/find-hidden-patterns-with-youtubes-new.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EBR346fyp7ImA9WhBbEk8.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-2124870159797059627</id><published>2013-05-10T15:40:00.002-07:00</published><updated>2013-05-10T15:40:56.017-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-10T15:40:56.017-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="students" /><category scheme="http://www.blogger.com/atom/ns#" term="contest" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>The results are in: Hardcode, the secure coding contest for App Engine</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://3.bp.blogspot.com/-bBsoWIwnlwI/UY12hHLr8FI/AAAAAAAAAGs/K_sTNG4YXQA/s1600/photo.16+PM+copy.png" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Eduardo Vela Nava, Security Team&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
This January, Google and SyScan &lt;a href="http://googleonlinesecurity.blogspot.com/2013/01/calling-student-coders-hardcode-secure.html"&gt;announced&lt;/a&gt; a secure coding competition open to students from all over the world. While Google’s &lt;a href="https://developers.google.com/open-source/soc/"&gt;Summer of Code&lt;/a&gt; and &lt;a href="https://developers.google.com/open-source/gci/2012/"&gt;Code-in&lt;/a&gt; encourage students to contribute to open source projects, Hardcode was a call for students who wanted to showcase their skills both in software development and security. Given the scope of today’s online threats, we think it’s incredibly important to practice secure coding habits early on. Hundreds of students from 25 countries and across five continents signed up to receive information about the competition, and over 100 teams participated.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-07AmRAqmlcU/UY1ydT1_qHI/AAAAAAAAAGY/S1jKb9FuIio/s1600/students.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://1.bp.blogspot.com/-07AmRAqmlcU/UY1ydT1_qHI/AAAAAAAAAGY/S1jKb9FuIio/s400/students.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
During the preliminary online round, teams built applications on Google App Engine that were judged for both functionality and security. Five teams were then selected to participate in the final round at the SyScan 2013 security conference in Singapore, where they had to do the following: fix security bugs from the preliminary round, collaborate to develop an API standard to allow their applications to interoperate, implement the API, and finally, try to hack each other’s applications. To add to the challenge, many of the students balanced the competition with all of their school commitments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-itTmX08M0wU/UY1yjMwSNFI/AAAAAAAAAGg/XD2KtdroDnc/s1600/winners.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-itTmX08M0wU/UY1yjMwSNFI/AAAAAAAAAGg/XD2KtdroDnc/s400/winners.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
We’re extremely impressed with the caliber of the contestants’ work. Everyone had a lot of fun, and we think these students have a bright future ahead of them. We are pleased to announce the final results of the 2013 Hardcode Competition:&lt;br /&gt;
&lt;br /&gt;
1st Place:  Team 0xC0DEBA5E&lt;br /&gt;
Vienna University of Technology, Austria (SGD $20,000)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://proggen.org/"&gt;Daniel Marth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.devlabs.pro/"&gt;Lukas Pfeifhofer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Benedikt Wedenik&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
2nd Place:  Team Gridlock&lt;br /&gt;
Loyola School, Jamshedpur, India (SGD $15,000)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.aviraldg.com/"&gt;Aviral Dasgupta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
3rd Place:  Team CeciliaSec&lt;br /&gt;
University of California, Santa Barbara, California, USA (SGD $10,000)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Nathan Crandall&lt;/li&gt;
&lt;li&gt;Dane Pitkin&lt;/li&gt;
&lt;li&gt;Justin Rushing&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Runner-up:  Team AppDaptor&lt;br /&gt;
The Hong Kong Polytechnic University, Hong Kong (SGD $5,000)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cwlau.com/"&gt;Lau Chun Wai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Runner-up:  Team DesiCoders&lt;br /&gt;
Birla Institute of Technology &amp;amp; Science, Pilani, India (SGD $5,000)&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Yash Agarwal&lt;/li&gt;
&lt;li&gt;&lt;a href="http://visheshsinghal.blogspot.com/"&gt;Vishesh Singhal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Honorable Mention: Team Saviors of Middle Earth (withdrew due to school commitments)&lt;br /&gt;
Walt Whitman High School, Maryland, USA&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Wes Kendrick&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/maz"&gt;Marc Rosen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;William Zhang&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
A big congratulations to this very talented group of students!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/u/0/100610951871586794452/"&gt;Eduardo Vela Nava&lt;/a&gt; is a Tech Lead for Google's WOOPS (Web or Other Product Security) team, helping teams build safer products.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/uM3SuiF_B6Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/2124870159797059627/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/the-results-are-in-hardcode-secure.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2124870159797059627?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/2124870159797059627?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/uM3SuiF_B6Y/the-results-are-in-hardcode-secure.html" title="The results are in: Hardcode, the secure coding contest for App Engine" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-bBsoWIwnlwI/UY12hHLr8FI/AAAAAAAAAGs/K_sTNG4YXQA/s72-c/photo.16+PM+copy.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/the-results-are-in-hardcode-secure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUGQX0yfip7ImA9WhBbEkw.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-670572552893823140</id><published>2013-05-10T12:13:00.001-07:00</published><updated>2013-05-10T12:13:40.396-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-10T12:13:40.396-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apis" /><title>Clarifying the deprecation policy for Google APIs and services</title><content type="html">&lt;img height="80" src="http://2.bp.blogspot.com/-KAQsqp4Llrc/T5FouDNufJI/AAAAAAAABXk/mVssok5VAqI/s1600/adamfeldman.png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;br /&gt;
&lt;em&gt;By Adam Feldman, APIs Product Manager&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
We know that deprecation policies can be complex. But it shouldn’t be hard for you to determine which features of our APIs and services are covered by a deprecation policy and which ones aren’t. To date, we’ve often used the label “Experimental” to indicate that certain new versions, features, or functionality don’t have the deprecation policy. But we know you don’t want to hunt through documentation looking for what is “Experimental” and what isn’t.&lt;br /&gt;
&lt;br /&gt;
So starting today, for each API or service that has the deprecation policy, we are creating an explicit list of what is covered by that policy. For instance, here’s what this &lt;a href="https://developers.google.com/maps/maps-api-list"&gt;list&lt;/a&gt; will look like for the Google Maps APIs:&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;br /&gt;
&lt;a href="https://developers.google.com/maps/maps-api-list"&gt;&lt;img src="http://3.bp.blogspot.com/-YOJ8V1fhJ_Y/UY0yoHoggTI/AAAAAAAAAGI/dHEyrD7TcLY/s1600/deprecation.jpg" alt="" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;We are not adding or subtracting anything, but only changing how we display this information to make it easier to locate and understand. This change will be fully rolled out in the coming weeks.  Please refer to each API or service’s terms of service for more information.  We hope this will make your life easier so you get back to your code sooner!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Adam Feldman is a Product Manager, focusing on all of Google's APIs and making sure Google provides the best possible platform to developers.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/CRIkdk3vqac" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/670572552893823140/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/clarifying-deprecation-policy-for.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/670572552893823140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/670572552893823140?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/CRIkdk3vqac/clarifying-deprecation-policy-for.html" title="Clarifying the deprecation policy for Google APIs and services" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-KAQsqp4Llrc/T5FouDNufJI/AAAAAAAABXk/mVssok5VAqI/s72-c/adamfeldman.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/clarifying-deprecation-policy-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMAR3s5fCp7ImA9WhBbEU8.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-5981407678997846757</id><published>2013-05-09T11:00:00.000-07:00</published><updated>2013-05-09T11:00:46.524-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-09T11:00:46.524-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chrome extensions" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome apps" /><title>Building efficient apps and extensions with push messaging</title><content type="html">&lt;img height="80" src="http://1.bp.blogspot.com/-58RsyyDC09M/UYsztCNGwfI/AAAAAAAAAFg/nS7c6l1-E6Y/s1600/mark.scott.png" alt="Author Photo" style="float: right; margin-left: 1em; text-align: right;" /&gt; &lt;em&gt;By Mark Scott, Product Manager, Chrome&lt;/em&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://blog.chromium.org/2013/05/building-efficient-apps-and-extensions.html"&gt;Chromium Blog&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Event pages keep apps and extensions efficient by allowing them to respond to a variety of events such as timers or navigation to a particular site, without having to remain running persistently. But what if you need to respond to something that occurs outside of Chrome, such as a news alert, a message sent to a user or a stock hitting a price threshold? Until now, you had to do this by repeatedly polling a server. This process consumed bandwidth and reduced the battery life of your users’ machines. For a more efficient solution, starting today you can use  &lt;a href="http://developer.chrome.com/apps/cloudMessaging.html"&gt;Google Cloud Messaging for Chrome&lt;/a&gt; (GCM) - across all channels of Chrome.&lt;br /&gt;
&lt;br /&gt;
GCM will be familiar to developers who have used &lt;a href="http://developer.android.com/google/gcm/index.html"&gt;Google Cloud Messaging for Android&lt;/a&gt;. To send a message, all you need to do is:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Request a token (channel ID) via &lt;span style="font-family: Courier New, Courier, monospace;"&gt;chrome.pushMessaging.getChannelId()&lt;/span&gt;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Pass the returned token to your server.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Whenever you need to send a message to your app or extension, post the message along with the token to the GCM server-side API.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;Your message is then delivered in near real time to Chrome. This makes your event page wake up (if it’s not already running), and the message is delivered to your &lt;span style="font-family: Courier New, Courier, monospace;"&gt;chrome.pushMessaging.onMessage&lt;/span&gt; listener.&lt;br /&gt;
&lt;br /&gt;
&lt;b id="docs-internal-guid-1d91b49d-8758-1047-d55f-a473c419eef5" style="font-weight: normal;"&gt;&lt;img height="265px;" src="https://lh6.googleusercontent.com/AdSrye2SEeY-eMwXEs1sntnJ7vQNqeDsrgIrO_8PlErO0fPU2GhnEkmjNGE1CKqKKmN0ZzDsNv2QQrVsCpYP1Fhq416lCIUxfrgW_8sKz3wnTsIKZFtpBcaQkg" width="498px;" /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To use GCM, your users must be signed into Chrome, as the service relies on an efficient push channel that’s only established for signed-in users.  Messages are automatically delivered to all the devices where the user has signed in and installed your app/extension.&lt;br /&gt;
&lt;br /&gt;
To add GCM to your app/extension, take a look at the &lt;a href="http://developer.chrome.com/apps/cloudMessaging.html"&gt;overview&lt;/a&gt; of the service or start with some of the &lt;a href="https://github.com/GoogleChrome/chrome-app-samples#push-messaging"&gt;sample apps&lt;/a&gt;—and start pushing! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Mark Scott is a Product Manager on the Google Chrome team.  He works with a team in Kirkland on features that make Chrome a great platform for &lt;a href="http://developer.chrome.com/apps/about_apps.html"&gt;building apps&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt; &lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/kzOTREXsh4g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/5981407678997846757/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/building-efficient-apps-and-extensions.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5981407678997846757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5981407678997846757?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/kzOTREXsh4g/building-efficient-apps-and-extensions.html" title="Building efficient apps and extensions with push messaging" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-58RsyyDC09M/UYsztCNGwfI/AAAAAAAAAFg/nS7c6l1-E6Y/s72-c/mark.scott.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/building-efficient-apps-and-extensions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcESXs9cSp7ImA9WhBbEU8.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-8804309877066085408</id><published>2013-05-09T09:00:00.000-07:00</published><updated>2013-05-09T12:16:48.569-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-09T12:16:48.569-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google Drive" /><title>An easier way to save files to Google Drive</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://1.bp.blogspot.com/-2WoX65t1lEY/T3OX7J-DAWI/AAAAAAAABNs/3WziAgfCmv4/s1600/nicolas.png" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Nicolas Garnier, Developer Relations&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
We surf the web for a million different reasons – for everything from school research projects to time-killing memes. And when we find something relevant for us, whether that be our most recent &lt;a href="https://zenpayroll.com/"&gt;pay stub&lt;/a&gt; or just an &lt;a href="http://www.bigstockphoto.com/image-32092616/stock-photo-the-puppy-of-the-spitz-dog-with-and-kitten"&gt;adorably awesome pic&lt;/a&gt;, we may want to save it for later reference or to share with friends in the future.&lt;br /&gt;
&lt;br /&gt;
Starting today, Drive users can use the "Save to Drive" button to do exactly that. The “Save to Drive” button is an easier way to save files directly from a website. If you have your own website, you can improve the experience for your site visitors by adding the “Save to Drive” button to your page using two easy lines of HTML.  &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xLNU0FE48fA/UYsoiVMnUPI/AAAAAAAAAFI/XHKOcHcNbIs/s1600/oreilly.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="211" src="http://1.bp.blogspot.com/-xLNU0FE48fA/UYsoiVMnUPI/AAAAAAAAAFI/XHKOcHcNbIs/s400/oreilly.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: small; text-align: start;"&gt;Saving an ebook to Google Drive from the&amp;nbsp;&lt;/span&gt;&lt;a href="http://oreilly.com/" style="font-size: small; text-align: start;"&gt;O’Reilly website&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Just try it out. Save this cute kitten’s image to Google Drive using the button below:&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-cSl8anK5wPM/UYsoXEr_U8I/AAAAAAAAAE4/76VYx5TVp2M/s1600/kitten.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-cSl8anK5wPM/UYsoXEr_U8I/AAAAAAAAAE4/76VYx5TVp2M/s400/kitten.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: xx-small; text-align: start;"&gt;Credit:&amp;nbsp;&lt;/span&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Stray_kitten_Rambo002.jpg" style="font-size: xx-small; text-align: start;"&gt;Krzysztof P. Jasiutowicz&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;script src="https://apis.google.com/js/plusone.js"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;div class="g-savetodrive" data-filename="Stray_Kitten.jpg" data-sitename="Google Developers Blog" data-src="https://cors-files.appspot.com/Stray_Kitten.jpg"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Adding a Save to Drive button on your website is easy. You simply have to include the script and HTML tag below:&lt;br /&gt;
&lt;pre&gt;&amp;lt;script src="https://apis.google.com/js/plusone.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;div class="g-savetodrive"
 data-filename="My Statement.pdf"
 data-sitename="My Company Name"
 data-src="/path/to/myfile.pdf"&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;You can also use the Save to Drive button’s &lt;a href="https://developers.google.com/drive/savetodrive#javascript_api"&gt;JavaScript API&lt;/a&gt;, which allows programmatic and flexible control of the creation of Save to Drive buttons in your web pages.&lt;br /&gt;
&lt;br /&gt;
The Save to Drive button works in the context of the user’s browser. This allows your users to save files that could require some form of HTTP authorization – such as a session cookie – without any special customization from you. In most cases, the Save to Drive button should be simple to integrate, plug-and-play!&lt;br /&gt;
&lt;br /&gt;
Check out some companies that have already added Save to Drive buttons on their sites: &lt;a href="http://www.bigstockphoto.com/"&gt;Bigstock&lt;/a&gt;, &lt;a href="http://www.deltadentalins.com/"&gt;Delta Dental&lt;/a&gt;, &lt;a href="http://fotolia.com/"&gt;Fotolia&lt;/a&gt;, &lt;a href="http://oreilly.com/"&gt;O'Reilly&lt;/a&gt;, &lt;a href="https://www.outboxmail.com/"&gt;Outbox&lt;/a&gt;, &lt;a href="http://www.ultimatesoftware.com/"&gt;Ultimate Software&lt;/a&gt;, and &lt;a href="https://zenpayroll.com/"&gt;Zen Payroll&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1yOG_TG3sO4/UYsoiQlAevI/AAAAAAAAAFE/-zFr37vUWSE/s1600/delta.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-1yOG_TG3sO4/UYsoiQlAevI/AAAAAAAAAFE/-zFr37vUWSE/s1600/delta.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: small; text-align: start;"&gt;Saving a dental statement from&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.deltadentalins.com/" style="font-size: small; text-align: start;"&gt;Delta Dental&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PnE1tpC-0Uw/UYsoiRllFOI/AAAAAAAAAFA/dXEf5WCvtW4/s1600/outbox.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-PnE1tpC-0Uw/UYsoiRllFOI/AAAAAAAAAFA/dXEf5WCvtW4/s1600/outbox.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: small; text-align: start;"&gt;Saving your physical mail to Drive from your&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.outboxmail.com/" style="font-size: small; text-align: start;"&gt;Outbox&lt;/a&gt;&lt;span style="font-size: small; text-align: start;"&gt;&amp;nbsp;account&lt;/span&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
To learn more, have a look at our &lt;a href="https://developers.google.com/drive/savetodrive"&gt;technical documentation&lt;/a&gt;, and if you have questions, don’t hesitate to post on &lt;a href="http://stackoverflow.com/questions/tagged/google-drive-sdk"&gt;Stack Overflow&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/108635752367054807758?rel=author"&gt;Nicolas Garnier&lt;/a&gt; joined Google’s Developer Relations in 2008 and lives in Zurich. He is a Developer Advocate for Google Drive and Google Apps. Nicolas is also the lead engineer for the &lt;a href="https://developers.google.com/oauthplayground/"&gt;OAuth 2.0 Playground&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/VhJMXkPZX1E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/8804309877066085408/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/an-easier-way-to-save-files-to-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8804309877066085408?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/8804309877066085408?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/VhJMXkPZX1E/an-easier-way-to-save-files-to-google.html" title="An easier way to save files to Google Drive" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-2WoX65t1lEY/T3OX7J-DAWI/AAAAAAAABNs/3WziAgfCmv4/s72-c/nicolas.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/an-easier-way-to-save-files-to-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQHQ3k6fyp7ImA9WhBbEEg.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-4098363160601842143</id><published>2013-05-08T15:32:00.000-07:00</published><updated>2013-05-08T15:32:12.717-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-08T15:32:12.717-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google I/O" /><category scheme="http://www.blogger.com/atom/ns#" term="gdl" /><title>We’re going live from Google I/O</title><content type="html">&lt;img alt="Author Photo" height="80" src="http://2.bp.blogspot.com/-KyJUTVLFL9A/Tc2YI8rTrJI/AAAAAAAAAfM/5qJAs59GW08/s1600/michael_winton.png" style="float: right; margin-left: 1em; text-align: right;" /&gt;&lt;em&gt;By Mike Winton, Director of Developer Relations&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
At &lt;a href="https://developers.google.com/events/io/"&gt;Google I/O 2013&lt;/a&gt;, we will share the future of our platforms with you. Developers from all over the world are the key innovators of powerful, breakthrough technologies, and that’s why we challenged ourselves to make the Google I/O experience available to every developer, everywhere.&lt;br /&gt;
&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="https://developers.google.com/events/io/"&gt;&lt;img alt="" src="http://2.bp.blogspot.com/-5KimpUpkujM/UYliZSntUzI/AAAAAAAAAEo/50XTM72S5oE/s1600/IO13.png" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; text-align: center;" width="467" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;Watch Google I/O live&lt;/b&gt;&lt;br /&gt;
From the comfort of your own home, office, secret lair, or anywhere you have a reliable Internet connection, you can stream Google I/O May 15-16 live. Brought to you by Google Developers Live (&lt;a href="http://developers.google.com/live"&gt;GDL&lt;/a&gt;), the &lt;a href="http://developers.google.com/io"&gt;Google I/O homepage&lt;/a&gt; will become the &lt;a href="https://developers.google.com/events/io/io-live"&gt;GDL at I/O&lt;/a&gt; live streaming hub starting on May 15th at 9:00 AM PT (16:00 UTC). From this page, you can:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Stream 4 channels of technical content on your computer, tablet, or phone.&lt;/b&gt; You’ll feel like you’re right there in the keynote and session rooms, listening to product announcements straight from the source. Live streaming will run on &lt;a href="http://developers.google.com/io"&gt;developers.google.com/io&lt;/a&gt; from 9 AM PT (16:00 UTC) to 7 PM PT (2:00 UTC) on May 15 and 16.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Watch exclusive interviews with the Googlers behind the latest product announcements.&lt;/b&gt; This year, &lt;a href="http://developers.google.com/live"&gt;GDL&lt;/a&gt; will be on site, broadcasting one-on-one product deep dives, executive interviews, and Sandbox walkthroughs from the GDL stage.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Get the latest news in real-time.&lt;/b&gt; We’ll be posting official announcements during I/O. You’ll be able to see the feed on the &lt;a href="http://developers.google.com/io"&gt;Google I/O homepage&lt;/a&gt;, in the I/O mobile app (coming soon), and on &lt;a href="https://google.com/+GoogleDevelopers"&gt;+Google Developers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Never miss a session.&lt;/b&gt; All Google I/O technical sessions will be recorded and posted to &lt;a href="http://developers.google.com/live"&gt;GDL&lt;/a&gt; and the &lt;a href="http://www.youtube.com/GoogleDevelopers"&gt;Google Developers YouTube channel&lt;/a&gt;. Subscribe to our YouTube channel for archived session updates.&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Live blog the keynote&lt;/b&gt;&lt;br /&gt;
Grab our &lt;a href="https://developers.google.com/events/io/gadget-config"&gt;live blogging gadget&lt;/a&gt; to add the keynote live stream to your own site or blog. Customize the gadget with your site or blog name, live blog alongside real-time Google announcements, and share a dynamic Google I/O experience with your readers. Have questions? For more info, check out our &lt;a href="https://developers.google.com/events/io/gadget-faq"&gt;live blogging gadget FAQ&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Get together locally&lt;/b&gt;&lt;br /&gt;
Experience Google I/O with your local developer community by hosting or attending an &lt;a href="https://developers.google.com/events/io/io-extended"&gt;I/O Extended&lt;/a&gt; event. If you’re hosting, &lt;a href="https://developers.google.com/events/io/io-extended-form"&gt;register here&lt;/a&gt; and learn how to hold a totally epic event with our handy &lt;a href="https://developers.google.com/shared/io/googleio2013-extended-guide.pdf"&gt;Organizer Guide&lt;/a&gt;. Otherwise, with over 400 sites in 90+ countries, chances are good that there is an I/O Extended event near you. &lt;a href="https://developers.google.com/events/io/io-extended"&gt;Find an event now&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
And before I/O, tune in to &lt;a href="http://www.youtube.com/playlist?feature=edit_ok&amp;list=PLOU2XLYxmsILCPnoU1QrY9zdvYoBKyg8v"&gt;Google Developers Live programming&lt;/a&gt; to connect with Google engineers, prep for this year’s event, and browse our archived content. For official conference updates, add &lt;a href="http://google.com/+GoogleDevelopers"&gt;+Google Developers&lt;/a&gt; to your Circles, follow &lt;a href="https://plus.google.com/s/%23io13"&gt;#io13&lt;/a&gt; for big announcements, join the Google I/O community, and keep an eye on &lt;a href="https://developers.google.com/events/io/"&gt;the Google I/O site&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/u/0/+MikeWinton/posts"&gt;Mike Winton&lt;/a&gt; founded and leads Google's global Developer Relations organization. He also enjoys spending time with his family and DJing electronic music.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/t21c2VQz9fA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/4098363160601842143/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/were-going-live-from-google-io.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4098363160601842143?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/4098363160601842143?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/t21c2VQz9fA/were-going-live-from-google-io.html" title="We’re going live from Google I/O" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-KyJUTVLFL9A/Tc2YI8rTrJI/AAAAAAAAAfM/5qJAs59GW08/s72-c/michael_winton.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851432 -122.2452126 37.486960200000006 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/were-going-live-from-google-io.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGRnY7fip7ImA9WhBUFk8.&quot;"><id>tag:blogger.com,1999:blog-596098824972435195.post-5822209908079346369</id><published>2013-05-03T16:07:00.000-07:00</published><updated>2013-05-03T16:07:07.806-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-03T16:07:07.806-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apis" /><title>Google API infrastructure outage incident report</title><content type="html">&lt;em&gt;By the Google API Infrastructure Team&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;As we &lt;a href="http://googledevelopers.blogspot.com/2013/05/google-api-infrastructure-outage.html"&gt;described in a previous post&lt;/a&gt;, earlier this week we experienced an outage in our API infrastructure. Today we’re providing an incident report that details the nature of the outage and our response.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
The following is the incident report for the Google API infrastructure outage that occurred on April 30, 2013. We understand this service issue has impacted our valued developers and users, and we apologize to everyone who was affected.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Issue Summary&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
From 6:26 PM to 7:58 PM PT, requests to most Google APIs resulted in 500 error response messages.  Google applications that rely on these APIs also returned errors or had reduced functionality.  At its peak, the issue affected 100% of traffic to this API infrastructure. Users could continue to access certain APIs that run on separate infrastructures. The root cause of this outage was an invalid configuration change that exposed a bug in a widely used internal library.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Timeline (all times Pacific Time)&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;6:19 PM: Configuration push begins&lt;/li&gt;
&lt;li&gt;6:26 PM: Outage begins&lt;/li&gt;
&lt;li&gt;6:26 PM: Pagers alerted teams&lt;/li&gt;
&lt;li&gt;6:54 PM: Failed configuration change rollback&lt;/li&gt;
&lt;li&gt;7:15 PM: Successful configuration change rollback&lt;/li&gt;
&lt;li&gt;7:19 PM: Server restarts begin&lt;/li&gt;
&lt;li&gt;7:58 PM: 100% of traffic back online&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Root Cause&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
At 6:19 PM PT, a configuration change was inadvertently released to our production environment without first being released to the testing enviroment. The change specified an invalid address for the authentication servers in production. This exposed a bug in the authentication libraries which caused them to block permanently while attempting to resolve the invalid address to physical services. In addition, the internal monitoring systems permanently blocked on this call to the authentication library.  The combination of the bug and configuration error quickly caused all of the serving threads to be consumed. Traffic was permanently queued waiting for a serving thread to become available. The servers began repeatedly hanging and restarting as they attempted to recover and at 6:26 PM PT, the service outage began.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Resolution and recovery&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
At 6:26 PM PT, the monitoring systems alerted our engineers who investigated and quickly escalated the issue. By 6:40 PM, the incident response team identified that the monitoring system was exacerbating the problem caused by this bug. &lt;br /&gt;
&lt;br /&gt;
At 6:54 PM, we attempted to rollback the problematic configuration change.  This rollback failed due to complexity in the configuration system which caused our security checks to reject the rollback.  These problems were addressed and we successfully rolled back at 7:15 PM.&lt;br /&gt;
&lt;br /&gt;
Some jobs started to slowly recover, and we determined that the overall recovery would be faster by a restart of all of the API infrastructure servers globally.  To help with the recovery, we turned off some of our monitoring systems which were triggering the bug.  As a result, we decided to restart servers gradually (at 7:19 PM), to avoid possible cascading failures from a wide scale restart.  By 7:49 PM, 25% of traffic was restored and 100% of traffic was routed to the API infrastructure at 7:58 PM.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Corrective and Preventative Measures&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In the last two days, we’ve conducted an internal review and analysis of the outage. The following are actions we are taking to address the underlying causes of the issue and to help prevent recurrence and improve response times:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Disable the current configuration release mechanism until safer measures are implemented. (Completed.)&lt;/li&gt;
&lt;li&gt;Change rollback process to be quicker and more robust.&lt;/li&gt;
&lt;li&gt;Fix the underlying authentication libraries and monitoring to correctly timeout/interrupt on errors.&lt;/li&gt;
&lt;li&gt;Programmatically enforce staged rollouts of all configuration changes.&lt;/li&gt;
&lt;li&gt;Improve process for auditing all high-risk configuration options.&lt;/li&gt;
&lt;li&gt;Add a faster rollback mechanism and improve the traffic ramp-up process, so any future problems of this type can be corrected quickly.&lt;/li&gt;
&lt;li&gt;Develop better mechanism for quickly delivering status notifications during incidents.&lt;/li&gt;
&lt;/ul&gt;Google is committed to continually and quickly improving our technology and operational processes to prevent outages. We appreciate your patience and again apologize for the impact to you, your users, and your organization. We thank you for your business and continued support.&lt;br /&gt;
&lt;br /&gt;
Sincerely,&lt;br /&gt;
&lt;br /&gt;
The Google API Infrastructure Team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+ScottKnaster"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/GDBcode/~4/dbvC47fstIQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googledevelopers.blogspot.com/feeds/5822209908079346369/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googledevelopers.blogspot.com/2013/05/google-api-infrastructure-outage_3.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5822209908079346369?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/596098824972435195/posts/default/5822209908079346369?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GDBcode/~3/dbvC47fstIQ/google-api-infrastructure-outage_3.html" title="Google API infrastructure outage incident report" /><author><name>Scott Knaster</name><uri>https://plus.google.com/116954523003757714329</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.2851427 -122.2452126 37.486960700000004 -121.9224896</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://googledevelopers.blogspot.com/2013/05/google-api-infrastructure-outage_3.html</feedburner:origLink></entry></feed>
