We had ~100 developers come and hang out with us at YouTube HQ. It was a full day, with talks ranging from best practices to the history of scaling up YouTube infrastructure and, of course, cookies, lunch and t-shirts. There were also some good discussions in our Office Hours lounge. If you're interested, the one-sheet Code Labs we had for working with the Data APIs in JSON and PHP are also available online.

Thanks to everyone for coming out, learning about the APIs, and sharing your feedback and questions with us. Special thanks goes to Slide, Qik, Animoto, Gaia Online, and Helio for speaking about their experiences working with our APIs and even walking through some code snippets.

As a bonus, here's a bunch of us (Jochen, Jeff, myself) with Steve Mesa, the top poster in our discussion forum :)

Code reviews are the rule at Google -- peer review reduces bugs, increases code quality, reduces maintenance cost, opens up team communication, and helps get the job done right the first time.

Like many open source developers, Google engineers used to rely on mail and textual diffs when doing code reviews. That made code reviews a drag. Mondrian, a web based code review tool, made the process much more efficient by presenting the diffs and comments right in our browser. Mondrian inspired the open source project Review Board, and led to Rietveld, and now the new code review tools are available on Google Code's Project Hosting.

Reviewing code in your project is simple: browse any source file or diff, double click on a source line to add comments, then publish your comments along with a general comment and score for the revision.

The Calendar team was the first to launch its Google Data API back in 2006, and in that proud tradition, we're excited to offer an additional way for developers to read from, and write to Google Calendar: the CalDAV protocol. (CalDAV — an extension of WebDAV — is an evolving, open standard for calendar synchronization.)

So far we've focused on Apple's iCal 3.0 as a first working example of 2-way Google Calendar sync over CalDAV.* But we're calling all current and prospective CalDAV developers to help us firm up the implementation, and make it play nice with other popular CalDAV-friendly clients.

For information on how Google Calendar data maps to the CalDAV protocol, please check out our CalDAV developer's guide. And of course, don't hesitate to hurl feedback in the general direction of our Google Group.

* Disclaimer: during this developer-focused release, and in light of known issues, we strongly suggest that you restrict Google Calendar <> iCal 3.0 synchronization to test accounts only.

For those of you in other parts of Europe and India, you might be interested in these other upcoming Google Developer Days. We haven't opened registration for them yet, but we wanted to give you a heads up they're coming:

Bangalore, India (Oct 11)

Milan, Italy (Oct 21)

Prague, Czech (Oct 24)

Moscow, Russia (Oct 28)

(Please note Google Developer Day Czech Republic is now on October 24th.)

We'll be there to discuss our APIs and developer tools, diving into topics around App Engine, OpenSocial, Android, and much more. There will also be ample time for mingling with fellow developers and Google engineers. We hope you can join us for these events.

While this may seem like a minor change, it reflects the continued evolution of our mission to support best practices in open source software development. As the open web increasingly relies on protocols and formats that reach beyond source code, we encourage authors to apply an explicit copyright license to the data, documentation, and related media that complements their work.

We get a lot of feedback on Google Code and one of the biggest requests have been for feeds (as you can see in issue 8, issue 131, or issue 190). Therefore, I'm happy to announce that we now have Atom feed available for you to track issues, downloads, Subversion changes, and Wiki updates.

For the SVN changes feed you can add '?path=/path/' to the end of the url to filter the changes by path -- for example, '?path=/trunk/' or '?path=/wiki/'. Simply substitute 'google-web-toolkit' for your project to see your feeds.

As always, if you have any feedback please do not hesitate to let us know.

Michael Marcus and Rui Ma, two recent graduates from a masters program at NYU, join us to discuss Gears on Rails, their open source framework that makes it easier than ever to take a Rails code-base offline.

Software engineers who work with huge code bases always wish searching thousands lines of code and navigating through the file and code structures was easier. They may use powerful IDEs for the local sources on their development workstations, but until recently they have been unable to efficiently browse huge amounts of the open source code in repositories and archives on the Internet. The latest Google Code Search updates add a few features that improve code browsing and searching. The first one is Code Outline which shows you the structure of code written Java, C, C++, C#, Python, JavaScript and Pascal. You can find it under a new "Outline" tab next to the existing "Files" tab.

The second feature we added allows you to click on include and import statements in Java, C, C++ and Python code and jump directly to the included file, if it is in the same package. In the case where the included file comes from a third-party library or, say, from Linux headers, a search is performed for the included file in the indexed code base.

But what if the include list is too large and you can't guess where a class or method is defined? To help we added two new search operators, class: and function: which allow you to restrict your regular expression to the names of classes and functions only. Together with the package: operator and new radio button "Search in ..." that restricts search to the files from the specified package, these are powerful ways to find exactly what you are looking for. Compare the results of searching for "Shell" in the whole code base with the results of searching for class:Shell inside SWT.

You can easily render 2D bar codes, known as QR Codes, with the Google Chart API, along with pie charts and bar graphs. If you haven't seen a QR Code before, you are looking at one on the right hand side (To see more, do an image search for "QR Code".)

QR Codes are a popular type of two-dimensional barcode. You can encode URLs, contact information, etc. into a black-and-white image like the one on the right. A QR-Code-enabled device can later scan the image and read back the original text. Learn more about QR Codes from Google Print Ads. If you don't have a reader Google also offers a QR Code decoder library: Zebra Crossing (ZXing).

This is how you can creating these with the Google Chart API:

Simply, there is a new chart type, qr, with attributes to tell the service what to produce:

cht=qrchl=<text>choe=<output>

<text> is text for the QR code. This must be url-encoded in UTF8. Note the space between hello and world is written as %20 in the following example.<output> optionally specifies how the text is encoded into bytes in the QR Code. If this is not specified the default of UTF-8 is used. Available options are: Shift_JIS, UTF-8, or ISO-8859-1.

An open protocol to allow secure API authentication in a simple and standard method from desktop and web applications.

And, now you can use the standard to access Google services. This is great, as you can write your applications to the one standard, and have it work across various back-ends.

There was some great news that Google, Yahoo!, and Adobe participated in. We have improved Flash indexing working with Adobe's Searchable SWF library, and some smart algorithms. We can now add URLs that are part of the SWF to the pipeline, and can fire off events to grab more data. This is another improved step (we could grok text in the SWF before) and we hope to see many more as we get better at indexing richer and more varied content on the Web.

Mrinal Wadhwa flex-ed his muscles to add Gears support to Flex applications via a nice simple library. If you are building Flex applications and want access to the growing Gears components, check it out.

Yesterday was a very Web "3D" day. We released Lively a 3D virtual experience that is the newest addition to Google Labs. It lets you create an avatar and rooms to hang out in. I also saw that Vivaty launched, and some are talking about how virtual worlds are hot in the Valley.

Lively has GTalk integration, and we just released Google talk for iPhone just in time for the new iPhone 3G launch at the end of the week. I will probably head down to one of the Apple Stores and upgrade myself!

Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format

It is probably best to take a peak at some code behind this. The first thing you need to do is define a message type, which can look like the following .proto file: