Claudio Cherubino's blog Life of a Googler

22Dec/105

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!

25Jul/095

I peggiori disastri informatici della storia

L'evoluzione informatica ha portato immensi benefici nelle vite di tutti noi però è innegabile che in alcuni casi ci sono stati errori anche clamorosi.

A tal proposito il sito ZDNet ha stilato una lista dei dieci peggiori disastri della storia dell'informatica, che vi riporto di seguito:

10 - un guasto ad una scheda di rete blocca la rete dell'aeroporto di Los Angeles, tenendo a terra migliaia di passeggeri per otto ore.

9 - mezzo milione di cittadini inglesi non possono andare in vacanza perché il nuovo sistema Siemens non consente di rilasciare i loro passaporti.

8 - Sony ritira dal mercato 4 milioni di batterie al litio usate all'interno dei laptop di Apple, Dell, Toshiba e Lenovo perché a rischio di esplosione.

7 - il Millennium Bug. C'è bisogno che vi dica di cosa stiamo parlando?

6 - il sistema CS2 della Child Support Agency inglese costato più di un miliardo di sterline e praticamente mai utilizzato a causa della contemporanea riforma del Department for Work and Pensions.

5 - l'uso delle unità imperiali (quelle anglosassoni) invece di quelle metriche comporta l'esplosione del Mars Climate Orbiter a seguito del suo volo a bassa quota su Marte.

4 - per la progettazione dell'Airbus A380 vennero usate due versioni differenti del software CATIA e solo alla fine si scoprì che tali versioni erano incompatibili fra loro, facendo slittare la fine del progetto di due anni.

3 - così come la NASA ci ha regalato l'esplosione del Mars Climate Orbiter, la European Space Agency ci ha deliziati con l'esplosione dell'Ariane 5 che per un banale overflow di una variabile è costato 8 miliardi di dollari per meno di 37 secondi di volo.

2 - una singola riga di codice errata ha causato nel 1990 il collasso delle rete telefonica di AT&T, bloccando 75 milioni di chiamate.

1 - anche se i danni alla fine sono stati contenuti, il disastro più grosso è quello legato al sistema militare sovietico nel 1983, quando per errore segnalò il lancio di 5 missili statunitensi e quasi non scatenò la Terza Guerra Mondiale.

Effettivamente io non sono ancora riuscito a fare un disastro di questa portata, però bisogna anche ammettere che non ho mai programmato uno Shuttle. NASA, vuoi farmi provare? ;-)

8Sep/080

Songbird, il media player di Mozilla

Chi contribuisce ad un progetto open-source non lo fa, almeno nelle intenzioni iniziali, per ricavarne dei soldi, ma al massimo notorietà o qualche contatto che potrà risultare utile un giorno.

Di sicuro si tratta di un ottimo modo per imparare cose nuove e sperimentare le ultime tecnologie, ed è con questo spirito che personalmente ho dato il mio apporto a MySQL, PHP, WordPress e, più recentemente, Songbird.

Probabilmente conoscerete tutti i primi tre, ma è proprio dell'ultimo che vorrei parlarvi in questa occasione.

Songbird è un media player open-source basato sulla piattaforma XULRunner di Mozilla, in pratica la stessa tecnologia alla base dei ben più noti Firefox e Thunderbird.

Lo sviluppo è arrivato attualmente alla release 0.8pre ma le caratteristiche sono già confrontabili con quelle di iTunes e comprendono anche il supporto per le estensioni (stile Firefox) e i temi, qui chiamati "feathers".

All'interno del sito ufficiale (http://getsongbird.com/) esiste uno sezione dedicata a chi vuole contribuire (http://getsongbird.com/contribute/) che descrive tutte i modi che esistono per supportare il progetto.

Ovviamente il primo tra essi consiste nello scrivere del codice, ma è anche possibile fare la propria parte semplicemente facendo conoscere Songbird o segnalando i bug che si incontrano.

A proposito di ciò, Pioneers Of The Inevitable (l'azienda che sta dietro Songbird) ha costituito il gruppo sb_core, costituito da quegli sviluppatori che si occupano di fixare i bug dell'applicazione.

In cambio, ogni sviluppatore riceve una serie di quei gadget che rendono felice la vita di noi geek.

Io faccio parte di questo gruppo avendo chiuso il mio primo bug una decina di giorni fa e proprio oggi ho trovato nella cassetta delle lettere una busta contenente una maglietta e tonnellate di stickers, spille e cartoline.

Ho fatto una foto a questo ben di dio, chissà che non invogli anche voi a contribuire:

I gadget di Songbird

I gadget di Songbird

All'inizio potrà sembrare molto difficile, ma pian piano si scoprono tanti piccoli trucchetti e soprattutto si comincia a padroneggiare una piattaforma complessa come quella di Mozilla.

Se volete una mano chiedete pure, ma vi consiglio di scoprire da soli la soddisfazione di vedere il proprio codice all'interno di un progetto così vasto e importante...

29Nov/070

Fixare i bug di PHP e MySQL

Nell'ultimo periodo ho dedicato buona parte del mio tempo libero allo studio di alcuni dei più importanti progetti open-source esistenti, tra cui PHP e MySQL, in modo da partecipare allo sviluppo.

Devo ammettere che giàla fase di build dei sorgenti ha richiesto del tempo per essere acquisita.
Ogni progetto prevede il proprio sistema di controllo della versione (CVS, SVN o Bitkeeper) e la sua procedura per la configurazione, compilazione e installazione.

Anzi, se pensate che possa interessare, magari potrei provare a scrivere una guida passo-passo per la compilazione di PHP o MySQL su Ubuntu 7.10, che è la piattaforma di sviluppo che ho adottato.

Una volta che si riesce a compilare il sorgente, il passo successivo è trovare un bug da studiare e tentare di fixare.

Niente di complicato, basta visitare il bug-tracker di PHP o MySQL e scegliere uno dei bug ancora aperti.

Identificato il bug si deve cercare di riprodurlo nella propria macchina.

Se il problema si verifica come descritto, allora si passa allo studio del codice per capire dove intervenire e in che modo.

Ovviamente conviene cominciare da qualche bug facile, in modo da cominciare a conoscere il codice, che in progetti come questi è sicuramente complesso.

Nel mio caso, ho scelto un bug di PHP e uno di MySQL, e sono riuscito a chiuderli entrambi.

Volete mettere la soddisfazione personale di vedere il proprio nome nel codice di PHP, come si vede in questo log?

revision 1.656
date: 2007/11/21 02:27:07; author: stas; state: Exp; lines: +2 -2
fix #42866, from Claudio Cherubino

Il bug in questione è il seguente, e riguardava il supporto per UNICODE nella futura release 6 di PHP:

http://bugs.php.net/bug.php?id=42866

Per quanto riguarda MySQL, invece, il bug riguardava la funzione LAST_DAY():

http://bugs.mysql.com/bug.php?id=32770

ed ecco qui la la descrizione della mia patch, compresa di codice e test case:

http://lists.mysql.com/internals/35187

Lo so che si tratta di piccole cose, ma è sempre un inizio, e anche se la comunitàopen-source non mi saràdebitrice a vita, sicuramente il mio orgoglio di informatico se la passa molto bene...