Thursday, August 20, 2009

GTUG Campout - 3 Day Hackstravaganza

The Silicon Valley Google Technology User Group (GTUG) held the first GTUG Campout, a 46 hour hackathon, over the weekend of August 7-9. Nearly 200 developers, designers, and business people came to build working applications using Google Technology, focusing largely on the Google Wave API.

The event was intense, spanning 3 days. In that time, attendees had to pitch ideas, form teams, and code like heck to have a working prototype to demo by Sunday evening.

Friday evening, we had over 50 pitches. Afterwards, people had a chance to mingle and find teams that they wanted to work with. Groups whiteboarded and discussed their ideas, then started working hard. Over 30 coders were still working past 2:00 am Saturday morning.


Sunday night we had 32 presentations of working applications followed by wooden nickel style voting to determine the winner. The crowd chose Videowave, a Wave gadget that allows synchronized viewing of videos from YouTube. They were awarded 1 pass to Google I/O '10, 2 G1 phones, and lunch with members of the Wave team.

Screenshot of Videowave in action

The list of winners:
  • 1st place: Videowave, by Solomon Wu, Aaron Tong, Nelson To. (their blog)
  • 2nd place: H3LP, by Jen McCabe, Steve Okay, Stig Hackvan, Andrey Petrov
    • Android app and mobile web app for emergency medical situations. If launched, app locates you and notify authorities and emergency contacts.
    • Mobile web vers: al3rter.appspot.com
  • 3rd place (3 way tie)
    • PoppyWave, by Hitesh Parashar, Van Riper, Kewaljit, David Elliston, Dave Lyman, Prathap Nimal, Dave Neubaur, Toby Morning, Perrine Crampton
      • Wave-Email Gateway that lets non-Wave users to participate in Wave.
      • Robot: poppywave@appspot.com
    • BeerTime Bot, by Jason Katzer, Aaditiya Bhatia, Joe Mulvaney
      • Measures hostility level in a Wave. If too high, hijacks thread and geolocates participants and suggests nearby drinking establishment. Robot and gadget components.
      • Robot: bartimebot@appspot.com, Gadget XML
      • Open sourced code: beertime, meetuptime
    • Cutebox, by Audrey Roy
Congratulations to all the winners and other attendees who worked so hard! Thanks also to the Googlers who helped out and answered questions, and our volunteers, especially those that helped with videos and photos.

A fun slideshow of the event:



The Silicon Valley Google Technology User Group is one of the first GTUGs around the world. Today around 70 GTUGs exist worldwide. Information about starting a GTUG in your area can be found at http://www.gtugs.org. The first GTUG Campout was a great success and we are looking forward to doing the event next year, and hope other GTUGs will host GTUG Campouts in their neighborhoods.

Update: Video and some images courtesy of Shirley Lin of WooMeOver.

The Fall Collection on Google Code University

Back-to-School usually means preparing new courses and topics. Educators as well as students are looking for exciting and fresh content. We are happy to announce that we are able to share some new additions to Google Code University's repository of CS course materials just in time for the fall semester. As always, all of these course materials are Creative Commons licensed and can be reused and adapted to curricula at universities everywhere:
Please also check out our CS Resources page for updates on useful training materials.

But that's not all! We want to encourage educators to contribute their great content to Google Code University. By implementing a submission form we hope to make the process easy and convenient. Just follow the big blue button on the homepage and tell us about your materials. We look forward to hearing from you!

Aza Raskin: Conversational Computing (Ubiquity & Jetpack)

Aza Raskin delivered the eighth Web Exponents tech talk at Google last week. Aza is head of user experience at Mozilla Labs. He's an entrepreneur and Renaissance man, as evidenced by the breadth of topics in his presentation.



What I like about Aza is that he's a user advocate - sharing our frustrations over the complexities and hurdles of interacting with computers. It's not that applications lack functionality. Aza points out that "90% of the feature requests for features in [Microsoft] Word are in fact for features that are already in Word." The problem is that humans can't interact with, speak with, computer applications using a familiar language.

Ubiquity is one of the projects from Mozilla Labs that bridges this digital divide. Ubiquity is a Firefox add-on that allows users to complete tasks using a more intuitive language. One example Aza shows is highlighting part of a web page and typing "translate this to Russian". Ubiquity acts on the user's request by replacing the text in the web page with the Russian translation. Another example is typing an address in a Yahoo! Mail message, typing "map this", and having Ubiquity embed the desired Google map inside the email.

Aza calls this you-centric computing - allowing us to interact by talking about what we want to do, rather than forcing us to think about how to do it. Ubiquity achieves this, moving us from a web of nouns to a web of verbs. The point, according to Aza, is "perhaps by adding language, by making things hackable, we go from interfaces which work to our failabilities and our frailities, and instead are a little bit more human and hence a little bit more humane."

Jetpack extends Ubiquity's theme of making the Web hackable. Aza describes it as "an incredibly fast prototyping environment for changing the Web to make the Web yours. Sort of like taking the idea of Greasemonkey and mashing it up with extensions and giving it all steroids." Ubiquity and Jetpack allow each of us to make the Web our very own by modifying it to work the way we want.

Empowering users to customize the Web and more easily complete tasks moves us from a feeling of helplessness to a feeling of being in control. This is an important point and reminds me of Matt Mullenweg's talk at Velocity about slow web sites (my personal bent). There Matt says, "...when an interface is faster, you feel good. And ultimately what that comes down to is you feel in control." Empowering users is a common goal, and yet today's web applications still contain many hurdles (complexity, poor interaction language, slowness) that need to be addressed to make users feel in control and ultimately happy. Thanks to Aza and the folks at Mozilla Labs, we're moving closer to the you-centric Web each of us wants.

Wednesday, August 19, 2009

Towards a programmable web: PubSubHubbub for Google Alerts

Why shouldn't the web itself be programmable? A programmable web enables one application to be extended by another to create new applications that people haven't imagined before. This goes beyond mash-ups, which primarily combine data sources together into new views. A programmable web is reactive and relies on Web Hooks for event-driven notification, syncing, chaining, modification, and extension.

One simple example of programming the web itself is the post commit-hook on Project Hosting, which lets developers call their own web service every time someone commits to their repository. An advanced example is the Wave Robots API, which gives developers the power to enhance and modify the behavior of Wave in new ways that no-one has envisioned. The magic of this programmable approach is that these services come to *your* webapp whenever something requires attention; there's no need to poll for events or data that you're interested in.

In keeping with this goal of programmability, over the past few weeks we've enabled the PubSubHubbub protocol for many Google services, including FeedBurner, Reader shared items, and Blogger. This protocol provides web-hook notifications when Atom and RSS feeds are updated, delivering web applications near-real-time information about what's new or changed.

Today we're happy to announce that we have gone a step further and added PubSubHubbub support to Google Alerts. This gives developers the means to write web applications that process newly relevant search results as they become available. Think of it as an AJAX search API that tells *you* when it finds new results. Acting upon these notifications your app could update your website, email friends, send an SMS-- the possibilities are endless.

Like the huge number of Maps mash-ups out there, we hope to see a whole new class of applications built on top of these notifications. So give the protocol a try and tell us what you've built in our Google Group!

Monday, August 17, 2009

Google Developer Days 2009: New Locations!

After a successful set of Google Developer Days in Asia and Brazil this past June, Google Developer Days 2009, a set of one-day developer events, are returning to Eastern Europe and Russia this fall.

We'll host Google Developer Day in these locations:
  • Prague, Czech Republic -- November 6
  • Moscow, Russia -- November 10
At Google Developer Day, attendees learn about Google developer products from the engineering teams who built them. These events are an opportunity for developers with strong coding experience to delve deeper into our APIs, developer tools and applications. There is also plenty of time to interact among the developer community and with Googlers themselves at "office hours," during which developers can bring their own snippets of code or specific product questions to the Google engineers behind the product.

Save the dates as the official websites and registration for both events will be available soon. Hope to see you there.

Friday, August 14, 2009

Google Code Jam Returns!

Given a 49x49 grid of numbers, can you place mines in the cells in such a way that each number represents the number of mines in its 3x3 sub-grid (the cell itself and its 8 immediate neighbors)? Find the maximum number of mines that could end up in the middle row of the grid.

Intrigued? Think you can solve it with a clever algorithm? Here at Google, we know how thrilling it can be to encounter a challenge and then overcome it by coding up a creative solution. Since 2003, we've been privileged to share that experience with a global community of computer programmers through our annual programming competition, Google Code Jam.

We're excited to announce Google Code Jam 2009, powered by Google App Engine. Join the fun and compete in several 2½-hour online rounds, attacking three to four difficult algorithmic problems during each round. You may use your favorite programming languages and tools to code up a solution. When ready, run your solution against our fiendish test data. The algorithm needs to be right, and it needs to be efficient: when N=10000, O(N3) won't cut it!

If you're up to the challenge, visit the Google Code Jam site to register and read the rules. Most importantly, you can practice on the problems from last year's contest, so you are in shape when the qualification round starts on September 2. You could be one of the top 25 competitors who will be flown to our Mountain View headquarters to match wits for the $5,000 first prize, and the title of Code Jam champion!

P.S. Think you can solve our "Mine Layer" problem? Try it out on the Code Jam website!

Wednesday, August 12, 2009

iGoogle adds support for OpenSocial

Developers using the OpenSocial API can now reach tens of millions of iGoogle users! As of this week, iGoogle now supports OpenSocial in both the US and Australia, with the plan to roll it out to more users soon. In general, we think "social is better" when it comes to the web - activities such as reading the news, doing a crossword puzzle, sharing a todo list, or watching a video are all better when done with a friend. These are all things that iGoogle users love to do, so making them social on iGoogle was the next logical next step.

If you're interested in getting started writing social gadgets for iGoogle, check out the full announcement on the iGoogle developer blog.

Tuesday, July 28, 2009

Google Apps + OpenID = identity hub for SaaS

We're happy to announce that the Google OpenID Federated Login API has been extended to Google Apps accounts used by businesses, schools, and other organizations. Individuals in these organizations can now sign in to third party websites using their Google Apps account, without sharing their credentials with third parties.

In addition, Google Apps can now become an identity hub for multiple SaaS providers, simplifying identity management for organizations. For example, when integrated with partner solutions such as PingConnect from Ping Identity, the Google Open ID Federated Login API enables a single Google Apps login to help provide secure access to services like Salesforce.com, SuccessFactors, and WebEX — as well as B2B partners, internal applications, and of course consumer web sites. See Ping Identity's post to learn more about their implementation and view the demo.


Another early adopter is Manymoon.com, a SaaS project management vendor that implemented the Google Open ID Federated Login API directly to make it easier for any organization using Google Apps to sign up for and deploy Manymoon to their users:

In the Manymoon Login page, the user chooses to log in using a Google Apps account

The user types in his Google Apps email address. The user never gives away his Google Apps Account password to Manymoon.

The user is redirected to the Google Apps domain to approve sharing information with Manymoon.

Once approved, the user is redirected to Manymoon and is signed in and ready to work with selected accounts.

If you prefer an out-of-the-box solution, we have been working with JanRain, a provider of OpenID solutions that already supports the new API as part of their RPX product.


Supporting the API for Google Apps accounts is exciting news for the OpenID community, as it adds numerous new Identity Provider (IDP) domains and increases the OpenID end user base by millions. In order to allow websites to easily become Relying Parties for these many new IDPs and users, we defined a new discovery protocol. The protocol is designed to allow Relying Parties to identify that a given domain is hosted on Google Apps and to help provide secure access its OpenID Provider End Point. The current proposal is an interim solution, and we are participating in several standardization organizations, such as OASIS and the OpenID Foundation, to generate a next-generation standard. Since the current protocol proposal is not supported by the standard OpenID libraries, we provided an implementation of the Relying Party pieces at the Open Source project, step2.googlecode.com. Google is also offering a set of resources addressing the issues of designing a scalable Federated Login User Interface. You are welcome to visit the User Experience summary for Federated Login Google Sites page, where you can find links to demos, mocks, and usability research data.

You can find more details in our API and Discovery documentation, or join the discussions in the Google Federated Login API Group, where you can ask any question and get answers from other Identity Providers, Relying Parties and Google engineers.

The OpenID Federated Login Service is available for all Google Apps editions. However, it is disabled by default for the Premier and Education editions, and it requires the domain administrator to manually enable it from the Control Panel. We've enabled the service for our employees here at Google, and domain administrators — you can also enable it for your domain.

Thursday, July 23, 2009

Presentations from Google Developer Days in Asia are now live

Videos, presentations, and photos from our Google Developer Days in China and Japan are now live. China's event kicked off our 2009 GDDs in Beijing on June 5 and Japan's GDD was a few days later on June 9.
At each event, attendees had the opportunity to learn about products such as Android, Chrome, OpenSocial, and App Engine and interacted with Google developers during office hours. Developers even got a sneak peak of Google Wave!

Tuesday, July 21, 2009

Above and Beyond the Call of Duty, with Permission

Project Hosting on Google Code is a beehive of activity, with many large and active projects and even more that aspire to that level. Now it will be a little easier for project members to sort out who should be doing what by documenting each member's duties in plain language on the new People sub-tab. Here's an example from the zscreen project:


Duties describe what each member is expected to be doing. Project owners can grant permissions that control what each member is allowed to do. While permissions can be fairly fine-grained, it's usually best to grant broad permissions, and then trust your project members to do their duties or go above and beyond them when the situation calls for it.

In open source software development, anyone can access the source code of the project, and it's important to allow anyone to access issues and project documentation. But in some projects, there is a need to restrict some information to a subset of project members for a limited time. For example, you might want to quickly patch a security hole before publicizing the details of how to exploit it. Project members can now place restrictions on individual issues to control who can view, update, or comment on them.
Here's some of what our new permission system allows project owners to do when they need to:
  • Acknowledge the role of a contributing user without giving them any additional permissions
  • Trust a contributor to update issues or wiki pages without letting them modify source code
  • Restrict access to specific issues to just committers, or to a specific subset of members
  • Restrict comments on specific issues or wiki pages when another feedback channel should be used instead
  • Automatically set access restrictions based on issue labels
Getting started is easy, just click the People sub-tab and start to document what you and your project team are supposed to be doing. If you need to mess with permissions, see our permission system documentation for all the details.

If you'd like to meet some of the people behind Google Code, please drop by the Google booth at OSCON 2009 this week.