Esattamente una settimana fa, mentre poltrivo nel mio letto godendomi un po’ di meritato riposo, ho ricevuto una chiamata da mia sorella.
Chiecchierando del più e del meno, mi ha suggerito di partecipare ad un’altra hackathon.
Effettivamente non avevo ancora avuto occasione di replicare l’esperienza decisamente positiva della DurHack.
Mi sono immediatamente informato sugli eventi in programma e ho trovato la AdaHack, che si sarebbe tenuta ad Edimburgo esattamente una settimana dopo.
L’evento, della una durata di 12 ore, è organizzato da Hoppers, una organizzazione con lo scopo di tutelare le minoranza nel campo dell’informatica.
Poiché le informazioni disponibili in merito alla nuova edizione non erano moltissime e una clausula del regolamento limitava la partecipazione a studenti dell’università di Edimburgo, ho deciso di chidere qualche delucidazione all’account di Instagram dell’evento.
Mi hanno prontamente risposto che chiunque sarebbe stato il benvenuto.
Quindi ho immediatamente comprato i biglietti del treno, mi sono registrato come partecipante e mi sono preparato mentalmente a vivere un’altra giornata molto intensa.
Il viaggio
Nonostante non avessi fatto segreto dei miei piani con gli altri dottorandi, prevedibilmente nessuno di loro era interessato a partecipare con me.
Mi sono un po’ pentito di non aver presentato questa opportunità anche sul gruppo di NUCATS.
Forse avremmo potuto formare un gruppetto e saremmo potuti andare tutti insieme.
Invece mi sono ritrovato a viaggiare da solo.
Anche se ammetto che potermi organizzare in completa autonomia non mi dispiace.
L’itinerario è comunque piuttosto lineare, tutto sarebbe dobuto filare liscio.
L’unica pecca è che sarei arrivato per le 09:30 mentre l’evento sarebbe iniziato circa un’ora prima con il check-in.
Il primo impatto con la città è stato senza dubbio particolare. Uscito dalla stazione, ho avuto qualche difficoltà a salire sul ponte che mi avrebbe condotto a destinazione. Prima di capire dove fosse la lunghissima gradinata che mi avrebbe portato in cima, sono persino finito in un catiere abbandonato.
AdaHack
Fortunatamente, da quel momento in poi, non ci sono stati ulteriori deviazioni impreviste. Ad ospitare l’evento è stato il dipartimento d’informatica di Edimburgo, sebbene si siano limitati a mettere a disposizione solo il piano terra. Sin da subito è stato chiaro che le dimensioni dell’evento non sarebbero state paragonabile a ciò che ho vissuto a Durham. Mi ha dato l’impressione di qualcosa molto più semplice, organizzato alla bene e meglio e senza troppre pretese. Non che ci sia niente di male, alla fine dei conti.
Al mio arrivo mi sono registrato alla reception, ho ricevuto il ticket che mi avrebbe garantito sia il pranzo che il libero ingresso all’edificio e mi sono subito diretto a cercare un team che mi potesse ospitare. La mia ricerca è terminata immediatamente, dal momento che ho trovato subito 3 altri ragazzi che sembrava stessero proprio aspettando me.
Presentazioni
Le presentazioni sono state tutte estremamente concise. Le poche aziende presenti sono andate subito al punto, presentando ciascuna la propria sfida. Dopo un po’ di riflessione, abbiamo deciso di intraprendere la challenge di Scott Logic.
Il progetto
L’obiettivo della competizione che avremmo affrontato era l’implementazione di un controller per un giochino molto simil a Starcraft.
A comando di un plotone di robottini, li avremmo dovuti guidare alla vittoria, collezionando risorse ed eliminando i robot rivali.
Ci è stato dato accesso ad una istanza di Cloud9 per poter scrivere il codice, che poi sarebbe stato utilizzato per eseguire delle simulazioni di un massimo di 500 step.
Purtroppo la piattaforma non aveva sufficienti risorse per gestire le 4 connessioni dei membri del team, men che meno eseguire il programma.
Quindi, piuttosto che affidarci al cloud, ho optato per creare un semplice setup in locale, e ho continuato a sviluppare dal mio laptop, risparmiandomi stuttering e problemi di connessione.
I primi passi sono stati legati all’implementazione di un grafo per supportare un algoritmo di pathfinding come A*, con la difficoltà aggiunta che i robot avevano la possibilità di superare i limiti dlela mappa per spuntare dall’altro lato. Senza contare la possibilità degli agenti di muoversi in diagonali. Questi due semplcifi dettagli hanno complicato di non poco il calcolo di nodi vicini e distanza fra due nodi.
Le difficoltà
La vera sfida, però, è stata implementare la logica di esplorazione della mappa.
Non avendo nessuna esperienza in manteria, e non riuscnedo a trovare nulla di convincente online, mi sono rassegnato a dividere l’intera area in sezioni 11x11, il range visuale che ogni robottino aveva, ed assegnare un settore ad ognuno di questi.
Sebbene nella mia testa sembrasse funzionare piuttosto decentemente, le simulazioni che siamo riusciti a fare hanno confermato il contrario.
Per qualche motivo che continuo ad ignorare, grossi gruppi di agenti continuavano a dirigersi verso la stessa destinazione, noncuranti della posizione assegnata loro.
Ci potrebbero essere infiniti motivi per questo comportamento.
Probabilmente c’è qualche errore nell’algoritmo di pathfinding, magari i comandi non sono parsati correttamente, forse alcune direttive si contraddicono.
Con il poco tempo a disposizione, speso nel condurre simulazioni che talvolta nemmeno terminavano, non sono riuscito ad individuare la causa del problema.
I successi
Sebbene il risultato finale non sia del tutto soddisfacente, ci sono comunque diversi aspetti che mi rendono fiero del lavoro svolto.
Innanzitutto posso vantare una autorialità incontrastata su tutto ciò che siamo riusciti a produrre.
Gli agenti, per quanto lontani dal comportamento ideale, manifestano comunque una certa intelligenza.
Sono in grado di evitare gli ostacoli, dirigersi verso il collezionabile più vicino e pattugliare una zona.
Inoltre, se uno di questi individua la base nemica, tutti i robot vi ci si dirigono immediatamente con lo scopo di distruggerla.
Mi arebbe piaciuto implementare un sistema di esplorazione ben fatto e delle strategie di attacco e difesa, ma quel poco che c’è è sufficientemente funzionante.
Conclusione
Questa esperienza mi ha ricordato come la velocità nella scrittura del codice non è certo il mio forte, e 6 ore scarse non mi sono sufficienti per realizzare qualcosa senza avere già un idea precisa sul come e perché ad ogni passaggio. Tuttavia, è stata una mezza giornata davvero divertente, forse anche più delle 24 ore piene che ho passato a Durham.
La compagnia è stata determinante.
Magari non sono ancora dei grandissimi informatici, ma tutti e tre gli altri membri del team ce l’hanno messa tutta per stare al mio passo e darmi una mano.
Ho visto in loro la scintilla che è in grado di fare la differenza.
Parlando con loro ho anche potuto aggiungere qualche tassello al puzzle sconfinato che sto cercando, pian piano, di popolare.
Ogni elemento cristallizza in un immagine sapientemente dipinta dal narratore vicende ed esperienze di persone in realtà o culture che non ho mai incontrato prima d’ora.
Una mezione speciale in questo senzo va ad Altug.
Abbiamo chiacchierato parecchio durante la giornata.
Così ho scoperto che, pur avendo origini turche, ha fatto le superiori in Romania prima di trasferirsi ad Edimburgo per l’università.
Se ci sarà occasione mi farebbe piacere incontrare nuovamente lui e gli altri.
Magari l’hackathon a Newcaslte potrebbe essere la scusa perfetta.
Sarebbe infine ingiusto non menzionare anche il mio peccato più grande. Conscio di trovarmi a kilometri dal critico giudizio di chiunque al di fuori di me, ho deciso di passare al lato oscuro e di provare una pizza con l’ananas che ci è stata offerta. Non so bene come gestire il poterla reputare piuttosto buona.
Gadget
In linea con le dimensioni ridotte dell’evento, non c’era una grande offerta per quanto riguarda i gadget. La maggior parte delle aziende si è limitata a distribuire delle penne qualche sticker.
Diario di viaggio
- 03/02/2024
- 06:00 Sveglia
- 07:10 Uscita da casa
- 07:30 Arrivo in stazione
- 07:44 Partenza Treno
- 09:20 Arrivo Edimburgo
- 09:40 Arrivo al dipartimento
- 10:35 Inizio Della competizione
- 13:14 Pranzo
- 18:30 Fine della competizione
- 20:30 Partenza dal dipartimento
- 20:56 Partenza treno
- 22:20 Arrivo Newcaslte
- 22:40 Arrivo a casa