Saturday, August 18, 2012

[Gd] Fridaygram: welcoming women developers, camp for makers, killer cows

| More

Google Developers Blog: Fridaygram: welcoming women developers, camp for makers, killer cows

Author Photo
By Scott Knaster, Google Developers Blog Editor

Fumi Yamazaki is Google Developer Relations Lead in Japan. About a year ago, she noticed that few women developers were attending developer events, so she decided to do something about it. Fumi and several female developers organized GTUG Girls to foster a community of women developers in Japan.

GTUG Girls logo

Earlier today, Fumi posted about GTUG Girls on her blog. The post contains lots of great tips and tidbits about what has happened with GTUG Girls over the past year. Fumi’s post includes some of the group’s principles, such as teach each other, create something, and have fun. Most importantly the post offer tips on how to replicate the success of GTUG Girls in other countries. Go for it!

Summer vacation time in the Northern Hemisphere is winding down, but there’s still time left for some great activities, including another week of Maker Camp. Every day of Maker Camp brings a new project. Friday is field trip day, and today’s trip was to CERN, home of the Large Hadron Collider. If you’ve missed Maker Camp so far, visit +MAKE to see recorded hangouts and other cool stuff.

Finally, and speaking of catching up, spend some time reading the Cow Week posts over at Boing Boing. You will never look at dairy products the same way again.

Each week our Fridaygram presents cool things from Google and elsewhere that you might not have heard about. Some Fridaygram items aren't related to developer topics, but all of them are interesting to us nerds. Huge thanks to my wonderful cow-orkers Liz Markman, Van Riper, and Fumi Yamazaki for their help with this week’s post.

Friday, August 17, 2012

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 21.0.1180.81 for Mac, Linux, Windows and Chrome Frame

This build fixes the following issues:

  • Duplex Printing defaults to Yes, which prints extra pages even for a 1 page print out (Issue 138312).
  • Print preview takes forever on Win XP (issue: 140044)
  • Anti-DDoS inversion of logic (Issues: 141643141081)
  • Pepper Flash: in file uploads, treats HTTP status != 200 as failure, breaking (e.g.) uploads to Amazon S3 (Issue: 140468)
  • application causes Flash to hang (Issue: 141018)
  • Turn off TLS 1.1 in Chrome 21 Stable (Issue: 142172)
  • An additional scroll bar appears at the right on many sites (issue: 140239)
  • Setting and unsetting display:none obliterates current scroll position (issue: 140101)
If you find new issues, please let us know by filing a bug at

Karen Grunberg
Google Chrome

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 22.0.1229.8 for Windows, Mac, and Linux.  A complete log of what changed can be found in the svn revision log.  Instructions and download links for our different release channels are available on the Chromium wiki.  If you find what you think is a new bug, please file it in our issue tracker.

Jason Kersey
Google Chrome

Thursday, August 16, 2012

[Gd] Creating Your Own Spelling Checker Service

| More

Android Developers Blog: Creating Your Own Spelling Checker Service

Posted by Satoshi Kataoka and Ken Wakasa of the Android text input engineering team

The Spelling Checker framework improves the text-input experience on Android by helping the user quickly identify and correct spelling errors. When an app uses the spelling checker framework, the user can see a red underline beneath misspelled or unrecognized words so that the user can correct mistakes instantly by choosing a suggestion from a dropdown list.

If you are an input method editor (IME) developer, the Spelling Checker framework gives you a great way to provide an even better experience for your users. You can add your own spelling checker service to your IME to provide consistent spelling error corrections from your own custom dictionary. Your spelling checker can recognize and suggest corrections for the vocabularies that are most important to your users, and if your language is not supported by the built-in spelling checker, you can provide a spelling checker for that language.

The Spelling Checker APIs let you create your own spelling checker service with minimal steps. The framework manages the interaction between your spelling checker service and a text input field. In this post we’ll give you an overview of how to implement a spelling checker service. For details, take a look at the Spelling Checker Framework API Guide.

1. Create a spelling checker service class

To create a spelling checker service, the first step is to create a spelling checker service class that extends android.service.textservice.SpellCheckerService.

For a working example of a spelling checker, you may want to take a look at the SampleSpellCheckerService class in the SpellChecker sample app, available from the Samples download package in the Android SDK.

2. Implement the required methods

Next, in your subclass of SpellCheckerService, implement the methods createSession() and onGetSuggestions(), as shown in the following code snippet:

public Session createSession() {
return new AndroidSpellCheckerSession();

private static class AndroidSpellCheckerSession extends Session {
public SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit) {
SuggestionsInfo suggestionsInfo;
... // look up suggestions for TextInfo
return suggestionsInfo;

Note that the input argument textInfo of onGetSuggestions(TextInfo, int) contains a single word. The method returns suggestions for that word as a SuggestionsInfo object. The implementation of this method can access your custom dictionary and any utility classes for extracting and ranking suggestions.

For sentence-level checking, you can also implement onGetSuggestionsMultiple(), which accepts an array of TextInfo.

3. Register the spelling checker service in AndroidManifest.xml

In addition to implementing your subclass, you need to declare the spelling checker service in your manifest file. The declaration specifies the application, the service, and a metadata file that defines the Activity to use for controlling settings. Here’s an example:

<manifest xmlns:android=""
<application android:label="@string/app_name">
android:name="android.service.textservice.SpellCheckerService" />
android:resource="@xml/spellchecker" />

Notice that the service must request the permission android.permission.BIND_TEXT_SERVICE to ensure that only the system binds to the service.

4. Create a metadata XML resource file

Last, create a metadata file for your spelling checker to define the Activity to use for controlling spelling checker settings. The metadata file can also define subtypes for the spelling checker. Place the file in the location specified in the

element of the spelling checker declaration in the manifest file.

In the example below, the metadata file spellchecker.xml specifies the settings Activity as SpellCheckerSettingsActivity and includes subtypes to define the locales that the spelling checker can handle.

<spell-checker xmlns:android=""
android:settingsactivity="com.example.SpellCheckerSettingsActivity" />
android:subtypeLocale="en" />

That’s it! Your spelling checker service is now available to client applications such as your IME.

Bonus points: Add batch processing of multiple sentences

For faster, more accurate spell-checking, Android 4.1 (Jelly Bean) introduces APIs that let clients pass multiple sentences to your spelling checker at once.

To support sentence-level checking for multiple sentences in a single call, just override and implement the method onGetSentenceSuggestionsMultiple(), as shown below.

private static class AndroidSpellCheckerSession extends Session {                 
public SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(
TextInfo[] textInfo, int suggestionsLimit) {
SentenceSuggestionsInfo[] sentenceSuggestionsInfos;
... // look up suggestions for each TextInfo
return sentenceSuggestionsInfos

In this case, textInfo is an array of TextInfo, each of which holds a sentence. The method returns lengths and offsets of suggestions for each sentence as a SentenceSuggestionsInfo object.

Documents and samples

If you’d like to learn more about how to use the spelling checker APIs, take a look at these documents and samples:

  • Spelling Checker Framework API Guide — a developer guide covering the Spelling Checker API for clients and services.

  • SampleSpellCheckerService sample app — helps you get started with your spelling checker service.

    • You can find the app at /samples/android-15/SpellChecker/SampleSpellCheckerService in the Samples download.

  • HelloSpellChecker sample app — a basic app that uses a spelling checker.

    • You can find the app at /samples/android-15/SpellChecker/HelloSpellChecker in the Samples download.

To learn how to download sample apps for the Android SDK, see Samples.

Join the discussion on

+Android Developers


[Gd] Google Tech Workshop – Tunisia 2012

| More

Google Developers Blog: Google Tech Workshop – Tunisia 2012

Author PhotoBy Rania Hadi, MENA Outreach Manager

View post in Arabic on the Google Arabia Blog

At Google worldwide, there are always new activities for the communities we work with and at Google MENA, we try to keep up the pace. From g|days to Google Developer Group meetups, to the Google Apps Developer Challenge (hurry and get your submissions in!), we are always looking for ways to engage with people who are as passionate about technology as we are. For our developers in MENA, we have some good news: registration is now open for the Google Tech Workshop – Tunisia 2012.

The Tech Workshop will take place at the City of Sciences in Tunis on September 22 and 23, and we are looking for the best and brightest developers, programmers and tech geeks from Tunisia to join and learn about topics we love: Google App Engine, Google APIs, Mobile Development, HTML5, Google Web Toolkit, Google Webmaster Tools, Arabic Web Content, User Experience, and Product Development & Design. We’ll post the full agenda soon so check back for event updates and Google+ posts.

To make these sessions as useful as possible, they will be hands-on and interactive, so bring your laptops. As usual, space is limited and we’ll invite those with the best applications, so register now and we will inform you of the status of your application by September 10.

The Google Tech Workshop isn’t just about us, though! I can’t wait to meet the tech community in Tunisia and learn about your projects, so please share what you are working on, using the #gtwtunisia hashtag. If you have submitted an entry for the Google Apps Developer Challenge, and it reaches semi-finals, you’ll have an opportunity to present your work at the Google Tech Workshop.

So get ready for two technology-packed days, and I look forward to seeing you in Tunis!

Rania Hadi has been with Google since 2004 and now works on Outreach in the Middle East and North Africa. She focuses on building relationships and promoting Google technologies with the developer and tech communities.

Posted by Scott Knaster, Editor

[Gd] Announcing Pwnium 2

| More

Chromium Blog: Announcing Pwnium 2

The first Pwnium competition held earlier this year exceeded our expectations. We received two submissions of such complexity and quality that both of them won Pwnie Awards at this year’s Black Hat industry event. Most importantly, we were able to make Chromium significantly stronger based on what we learned.

We’re therefore going to host another Pwnium competition, called... Pwnium 2. It will be held on Oct 10th, 2012 at the Hack In The Box 10 year anniversary conference in Kuala Lumpur, Malaysia.

This time, we’ll be sponsoring up to $2 million worth of rewards at the following reward levels:
  • $60,000: “Full Chrome exploit”: Chrome / Win7 local OS user account persistence using only bugs in Chrome itself. 
  • $50,000: “Partial Chrome exploit”: Chrome / Win7 local OS user account persistence using at least one bug in Chrome itself, plus other bugs. For example, a WebKit bug combined with a Windows kernel bug. 
  • $40,000: “Non-Chrome exploit”: Flash / Windows / other. Chrome / Win7 local OS user account persistence that does not use bugs in Chrome. For example, bugs in one or more of Flash, Windows or a driver. 
  • $Panel decision: “Incomplete exploit”: An exploit that is not reliable, or an incomplete exploit chain. For example, code execution inside the sandbox but no sandbox escape; or a working sandbox escape in isolation. For Pwnium 2, we want to reward people who get “part way” as we could definitely learn from this work. Our rewards panel will judge any such works as generously as we can. 
Exploits should be demonstrated against the latest stable version of Chrome. Chrome and the underlying operating system and drivers will be fully patched and running on an Acer Aspire V5-571-6869 laptop (which we’ll be giving away to the best entry.) Exploits should be served from a password-authenticated and HTTPS Google property, such as App Engine. The bugs used must be novel i.e. not known to us or fixed on trunk. Please document the exploit.

You may have noticed that we’ve compressed the reward levels closer together for Pwnium 2. This is in response to feedback, and reflects that any local account compromise is very serious. We’re happy to make the web safer by any means -- even rewarding vulnerabilities outside of our immediate control.

Another well-received piece of feedback from the first Pwnium was that more notice would have been nice. Accordingly, we’re giving about two months notice. We hope this gives enough time for the security community to craft more beautiful works, which we’d be more than happy to reward and celebrate.

Posted by Chris Evans, Software Engineer

Wednesday, August 15, 2012

[Gd] Beta Channel Update for Chrome OS

| More

Chrome Releases: Beta Channel Update for Chrome OS

The Beta channel has been updated to 21.0.1180.79 (Platform versions: 2465.121.0) for Chromebooks (Acer AC700, Samsung Series 5 550, Samsung Chromebook Series 3, and Cr-48) and Samsung Chromebox Series 3. This build contains a number stability & security improvements.

Highlights of these changes are:
  • Update Adobe Flash to version
  • Wifi/3G stability fixes

Known Issues:

  • 141717 - 3G: Clicking 'Buy Plan' not working if Wifi disabled
  • 141737 - Tab hangs when playing a Vimeo playlist in the couch mode
  • 31866 - Unable to unlock SIM sometimes
  • 33484 - Cellular network sometimes mis-identified 

If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.

Josafat Garcia

Google Chrome

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 22.0.1229.6 for Windows, Mac, and Linux.  A complete log of what changed can be found in the svn revision log.  Instructions and download links for our different release channels are available on the Chromium wiki.  If you find what you think is a new bug, please file it in our issue tracker.

Jason Kersey
Google Chrome

[Gd] Chromium Vulnerability Rewards Program: larger rewards!

| More

Chromium Blog: Chromium Vulnerability Rewards Program: larger rewards!

The Chromium Vulnerability Rewards Program was created to help reward the contributions of security researchers who invest their time and effort in helping us make Chromium more secure. We’ve been very pleased with the response: Google’s various vulnerability reward programs have kept our users protected and netted more than $1 million dollars of total rewards for security researchers. Recently, we’ve seen a significant drop-off in externally reported Chromium security issues. This signals to us that bugs are becoming harder to find, as the efforts of the wider community have made Chromium significantly stronger.

Therefore, we’re making the following changes to the reward structure:
  • Adding a bonus of $1,000 or more on top of the base reward for “particularly exploitable” issues. The onus is on the reporter to provide a quick demonstration as part of the repro. For example, for a DOM-based use-after-free, one might use JavaScript to allocate a specific object type in the “freed” slot, resulting in a vtable dereference of 0x41414141. 
  • Adding a bonus of $1,000 or more on top of the base reward for bugs in stable areas of the code base—see below for an example. By “stable”, we mean that the defect rate appears to be low and we think it’s harder to find a security bug in the area. 
  • Adding a bonus of $1,000 or more on top of the base reward for serious bugs which impact a significantly wider range of products than just Chromium. For example, certain open source parsing libraries—see below for an example. 
The rewards panel has always reserved the right to reward at our discretion. At times, rewards have reached the $10,000 level for particularly significant contributions. An extraordinary contribution could be a sustained level of bug finding, or even one individual impressive report. Examples of individual items that might impress the panel include:
  • Nvidia / ATI / Intel GPU driver vulnerabilities. High or critical severity vulnerabilities in the respective Windows drivers, demonstrated and triggered from a web page. Submissions on Chrome OS would also be interesting. Chrome OS typically runs on a device with an Intel GPU. 
  • Local privilege escalation exploits in Chrome OS via the Linux kernel. Chrome OS has a stripped-down kernel, so a working exploit against it would certainly be worth examining. We reserve the right to reward more generously if the exploit works inside our “setuid sandbox” and / or our fast-evolving “seccomp BPF sandbox”. 
  • Serious vulnerabilities in IJG libjpeg. For well over a decade, there hasn’t been a serious vulnerability against IJG libjpeg. Can one be found? 
  • 64-bit exploits. Any working code execution exploit on a 64-bit Chrome release. Sandbox escape not required. 
  • Renderer to browser exploit. Any working browser code execution exploit, starting from the assumed precondition of full code execution inside a normal web renderer or PPAPI process. 
Aside from the new bonuses, it’s worth recapping some details of the existing reward structure that aren’t as widely known:
  • Our reward program covers vulnerabilities in Adobe Flash as well as other well-known software such as the Linux kernel, various open-source libraries and daemons, X windows, etc. 
  • Our base reward is $2,000 for well-reported UXSS bugs, covering both the Chromium browser and also Adobe Flash. (With the new reward bonus for exploitability, UXSS rewards will likely become $4,000.) 
  • Our reward program already includes a bonus of $500 to $1,000 when the reporter becomes a more involved Chromium community member and provides a peer-reviewed patch. 
  • We have always considered rewards for regressions affecting our Beta or Dev channel releases. It’s a big success to fix security regressions before they ship to the Stable channel. 
To illustrate how the new reward bonuses will work, we’re retroactively applying the bonuses to some older, memorable bugs:
  • $1,000 to Atte Kettunen of OUSPG for bug 104529 (new total: $2,000). We believe that our PDF component is one of the more secure (C++) implementations of PDF, hence the $1,000 top-up. 
  • $3,000 to Jüri Aedla for bug 107128 (new total: $4,000). There is a $1,000 bonus because this bug affects many projects via core libxml parsing, and we added a $2,000 bonus for exploitability: this is a heap-based buffer overflow involving user-controlled data with a user-controlled length. 
We’re more excited than ever to work with the community and reward their efforts.

Posted by Chris Evans, Software Engineer

Tuesday, August 14, 2012

[Gd] Help us shape Google Developers Live for Google Drive

| More

Google Apps Developer Blog: Help us shape Google Developers Live for Google Drive

The week before Google I/O, we launched Google Developers Live, a new online channel to connect us with developers from all around the world, all year round.

Google Developers Live features interactive broadcasts about many different products and with many different formats. For Google Drive and Apps Script alone, we have aired app reviews, presentations about Google Drive and Apps Script, question and answer sessions, and a doc feedback session.

We are really interested in knowing from you about your favorite shows. Which types of event would you like to see more of in the future? Are you more interested in introductory material such as getting started tutorials, or more advanced topics?

Please share your feedback with us by adding a comment to this post or by reaching out to us on Google+.

Remember, we go live every Monday and Thursday and our complete schedule can be found at See all of you on Google Developers Live!

Claudio Cherubino   profile | twitter | blog

Claudio is an engineer in the Google Drive Developer Relations team. Prior to Google, he worked as software developer, technology evangelist, community manager, consultant, technical translator and has contributed to many open-source projects. His current interests include Google APIs, new technologies and coffee.


[Gd] Party Playlist Picker: An experimental project written in Python

| More

YouTube API Blog: Party Playlist Picker: An experimental project written in Python

When Google+ first came out, we were really excited about the idea of writing some open source code to showcase how you could integrate YouTube with Google+. After some brainstorming, we came up with the idea of letting people collaboratively edit a playlist in realtime, and we started hacking!

We started working on Party Playlist Picker in early 2011. We’ve always wanted to release our experiment as an open source project, and you can now download the code to see one example of integrating Google+ functionality to enrich a YouTube application.

Party Playlist Picker is a Google App Engine application written in Python. It uses a Google+ share button so that partygoers can invite their friends to come edit a playlist in realtime. That feature is based on the Google App Engine channel API. It makes use of the gdata-python-client library to talk to YouTube and the google-api-python-client library to talk to Google+. It’s currently using version 1 of the YouTube API (because that’s what gdata-python-client uses), and we used OAuth 2 for authentication. In fact, we made good use of the Python client library to manage the OAuth 2 tokens for us automatically.

There’s also a lot of jQuery-based JavaScript goodness. For instance, you can search for videos without reloading the page, and you can simply drag them to add them to the playlist. If multiple people edit the page at the same time, the list of videos is updated in realtime whenever a change is made. You can also watch videos right on the page. Last of all, it keeps track of who’s edited the playlist, and whether they’re currently editing it.

There are a bunch of subtle HTML5 tricks thrown in as well. For instance, the application supports voice search, and we made a clever use of gradients to fade overflow text in the video descriptions.

Here’s a screenshot of the application:

If you’re interested in learning more, you can play around with a running version of it, or you can download the source code and hack away! If you have any questions, post them to our developer forum.

--Shannon -jj Behrens and Jeffrey Posnick, YouTube API Team


[Gd] Configuring URL Parameters in Webmaster Tools

| More

Official Google Webmaster Central Blog: Configuring URL Parameters in Webmaster Tools

Webmaster Level: Intermediate to Advanced

We recently filmed a video (with slides available) to provide more information about the URL Parameters feature in Webmaster Tools. The URL Parameters feature is designed for webmasters who want to help Google crawl their site more efficiently, and who manage a site with -- you guessed it -- URL parameters! To be eligible for this feature, the URL parameters must be configured in key/value pairs like item=swedish-fish or category=gummy-candy in the URL

Guidance for common cases when configuring URL Parameters. Music in the background masks the ongoing pounding of my neighbor’s construction!

URL Parameter settings are powerful. By telling us how your parameters behave and the recommended action for Googlebot, you can improve your site’s crawl efficiency. On the other hand, if configured incorrectly, you may accidentally recommend that Google ignore important pages, resulting in those pages no longer being available in search results. (There's an example provided in our improved Help Center article.) So please take care when adjusting URL Parameters settings, and be sure that the actions you recommend for Googlebot make sense across your entire site.

Written by Maile Ohye, Developer Programs Tech Lead

[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update

The Stable channel has been updated to 21.0.1180.79 for Mac, Linux, Windows and Chrome Frame

This build fixes a security issue with Adobe Flash. You can read more about this in Adobe's Security Bulletin.  

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

Karen Grunberg
Google Chrome

[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update

The Stable channel has been updated to 21.0.1180.77 for Mac, Linux, Windows and Chrome Frame

This build fixes a problem with an item in Node::attributes disappearing (Issue 140473). 

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

Karen Grunberg
Google Chrome

Monday, August 13, 2012

[Gd] Exporting native Google documents with the Google Drive SDK

| More

Google Apps Developer Blog: Exporting native Google documents with the Google Drive SDK

Three months ago, we launched Google Drive along with the Google Drive SDK. The SDK allows applications to manage files that users have uploaded to Drive and to integrate deeply in the Google Drive UI. Today, we’ve just extended the SDK to allow developers to interact with native Google Docs types such as Google Spreadsheets, Presentations, Documents, and Drawings.

We now provide an easy way to export native Google documents through the Google Drive API. We also allow native Google documents to be opened directly from within the Google Drive UI using third-party applications.

If your application is already a Drive-installable app, you can enable this feature by checking the Allow users to open files that can be converted to a format that this app can open option in the Google APIs Console under Drive SDK > Import:

Enabling the Import feature of your Drive application

When this feature is enabled, your application will show up under the “Open with” menu in the Google Drive Web UI for the file formats you support. Here’s how it works: if your application supports opening one of the possible export formats for the Google document, users will be able to open that Google document with your application. So for instance, if your application is configured to open PDF files, then because Google Documents are exportable to PDF, users will be able to use your application to open those documents as shown below.

Right clicking on a Google Document > Open with

When opening a native Google Document with your application from the Google Drive UI, we will pass the following JSON Object in the state URL parameter of the OAuth 2.0 redirect request that is forwarding the user to your website.

"exportIds": ["file_id"],

Then you can use the file ID contained in the JSON object to query the Google Drive API and fetch the file’s metadata. Note that the state URL parameter is different when opening regular files as we use the JSON attribute exportIds instead of ids.

Unlike the metadata of regular files which contain a downloadUrl attribute which you can use to download the file’s content, the metadata for native Google documents contains a collection of export URLs. These URLs - one for each supported export format - are listed under the attribute exportLinks, as shown in the HTTP request/response below.


GET /drive/v2/files/<file_id> HTTP/1.1
Authorization: Bearer <access_token>


HTTP/1.1 200 OK
Status: 200

"kind": "drive#file",
"id": "<file_id>",
"exportLinks": {
"application/vnd.oasis.opendocument.text": "",
"application/msword": "",
"text/html": "",
"application/rtf": "",
"text/plain": "",
"application/pdf": ""

You can query any of these export URLs using an authorized request to download the Google document in your prefered export format.

Below is the full list of supported export formats -- and their associated MIME types -- for the different types of native Google documents:

Google Documents:

  • Text File (TXT) - text/plain
  • Portable Document Format (PDF) - application/pdf
  • OpenDocument Text Document (ODT) - application/vnd.oasis.opendocument.text
  • Microsoft Word (DOC) - application/msword
  • Hypertext Markup Language (HTML) - text/html
  • Rich Text Format File (RTF) - application/rtf

Google Spreadsheets:

  • Portable Document Format (PDF) - application/pdf
  • Microsoft Excel Spreadsheet (XLS) - application/
  • OpenDocument Spreadsheet (ODS) - application/x-vnd.oasis.opendocument.spreadsheet

Google Presentations:

  • Text File (TXT) - text/plain
  • Portable Document Format (PDF) - application/pdf
  • Microsoft Office Open XML Format Presentation (PPTX) - application/vnd.openxmlformats-officedocument.presentationml.presentation

Google Drawings:

  • Scalable Vector Graphics (SVG) - image/svg+xml
  • JPEG Images (JPEG) - image/jpeg
  • Portable Network Graphics (PNG) - image/png
  • Portable Document Format (PDF) - application/pdf

Please check out the Google Drive SDK documentation if you’d like to learn more, and feel free to ask any questions you may have on Stack Overflow.

Nicolas Garnier profile | twitter | events

Nicolas Garnier joined Google’s Developer Relations in 2008 and lives in Zurich. He is a Developer Advocate focusing on Google Apps and Web APIs. Before joining Google, Nicolas worked at Airbus and at the French Space Agency where he built web applications for scientific researchers.


Sunday, August 12, 2012

[Gd] Covering all your codebases: A conversation with a Software Engineer in Test

| More

Google Testing Blog: Covering all your codebases: A conversation with a Software Engineer in Test

Cross-posted from the Google Student Blog

Today we’re featuring Sabrina Williams, a Software Engineer in Test who joined Google in August 2011. Software Engineers in Test undertake a broad range of challenges on a daily basis, designing and building intelligent systems that can explore various use cases and scenarios for distributed computing infrastructure. Read on to learn more about Sabrina’s path to Google and what she works on now that she’s here!

Tell us about yourself and how you got to Google.
I grew up in rural Prunedale, Calif. and went to Stanford where I double-majored in philosophy and computer science. After college I spent six years as a software engineer at HP, working primarily on printer drivers. I began focusing on testing my last two years there—reading books, looking up information and prototyping test tools in my own time. By the time I left, I’d started a project for an automated test framework that most of our lab used.

I applied for a software engineering role at Google four years ago and didn’t do well in my interviews. Thankfully, a Google recruiter called last year and set me up for software engineer (SWE) interviews again. After a day of talking about testing and mocking for every design question I answered, I was told that there were opportunities for me in SWE and SET. I ended up choosing the SET role after speaking with the SET hiring manager. He said two things that convinced me. First, SETs spend as much time coding as SWEs, and I wanted a role where I could write code. Second, the SETs job is to creatively solve testing problems, which sounded more interesting to me than writing features for a product. This seemed like a really unique and appealing opportunity, so I took it!

So what exactly do SETs do?
SETs are SWEs who are really into testing. We help SWEs design and refactor their code so that it is more testable. We work with test engineers (TEs) to figure out how to automate difficult test cases. We also write harnesses, frameworks and tools to make test automation possible. SETs tend to have the best understanding of how everything plays together (production code, manual tests, automated tests, tools, etc.) and we have to make that information accessible to everyone on the team.

What project do you work on?
I work on the Google Cloud Print team. Our goal is to make it possible to print anywhere from any device. You can use Google Cloud Print to connect home and work printers to the web so that you (and anyone you share your printers with) can access them from your phone, tablet, Chromebook, PC or any other supported web-connected device.

What advice would you give to aspiring SETs?
First, for computer science majors in general: if there’s any other field about which you are passionate, at least minor in it. CS is wonderfully chameleonic in that it can be applied to anything. So if, for example, you love art history, minor in art and you can write software to help restore images of old paintings.

For aspiring SETs, challenge yourself to write tests for all of the code you write for school. If you can get an internship where you have access to a real-world code base, study how that company approaches testing their code. If it’s well-tested, see how they did it. If it’s not well-tested, think about how you would test it. I don’t (personally) know of a CS program that has even a full course based on testing, so you’ll have to teach yourself. Start by looking up buzzwords like “unit test” and “test-driven development.” Look up the different types of tests (unit, integration, component, system, etc.). Find a code coverage tool (if a free/cheap one is available for your language of choice) and see how well you’re covering your code with your tests. Write a tool that will run all of your tests every time you build your code. If all of this sounds like fun...well...we need more people like you! 

If you’re interested in applying for a Software Engineer in Test position, please apply for our general Software Engineer position, then indicate in your resume objective line that you’re interested in the SET role.

Posted by Jessica Safir, University Programs