Claudio Cherubino's blog Life of a Googler


One year at Google (or how I was hired)

Exactly one year ago I started working for Google so it's about time to look back at how this new life has been doing so far.

I came to Google after a very long hiring process. It's not usually like that, but it took 11 months for me to get from the first contact with the recruiter to the job offer.

Everything started on June 2009, when a Google recruiter saw my submission on the job site and sent me an email offering to schedule the first of a series of phone interviews for a Developer Programs Engineer position in Mountain View.

In my opinion, the phone interview went terribly bad, but apparently the interviewer disagreed with me and I was asked to setup a second phone interview with another Googler. I did that at the beginning of July and this time I was quite positive about the results.

And I was right, everything was going well and I was invited to fly to a Google office for the onsite interviews.
Actually, I thought everything was going well, but instead something went wrong. The position was filled by someone else and there was no open headcount for me so I had to wait and wait and wait...

I was on hold till December 2009, when the recruiter finally contacted me again for a new opportunity for the same position in London or Dublin. My preference was still for Mountain View, but you don't say no to Google, do you?

This time things moved faster and I went to Dublin for the onsite interviews right after Christmas, only to find one of the coldest winters in ages and have 3 out of my 4 flights cancelled due to the snow. I eventually made it to Dublin and went through 7 interviews, from 11.30am to 5.30pm!

I went back home tired but enthusiastic and I kept my fingers crossed for days, waiting for the response from the hiring committee. It took less than I was expecting to get the answer, and I'm here now, so you may easily guess what that answer was like ;-)

Well, I guess I'll talk about my first year at Google in the next post...


Dissecting the Google Developer Advocate Team page

One of the side projects I worked on at the end of last year is the Google Developer Advocate Team page, a web application that provides bios for all members of my team and allows to track the public events we are going to attend.

We'll probably end up open-sourcing the code but I've already got questions about the technologies adopted so I decided to write this post to explain some of the design choices.

The application is written in Java and runs on App Engine, which provides scalability and simple deployment and administration.

One of the main requirements when designing the application was that it had to seamlessly integrate into our existing workflow in order to be as easy as possible for Google advocates to insert their events. Internally we use Google Calendar to track our trips and speaking opportunities so it was straightforward to use the Calendar Data API to fetch data from a shared calendar.

A cron job periodically checks that calendar, parses new events to extract the relevant info (date, time, location, speakers, products, description) and updates the Datastore using JDO.

Advocates' profiles are stored in a Google Spreadsheet which we can internally update using a simple web form. The public page uses the Spreadsheets Data API to get the relevant pieces of information and display them.

The Google Developer Events Calendar page embeds a Google Map using JavaScript and uses the Geocoding API to map event locations to geographical coordinates that can be pinned to the map or searched for.

Want to see your face in the Google Developer Advocates page? We are hiring!


Fixing bugs for charity

It's always hard to find some time to write about my job at Google but I really want to tell you what my team and I have done last week as that makes me proud of them and the entire company.

I work in the Developer Relations team for Google Apps APIs and one of our tasks is to write and maintain the GData client libraries for the various languages supported, mainly Java, Python, .NET and PHP.

This obviously includes fixing bugs in the libraries and once in a while we plan a fix-it day, during which each team member ignores other tasks and focuses on fixing bugs. This is quite normal, but last week we decided to go one step further.

Instead of having a fix-it day we organized a fix-it week and added some Christmas spirit to it by setting an extra incentive: for each bug fixed 10$ (5$ from our manager and 5$ from Google) would have been donated to charity!

And since we all love games, we also put a special "prize" for the team member who fixed the highest number of bugs: that guy had to pick the non-profit organization that would get the money.

Those rules made everyone interested in fixing as many bugs as possible (i.e. more charity) but also created an healthy competition among us to be the one to choose the target organization.

At the end of the week, 31 bugs were fixed and 310$ were donated to Save the Children.

Many people believe that Google's motto "Don't be evil" is just a slogan, do you know of other companies where something like that could happen?

Merry Christmas everyone!


Google Developer Days 2010 in Europe

In the last two weeks I've been travelling around Europe to present at the Google Developer Days in Munich, Moscow and Prague (three amazing cities!).

The series of events was a great success with more than 3000 participants and lots of interest and good questions.

In the three cities I gave similar talks on the Google Apps APIs and how to integrate an application on the Google Apps Marketplace, here are the slides I used:

My talk in Prague was also filmed and is available on Youtube:


Using JetS3t to interact with Google Storage

Google announced a lot of cool stuff at Google I/O, including Google TV, Android Froyo and App Engine for Business but it was another project that caught my attention and it is Google Storage for Developers.

Cloud storage is a huge business and many successful online services such as Dropbox, SlideShare or Twitter already use Amazon S3 for their storage needs. The idea is simple: you store your files on Google's infrastructure and access them from anywhere, paying only for what you use.

Google Storage is a RESTful service so it is possible to interact with it through the standard HTTP methods (GET, POST, PUT and DELETE) as explained in the Developer's Guide but it is much easier to rely on the client libraries which hide the complexities of the raw protocol.
A Python library can be downloaded from the project website but Google Storage also understands Amazon S3 protocol so that any existing tool for S3 can work with Google Storage with minor (if any) modifications.

Among all the toolkits for Amazon S3, JetS3t is probably the best known and most widely adopted. It is an open-source Java suite that officially added support for Google Storage in the recently released version 0.8.0.

JetS3t is released under the Apache License 2.0, so it is free for commercial or non-commercial use and can be modified as needed. Its source code can be downloaded from the project page on BitBucket where you can also find the instructions on how to build it or contribute to the project.

Using JetS3t to write a Java application that interacts with Google Storage is very easy. It is possible to connect to the service, create buckets and upload/download objects with less than 10 lines of code:

// Google Storage login credentials are required to manage GS accouponunts.
GSCredentials credentials = new GSCredentials(ACCESS_KEY, SECRET_KEY);

// To communicate with Google Storage use the GoogleStorageService.
GoogleStorageService service = new GoogleStorageService(credentials);

// To store data in GS you must first create a bucket, a container for objects.
GSBucket bucket = service.createBucket("jets3t-test-bucket");

// Create a GSObject based on a local file
File localFile = new File("my_file.txt");
GSObject localObject = new GSObject(localFile);

// Upload the object to our test bucket in GS.
localObject = service.putObject("jets3t-test-bucket", localObject);

// Download the data object we just uploaded
GSObject remoteObject = service.getObject("jets3t-test-bucket", "my_file.txt");

The GoogleStorageService exposes all the methods to manipulate the cloud filesystem and only takes a set of credentials to be instantiated. Besides the basic set of commands presented in the code snippet above, there are other methods to manage Access Control Lists or to copy/move/rename objects.
The source code distribution also includes a complete code sample that covers all the functionalities described in the Google Storage Developer's Guide.

Are you already thinking about the next big thing that can be built on top of this service?


Google events in Europe

It's time again for a series of Google events in Europe, where you can learn about the newest technologies and have the chance to ask questions to Google engineers.

Google Developer Days 2010 will be held in Europe in November according to the following calendar:

Registration for these three events will open on September 22nd so save the date because the available seats usually run out very quickly!

Next week we'll be also having a different event in Spain, the Madrid DevFest 2010. Unfortunately, registration for this event is already closed and there's no way to request extra seats, as it is full booked.

I'll be presenting at all these event about the Google Apps APIs and the Google Apps Marketplace and I'll be glad to answer your questions on these topics.
Hope to see a lot of you there!


Un algoritmo al giorno

Da qualche giorno sto studiando le Google Gadgets API, quella serie di librerie fornite da Google per personalizzare la propria homepage o il proprio sito web aggiungendo dei pannelli (i "gadget", appunto) al cui interno possono girare delle vere e proprie applicazioni.

I gadget possono essere sviluppati liberamente e, una volta che sono stati verificati da Google, pubblicati gratuitamente all'interno della directory ufficiale in modo da essere facilmente utilizzati dagli utenti di tutto il mondo.

Ne esistono già parecchie migliaia dalle funzioni più disparate. Si va dal gadget che riporta le previsioni del tempo aggiornate in tempo reale a quello che consente di tradurre i testi in 50 lingue diverse. Ci sono poi giochi, musica, immagini e molto altro ancora, praticamente esiste un gadget per qualunque cosa!

In questa selva di applicazioni è adesso possibile ritrovare anche il mio primo esperimento con le API di Google, un gadget chiamato "Algorithm of the Day" che si interfaccia con il portale e propone la descrizione di un algoritmo prelevato in maniera casuale.

Si tratta ovviamente di uno strumento riservato ad un target di nicchia, composto da sviluppatori e progettisti di software.

Nulla vieta però ai non addetti ai lavori di installare ugualmente il gadget anche perché, come dice il proverbio, "un algoritmo al giorno toglie il medico di torno", no?


Riparte il Google Code Jam

Restano meno di due giorni di tempo per registrarsi all'edizione 2009 del Google Code Jam, la competizione riservata ai migliori sviluppatori di tutto il mondo.

Il formato è lo stesso della scorsa edizione: un primo turno di qualificazione che si apre questa notte e al quale può partecipare chiunque nell'arco delle 24 ore successive. In questa fase verranno proposti tre problemi, ciascuno con un set di input piccolo e e uno grande. Per superare il turno basterà risolvere uno dei problemi sull'input piccolo e uno sull'input grande (anche lo stesso problema).

Successivamente ci saranno tre turni online e la finale per i migliori 25 qualificati da tenersi presso la sede principale di Google a Mountain View, California.

I premi vanno dalle magliette firmate Google Code Jam ai 5000 dollari per il primo qualificato, oltre ovviamente alla possibilità di farsi notare dai recruiter di Google.

Per maggiori chiarimenti vi invito a leggere il regolamento ufficiale e a provare i quesiti proposti l'anno passato.

In bocca al lupo!


Si inasprisce la guerra dei browser

UPDATE: Google Chrome è stato rilasciato in versione Beta per Windows e può essere scaricato da

Proprio quando sembrava ormai che il mercato dei browser web presentasse esclusivamente due protagonisti (Internet Explorer e Mozilla Firefox) e un paio di comprimari (Safari e Opera fra tutti), ecco spuntare l'annuncio clamoroso, che segue almeno un anno di secche smentite:

Google sta per presentare il suo browser!

Chrome, il browser di Google

Chrome, il browser di Google

Il software, chiamato Chrome, è stato presentato oggi sul blog ufficiale di Google, ma non è stato ancora rilasciato, anche se dovrebbe essere questione di giorni se non di ore.

Il progetto, basato su Webkit come Safari, sarà distribuito con licenza open-source ed è destinato a sconvolgere gli equilibri del mercato, sfidando apertamente il recente (e ottimo) Firefox 3 e il prossimo Internet Explorer 8, attualmente in Beta 2.

Le promesse sono molteplici, innanzitutto ogni tab sarà eseguito in un thread processo separato per garantire stabilità e sicurezza. Anche le performance dovrebbero essere di prim'ordine, grazie alla macchina virtuale JavaScript chiamata V8.

E' stata anche prevista una modalità di navigazione stealth per navigare senza lasciare tracce nella cronologia.

Come sempre Google non lesina le sorprese e per presentare Chrome ha pensato di pubblicare un fumetto che ne descrive le caratteristiche e le potenzialità.

Adesso non ci resta che attendere il rilascio, pare che la prima versione distribuita sarà quella per Windows mentre gli utenti Linux e Mac dovranno attendere ancora un pò.


Gestire una radio grazie a Google

Penso che questa notizia farà molto piacere ai miei amici di Radio Elativo, la web radio dedicata alla musica copyleft.

Google ormai non conosce confini e ha presentato un nuovo prodotto rivolto proprio al mercato delle radio, sia quelle tradizionali che in streaming, chiamato Google Radio Automation.

Si tratta di un sistema integrato per l'automazione della regia radiofonica sotto tutti gli aspetti, dalla Playlist al Remote Voice Tracking, passando per la reportistica e la gestione degli spazi pubblicitari sfruttando un altro prodotto innovativo chiamato Adsense for Audio.

Google Radio Automation sarà distribuito esclusivamente con un server da rack 4U proprietario, ma ancora non si sa nulla relativamente ai prezzi di mercato e alla eventuale distribuzione nel nostro paese.

Di sicuro, essendo un prodotto made by Google, si potrà fare affidamento sull'efficienza del sistema e sull'usabilità dell'interfaccia, caratterizzata da icone grandi e colorate e un'organizzazione basata su widget: