La comunità Italiana di programmatori Haskell.
In un’uggiosa giornata autunnale, venti intrepidi Haskellers provenienti da varie città italiane si sono incontrati a Bologna, ospitati dall’associazione Kilowatt, nella particolare e suggestiva “Gabbia del Leone”, situata nel cuore dei Giardini Margherita.
Seguendo un approccio ormai collaudato, abbiamo formato piccoli gruppi di lavoro, in modo che a ognuno fosse possibile partecipare, in maniera attiva e alla pari, ad uno o più progetti di proprio gradimento - il tutto in maniera estremamente libera e amichevole.
Un gruppo di volenterosi newbie si è cimentato su esercizi, presi dall’ottimo Haskell Programming from first principles. Come spesso accade, gli esercizi si sono rivelati tutt’altro che semplici - e un confronto con persone più esperte è stato decisamente utile. Ecco un resoconto di quanto imparato.
Paol(in)o ha spiegato l’utilizzo dei FingerTree: una struttura dati utilizzata per modellare sequenze - che sono anche alla base del modulo Data.Sequence
. Il formato della presentazione è stato molto gradito: circa cinque ascoltatori si sono riuniti intorno ad una lavagna, per delineare differenti ipotesi risolutive. L’interattività della spiegazione ha permesso a tutti di capire meglio l’argomento trattato.
Si è organizzato un piccolo simposio per discutere della situazione del web-development in Haskell. Abbiamo considerato principalmente le differenze tra l’approccio FRP (reflex) e quello basato su react (react-flux), volgendo particolare attenzione alle differenze di struttura generale e alla componibilità delle strutture create.
Abbiamo esplorato i problemi di concorrenza che si possono presentare in un’applicazione di rete, prendendo a pretesto un prototipo di gioco multiplayer online che permettesse ai client di accedere ad una scacchiera condivisa applicando una semplice regola: due utenti non possono stare nella stessa cella. Per fare ciò, abbiamo introdotto un’architettura client/server mediante websocket e uno stato condiviso sul server utilizzando MVar. Dopodiché, abbiamo simulato una race condition - introducendo un tempo di attesa tra il primo controllo di disponibilità della cella e l’effettiva modifica: a questo punto, due client che entravano nella stessa cella contemporaneamente potevano farlo! Sostituendo MVar con TVar - tratto da STM - abbiamo ottenuto il controllo della transazione e la possibilità di individuare modifiche esterne allo stato - che abbiamo deciso di risolvere mantenendo il secondo client fermo nella posizione precedente.
Un gruppo di persone ha svolto esercizi utilizzando la libreria Quid2, sotto la guida del suo autore: Titto.
Ponendosi come obiettivo la realizzazione di un semplice client per le web API di Random.org, un gruppetto di nuovi arrivati ha avuto modo di sperimentare l’I/O in Haskell e - coadiuvati da sviluppatori più esperti - di svolgere un primo approfondimento sulla teoria delle monadi.
Il pranzo insieme, i momenti di retrospective durante il meetup, gli scambi di consulenza fra i diversi gruppi e una gita serale/notturna nel centro di Bologna con degustazione di tigelle hanno permesso a tutti di conoscersi.
Ringraziamo gli autori di Haskell Programming from first principles per averci messo a disposizione alcune copie del libro, regalate poi a cinque fortunati Haskellers, e l’associazione Kilowatt, per averci ospitato.
Dove: Bologna, Giardini Margherita, nella struttura “La Gabbia del Leone”, presso “Le Serre dei Giardini”.
Quando: Sabato 19 Novembre, dalle 10:00 alle 18:00.
Chi: chiunque sia interessato alla programmazione funzionale, indipendentemente dal suo livello di esperienza.
Cosa faremo: lavoreremo in gruppi (2-6 persone circa) su diversi progetti. Ogni persona può scegliere il progetto che vuole, saranno date delle indicazioni sul livelo di conoscenza richiesto per contribuire. Lo scopo è provare a utilizzare Haskell per un progetto concreto, “toccare con mano” il modo che hanno altri di lavorare e di condividere le esperienze nelle numerose pause di gruppo. Lo scopo è puramente didattico, quindi nessuna ansia.
Cosa portare: un computer portatile e un ambiente Haskell configurato.
Come arrivare: dalla Stazione Centrale dei Treni di Bologna, prendere l’autobus 33 (frequenza 15 minuti) e scendere alla fermata “Giardini Margherita” e/o “Porta Santo Stefano” (circa 20 minuti di viaggio). Entrare nei Giardini Margherita, dall’ingresso di Via Castiglione 136 o Via Polischi 9, e recarsi presso “Le Serre dei Giardini”, alla struttura “La Gabbia del Leone”.
Grazie a chi: all’associazione Kilowatt che ha messo a disposizione gratuitamente la sala.
Per iscriversi: https://www.metooo.io/e/haskell-day-bologna
Abbiamo aperto due doodle per decidere insieme il luogo e la data del nostro incontro autunnale:
Fateci sapere le vostre preferenze e a presto!
Ci siamo trovati Sabato 26 Marzo, a Calenzano, in provincia di Firenze, ospitati da Develer.
Partecipanti, fila in piedi (a partire da sinistra): Luca Benci, Alberto, Daniele D’Orazio, Carlo Nucera, Nicola Bonelli, Francesco Ariis, Matteo Baglini, Salvatore Veneziano, Marco Santamaria, Emiliano Anichini.
In ginocchio: Pasqualino Assini (Titto), Massimo Zaniboni, Ruggero D’Alò, Vitalij Zadneprovskij, Nadir Sampaoli, Aurelien Rainone, Francesco Gazzetta.
Dietro, a fare la foto: Luca Molteni :-)
Ritrovo alle 10:00, con la sede di Develer pronta a ospitare, nonostante sia il Sabato prima di Pasqua, il nostro terzo meetup: diciotto programmatori appassionati di Haskell, provenienti da tutta Italia, e pronti a condividere una giornata di programmazione funzionale e divertimento.
Dopo un breve sondaggio sulla preparazione tecnica dei presenti, sono stati proposti i seguenti progetti, su cui lavorare a gruppi:
Sabato 26 Marzo, dalle 10:00 alle 18:00, ospitati da Develer
Develer Srl
via Mugellese 1/A
50013 Campi Bisenzio - Firenze - Italia
Per chi viene in treno:
Ci siamo trovati a Bologna, Sabato 17 Ottobre, presso T3Lab, e sponsorizzati da BioDec.
Ci siamo trovati a Milano, Sabato 4 Luglio, ospitati da Mikamai
Da sinistra verso destra: Matteo Acerbi, Ruggero D’Alò, Luca Molteni, Francesco Ariis, Carlo Nucera, Massimo Zaniboni, Stefano Baghino, Vitalij Zadneprovskij.