Progetti
Una lista di tutti i progetti a cui ho lavorato, catalogati per progetti lavorativi, universitari e personali.
Non sono presenti progetti di piccole dimensioni o esperimenti vari, reperibili comunque (forse) sul mio GitHub.
Gayadeed
Descrivere il progetto Gaya a parole non è per niente semplice. Si tratta di un software nato da InfoCert (che offre servizi di firma digitale) il cui obiettivo è automatizzare quanto più possibile le procedure di firma (legale, eIDAS) dei documenti tramite applicativo web e mobile (InfoCert ci metteva solo le loro API, delle orrende schifezze SOAP). Ho progettato e realizzato il backend della piattaforma, che ha emesso Firme Elettroniche Qualificate (QES, eIDAS) per oltre 50.000 utenti, incapsulando le API SOAP legacy della certification authority dietro un layer di servizi in Go (integrare MTOM su quegli endpoint mi è costato anche una patch a gowsdl, poi accettata upstream). L'architettura è multi-tenant con isolamento per schema PostgreSQL dedicato per ciascun cliente, ognuno dei quali processa migliaia di firme legalmente valide a settimana. I clienti che erano interessati al progetto erano tutti diversi e posizionati sul loro "verticale" di riferimento: agenzie di mediazione (per i contratti di locazione e vendita di case, cliente principale: FIAIP), avvocati (per le procedure legali di antiriciclaggio e verifica formale, cliente principale: Giuffrè Francis Lefebvre), commercialisti (Ordine dei Commercialisti di Milano, per cui abbiamo digitalizzato l'intero processo di iscrizione dei tirocinanti all'Albo, in collaborazione con Oracle, dalla generazione documentale conforme alla firma qualificata fino alla conservazione a lungo termine). Per rispettare GDPR ed eIDAS abbiamo implementato conservazione cifrata decennale dei documenti con residenza dei dati in UE, deployata direttamente nei data center milanesi del cliente. Abbiamo sviluppato di tutto e di più nel corso degli anni, collaborando con un numero enorme di aziende. Questo progetto mi ha aiutato a capire quanto sia impossibile creare una piattaforma che faccia felici tutti. Meglio sviluppare software più mirato e intenzionale, piuttosto che adattare processi tra loro distaccati in modo inutile. Per me è stato molto formativo ed educativo. Ho anche capito che in Italia il settore dello sviluppo software è in gran parte fuffa inutile. In definitiva, ho fatto grande tesoro dell'esperienza.
Anno: 2021 - 2024
Categoria: Lavoro
Tech Stack: Java + Go + Rust + Python (BE), Vue + React + Angular (FE), PostgreSQL, Kubernetes
Vectis - Wallet self-sovereign su Cosmos
Vectis è uno smart contract wallet self-sovereign per l'ecosistema Cosmos, sviluppato assieme a NymLab e andato live sulla mainnet di Juno con circa 10.000 utenti. Ho realizzato il client sotto forma di estensione per browser in React e TypeScript, e sono stato uno dei tre ingegneri che ha scritto gli smart contract in Rust (CosmWasm), inclusa la custody basata su guardian: dei soggetti designati possono congelare gli asset e detengono l'autorità di recovery delle chiavi. Tutto il materiale crittografico resta lato client, con storage locale cifrato e supporto per hardware wallet; isolamento dei content script e scoping dei permessi non erano "best practice" ma requisiti di sicurezza portanti, dato che un bug lì significa perdere i fondi degli utenti. È il progetto in cui ho imparato davvero cosa vuol dire scrivere codice dove non esiste un rollback.
Anno: 2022 - 2023
Categoria: Lavoro
Tech Stack: Rust + CosmWasm (Smart Contracts), React + TypeScript (Estensione browser)
Fondazione Pugliese per le Neurodiversità - Backoffice e app mobile
La Fondazione Pugliese per le Neurodiversità è un ente del terzo settore di Andria che assiste persone con neurodiversità certificata, in particolare disturbi dello spettro autistico, e che ha aperto il Centro Polivalente per l'Autismo "FPN 0-99 anni". Per la Fondazione abbiamo realizzato il sistema che tiene insieme le persone seguite e chi le segue: un backoffice web per anagrafiche, prese in carico, calendario delle attività e gestione del personale, e un'app mobile usata da tre tipi di utenza diversa. Gli operatori (OSS, educatori, logopedisti, psicologi e psichiatri) e i tutor accedono al sistema direttamente sul campo, senza passare da un PC; le famiglie hanno il loro accesso, con le notifiche degli appuntamenti e delle attività in programma. Oggi il sistema copre 30 persone seguite, 17 operatori e 36 tutor. È uno di quei progetti in cui il dominio conta più della tecnologia: modellare male una presa in carico significa complicare la vita a chi lavora con le persone, non solo produrre un bug. Il progetto è stato consegnato e attualmente lo manteniamo.
Anno: 2025
Categoria: Lavoro
Tech Stack: Fastify + TypeScript (BE), Angular (FE), Flutter (App)
Tesseramento Sinistra Italiana
Sistema completo di tesseramento per Sinistra Italiana: registrazione di nuovi iscritti, rinnovo delle tessere e gestione dei pagamenti delle quote, integrando il gateway Numia per accettare carte di credito e debito, PayPal e bonifico. Da quando è online ha processato quasi 10.000 tesserati. La parte interessante di un tesseramento non è la form di iscrizione, ma tutto quello che ci sta attorno: gli stati intermedi di un pagamento, la riconciliazione tra quota versata e tessera effettivamente valida, e il fatto che i dati di un iscritto a un partito sono categorie particolari di dati ai sensi del GDPR, quindi da trattare con più attenzione della media.
Anno: 2025 - 2026
Categoria: Lavoro
Tech Stack: Fastify + TypeScript (BE), Svelte (FE)
Eternal Fall
Gioco realizzato alla Global Game Jam di Milano, in presenza presso la Event Horizon Game School Academy, assieme ad amici della community di Game Maker Italia, di cui faccio parte dal 2013 e a cui sono molto affezionato: 48 ore di sviluppo sul tema "roots", da cui è nato un albero dorato con radici che arrivano al centro della Terra e che da cinquant'anni terrorizza l'umanità. Pubblicato successivamente su GX.Games. Fare una jam in presenza è un'esperienza completamente diversa dal farla da remoto: si litiga meglio e si decide molto più in fretta.
Anno: 2023
Categoria: Personale
Tech Stack: GameMaker Language (GML)
Roller Blaze
Gioco mobile sviluppato per l'Opera GX Mobile Game Jam 2022 sotto il nome Flipped Ones Studio, che poi siamo in due: io al codice e WillShire alla grafica. La premessa: una civiltà aliena invade la tua città e tu la respingi sfrecciando sui rollerblade. Pubblicato su GX.Games, ha superato le 100.000 giocate uniche e ha vinto uno dei due premi in denaro da 2.000 dollari assegnati alle entry più giocate della jam (su oltre 300 partecipanti). Fare un gioco per una jam mobile insegna una cosa che nel backend non impari: se nei primi dieci secondi non è chiaro cosa devi fare, l'utente chiude e non torna più.
Anno: 2022
Categoria: Personale
Tech Stack: GameMaker Language (GML)
Sottosopra
Sottosopra è un'app mobile che comunica ai cittadini le chiusure stradali causate da lavori in corso, e altro. Essenzialmente mette in contatto la pubblica amministrazione con il cittadino in modo diretto, senza passare da social media o altre piattaforme più stringenti.
Anno: 2021
Categoria: Lavoro
Tech Stack: Go (BE), Flutter (App), React (FE)
Stocco - ERP e gestione magazzino
Software web-based mirato alla gestione di magazzino e spedizioni calendarizzate. Funzionalità offerte (a grandi linee): Sincronizzazione automatica inventario magazzino e ordini. Possibilità di creare preventivi, fatture e DDT. Collegamento con Fatture in Cloud per l'importazione delle autofatture ed emissione di fatture elettroniche (da qui è nato fatture-in-node, l'SDK open source che ho pubblicato). Collegamento con e-commerce. Gestione spedizioni con calendario consegne. Sono state anche implementate funzionalità più avanzate per la gestione della contabilità successivamente. Il software offre KPI sempre aggiornati e accurati per tutte le aree aziendali, dalla logistica alla contabilità.
Anno: 2021
Categoria: Lavoro
Tech Stack: Angular 10 (FE), Node.js + TypeScript (BE)
Darlene - Configurazione procedurale interattiva per il framework Elliot
Darlene è essenzialmente un metalinguaggio in JSON che descrive in modo dichiarativo la struttura di un'interfaccia, più un generatore di UI dinamica che da quello schema costruisce form sempre valide per il framework Elliot. Il framework Elliot è stato sviluppato dal SisInfLab del Politecnico di Bari per favorire la riproducibilità degli esperimenti in ambito di benchmarking di algoritmi di raccomandazione: l'obiettivo era permettere ai ricercatori (spesso non tecnici) di produrre configurazioni corrette senza scrivere YAML a mano, e senza hardcodare una form per ogni esperimento. La parte interessante è stata tenere il rendering performante con alberi di componenti generati a runtime, lavorando con l'algoritmo di reconciliation di React invece che contro di esso. Questo progetto è la mia tesi di laurea triennale.
Anno: 2021
Categoria: Università
Tech Stack: React + TypeScript (FE)
Blank Art Network
Abbiamo collaborato con il team di Blank Art Network per implementare alcune funzionalità speciali riguardanti i (allora popolari) mercati di NFT. In questo contesto ho imparato praticamente tutto ciò che so sul Web3 e NFT, appurando infine, metodicamente e formalmente, che erano, sono e sempre saranno una grandissima stronzata. La cosa importante di questo progetto è solo il fatto che ci ha permesso di entrare in collaborazione con NymLab, e quindi di lavorare a Vectis.
Anno: 2021
Categoria: Lavoro
Tech Stack: Solidity (Smart Contracts), Rust (BE)
PosteWay - REST API gateway per Poste Italiane
Software web-based che funge da gateway tra le API di Poste Italiane (in formato SOAP) e i clienti che vogliono integrare i servizi di Poste Italiane nei loro software. Offre un'interfaccia REST semplice e intuitiva per accedere alle funzionalità offerte dalle API di Poste Italiane, come la creazione di spedizioni, la tracciabilità delle spedizioni, la gestione delle etichette e tanto altro. Il software gestisce anche l'autenticazione e l'autorizzazione degli utenti, garantendo che solo gli utenti autorizzati possano accedere alle funzionalità offerte. Il divertimento vero è stato scoprire che il comportamento in produzione dei servizi SOAP di Poste divergeva dal WSDL pubblicato: ho dovuto fare reverse engineering dei contratti reali osservando le risposte del sistema, senza alcun supporto da parte del fornitore. Da quel lavoro è nato anche sapo, il generatore open source che pubblico su GitHub. Il progetto è stato sviluppato in collaborazione con GSPoste, che offre questo servizio ai propri clienti (prevalentemente amministratori di condominio) come valore aggiunto, a supporto di altri gestionali.
Anno: 2020
Categoria: Lavoro
Tech Stack: Node.js + TypeScript (BE)
EnoLog - Monitoraggio di cantine vinicole
App mobile per il monitoraggio di cantine vinicole. Permette di monitorare in tempo reale le condizioni ambientali della cantina, come temperatura, umidità, livello di CO2 e pressione, tramite sensori IoT. Il software è stato sviluppato in collaborazione con Elmod Srl, e realizzato per un esame universitario (Ingegneria del Software).
Anno: 2020
Categoria: Università
Tech Stack: React (FE), Node.js + TypeScript (BE), Flutter (App)
Neuvò - Segnalazioni cittadine anonime
Sviluppata per il Comune di Andria, Neuvò è l'app che consente al cittadino, in modo totalmente anonimo, di inviare segnalazioni al proprio Comune riguardanti illeciti come ad esempio l'abbandono di rifiuti, oppure presenza di amianto. Gli operatori del Comune possono visualizzare le segnalazioni tramite un portale web e valutarle da 1 a 5 stelle. Il cittadino riceve feedback immediato quando la sua segnalazione viene presa in carico e votata, incentivando lo stesso a usare l'app.
Anno: 2019
Categoria: Lavoro
Tech Stack: React (Backoffice), Flutter (App), Node.js + TypeScript (BE)
ClickCGIL - App per la CGIL Puglia
Sviluppata per la CGIL Puglia, ClickCGIL è l'app che consente all'utente di trovare la sede CGIL più vicina a lui e prenotare svariati servizi offerti dal CAF. L'utente può inoltre digitalizzare la propria tessera CGIL annuale e utilizzarla direttamente da app per accedere a ulteriori servizi riservati.
Anno: 2019
Categoria: Lavoro
Tech Stack: Angular 5 (Backoffice), Flutter (App), Java Spring (BE)
NoiXTe - Gruppo Megamark
Gruppo Megamark include catene di supermercati molto famose come Dok, Famila, IperFamila, A&O. Per questo cliente abbiamo sviluppato delle attività di gaming digitali incluse in procedimenti più ampi di marketing. A seconda del periodo dell'anno e delle festività calendarizzate vengono sviluppati di volta in volta giochi quali “il calendario dell’avvento” o la “ruota della fortuna” che vedono coinvolti migliaia di utenti. Questi giochi a premi sono stati pensati per essere perfettamente utilizzati sia da PC che da dispositivi mobile ed hanno come obiettivo finale la fidelizzazione del cliente. Tutti i giochi sono corredati da una piattaforma di gestione lato amministrazione atta alla raccolta dei dati, alla visualizzazione delle giocate e dei premi vinti. Tutte le attività di gaming sono perfettamente integrabili con i sistemi interni aziendali per la rendicontazione dei risultati ottenuti.
Anno: 2019
Categoria: Lavoro
Tech Stack: Vanilla JavaScript (Portale Web), React (Backoffice), Node.js (BE)
EtikONE - Gestione dei preventivi dei rotoli di etichette
Software web-based per la gestione dei preventivi dei rotoli di etichette adesive personalizzate. Permette di calcolare il prezzo di un rotolo di etichette in base a vari parametri, come la dimensione dell'etichetta, il numero di etichette per rotolo, il tipo di materiale, il numero di colori e tanto altro. Il software è stato sviluppato in collaborazione con Rotolificio Pugliese, un'azienda che produce etichette adesive personalizzate. Questo progetto nasce come traduzione di un enorme file Excel precedentemente usato per la gestione di tutto quanto (incluso un database interno allo stesso Excel).
Anno: 2018
Categoria: Lavoro
Tech Stack: Angular 5 (FE), Node.js + TypeScript (BE)
AppLab 2.0 - Editor di etichette adesive
Software web-based per la creazione di etichette adesive personalizzate e stampa in formato A4 basandosi sui modelli offerti da Rotolificio Pugliese. Possibilità di creare etichette con testo (anche curvato, con ombre e contorno), immagini (caricabili direttamente dal proprio PC), codici a barre, QR-code e tanto altro. È presente anche un sistema di stampa unione: importando un file CSV o Excel con i dati, è possibile creare etichette per ogni riga. Il software è stato sviluppato in collaborazione con Rotolificio Pugliese, un'azienda che produce etichette adesive personalizzate. Questo progetto è stato il mio primo in assoluto all'interno di Overzoom.
Anno: 2017
Categoria: Lavoro
Tech Stack: React (FE), Node.js (BE)
Vitruvia
Multicheat per CS:GO scritto interamente in C++ (oltre 50.000 righe) con injector manual mapper associato e un sistema di controllo abbonamenti in stile SaaS. Vitruvia Club è stato un prodotto a pagamento vero e proprio, con circa 30 clienti paganti, distribuito però solo su invito: nessun sito, nessuna pubblicità, tutto passaparola. Dopo l'abbandono del progetto l'ho reso open source (senza la parte di injector per motivi legali). Implementa tantissime funzionalità, tra cui: Aimbot, Triggerbot, Visuals (ESP, Glow, etc...), Skinchanger, Bhop, Anti-Aim classici e custom, Resolver custom per HvH e molto altro ancora. La parte più difficile non è stata scrivere le feature, ma il reverse engineering del motore di gioco: memory layout, netcode e pipeline di rendering ricostruiti da binari strippati, senza sorgenti né documentazione, con Assembly x86 inline per il dispatch delle vtable e i thunk sulle calling convention delle funzioni interne. Lo considero il mio "magnum opus" in ambito di programmazione in C++, in quanto è stato il progetto più complesso e completo che abbia mai realizzato. Prima di questo progetto, avevo già scritto altri cheat con meno funzionalità (menzioni d'onore: TitaniumHook e ColumbineHook)
Anno: 2017
Categoria: Personale
Tech Stack: C++, ASM x86
Serious Zeb
Gioco platform beat 'em up 2D dedicato alla figura di Zeb89. Il gioco è stato sviluppato in Game Maker, assieme ad altri 2 amici (Pellegrino e Doom13), e rilasciato sotto forma di demo iniziale nel 2015. Il gioco ha riscosso un discreto successo, tuttavia il progetto non è andato avanti per varie motivazioni, incluso anche Zeb89 stesso, che per qualche motivo non vedeva di buon occhio il gioco.
Anno: 2015
Categoria: Personale
Tech Stack: Game Maker Language (GML)
Hack ROM per Pokémon Rubino/Zaffiro/Smeraldo
I miei primissimi passi nella programmazione sono avvenuti intorno al 2008, quando ho iniziato a modificare i giochi Pokémon per GameBoy Advance, dopo aver giocato per un numero infinito di ore a Pokémon Smeraldo. Ho iniziato a scrivere routine in Assembly per modificare il gioco in varie maniere, e usare programmi esterni (come Advance Map, che nostalgia) per modificare le mappe. Dopo aver imparato le basi grazie a dei forum online, ho iniziato a scrivere hack-rom più complesse, con delle vere e proprie storyline. Forse qualcuna è ancora reperibile online, spero vivamente di no. Dopo aver scoperto il C, mi si è aperto un mondo, e la mia vita è cambiata per sempre.
Anno: 2010
Categoria: Personale
Tech Stack: ASM per il GBA (dialetto THUMB), C
Open Source
Cose che ho pubblicato o a cui ho contribuito, quasi sempre nate da un problema vero incontrato al lavoro.
Contributi upstream
Contributo accettato upstream: rilassa la validazione del MTOMDecoder, in modo da poter gestire allegati binari da endpoint SOAP di produzione che non rispettano lo standard. Nato integrando MTOM su un endpoint SOAP durante il lavoro su Gayadeed.
- D3vl0per/Twitch-watcherJavaScript
Due patch accettate su un bot di automazione Twitch: timeout di navigazione configurabili e fix di un crash su Puppeteer. Il codice è finito anche nei progetti che sono nati da lì.
Progetti e librerie
Guida per iniziare a scrivere cheat interni per CS:GO, scritta tra il 2016 e il 2018. È il mio repository più stellato: a quanto pare spiegare come funziona un gioco dall'interno interessa più del codice stesso.
- double-sdkC++
SDK per scrivere cheat per CS:GO senza ripartire da zero ogni volta. Assieme a simple-bunnyhop, edgelibrary-csgo e titaniumhook-menu è la scia di progetti C++ del 2016 da cui poi è nata Vitruvia.
Downloader di album da cyberdrop.me scritto in Go, il primo progetto in cui ho usato Go per qualcosa di concreto invece che per esercizio.
- ezskinz-newC++
Sorgente di uno skinchanger per CS:GO, ormai obsoleto ma ancora forkato da chi vuole capire come si intercetta la creazione delle entità di gioco.
- fatture-in-nodeTypeScript
SDK completamente tipizzato per le API di Fatture in Cloud, pubblicato su npm, estratto dal lavoro di fatturazione elettronica fatto su Stocco.
- sapoGo
Generatore che produce interfacce TypeScript tipizzate a partire da definizioni WSDL SOAP. Scritto per non dover più riscrivere a mano i tipi dei servizi SOAP a ogni integrazione.
Client Go per le API di Jumio, il provider di KYC e verifica identità che ho integrato in ambito regolamentato.
- pokefusion-apiJavaScript
Libreria che genera fusioni casuali di Pokémon e le restituisce in JSON, scippando i dati a un vecchio sito in PHP che non aveva alcuna API.
- whos-that-pokemonJavaScript
Bot Discord che genera domande "Chi è quel Pokémon?" in un server. Nato per far smettere di litigare un gruppo di amici, con risultati alterni.
- yoyo-ma e yoyoma-telegramC#, JavaScript
Un bot nato in C# con DSharpPlus per imparare il linguaggio, poi rifatto per Telegram: è il progetto personale più longevo che ho, ci metto ancora mano.
- lost-wifiGameMaker Language (GML)
Entry per la game jam Opera GX sul tema "no internet": una navicella persa nello spazio profondo che deve sopravvivere e, soprattutto, tenere vivo il Wi-Fi.
- codekatabattleTypeScript, Java, Alloy
Piattaforma su cui gli studenti si sfidano a colpi di code kata, progetto del corso di Software Engineering 2 al Politecnico di Milano: requisiti e design document (con modellazione formale in Alloy) più implementazione e testing. Sono il principale contributore del repository, con circa il 55% dei commit.
- production-optimiserJava + Spring, TypeScript
Progetto del corso di Distributed Software Development al Politecnico di Milano: backend Spring che invoca modelli di ottimizzazione della produzione, con risultati su colonne JSONB e coverage via JaCoCo.
Client e server Node che sincronizzano la pressione di un tasto tra più macchine via WebSocket: è nato per far partire l'episodio nello stesso istante e guardare anime con i miei amici senza il solito countdown a voce. Ci ho scritto sopra un articolo su The Startup nel 2019.
Piccolo tool in Go per scaricare video da Facebook.
Le mie soluzioni all'Advent of Code, prevalentemente in C++, con la costanza tipica di chi inizia il primo dicembre pieno di entusiasmo.
- appunti-reti-di-tlcLaTeX
I miei appunti in LaTeX per Reti di Telecomunicazioni al Politecnico di Bari, lasciati pubblici perché a qualcuno serviranno più che a me.