# Claudio Cherubino's blogLife of a Googler

19Sep/083

## Project Euler in F# – Problem 25

After a long break, let's try to resume with a regular publication scheme, starting with Project Euler's problem 25, an easy one, which says:

The Fibonacci sequence is defined by the recurrence relation:

Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.

...

The 12th term, F12, is the first term to contain three digits.

What is the first term in the Fibonacci sequence to contain 1000 digits?

The problem definition also contains the algorithm to solve it, I told you it was easy.

Actually, we just have to write a function to compute the Fibonacci sequence and stop when a term contains a thousand digits.

Since we don't know when we are done evaluating the terms of the sequence we have to generate an infinite sequence and check every new item to see if we can stop.

Let's give a look at the F# code:

```#light
open Microsoft.FSharp.Math.BigInt

let has1000Digits (n : Microsoft.FSharp.Math.BigInt) =
n.ToString().Length = 1000

let euler25 =
((1I,1I) |> Seq.unfold
(fun (n0, n1) ->
(if has1000Digits n0 then None
else Some(n0, (n1, n0 + n1))))
|> Seq.length) + 1
```

The Seq.unfold function is used to generate the infinite sequence, returning Some when we want to continue and None when we are done searching (i.e. the term has 1000 digits).

In the latter case, the length of the sequence represents the number of elements generated before the one with a thousand digits, so we have to sum 1 to get the desired answer.

13Sep/083

## Dropbox: il nostro disco su Internet

Penso di non essere l'unico che ogni giorno utilizza sia il computer dell'ufficio che quello di casa e magari ogni tanto lavora anche sul portatile.

Se è così anche per voi, di sicuro vi sarà capitato di cercare disperatamente qualche file e realizzare che l'unica copia si trova sul computer che non abbiamo davanti.

Visto che questo scenario è abbastanza frequente, credo di aver provato tutte le soluzioni classiche e anche qualcuna un pò più "esotica": copia dei file su pendrive, invio di mail da un pc all'altro, spazio ftp personale, accesso via desktop remoto o VNC al computer di casa e chissà quante altre idee più o meno creative.

Nessuna di queste è mai durata a lungo, eppure continuo a sperare di trovare una soluzione definitiva e forse stavolta ci siamo.

E' stato appena aperto al pubblico un servizio web chiamato Dropbox, che fornisce gratuitamente 2 Gb di spazio disco virtuale ad ogni utente e rende questo spazio accessibile in maniera trasparente sia su Windows che su Linux o MacOSX.

Basta andare sul sito http://www.getdropbox.com/ e scaricare il software che si occuperà di creare una cartella chiamata My Dropbox all'interno della cartella Documenti dell'utente che verrà automaticamente sincronizzata con lo storage remoto e di conseguenza con tutti gli altri computer su cui abbiamo installato Dropbox.

L'integrazione con il sistema operativo è praticamente perfetta, tanto che si può fare drag and drop sulla cartella condivisa e anche lo stato della sincronizzazione verrà segnalato da un segno di spunta posizionato sopra le icone.

Ogni utente può accedere al propri spazio condiviso anche dall'interfaccia web ed è inoltre possibile generare un link pubblico per ogni file, in modo da permetterne il download anche da parte di altre persone.

Interfaccia web di Dropbox

In futuro Dropbox proporrà anche dei profili a pagamento che consentiranno di superare la soglia di 2 Gb di spazio disco, ma l'account base sarà sempre gratuito, quindi se come me avete bisogno di avere sempre a portata di mano certi file, vi consiglio di dargli un'occhiata.

10Sep/080

## Svendo tutto!

Scusate il bieco opportunismo, ma oggi sfrutterò il blog per scopi assolutamente personali

Si dia il caso che debba cambiare casa fra un mese esatto e quindi è arrivato il momento di eliminare un pò di cose "superflue".

Ho messo su Ebay una ventina di giochi per Playstation 2 e una decina per Gamecube al prezzo massimo di 4,99 Euro, in pratica una super svendita.

Le aste si concluderanno tutte Sabato mattina, quindi mancano ancora un paio di giorni, tuttavia vi consiglio di dare un'occhiata alla lista per vedere se c'è qualcosa che possa interessarvi.

Ecco qui l'elenco delle aste:

http://shop.ebay.it/merchant/sembee

Non vorrete mica costringermi a portare tutti questi giochi con me nella nuova dimora?

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:

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...

2Sep/080

## Si inasprisce la guerra dei browser

UPDATE: Google Chrome è stato rilasciato in versione Beta per Windows e può essere scaricato da http://www.google.com/chrome.

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!

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ò.