Tuesday, June 09, 2009

Google I/O: Session videos on building apps using the AJAX and Data APIs

One of the best things about attending Google I/O is the chance to meet developers who are using our APIs and interacting with Google technology in ways we could never imagine. Not only was it amazing to see exciting examples of apps built on the AJAX and Data APIs being demoed at the developer sandbox, but it was also interesting to meet other developers who are just starting to use many of our APIs for their specific needs and cool ideas. Hopefully, by making all of our sessions available for free to watch on your own time, many of you who are interested in Google's APIs will get a better understanding of the ways we are making our API offerings easier to use, more efficient and much more feature rich.

Big Announcements & More

One of the most exciting announcements at this year's I/O was the developer preview of Google Wave. After its introduction during the Day 2 keynote, there were three sessions devoted to the Google Wave APIs: Programming With and For Google Wave, Google Wave: Powered by GWT, and Google Wave: Under the hood. We hope you're as excited as we are, and can't wait to see how you use these tools.

Another new product announcement this year was Google Web Elements, which allow you to easily add your favorite Google products onto your own website. There are elements for Google News, Maps, Spreadsheets, YouTube and others, with more to come. Be sure to check out the Day 1 keynote for a complete introduction to the simple copy and paste power of Google Web Elements.

Keeping webmasters in mind, two sessions were all about optimizing your site for search. In one talk, Matt Cutts reviewed real sites that *you* submitted. talking through real-life issues that effect developers when it comes to optimizing their app for search. The other session focused on how to maximize your site, your content, and your application's exposure to search engines.

Javascript & Google AJAX APIs

The session on Custom Search Engines focused on helping your users search the sites and topics that are relevant to you. Nick Weininger discussed some of the ways to embed search and ads onto your site (including the new Custom Search element), then customize the look and feel of the results. Adobe was on hand to show how they're using Custom Search Engines to enhance their products and insert contextual search into the developer's programming workflow. We also announced the launch of the Custom Search gadget for Blogger which gives your blog's visitors the ability to search not just your posts, but web pages linked from your blog, your blog lists, and link lists.

In the session Implementing your Own Visualization Datasource, attendees learned about building a server-side data source compatible with the Google Visualization API, including hearing about the experience from a Salesforce.com expert. Itai Raz also gave a great session on using the Visualization API with GWT and treated the audience to advanced Javascript tricks such as wrapping visualizations as gadgets.

Ben Lisbakken's session detailed some advanced Javascript techniques and then delved into some of great tips and tracks he learned while creating the Code Playground, a tool which can help developers learn about and experiment with many of Google's APIs. Some of the highlights include increasing the security and performance of applications and learning why App Engine is so easy on which to develop.

Jon Kragh of VastRank showed off some neat ways he's Using AJAX APIs to Navigate User-Generated Content, including using Google Maps to display nearby colleges and translating reviews into the viewer's language. Also, Michael Thompson explored the idea of Building a Business with Google's free APIs using example Google Gadgets, Google Gadget Ads, Mapplets, and the Maps API.

Google Data APIs

Jeff Fisher and Jochen Hartmann spoke on the future direction of the YouTube API as it becomes increasingly social. They used two sample applications to demonstrate the use of the activity feeds as well as the new "SUP" feed that allows high traffic websites to monitor YouTube for activity in a scalable manner.

The session about writing monetizable YouTube apps focused on creating applications that allowed access to YouTube videos in creative ways. In the talk, Kuan Yong showed how to expertly navigate through the YouTube API terms of service in order to avoid business pitfalls so that developers can monetize their own apps.

Eric Bidelman and Anil Sabharwal discussed the Document List Data API in detail, highlighting common enterprise use cases such as sync, migration, sharing, and legal discovery. Partners Syncplicity, OffiSync, and gDocsBar showed off compelling demos.

In the talk on the evolution of the Google Data protocol, Sven Mawson outlined all of the new features in the Google Data APIs that will help in the creation of more efficient applications. Two of the new additions included a compact and customizable JSON output and the option to retrieve only the parts of a feed that you want using partial GET.

Monsur Hossain and Eric Bidelman showed how to build a read/write gadget using OAuth and the Google Data JavaScript library. They went through a step by step set of instructions that explained how to set up the gadget code, how to get a token using the OAuth proxy, and how to read and write data to Blogger using the JavaScript library inside of an iGoogle gadget.

Google Geo APIs

Mano Marks and Pamela Fox started with a grab bag session covering the vast spectrum of Geo APIs, discussing touring and HTML 5 in KML, the Sketchup Ruby API (with an awesome physics demo), driving directions (did you know you can solve the Traveling Salesman Problem in Javascript?), desktop AIR applications, reverse geocoding, user location, and monetization using the Maps Ad Unit and GoogleBar. Pamela finished by sneak previewing an upcoming feature in the Flash API: 3d perspective view.

In the session on performance tips for Maps API mashups, Marcelo Camelo announced Google Maps API v3, a latency-oriented rewrite of our popular JS Maps API. Also see Susannah Raub's more in-depth talk about Maps API v3. Then Pamela gave advice on how to load many markers (by using a lightweight marker class, clustering, or rendering a clickable tile layer) and on how to load many polys (by using a lightweight poly class, simplifying, encoding, or rendering tiles). Sascha Aickin, an engineer at Redfin, showed how they were able to display 500 housing results on their real estate search site by creating the "SuperMarker" class.

Mano and Keith presented various ways of hosting geo data on Google infrastructure: Google Base API, Google App Engine, and the just-released Google Maps data API. Jeffrey Sambells showed how ConnectorLocal used the API (and their own custom PHP wrapper) for storing user data.

On the same day as announcing better integration between the Google Earth and Google Maps JS APIs, Roman Nurik presented on advanced Earth API topics, and released a utility library for making that advanced stuff simple.

Everybody's talking: the Social track at Google I/O

I had a great time at Google I/O -- meeting lots of developers from around the world who are interested in developing applications that use social data. In addition to building web applications for traditional social networks like orkut, MySpace and hi5, developers are also looking at enterprise and mobile applications which take advantage of the social graph, gadgets for Google's platforms like iGoogle, Google Calendar and Gmail, and gadgets for the 5 million websites and blogs powered by Google Friend Connect. We had some important questions raised in many of the sessions and also in the fireside chats with containers and app developers. It was exciting to see the whole OpenSocial ecosystem come together to discuss the current status and progress of social technologies, as exemplified by the I/O Developer Sandbox.

All the sessions at Google I/O were recorded, and videos and presentation materials are now available on the Google I/O website. Here's a little more info about the sessions in the social track:

Google and the Social Web
Daniel Holevoet outlined all the ways Google uses social technologies, highlighting those services which allow developers to extend them using the OpenSocial APIs. During his talk, Dan announced the new support for OpenSocial gadgets in Google Calendar, which include hooks into a calendar-specific API for accessing the currently-selected date range. Dan demonstrated the Quartermile OpenSocial application he wrote along with Arne Rooman-Kurrik and showed how the app could be used for different purposes across iGoogle, Gmail and Google Calendar and talked about how it could be used on any website via Google Friend Connect or on traditional social networks supporting the OpenSocial APIs. Of course, Dan didn't get to cover all the exciting news about Google's social initiatives during this talk-- a real-time gadgets API was announced during the Developer Sandbox!

Google Friend Connect Gadgets: Best Practices in Code and Interaction Design
Jonathan Terleski (lead designer on Google Friend Connect) and I presented this session on best practices for building Google Friend Connect (GFC) gadgets for the millions of websites and blogs using GFC today. We gave a brief overview of OpenSocial, followed by some design principles and a basic framework to think about when building GFC gadgets: what are the social objects, how do users contribute them, and how to users consume them? In the last part of the talk, I discussed how to use page context in your gadgets for content, skinning and language while showing some small bits of code to accomplish each. Most importantly, we announced the opening of submissions to the Google Friend Connect gadget directory and support for OpenSocial 0.9 in GFC gadgets.

Beyond Cut and Paste - Deep integrations with Google Friend Connect
In this talk, Arne Roomann-Kurrik and Chris Schalk talked about how they built the Plane Crazy site for flying enthusiasts and the Chow Down site for restaurant connoisseurs as example sites demonstrating how to integrate Google Friend Connect with existing login systems and add social functionality using the REST and RPC APIs. While these sites were built on top of Google App Engine (using Java and PHP), they talked about the other client libraries and raw protocols available for similar integrations. The Chow Down site is already open-sourced, and the Plane Crazy site will be shortly.

Google Friend Connect and the Real World
Patrick Chanezon led this session along with Shivani York, Henry Chan and Srivaths Lakshmi of TIME.com and Paul Berry of HuffingtonPost talking about how they integrated Google Friend Connect into their sites. Both TIME.com and HuffingtonPost used Google Friend Connect to create social lists where you rank the top items from the news, such as "Top 10 Movie Catchphrases" and "The World's Most Famous Swimsuits." Khris Loux, of JS-Kit, concluded the session by addressing why it's a good idea to integrate with Google Friend Connect and how the web is enhanced by having open API access to social data.

Building a Business with Social Apps
Shawn Shen and Chewy Trewhalla, Developer Advocates at Google, and Gerardo Capiel, VP of Product Management for the MySpace Open Platform, led this session showing how developers can make a living by building social apps. Virtual currencies, the recent OpenSocial extension proposal for a virtual currency spec and implementations on hi5, 51.com and other networks were discussed. In talking with a wide variety of developers and preparing this session content, our team learned even more about this industry, and we hope you can too.

Designing OpenSocial Apps for Speed and Scale
How do you use standard web optimization techniques in combination with existing and new features of OpenSocial 0.9 to develop a fast social application which scales efficiently? Arne Rooman-Kurrik and Chris Chabot examined this question in great depth. They took the Quartermile application which they developed and dived into the bandwidth, cpu and monetary savings achieved by applying a variety of optimizations--from image spriting, to data pipelining and proxied content. From the naive implementation to the optimized implementation, they showed how you could improve latency by nearly 70% and drastically reduce the cost of hosting a social application.

The Social Web: An Implementer's Guide
Joseph Smarr, Chief Platform Architect at Plaxo, led this standing-room-only session about the current state of the social web and how "The Web is now social... and the Social Web is now open." He recapped progress made in the last year, with the emergence and increasing adoption of a variety of technologies which make up the Open Stack: Open ID, XRDS-Simple, OAuth, Portable Contacts, OpenSocial. He gave many demos, including demonstrating the death of the "password anti-pattern" leading to a 92% conversion rate on users importing their contacts from sites supporting OpenID+OAuth and Portable Contacts.

Powering Mobile Apps with Social Data
Many people today have a mobile device which has internet access, and they probably use those devices as much (if not more!) than they use their computers. I explored the different ways to use social data from the web to enhance the experience users have with their mobile devices. I demonstrated and dove into the code of three different types of apps -- pure web apps targeted at mobile devices, a web app which uses some native GPS functionality via Google Gears and adding a social scoreboard to the "Divide and Conquer" open source native Android application. I then spoke a bit about the future of mobile development and how the features available between native applications and web applications are beginning to merge with the new HTML5 and W3C standards which provide access to native functionality such as databases, app caches and GPS location data.

OpenSocial in the Enterprise
Social networks are typically thought of as tools for personal communication, but they've increasingly become important in the enterprise world as well. Chris Schalk of Google led this panel along with representatives from IBM, Salesforce.com, Oracle, eXo, SAP and Atlassian to share the ways enterprises have used OpenSocial technology outside of and behind the firewall.

There's a wealth of new information in these presentations which were all prepared especially for Google I/O, including several new announcements. The presenters also developed quite a bit of code for Google I/O, which we'll be releasing as Apache-licensed open source projects over the next couple weeks. Stay tuned to the OpenSocial blog for those releases.

Monday, June 08, 2009

Google App Engine @ I/O: Java, offline processing, great partners. and more

2009 has been a busy year for the App Engine team, but all along we've looked forward to Google I/O and the excitement it brings to Google's developer community. At I/O last year, App Engine was brand new and many attendees were just getting familiar with the project. Well, what a difference a year makes - this year, in addition to sharing new information about our project, we got to learn about an amazing host of App Engine projects from you, our developers!

First, the big news - we are excited to announce open signups for our Java language runtime. During Wednesday's keynote, Engineering Manager Kevin Gibbs and Product Manager Andrew Bowers demoed the combined power of App Engine and GWT, all with easy deployment from the Eclipse IDE. If you've not tried our new language yet, please head over to the Admin Console to signup, then download the SDK and get programming.

The engineers behind Google App Engine for Java presented two sessions. First, Toby Reyelts and Don Schwarz introduced the new runtime with App Engine: Now Serving Java, including details of how our Java language layer exposes the power of Google's infrastructure. Be sure to check out the interactive game they demo'd with audience participation! Digging a bit deeper, Max Ross showed us The Softer Side of Schemas - how he mapped Java Persistence Standards to App Engine's datastore.

In addition to the new Java runtime, App Engine developer Brett Slatkin previewed some eagerly anticipated functionality: offline tasks. In his talk Offline Processing on App Engine: a Look Ahead, Brett revealed the first few milestones of App Engine's plan for offline processing with our upcoming Task Queue API. Leveraging the power of a web hook (an HTTP request body and URL) as the fundamental unit of execution on the web, this new API will allow you to organize and enqueue tasks for efficient background processing. Stay tuned to the App Engine blog for this feature's launch.

The App Engine team is always eager to share information about our infrastructure and how things work under the hood. Alon Levi kicked things off Wednesday morning with From Spark Plug to Drive Train: Life of an App Engine Request, in which he showed new information about how an application's incoming requests are received, scheduled, and executed by App Engine. Ryan Barrett presented some of the theoretical, yet practical challenges faced by the App Engine team with Transactions Across Datacenters (and Other Weekend Projects). Finally, Brett Slatkin took the stage once again, with Building Scalable, Complex Apps on App Engine, to give you insights on advanced data structures and algorithms.

In addition to the App Engine team, we were thrilled to have App Engine customers and partners present about their experience with the platform:Last but not least, more partners joined our Developer Sandbox to share their experience building projects on Google App Engine: 3scale, Best Buy, BuddyPoke, EZAsset, Gigapan, LifeAware, Salesforce.com, SpringSource, and ThoughtWorks.

Thanks for making this year's Google I/O a fantastic success! We have much more in store for 2009, so be sure to watch the App Engine blog for updates!



Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries.

Google I/O: Reflections on the Enterprise Track

The Google Enterprise team was really energized to see the strong turnout for the 8 enterprise-track sessions at Google I/O last week. It was a treat to meet developers face to face and share stories about how things like Google App Engine, gadgets, GWT, Enterprise Search, and HTML 5 are impacting the industry's move to cloud computing. We were also pleased to announce Google Apps Script, a new feature that allows customization and automation in Google Apps, starting with spreadsheets, and to see the positive press coverage it has received.

The reality is that despite a formal "enterprise" track, the majority of the sessions were interesting and relevant to commercial developers, particularly Google Apps developers, who are rapidly uncovering a diverse set of commercial opportunities using these developer tools. This is something we want to continue to spread the word about!

The Google I/O team is busy uploading content from the event to the Google I/O site, and today we're happy to share a few highlights from last week:

Practical Standards-based Security and Identity in the Enterprise: Eric Sachs gave an overview of how Google is incorporating today's open identity and authorization standards into both consumer applications as well as enterprise software. Eric demonstrated inter-service communication using OAuth: from extranet to intranet, from platform to platform, and even from Google App Engine to Google App Engine.

Growing a SaaS-based services business around Google Apps: Jeff Ragusa of Google and Daniel Jefferies of Newmind Group gave a talk on how system integrators and developers can partner with Google to build a strong business reselling Google Apps and complementary services. Jeff highlighted the the myriad opportunities that emerge when the money spent on licenses, maintenance and upgrades can instead be spent on solving specific business problems and building custom apps an gadgets. Daniel, a Google Apps Authorized Reseller, talked about his experience bringing cloud computing to his customers.

Building Scalable, Complex Apps on App Engine: Brett Slatkin gave an informative presentation on the advanced techniques and data structures developers can leverage to build complex apps with App Engine. Areas of discussion included list properties and merge-joins, and how developers can use these tools to maximize performance of their apps.

Salesforce, Appirio and ThoughtWorks on App Engine for Java: Ron Hess of Salesforce and Iein Valdez of Appirio presented Connecting The Clouds: Integrating Google App Engine for Java with Force.com, and announced a new open source SOAP library for App Engine that helps connect App Engine apps to Force.com apps. Martin Fowler and Rebecca Parsons presented a session titled ThoughtWorks on App Engine for Java: An Enterprise Cumulonimbus?, which provided an overview of App Engine and the move to cloud computing from the perspective of larger enterprises.

Using the Google Secure Data Connector to Access Behind-the-Firewall Data from Google's Cloud: In this session, Jun Yang of Google showed how enterprises can bring a behind-the-firewall relational database into Google Apps using the Google Secure Data Connector and Google Feed Server. Jun demonstrated how developers can do this without the need for special code to access the SQL data or complex firewall configuration.

We hosted a mixer for enterprise developers and IT decision makers on the first day of I/O, and were thrilled at the turnout. The event was our first face to face outreach to commercial developers, covering all Enterprise product lines and touching on several recent developer announcements like Google Apps Script and the Google Apps Reseller program.

No, this is not people queuing up for free Android phones, just the line for the Enterprise Mixer.

All told, a great two days thanks to all of you. Since we're just getting started with tools and topics of interest to enterprise developers, please stay in touch. We have more tools and APIs on the way. The easiest way to do that is to subscribe to our Solution Provider announcements, and if you're tweeting, follow us on Twitter at GoogleAtWork.

Google Web Toolkit at Google I/O

Another Google I/O has come and gone, and speaking personally I think it's going to be hard to top this year's conference. Free Android unlocked developer devices and the unveiling of a very cool new product built with developers in mind? I already don't envy the planning team taking on next year.

There was a ton of Google Web Toolkit (GWT) related content this year, including an incredibly nice shout-out from Lars Rasmussen during the Google Wave keynote - if you haven't heard, Google Wave is built using GWT so if you want some inspiration as to what's possible, check out the keynote.

The GWT-related sessions have now been posted, so if you missed one you'll be able to catch it here. Here's a quick overview of the many sessions:

GWT Can Do What? A Preview of Google Web Toolkit 2.0: Start thinking about how you will take advantage of new features like runAsyc in the next version of Google Web Toolkit. Bruce Johnson, Co-creator of GWT, goes into the details of what's coming and the philosophy behind the new features.

Google Wave - Powered by GWT: This one's for the skeptics in your engineering department. As an adept JavaScript developer, Adam Schuck, Google Wave's Client Lead was initially skeptical about using Google Web Toolkit. Many lines of code later, he will openly tell you he's changed his mind about that. In this session, Adam discusses the Wave team's decision to use GWT and other facets of their client-side code.

Google Web Toolkit Architecture: Best Practices for Architecting your GWT App: A common question people ask is how to architect a GWT app. Ray Ryan discusses real-world learnings and patterns from the Google AdWords team and elsewhere which you can use in your apps.

Measure in Milliseconds: Performance Tips for Google Web Toolkit: Want some best practices for speeding up your app? Kelly Norton shares a few concrete issues and how to solve them.

Effective GWT: Developing a Complex, High- performance App with Google Web Toolkit: Alex Moffat and Damon Lundin from Lombardi are back again for a second year at Google I/O. Similar in theme to Ray Ryan's talk above, but with additional perspective and content, they'll take you through how they've successfully architected Lombardi Blueprint. I recommend watching both if you are laying out a new GWT app, or refactoring an existing one.

The Story of your Compile: Reading the Tea Leaves of the GWT Compiler for an Optimized Future: What if your app isn't as fast as you like it to be? While GWT tries to make your app as optimized as possible when you drive it off the lot, applications sometimes need to be tuned for racing by the developers themselves. Lex Spoon and Bruce Johnson talk about tools and techniques for understanding what's going on with your code and how to use that information to optimize your app.

Progressively Enhance AJAX Applications with Google Web Toolkit and GQuery: Ray Cromwell, from Timefire is one of my personal favorite speakers and commentators on GWT and web development. When he broke out his horse race demo in this session to measure performance deltas between different JS libraries, I knew why. Ray takes JQuery's power approach to manipulation and implements it in GWT. Learn about Ray's tool and how you can use this in your own projects to give designer's tools they can use directly in the HTML, without coding Java.

Building Applications with Google APIs: Did I mention Ray is an entertaining technical speaker? The title of this session, as Ray noted, doesn't do it justice. Related to GWT, this session outlines how he's used Google APIs and tools together to create an amazing integrated experience at Timefire. His demonstration of the interactive graph that syncs with the YouTube video is very compelling. Want to dispute Al Gore's claim of carbon emissions? Add your own dataset to the graph via a comment. Impressive.

We had a great time meeting many of you at I/O. Many of us were on hand, and talked to a lot of 'familiar email addresses' - it's nice to make that familiar faces. For those of you who didn't make it to I/O or want to revisit the GWT sessions, we hope you enjoy the session videos and presentations!

Friday, June 05, 2009

The Developer Sandbox, now with Video Interviews!

The Developer Sandbox was a new addition to this year's Google I/O. The Sandbox featured a diverse range of developers and apps, all with one thing in common -- they've all built applications based on technologies and products featured at I/O. The Sandbox was very popular with attendees and saw a lot of foot traffic throughout both days of the event. Sandbox developers welcomed the opportunity to interact with fellow developers, discuss their products and answer questions.



We interviewed these developers about their apps, the challenges they faced and the problems they solved, and finally their learnings & hopes for web technologies going forward. We also asked these developers to create screencast demos of their apps, much like the demos they gave to people visiting their station during I/O.

These video interviews and demos are now available in the Developer Sandbox section of the I/O website. Each developer has their own page with a brief description of their company, their app, and their interview video (if one was filmed) and screencast demo video (if available). For instance, here's a video interview with Gustav Soderstrom of Spotify, who walks us through a demo of their Android app and then talks about the platform and why Spotify chose to develop their app on Android.



Are you building an app on one of Google's platforms or using Google APIs? Please send us a video about your company and your app and you could be featured on Google Code Videos. Click here for the submission form and guidelines.

Each Sandbox developer page also features a Friend Connect gadget that allows anyone visiting the page to sign in with their Friend Connect id and leave comments & feedback. It's a great way to continue the conversation or to ask questions if you did not get a chance to meet them at I/O.

Tech Talk Videos from Google I/O

This year's Tech Talk sessions at Google I/O cast light on a few key ingredients necessary for developing great software and applications, including faster methods and techniques, a re-envisioning of how to do things better, down to a robust architecture that is designed to scale and sustain. At the same time, developers themselves need to successfully manage the growth of new ideas in a collaborative environment, while remembering to put the user and customer first.

Kicking off Tech Talks at Google I/O this year, Steve Souders challenged developers to build faster, high-performing websites and presented a few best practices and tactics to these ends. Dhanji Prasanna and Jesse Wilson revealed the fast, lightweight Guice framework and how it is used at Google to power some of the largest and most complex applications in the world. Dion Almaer and Ben Galbraith walked the audience through the Bespin project at Mozilla Labs in their session, expanding on the project's core motivation to re-envision how we develop software and to provide pointers on what it takes to build bleeding edge applications for today's browsers. Jacob Lee unveiled the architecture behind Mercurial on BigTable, a new version-control component of Project Hosting on Google Code that was built to host hundreds of thousands of open source projects.

Brian Fitzpatrick and Ben Collins-Sussman ran a duet of talks that turned the focus from the tools to the developer. First, they discussed the myth of the "genius programmer" in the social dynamics of collaborative software development. In a subsequent session, they talked about the lost art of putting the user first and "selling" the software in an exciting and honest manner through usability and uncomplicated design. Keeping with the focus on developers and what motivates developers to action, we invited Brady Forrest to run an Ignite session at Google I/O, featuring nine speakers with deeply interesting perspectives on technology. Topics ranged from growing up a geek, big data and open source, and the law of gravity for scaling, to life as a developer at the frontlines with a humanitarian agency.

Update: David actually used a brush, not a pen. We thought adding a thumbnail of his work would help him forgive our mistake :)

We also wanted to share one of our favorite tidbits from Google I/O -- a series of ink on paper portraits by David Newman, an ex-courtroom sketch artist (now enthusiastic technologist!). David put his brush to paper at the conference floor and drew wonderful sketches of a few of the folks at I/O - we're delighted to share a few of his portrait sketches.

We hope you enjoy this year's interesting combination of perspectives at the Google I/O Tech Talks series, now available online. Watch the blog next week as we bring live more videos and presentations from the breakout session tracks at Google I/O!

Thursday, June 04, 2009

Introducing Page Speed

At Google, we focus constantly on speed; we believe that making our websites load and display faster improves the user's experience and helps them become more productive. Today, we want to share with the web community some of the best practices we've used and developed over the years, by open-sourcing Page Speed.

Page Speed is a tool we've been using internally to improve the performance of our web pages -- it's a Firefox Add-on integrated with Firebug. When you run Page Speed, you get immediate suggestions on how you can change your web pages to improve their speed. For example, Page Speed automatically optimizes images for you, giving you a compressed image that you can use immediately on your web site. It also identifies issues such as JavaScript and CSS loaded by your page that wasn't actually used to display the page, which can help reduce time your users spend waiting for the page to download and display.

Page Speed's suggestions are based on a set of commonly accepted best practices that we and other websites implement. To help you understand the suggestions and rules, we have created detailed documentation to describe the rationale behind each of the rules. We look forward to your feedback on the Webmaster Help Forum.

We hope you give Page Speed a try.

Google Wave @ Google I/O

The high point of presenting Google Wave at I/O? The joy of seeing crazy smart developers react to the product and technology as we showed it publicly for the first time. The low point? Typing twephanie's Twitter password in clear text on the big screen (luckily, a team member reset it before anything questionable happened!). We had the chance to continue the Google Wave conversations through breakout sessions, which we are happy to now make available in the Google I/O series of videos now available online, and in office hours with the engineering team.

Douwe Osinga kicked off the series with a deep dive into the Google Wave APIs using demos and code samples to show how waves can be embedded into other sites as well as how to extend Wave with both client- and server-side code. After the wow of the chess gadget and the 'Rosy' robot demos during the keynote, developers flocked to the Programming with and for Google Wave session to learn how to start building extensions themselves. Notice how Douwe's good humor persevered through even tougher network problems than we had in the keynote.

The next session, Google Wave: Under the Hood, focused on core technologies behind Google Wave, diving into the heavy lifting we did in platform design to make it simple for developers to build concurrent applications. David Wang introduced the technology stack behind Google Wave's real-time collaboration and concurrency controls followed by an explanation of the operational transformation algorithms by Alex Mah. Dan Danilatos explained how the AJAX editor renders wave content and sends and receives fine-grained changes down to the level of keystrokes. Finally, Casey Whitelaw unveiled the natural language processing magic behind 'Spelly' our context-sensitive spelling system.

In the third and final session, Adam Schuck outlined the team's experience using Google Web Toolkit to build the Google Wave client. Adam went from GWT skeptic to zealous GWT advocate over the course of building Google Wave. In his talk, Adam covered some recent advances in GWT which enabled Google Wave to look and feel like a desktop application with comparable performance. He also discussed the use of WebDriver (an automated web testing tool) which is integral to the project's success.

We simply can't wait to see what developers build. Check out our docs on Google Code and request a developer sandbox account. For technical news and updates on the APIs and protocol, don't forget to bookmark the Google Wave Developer Blog .

Android: Now beaming I/O videos and presentations to the world

Google I/O was one of Android's biggest events of the year, with a Mobile track that focused primarily on all things Android, and 22 developers showcasing some of their great Android applications at the Google I/O developer sandbox.

For those of you who missed I/O or could not make all the Android sessions, we're excited to release session videos and presentations from the Mobile track online and free to developers worldwide.

At this year's I/O, we wanted to help developers further optimize their applications for the Android platform by creating better user experiences. Romain Guy explored techniques for making Android apps faster and more responsive using the UI toolkit. Chris Nesladek discussed the use of interaction design patterns in the Android system framework to create an optimal user experience. Since mobile application development is inextricably tied to battery performance, Jeff Sharkey provided an insightful look at the impact of different application features and functionalities on battery life. Taking the mobile experience further, T.V. Raman and Charles Chen discussed building applications that are optimized for eyes-busy environments, taking advantage of the Text-to-Speech library, as well as new UI innovations that allow a user to interface with the device without needing to actually look at the screen.

We also offered a few sessions on building compelling and fun apps that take advantage of the Android media framework and 2D and 3D graphic libraries. Chris Pruett discussed the gaming engine that he built and used as a case study to explain best practices and common pitfalls in building graphics-intensive applications. David Sparks lifted the hood on the infrastructure by diving into Android's multimedia capabilities and expanding on how to use them to write secure and battery-efficient media code.

We also had several sessions that meditate on challenges, best practices, and philosophies for writing apps for Android. Dan Morrill demonstrated multiple techniques for developing apps for Android in different scenarios, to help developers make the right decisions on the right techniques for writing their apps. Joe Onorato talked to developers about leveraging Android's ability to support multiple hardware configurations to make their applications run on a wide variety of devices without the overhead of building a custom version for each. Justin Mattson talked about advanced usage of Android debugging tools in his session and presented real-world examples in which these tools were used at Google.

Lastly, Robert Kroeger returns from the frontlines of launching Gmail Mobile Web for iPhone and Android's offline capabilities and shares the team's experiences in using a portable write-through caching layer running on either HTML 5 or Gears databases to build offline-capable web applications.

We hope these session videos and presentations are helpful to all Android developers out there. Don't forget to check out our newly announced Android Developer Challenge 2 - we look forward to seeing your passion, creativity, and coding prowess come together in the great apps you submit in this next challenge!