# Claudio Cherubino's blogLife of a Googler

17Apr/091

## La Sicilia che fa sul serio!

Certo che in periodo di elezioni non c'è proprio alcun limite su quello che si vede nei manifesti.

Guardate chi viene a parlare di serietà:

Vi dice niente? Forse questa foto vi aiuterà a ricordare di chi stiamo parlando:

Ancora niente? Beh, non mi resta che affidarmi a YouTube:

15Apr/091

## Luhn algorithm in F#

The Luhn algorithm is a simple error detection formula based on the modulus operator which is widely used to validate credit card numbers or Canadian Social Insurance Numbers.

This checksum function can detect any single-digit error and operates verifying the number against its included check digit.

The algorithm is made of three steps:

1) starting from the rightmost digit and moving left, double the value of every second digit (or digits in even positions);
2) sum all resulting digits together with the original ones that were untouched;
3) if the result is a multiple of 10 (i.e. the result modulus 10 is zero) then the input value is valid.

This simple algorithm can be implemented with a few F# lines of code:

```#light
open System

let double_digit n =
let double = n * 2
if (double > 9) then
double - 9
else
double

let rec luhn_loop isEven acc input =
match input with
| [] -> acc % 10 = 0
| x :: xs -> let num = Int32.Parse(x.ToString())
if (isEven) then
luhn_loop (not isEven) (acc + (double_digit num)) xs
else
luhn_loop (not isEven) (acc + num) xs

let luhn n = n.ToString() |> Seq.to_array |> Array.rev |> Seq.to_list |> luhn_loop false 0
```

I separated from the main loop the double_digit function, which takes a digit and multiplies it by two. If the result has two digits (i.e. it is greater than 9) with sum together the two digits (i.e. subtract 9 from the number), otherwise we simply return it.

The luhn_loop function iterates over the list of digit that is obtained by taking the original number, converting it into an array of digits and reversing it.
Inside each iteration we take into account a single digit, double it if it is placed in an even position and sum it to the accumulator.

When the list of digits to be examined is empty we are done with the loop and we just have to check if the value stored in the accumulator is evenly divisible by 10.

9Apr/098

Non so quanti di voi la pensino come me ma più tempo passa e più sono disgustato da ciò che Facebook sta diventando.

Se provo a guardare la mia bacheca scopro che è stata totalmente colonizzata da tre categorie di utenti, che potremmo definire "fancazzisti", "comunicatori" e "sognatori".

I primi a quanto pare non hanno niente di meglio da fare che passare le proprie giornate a fare test che nemmeno il numero estivo di Novella 2000 avrebbe il coraggio di pubblicare, per arrivare a scoprire delle verità fondamentali del tipo "In quale membro dei Village People ti rispecchi maggiormente" o "Che specie di tubero eri nella tua vita passata".

Ovviamente i test non sono l'unica attività dei fancazzisti, ci sono anche i giochini idioti da provare e la ricerca (o creazione) di gruppi a cui iscriversi.
Chi non sente l'esigenza di dichiarare la propria appartenenza alla sfilza di persone che "odiano i Lunedì" o "quelli che preferiscono Pelè a Maradona"?

I "comunicatori" invece sono persone che a quanto pare sentono la necessità di far sapere al prossimo tutto ciò che li riguarda, da quante volte vanno in bagno a dove trascorrono ogni momento della loro esistenza.
Il massimo che ho visto, e non sto scherzando, è una ragazza che scrive nella propria bacheca tutto ciò che le comunica il proprio ginecologo!

La cosa bella è che se parlassi con queste stesse persone per strada sono sicuro che molte di esse non rivelerebbero nemmeno la metà delle informazioni personali che pubblicano su Internet!

Infine abbiamo il gruppo che più mi affascina, quello dei "sognatori", cioè di quelle persone che pensano di cambiare il mondo grazie a Facebook.

Si sa che i politici in Italia fanno quello che vogliono e non danno conto nemmeno agli elettori che li hanno votati, eppure secondo alcuni (e non sono pochi!) dovrebbero prestare attenzione alle richieste che arrivano su Facebook, ad esempio per la riduzione degli stipendi dei parlamentari o, più recentemente, lo spostamento dei fondi destinati al ponte sullo Stretto di Messina come aiuto per le vittime del terremoto in Abruzzo.

Esiste comunque un tratto che accomuna gli appartenenti a tutti questi gruppi: il desiderio di pubblicare le proprie attività in homepage e soprattutto invitare a tappeto l'intera lista dei propri contatti a perdere il proprio tempo come fanno loro, aumentando a dismisura la quantità di spazzatura che si riceve.

Io ormai accedo sempre più raramente a Facebook e quando lo faccio passo metà del tempo a cancellare e bloccare gli inviti che ricevo, eppure la crescita di questo social network, soprattutto in Italia, è sempre costante, sintomo che alla fine questo è ciò che veramente la gente si aspetta da Facebook.

Recentemente mi sono convinto che per molta gente Facebook sia semplicemente un ottimo modo per stare in ufficio e far trascorrere il tempo che li separa dalla fine della giornata lavorativa, una sorta di alternativa moderna ai cruciverba, ma almeno quelli richiedevano l'utilizzo del cervello!

Sono solo io a pensarla in questo modo? Mi dite che ci trovate di interessante in un servizio di questo tipo?