Saturday, June 18, 2011

[Gd] Getting Started with the Tasks API on Google App Engine

| More

Google Apps Developer Blog: Getting Started with the Tasks API on Google App Engine

Last month, we launched the Google Tasks API, which received a very warm welcome in the developer community. Google Tasks stores tasks that users enter via Gmail, their mobile device, calendar, or iGoogle homepage. The Google Tasks API provides developers with a powerful set of API endpoints for searching, reading, and updating Google Tasks content and metadata.

To help all of you get started using the Google Tasks API, we wrote a new hands-on tutorial: Getting Started with the Tasks API on Google App Engine. In this tutorial, you will learn how to:
  • Create a simple App Engine app using the Google APIs Client Library.
  • Provide Google Tasks users a mechanism to authorize your app to access their tasks.
  • Make authorized requests to the Tasks API.

By the end of the tutorial, you’ll have an App Engine app that creates a stylized list of tasks for a specific user delivered from the Tasks API:

Check out the tutorial and ask any questions you have in the Google Tasks API forum.

Johan Euphrosine profile | twitter | events

Johan joined Google in 2011 as a Developer Programs Engineer based in Zurich. He is currently focusing on App Engine and Google Apps APIs. Before Google, Johan was providing development services as a Freelancer around FLOSS.

Want to weigh in on this topic? Discuss on Buzz

[Gd] Gmail and Document Services now available in Apps Script

| More

Google Apps Developer Blog: Gmail and Document Services now available in Apps Script

If you’ve used Google Apps Script before, you’ll know that we have deep integration with many Google Apps & APIs. You can access your Calendar and Contacts, create Google Sites, send email, and lots more. But two integrations were noticeably missing: the Google Docs word processor, and Gmail. A few weeks ago, at Google IO, we announced new Apps Script APIs for these two great products.

GmailApp - read, label and send emails

The new GmailApp should be instantly familiar if you’re used to using Gmail. You have access to labels, threads, and messages, and you can do all the things you expect: change labels, add and remove stars, mark things as important or trash or spam. You can also use the method to do any search you can do in Gmail itself. This is the first full fidelity API to Gmail, and we’re excited to see what you all will do with it.

To make sure your Gmail account remains private and secure, we are extra cautious about any script that uses GmailApp. Any time you change the code for a script that accesses Gmail, we will require you to reauthorize the script to run. Keep that in mind when editing a script that runs on a trigger - if you don’t reauthorize it, it will fail the next time the trigger tries to run it.

DocumentApp - create and edit Docs

The new DocumentApp lets you create new documents or open existing ones by id. The id of a document is always in the URL you see when visiting it, and document ids are consistent between DocumentApp and the existing DocsList service, so you can use DocsList.find() to search for a document, and then get its id from File.getId().

Once you have a document, you can access all of its individual elements. You can do search and replace (great for mail merge!), change styles or text, add or remove tables and lists, and much more. And when you are done, you can call Document.saveAndClose(), which makes sure all of your changes to the document get saved. If you don’t call it, we’ll do it for you at the end of the script, but it can be useful to call it yourself if you’d like to do something with the document after making your edits.

GmailApp and DocumentApp are available to all Apps Script users right now. Now the only question is, what are you going to build with them?

Posted by Corey Goldfeder, Google Apps Script Team

Want to weigh in on this topic? Discuss on Buzz


[Gd] Dev Channel Update

| More

Google Chrome Releases: Dev Channel Update

The Dev channel has been updated to 14.0.794.0 for Windows, Mac, Linux and Chrome Frame platforms

  • Updated V8 -
  • When installing items from the chrome webstore, we now always prompt with a native confirmation dialog.
  • Fix for failing navigation with chrome://newtab showing.
  • Fixed “invalid server certificate” errors for some secure websites whose CRLs or OCSP responses are signed by untrusted root CAs.
  • Added a makeshift multiprofile button.

  • DNSSEC authenticated HTTPS supported.
  • Intermittent connectivity issues with broken SSLv3 servers fixed.
Known Issues
  • When reloading a page reached via a HTTP POST operation (such as the confirmation page following a form submit during an online transaction), the whole browser will crash (Issue: 86119)
  • volume controls are not functioning on keyboard (issue: 84961)
More details about additional changes are available in the svn log of all revisions.

You can find out about getting on the Dev channel here:

If you find new issues, please let us know by filing a bug at

Karen Grunberg
Google Chrome

[Gd] Beta Channel Update

| More

Google Chrome Releases: Beta Channel Update

The Beta channel has been updated to 13.0.782.24 for Windows, Mac, Linux, and Chrome Frame. For an overview of the features shipping in Chrome 13, check out the Google Chrome Blog.

The full list of changes (spanning 5000 revisions) is available in the SVN revision log.  Interested in switching to the Beta channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

[Gd] Dev Channel Update

| More

Google Chrome Releases: Dev Channel Update

The Dev channel has been updated to 13.0.782.24 for Windows, Mac, Linux, and Chrome Frame.  This release contains a number of stability fixes and the Flash update.

The full list of changes is available in the SVN revision log.  Interested in switching to the Dev channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

[Gd] Chrome OS Beta Channel Update

| More

Google Chrome Releases: Chrome OS Beta Channel Update

The Chrome OS Beta channel has been updated to R12 release 0.12.433.114 including Chrome 12.0.742.105. The release includes below change:

  • Update Flash plugin to
If you find new issues, please let us know by visiting our help site or filing a bug. You can submit feedback using ‘Report an issue’ under the wrench menu.

Josafat Garcia
Google Chrome

[Gd] Stable, Beta Channel Updates

| More

Google Chrome Releases: Stable, Beta Channel Updates

The Chrome Stable and Beta channels have been updated to 12.0.742.100 for all platforms.  This release contains an updated version of Adobe Flash.  Interested in switching to the Beta or Stable channels?  Find out how.  If you find a new issue, please let us know by filing a bug.

Jason Kersey
Google Chrome

[Gd] Dev Channel Update

| More

Google Chrome Releases: Dev Channel Update

The Dev channel has been updated to 13.0.782.20 for Windows, Mac, Linux, and Chrome Frame.  This release contains a number of stability fixes and we put hardware accelerated Canvas 2D back behind a flag.

The full list of changes is available in the SVN revision log.  Interested in switching to the Dev channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

[Gd] Dev Channel Update

| More

Google Chrome Releases: Dev Channel Update

The Dev channel has been updated to 13.0.782.14 for Windows and Chrome Frame, and 13.0.782.15 for Mac and Linux.  This release contains a number of stability fixes.  The full list of changes is available in the SVN revision log.  Interested in switching to the Dev channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

[Gd] More Layout Options

| More

Google Custom Search: More Layout Options

Ever since the launch of Custom Search, users have asked us to provide more flexible options to integrate search into their websites. Today, we’re launching a set of new layout options for your Custom Search experience. If you go to the Look and feel tab, you’ll see a set of new layouts that you can choose from, as shown in the screenshot below.

The Two page and Results only layouts give you more flexibility than the Two column layout, which still requires the search box and results to reside on the same web page.

All of the above layouts are powered by the Custom Search Element. The new Google-hosted layout also embeds the Element on a Google-hosted page. This is because the Element offers greater flexibility and interactivity, font control, better customization using themes and style sheets, out-of-box metadata support for thumbnails and actions, support for client-side control over results presentation, and a superior mobile experience for smart phones and tablets.

There are a couple of additional reasons why all the new layouts use the Element (and we’ll continue to deliver new functionality this way too). We want all Custom Search users to be able to easily turn on upcoming new features on for their site visitors. Consolidating to the Element also allows us deliver features faster.

Along with these new layouts, we are also officially phasing out results presentation via the iframe. If you host results in an iframe today, you will see this option marked deprecated in the Look and Feel tab in the control panel. We encourage you to migrate as soon as possible to one of the Element-based layouts. We plan to replace iframe results soon to use embedded Elements. This will happen first with all existing Google-hosted results pages, which currently embed iframes.

So stay tuned -- there are exciting new features coming to Custom Search. And as always, we welcome your feedback.

Posted by: Ying Huang and Liang Ch'ng, Software Engineers

[Gd] Transferring ownership of your Site Search engine

| More

Google Custom Search: Transferring ownership of your Site Search engine

Many of you have requested a simpler process for transferring Google Site Search ownership to a different user. For instance, you may have created, developed and customized your website's search experience under your Google account, but want the long-term management of the search engine to be performed by someone else. In the past, you would have been required to manually export the configuration, import it into a new Site Search instance and then cancel the old instance.

Now, you can very easily transfer the ownership of a Site Search engine to a new user by simply specifying a different Google account email address in the Business Settings tab in the control panel.

Once you’ve provided the appropriate account information for the new administrator account, the following things happen:
  • A new Site Search engine is created with the identical configuration as your current Site Search engine.
  • The new Site Search engine is owned and can be administered by the new account owner.
  • Any unused query quota is transferred to the new Site Search engine.
  • The new Site Search engine will show the transfer history in the Business settings in the control panel
  • You can still continue to use the old engine, but ads may be displayed alongside search results and XML access is disabled.
Please note that either you or the new admin will also need to update the Search box code to represent the new Site Search engine ID. You can find this ID in the Basics tab in the control panel, marked “Search Engine unique ID”.

We hope this process makes it easier for you to transfer administration capabilities to the appropriate account owners in your organization. For more details, please refer to the articles on transferring ownership, and recommended post-transfer actions in the help center.

As always, we appreciate your feedback in the user forum.

Posted by: Yong Zhu, Software engineer

Friday, June 17, 2011

[Gd] Fridaygram

| More

The official Google Code blog: Fridaygram

By Scott Knaster, Google Code Blog Editor

When you search with Google, you use words to create your query. That basic fact changed earlier this week when we launched Search by Image. This new feature is well-described by its name: you just hand Google an image, and it searches for similar images on the web. You can try it out by going to Google Image Search and dragging one of the sample images into the search box. This is handy for figuring out the names of things, such as buildings, paintings, and logos, or for finding images that are similar to one you already have.

Search by image is a great example of magical technology that helps people learn or do their jobs. Here’s one that improves your health: spray-on skin. For people with burns and other skin damage, ReCell is a technology that allows doctors to take a sample of healthy skin cells, culture them to grow more, and then literally spray the cells onto the injury. This process speeds healing and reduces the risk of complications. Although it sounds like science fiction, it’s already being used in much of the world.

Finally, you probably saw our playable guitar doodle in honor of Les Paul’s birthday. And you might have seen that the guitar used a lot of cool web technology, including HTML5 Canvas, CSS, JavaScript, Flash, Google Font API,, and Google App Engine. But you might not have known that people recorded themselves playing everything from Lady Gaga to Led Zeppelin. Enjoy!

Fridaygram posts are lighter than our usual fare. They're designed for your Friday afternoon and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds.


Thursday, June 16, 2011

[Gd] GTAC 2011 Keynotes

| More

Google Testing Blog: GTAC 2011 Keynotes

By James Whittaker

I am pleased to confirm 3 of our keynote speakers for GTAC 2011 at the Computer History Museum in Mountain View CA.

Google's own Alberto Savoia, aka Testivus.

Steve McConnell the best selling author of Code Complete and CEO of Construx Software.

Award winning speaker ("the Jon Stewart of Software Security") Hugh Thompson.

This is the start of an incredible lineup. Stay tuned for updates concerning their talks and continue to nominate additional speakers and keynotes. We're not done yet and we're taking nominations through mid July.

In addition to the keynotes, we're going to be giving updates on How Google Tests Software from teams across the company including Android, Chrome, Gmail, You Tube and many more.

[Gd] Testing at the speed and scale of Google

| More

Google Testing Blog: Testing at the speed and scale of Google

(Cross-posted from the Google Engineering Tools blog)

By Pooja Gupta, Mark Ivey and John Penix

Continuous integration systems play a crucial role in keeping software working while it is being developed. The basic steps most continuous integration systems follow are:

1. Get the latest copy of the code.
2. Run all tests.
3. Report results.
4. Repeat 1-3.

This works great while the codebase is small, code flux is reasonable and tests are fast. As a codebase grows over time, the effectiveness of such a system decreases. As more code is added, each clean run takes much longer and more changes gets crammed into a single run. If something breaks, finding and backing out the bad change is a tedious and error prone task for development teams.

Software development at Google is big and fast. The code base receives 20+ code changes per minute and 50% of the files change every month! Each product is developed and released from ‘head’ relying on automated tests verifying the product behavior. Release frequency varies from multiple times per day to once every few weeks, depending on the product team.

With such a huge, fast-moving codebase, it is possible for teams to get stuck spending a lot of time just keeping their build ‘green’. A continuous integration system should help by providing the exact change at which a test started failing, instead of a range of suspect changes or doing a lengthy binary-search for the offending change. To find the exact change that broke a test, we could run every test at every change, but that would be very expensive.

To solve this problem, we built a continuous integration system that uses dependency analysis to determine all the tests a change transitively affects and then runs only those tests for every change. The system is built on top of Google’s cloud computing infrastructure enabling many builds to be executed concurrently, allowing the system to run affected tests as soon as a change is submitted.

Here is an example where our system can provide faster and more precise feedback than a traditional continuous build. In this scenario, there are two tests and three changes that affect these tests. The gmail_server_tests are broken by the second change, however a typical continuous integration system will only be able to tell that either change #2 or change #3 caused this test to fail. By using concurrent builds, we can launch tests without waiting for the current build/test cycle to finish. Dependency analysis limits the number of tests executed for each change, so that in this example, the total number of test executions is the same as before.

Let’s look deeper into how we perform the dependency analysis.

We maintain an in-memory graph of coarse-grained dependencies between various tests and build rules across the entire codebase. This graph, several GBs in-memory, is kept up-to-date with each change that gets checked in. This allows us to transitively determine all tests that depend on the code modified in a given change and hence need to be re-run to know the current state of the build. Let’s walk through an example.

Consider two sample projects, each containing a different set of tests: 

where the build dependency graph looks like this:

We will see how two isolated code changes, at different depths of the dependency tree, are analyzed to determine affected tests, that is the minimal set of tests that needs to be run to ensure that both Gmail and Buzz projects are “green”.

Case1: Change in common library

For first scenario, consider a change that modifies files in common_collections_util.

As soon as this change is submitted, we start a breadth-first search to find all tests that depend on it.

Once all the direct dependencies are found, continue BFS to collect all transitive dependencies till we reach all the leaf nodes.

When done, we have all the tests that need to be run, and can calculate the projects that will need to update their overall status based on results from these tests.

Case2: Change in a dependent project:

When a change modifying files in youtube_client is submitted.

We perform the same analysis to conclude that only buzz_client_tests is affected and status of Buzz project needs to be updated:

The example above illustrates how we optimize the number of tests run per change without sacrificing the accuracy of end results for a project. A lesser number of tests run per change allows us to run all affected tests for every change that gets checked in, making it easier for a developer to detect and deal with an offending change.

Use of smart tools and cloud computing infrastructure in the continuous integration system makes it fast and reliable. While we are constantly working on making improvements to this system, thousands of Google projects are already using it to launch-and-iterate quickly and hence making faster user-visible progress.


Wednesday, June 15, 2011

[Gd] Working with Chrome's file browser handler

| More

The official Google Code blog: Working with Chrome's file browser handler

By Jeremy Glassenberg, Platform Manager, Box

This post is part of Who's at Google I/O, a series of guest blog posts written by developers who appeared in the Developer Sandbox at Google I/O 2011.

During the day 2 keynote of Google I/O, I was excited to see Box's integration with the Chromebook's file browser handler getting demoed on the big stage. The integration makes local files and files you encounter on the web easily accessible to cloud services inside Chrome OS.

Chrome's file browser handler utilizes the new HTML5 file system API, designed to enable web applications to interact with local files. This API lets web applications read files, edit files, and create new files within a designated local space on a user's machine. This includes creating binary files for application data, and in Box's case, accessing user-created files to let people easily move their content to the cloud.

As mentioned during the Google I/O keynote, the integration between Box and the Chrome OS file browser handler only took our team a weekend to build. We were able to build the integration quickly because of the simplicity of both Chrome's file browser platform and Box's API, both of which were designed to make content integrations like this easy for developers to implement.

In this case, the Quick Importer tool from the Box API made the entire development process just a few steps:

1. We created a Chrome extension manifest to work with Box.
"name”: "Box Uploader",
"file_browser_handlers": [
"id”: "upload",
"default_title": "Save to Gallery", // What the button will display
"file_filters": [
2. In the Chrome manifest, we specified the relevant file types to which the service applies. In our case, that's most file types, as seen below. Specialized services may just want certain types, such as images for Picasa.
"file_browser_handlers": [
"id": "upload",
"default_title": "Save to Box",
"file_filters": [
3. With some JavaScript code connecting to the file browser handler, we set up a way to upload files through Box’s Quick Importer.
var fm = new FileManager();
fm.uploadServer = '<...>';

if (bgPage && bgPage.filesToUpload.length) {
var entry;
while(entry = bgPage.filesToUpload.pop()) {
entry.file(function(file) {
That's actually all there was to the integration.

Once the file is uploaded to the Box API's Quick Import URL, our page is displayed to authenticate the user, to let the user select a Box folder to save the file, and then to upload the file.

While such an integration can be customized through our API, our Quick Import provided an easy and fast means to connect the platforms. Developers can customize the integration by using direct calls to our API, and take advantage of additional features such as automatic sharing, if they prefer.

Thanks to the simplicity of Chrome's file browser handler and some extra tools in the Box API, our development time was very short (just a weekend), but it could have actually been even quicker. We had a couple of unusual complications that weekend:

1. The Google Chrome team was still experimenting with the file browser, so development from both sides was happening in parallel, which can be a bit tricky. Now that the file browser has been thoroughly tested, you should have an even easier time.

2. I took my girlfriend out a couple times, since her final exams were coming up soon afterward. I love you, Hayley!

Once the content has been uploaded to Box, it’s accessible to many Google services, including Gmail, Google Docs, and Google Calendar, through additional integrations on our site with Google Apps. Ah, the wonders of open platforms.

Jeremy Glassenberg is the Platform Manager at Box, where he oversees partner integrations, API and platform product management, and Box’s community of several thousand developers. In addition to managing Box's developer platform, Jeremy is a part-time blogger at ProgrammableWeb, and a contributor to several open-source projects.

Posted by Scott Knaster, Editor

[Gd] Tracking performance with HTTP Archive

| More

The official Google Code blog: Tracking performance with HTTP Archive

By Arvind Jain, Make the Web Faster Team

At Google, we put a lot of effort into making the web faster. To understand the impact of our work, we need to track the speed of the web over time. HTTP Archive allows us to do that.

HTTP Archive generates regular reports illustrating trends such as page size and Page Speed score of the top pages on the web. Interested users can download the raw dataset for free, modify the source code to perform their own analyses, and unearth valuable trends.

HTTP Archive crawls the world’s top 18,000 URLs, with a plan to increase that number to a million or more in the coming months.

Google engineers built HTTP Archive as an open source service. We are now transitioning the ownership and maintenance of it to the Internet Archive. Google is proud to support the continued development of HTTP Archive and to help create a rich repository of data that developers can use to conduct performance research.

Arvind Jain founded and leads the Make the Web Faster initiative at Google. As part of that initiative, Arvind also started the Instant Pages effort, just announced yesterday.

Posted by Scott Knaster, Editor

[Gd] Webinar: Implementing the +1 Button

| More

Official Google Webmaster Central Blog: Webinar: Implementing the +1 Button

Webmaster Level: All

A few weeks ago, we launched the +1 button for your site, allowing visitors to recommend your content on Google search directly from your site. As people see recommendations from their friends and contacts beneath your search results, you could see more, better qualified traffic from Google.

But how do you make sure this experience is user friendly? Where should you position the +1 button? How do you make sure the correct URL is getting +1’d?

On Tuesday, June 21 at 3pm ET, please join Timothy Jordan, Google Developer Advocate, to learn about how to best implement the +1 button on your site. He’ll be talking through the technical implementation details as well as best practices to ensure the button has maximum impact. During the webinar, we’ll review the topics below:
  • Getting started
  • Best practices
  • Advanced options
  • Measurement
  • And, we’ll save time for Q&A
If you would like to attend, please register here. To download the code for your site, visit our +1 button tool on Google Webmaster Central.

Posted by Kari Wilson, Product Marketing Manager

[Gd] Announcing Instant Pages

| More

Official Google Webmaster Central Blog: Announcing Instant Pages

Webmaster level: All

Earlier today we announced Instant Pages, a new feature to help users get to their desired search results even faster--in some cases even instantly! The Instant Pages feature is enabled by prerendering technology that we are building into Chrome and then is intelligently triggered by web search when we're very confident about which result is the best answer for the user's search.

This prerendering technology is currently in the Chrome Dev Channel and will be going to Beta later this week.

You can see Instant Pages in action in this video:

At Google we're obsessed with speed. We've seen time and time again how an increase in apparent speed leads to a direct increase in user happiness and engagement. Instant Pages helps visitors arrive at your site faster. When we trigger Instant Pages for your site, users can start interacting with your site almost immediately, without having to wait for text and images to load. We'll only trigger Instant Pages when we have very high confidence that your site is the exact result users are looking for. Search traffic will be measured in Webmaster Tools just like before this feature, with only results the user visited counted. We'll take the time this summer before the feature launches in stable versions of Chrome to collect your feedback.

The vast majority of sites will automatically work correctly when prerendered in Chrome. Check out the prerendering post on the Chromium blog if you want to learn more about how prerendering works in Chrome or how you can detect that your site is being prerendered.

Written by Ziga Mahkovec, Software Engineer

Tuesday, June 14, 2011

[Gd] Apps Marketplace Staff Picks - June summary

| More

Google Apps Developer Blog: Apps Marketplace Staff Picks - June summary

Last month we announced Google Apps Marketplace Staff Picks, an effort to highlight personal picks from the Marketplace team that have a combination of great functionality and ease of use due to their deep integrations with Google Apps.

Staff Picks are announced on the @GoogleAtWork Twitter account using #mpstaffpick, promoted on the Marketplace and summarized on the Enterprise Blog. We’ll also summarize the recent Staff Picks on this blog, with a stronger developer focus.

Recent Staff Picks are integrated with Gmail, Calendar, Contacts, Docs, Talk, Apps Script and more:
  • Mavenlink (slideshow) - a project management solution for professional services delivery. Integrates with Calendar, Contacts and Docs plus provides a lot of great getting started information for new users.
  • Solve360 (slideshow) - a CRM that integrates with Google Apps to help manage client projects. Provides a full-featured Gmail Contextual Gadget. Contacts sync is 2-way, and they also provide Google Apps Script code that allows customers to use Spreadsheets forms for lead generation, automatically populating submissions into Solve360.
  • Smartsheet (slideshow) - a project management and collaboration tool based on a spreadsheet concept that makes it easy to keep track of tasks and deadlines. Great Gmail, Calendar, Docs and Contacts integration, allowing users to easily import data from and export data to Google Spreadsheets and collaborate with users in their contact lists. The Gmail Contextual Gadget allows to you receive alerts upon sheet updates, and automatically make changes from within your e-mail.
  • GQueues (slideshow) - a task management app that lets you share lists, assign tasks, get reminders and stay organized. Integrates with Gmail, Calendar, Contacts, Google Talk, and provides great gadgets that can be used in Calendar, Gmail or iGoogle. They also have an offline-capable HTML5 mobile app, which the founder has blogged about recently on the Google Code Blog.

We hope that the deep and valuable integrations in these applications inspire you to develop additional integrations with Google Apps in your own applications.

For more information see the Staff Picks page on If you think your app should be considered for a future Staff Pick, fill out the Staff Pick nomination form.

Ryan Boyd profile | twitter | events

Ryan is a Developer Advocate on the Google Apps Marketplace team, helping businesses build applications integrated into Google Apps. Wearing both engineering and business development hats, you'll find Ryan writing code and helping businesses get to market with integrated features.

Want to weigh in on this topic? Discuss on Buzz