Vai al contenuto

DurHack

Pubblicato:

Partecipare ad una hackathon è sicuramente un’esperienza che mi mancava. Ne avevo sentito parlare più volte, ma non avevo mai avuto l’occasione o la compagnia per farlo.
Quindi, sfruttando il mio proposito di fare cose nuove approfittando della mia situazione attuale, non ho esitato a confermare la mia partecipazione alla DurHack, una’hackathon organizzata dall’università di Durham.
A rendere il tutto più facile è stato il fatto che la computing society NUCATS di cui faccio parte si è messa in prima linea per organizzare il viaggio, offrendo di pagare addirittura il biglietto per il treno.

L’organizzazione

La prima cosa da fare è stata quella di formare un team. Tutte le persone interessate a partecipare sono state invitate ad un canale WhatsApp per organizzare il viaggio più comodamente. Molti ne hanno approfittato per iniziare a formare un team, dato che la competizione prevede gruppi di fino a quattro persone. Rispondendo all’appello di uno dei ragazzi, mi sono trovato a formare un team completo nel giro di qualche minuto.

Il viaggio

Il raduno alla stazione di Newcastle era fissato per le 08:00 di Sabato 4 novembre. Mi sono svegliato alle prima del solito, mi sono preparato e mi sono recato alla stazione, arrivando perfettamente in orario. Nell’attesa che arrivassero tutti, noi tre membri del team abbiamo scambiato qualche parola per conoscerci. Dopodiché ci siamo diretti al binario e abbiamo preso il treno per Durham. Il tragitto in treno è stato particolarmente breve, ma all’arrivo abbiamo scoperto che la strada per l’università sarebbe stata più lunga del previsto, con un percorso di circa 30 minuti a piedi costeggiando il fiume.

Arrivo alla location

Giunti a destinazione, siamo stati accolti dallo staff che ha registrato la nostra presenza e fornito una maglietta ed un badge. Siamo stati invitati a scegliere una postazione ad uno dei tantissimi tavoli messi a disposizione. In base alla zone in cui ci saremmo seduti, avremmo anche selezionato implicitamente uno dei quattro mega-team, una novità di quest’anno. Nel nostro caso, abbiamo scelto in maniera completamente casuale il mega-team cygnus.

DurHack

Prima che la competizione iniziasse ufficialmente, abbiamo avuto un po’ di tempo per fare un giro degli stand organizzati dai tanti sponsor presenti. Come ogni occasione di questo tipo, c’erano tanti gadget offerti al prezzo di ascoltare per qualche minuto l’azienda di turno. Avendo incontrato una ragazza veterana in questo genere di eventi, mi sono lasciato guidare e ho raccolto un bel po’ di oggettini: penne, adesivi, un caricabatterie wireless, un portachiavi, un cubo di rubik, una borraccia ed un thermos.

Presentazione

Posato il bottino, ci siamo diretti alla sala principale per la presentazione dell’hackathon. Tutti gli sponsor principali hanno spiegato le loro challenge, mentre il team organizzatore ha illustrato le regole e le modalità di svolgimento, incluso il tema principale di quest’anno: “Infinity”.

Inizio della competizione

Energizzati dalla presentazione, abbiamo subito iniziato a fare brainstorming per trovare un possibile progetto. Nel frattempo abbiamo anche pranzato, dato che tutti i pasti erano offerti dall’organizzazione.

L’idea a cui siamo giunti è stata qualcosa che ho proposto io: un mercato digitale con un’interfaccia 3D a scorrimento infinito in cui i venditori utilizzano l’intelligenza artificiale per rispondere alle domande dei clienti. Se sembra un’idea folle da realizzare in 24 ore, è perché lo è.

Ci siamo quindi messi al lavoro. Dopo aver individuato la libreria frontend per creare l’interfaccia 3D, Three.js, io mi sono messo a lavorare sul backend.

Le difficoltà

Ci siamo resi conto ben presto che il progetto iniziale era fin troppo ambizioso. Come se non bastasse, nessuno aveva particolari esperienze con nessuna delle tecnologie che stavamo utilizzando. Giunta la sera, a cena ci siamo rassegnati all’idea di dover ridimensionare i nostri piani. Invece di sviluppare un ambiente 3D da zero con scorrimento infinito, ci saremmo limitati a riutilizzare uno già presente fra gli esempi della libreria.
Invece che puntare a creare uno shop generico, dovendo quindi prelevare i dati da una qualche API non facile da reperire, ci siamo accontentati di un dataset di Film e Serie TV da Kaggle.
Per finire, non riuscendo a trovare nessuna API che facesse al caso nostro, abbiamo completamente rinunciato all’idea di inserire una intelligenza artificiale.

La notte

Il mio piano originale era quello di tornare a casa per dormire, ma preso dall’entusiasmo e completamente immerso nel lavoro, ho deciso di rimanere. Una mossa furba che uno dei miei compagni ha fatto è stata quella di prenotare una stanza in un hotel vicino, dividendola con un altro ragazzo, in maniera di poter andare lì per lavarsi e riposare un po’.

Intanto, nel Teaching and Learning Centre di Durham, le ore sono volate come non mai, grazie anche ad una simpatica pizza di mezzanotte, e senza riposare nemmeno un minuto, mi sono ritrovato a vedere il sole sorgere.
È stata quantomeno una nottata piuttosto fruttuosa: dal mio lato, ho sistemato il dataset con Pandas, l’ho inserito su Google BigQuery e ho creato un’API per accedervi tramite delle Cloud Functions. Per finire, ho inserito anche una funzionalità di Caching basata su Redis.
Ovviamente non potevano mancare le github actions per automatizzare il deploy del frontend.

Alla fine ero davvero stremato, quindi mi sono concesso un’ora di sonno. Al risveglio ero ancora più rintontito di prima, ma è bastato qualche minuto per rimettermi in piedi.

Il team che ha resistito fino alla fine. Da sinistra a destra: Domantas Gruodis, Achilles Wesley Sutrisna ed Ernesto Casablanca
Il team che ha resistito fino alla fine. Da sinistra a destra: Domantas Gruodis, Achilles Wesley Sutrisna ed Ernesto Casablanca

La valutazione

Le ultime ore sono state dedicate a sistemare il frontend e a preparare la presentazione. Purtroppo siamo stati anche abbandonati del tutto dal quarto membro del team, che ha deciso bene di non ritornare dopo essere andato a dormire. Oramai stanchi e un po’ demotivati dalle tante funzionalità che non eravamo riusciti ad implementare, abbiamo passato un po’ di tempo a chiacchierare sulle nostre esperienze ed aspettative.

Dopo aver caricato il progetto sulla piattaforma DevPost, siamo stati avvicinati a turno dai vari giudici per tutte le categorie in cui ci siamo auto-nominati. La presentazione è stata sempre abbastanza simile, e prevedibilmente nessuno è rimasto particolarmente impressionato dal nostro lavoro.

Io che provo a convincere i giudici che il nostro lavoro è assolutamente valido
Io che provo a convincere i giudici che il nostro lavoro è assolutamente valido

Il finale

Alla fine della competizione, siamo stati invitati a tornare nella sala principale per la premiazione. Ogni sponsor ha consegnato i propri premi ai vincitori delle rispettive categorie, e per finire sono stati annunciati i 6 progetti candidati per il premio finale.

Fra quelli che mi hanno colpito di più non posso non menzionare un sistema di tracciamento video che inserisce le persone che vi passano davanti in un server di Minecraft, un sistema che utilizza Github per salvare lo stato di un mondo di Minecraft, con tanto di commit, rollback e fork, un videogioco roguelike ambientato su un treno e, ovviamente il vincitore, un sistema di riconoscimento della scrittura a mano in grado di leggere i caratteri da un foglio di carta e trasformarli in testo digitale, offrendo quindi funzionalità di Text-to-Speech.

Abbiamo anche scoperto che il nostro mega-team ha vinto. Per questo abbiamo ricevuto in premio una tazza a tema, che si aggiunge ad una borraccia, una borsa ed un’agendina offerte dall’organizzazione a chi avesse totalizzato un certo numero di punti con delle challenge arbitrarie durante la durata di tutto l’evento.

I gadget

Una menzione speciale va fatta per i gadget che le aziende sponsor ci hanno donato durante l’evento. Sebbene mi aspettassi di trovare qualche stand con sticker e penne, sono rimasto piacevolmente sorpreso dalla varietà e quantità di oggetti che ho ricevuto. Oltre a quelli già menzionati, ho ricevuto anche un paio di borracce, una maglietta, qualche borsa e tazza, dei notebook, una pezzetta per gli occhiali, una paperella e un cubo di Rubik.
Ho anche approfittato della sfida lanciata da uno degli sponsor per accalappiare un giubottino impermeabile ed antivento niente male, sebbene un po’ piccolino. Il prezzo da pagare, però, è stato il mio orgoglio, a causa di una serie di indovinelli che sono riuscito a sbagliare più volte.

I gadget ricevuti durante l'evento
I gadget ricevuti durante l'evento

Il ritorno

Stanco ma tutto sommato soddisfatto, mi sono diretto alla stazione per prendere il treno di ritorno assieme ai miei compagni di avventura. Il treno che avremmo dovuto prendere ha subito un ritardo di 20 minuti, ma non ci siamo preoccupati più di tanto. Arrivato a casa dopo essermela fatta a piedi dalla stazione, a cause di una serie di coincidenze sfortunate, ho anche avuto modo di fare una chiamata con degli amici ed esplorare un po’ la città durante la notte del 5 Novembre.

Diario di viaggio