Passando da milano un paio di giorni fa i rubyisti locali hanno avuto l’ottima idea di organizzare un meeting.
In fondo un po’ me lo meritavo, essendo stato presente al primo storico RSC dovevano farmi vedere come siam cresciuto in due anni :)

E cavolo se siamo cresciuti! La prima volta eravamo in cinque o sei, se non ricordo male, stavolta eravamo una trentina! Note sparse:

  • l’accoglienza di mikamai è stata ottima. Anche perché mi hanno fatto stare da loro per due giorni oltre alla sera del meeting :)
  • ben tre donne!
  • nei talk si è parlato, tra le altre cose, di tecnologie di scraping, amazon EC2, assistenti virtuali, visualizzazione di social network con Processing
  • all’ultimo momento ho scoperto di dover fare un mini-talk anche io. Come speaker faccio schifo. La micropresentazione è online, ma siccome è stata accroccata in fretta e con il takahashi method non credo ci capirete niente. Però se volete chiedere fate pure :)
  • Matteo Vaccari ha tenuto una pico-sessione al proiettore presentandoci un problema interessante:

    supponiamo di voler partizionare/ordinare un array in modo che tutti gli elementi X vengano prima di quelli Y.
    Ad esempio, ordinare [1,2,3,4,5,6,7] in modo che tutti i pari vengano prima dei dispari.
    La cosa va fatta in place, in modo che lo spazio usato sia costante (qualche variabile ausiliaria va bene). E in tempo lineare.
    Questo è facile, effettuando uno scan della lista e scambiando ogni volta l’elemento i-esimo con l’elemento j-esimo, dove i è inizialmente zero (incremento quando non scambio) e j è array.length -1 (fine array, decremento quando scambio).
    In questo algoritmo l’invariante è che ogni passo riduce la dimensione dell’array lasciando le parti esterne ordinate (l’inizio che si è già passato perché composto da elementi “minori” e la fine che si è allontanata perché composta da elementi “maggiori”).
    Come si fa con una partizione in tre (minori, medi, maggiori) ?

    Divertitevi, sulla ML c’è un thread (spezzato in due) a riguardo

  • io avevo anche promesso a un paio di persone di dargli i dati precisi di un altro problemino, ma non mi ricordo a chi l’ho detto. Beh in ogni caso il problema è il seguente:

    Dato un array A di lunghezza N vogliamo produrre in output un array B della stessa lunghezza in cui ogni a ogni elemento A[i] corrisponda il prodotto di tutti gli elementi dell’array tranne se stesso.
    Ad esempio per A= [1,2,3,4] avremmo B= [2*3*4, 1*3*4, 1*2*4, 1*2*3] = [24, 12, 8, 6].

    Ovviamente, in tempo lineare.
    Se ora state per dire “basta usare la divisione..” beh ovviamente no, senza usare divisione, modulo e similari.

  • tra le altre cose di cui mi ricordo di aver parlato: couchdb, linguaggio io, bloody mary, le cameriere, django, biologi, ungheria, irlanda, etc etc
  • è sempre bello incontrare persone che hai sempre letto sullo schermo e scoprire che hanno una terza dimensione

Mi scuso con quelli che mi son stati vicini perché credo di aver parlato troppo e ascoltato poco, ma mi ha fatto molto piacere incontrarvi, spero si possa fare di nuovo, e d’altronde sarebbe anche ora di fare un nuovo RSC meeting a roma :)