ITDevCon 2024 Spring Edition: sole e programmazione!
E’ passata esattamente una settimana dalla conclusione di ITDevCon 2024 European Delphi Conference Spring Edition , la conferenza dedicata agli sviluppatori Delphi organizzata dal bit Time Group ( bit Time Software e bit Time Professionals ). 😊
Nel mio piccolo ho portato anche io il mio contributo, con una sessione dedicata a MongoDB, o meglio a FerretDB. Ma andiamo con ordine.
Pur essendo più breve rispetto alla “sorella maggiore” invernale (una giornata al posto di due), a questa edizione primaverile non sono mancati tutti gli ingredienti che mescolati assieme fanno “il bello” dell’evento: lo scambio di pareri ed esperienze in abbondanza, condito da una sana dose di umorismo e innaffiato da una enorme quantità di contenuti tecnici assolutamente interessante.
Di cosa si è parlato
Racconto un po’ quali sono gli speech a cui ho partecipato, oltre a quello che ho portato io, e perché li ho apprezzati notevolmente.
Uno dei talk più affascinanti è stato quello sugli algoritmi genetici: ispirandosi ai processi di selezione naturale, questa categoria particolare di algoritmi consente di risolvere problemi (apparentemente) impossibili, o che richiederebbero un tempo estremamente lungo (virtualmente infinito) per produrre un risultato. Nella loro illustrazione, Daniele Teti (CEO, MVP, trainer e consulente in bit Time Professionals) è partito dall’enunciazione dei problemi che tipicamente vengono risolti con questi algoritmi, come la pianificazione di turni di lavoro, la determinazione di un itinerario sul navigatore, o il più classico degli esempi: il Problema dello Zaino (o Knapsack problem). In genere gli sviluppatori evitano simili problematiche aggirando l’ostacolo, ossia evitando di proporle come feature oppure modificando i requisiti iniziali. Grazie alla panoramica offerta da questo talk, molto bilanciato tra le parti di spiegazione teorica e applicazione pratica, ora sappiamo quale strumento possiamo utilizzare per affrontare queste sfide.
Il successivo talk ammetto di averlo scelto per cause di forza maggiore: si trattava del mio! 😅 Ho fornito una panoramica delle funzionalità e dei vantaggi di FerretDB, una valida alternativa completamente opensource a MongoDB. Come ben sanno coloro che fanno uso di questo database, probabilmente il più blasonato della famiglia NoSQL, la compagnia che cura lo sviluppo di MongoDB ha modificato le politiche di licensing ponendo diverse limitazioni all’uso di questo database. Grazie al layer offerto da FerretDB possiamo godere di uno storage totalmente compatibile con MongoDB (salvo alcune eccezioni). E poi si tratta di un tool completamente opensource, basato su tecnologie che lo sono altrettanto, quali PostgreSQL nel quale vengono salvati i dati e il linguaggio Go, inclusi tutti i tool che li accompagnano. Attraverso dimostrazioni pratiche dal vivo, ho mostrato come qualunque tool amministrativo per MongoDB permetta di accedere senza problemi anche i database gestiti da FerretDB, e come sfruttarli da un’applicazione Delphi tramite l’uso dei componenti FireDAC e dei tipi che appartengono al driver specifico per MongoDB, pienamente compatibile anche con FerretDB.
Nell’ora successiva ho seguito l’interessante talk di Omar Bossoni (CEO & Digital Developer presso BCI Solutions Srls) sulle cosiddette Mobile Local Push. Le notifiche rivestono da sempre un elemento fondamentale dell’esperienza d’uso dei dispositivi mobile. Tutte le piattaforme più note (Android e iOS) offrono strumenti per poterle emettere e ricevere, appoggiandosi a specifici servizi esterni. Può accadere però che si voglia disporre di notifiche “private”, confinate all’interno di una rete locale. Ebbene, soprattutto nel mondo Apple ottenerle non è affatto semplice: partendo dalla labirintica procedura di registrazione dell’app nella dashboard di Apple, alla richiesta del necessario “entitlement” per poter gestire questo tipo di notifiche, fino al deploy in produzione, Omar ha mostrato nel dettaglio tutti gli step da seguire e tutte le sfide che bisogna superare (sebbene sostituirei volentieri il termine “sfide” con un termine molto somigliante, che indica “sfortune”).
Grazie alla “doppia sessione” di Daniele Spinetti (MVP e developer presso DICE) abbiamo realmente viaggiato all’interno della Event-Driven Architecture. Abbiamo visto quali sono gli scenari in cui tale approccio porta effettivo valore aggiunto, senza rappresentare esclusivamente una complicazione rispetto al più semplice “monolite”, analizzando anche diversi pattern orientati principalmente a scindere i componenti dell’applicazione evitando eccessive dipendenze forti tra gli stessi, assieme a strategie e tecniche per risolvere i problemi che una simile architettura si porta dietro, poiché come ben sappiamo la forma che scegliamo di dare al software è sempre il risultato di un compromesso – o come direbbero quelli che parlano bene, un “trade-off” – nel quale cerchiamo di bilanciare le potenzialità della soluzione che abbiamo scelto mitigandone le problematiche. Mi rendo perfettamente conto che questa descrizione breve non può rendere giustizia piena ai contenuti di questo talk in due puntate, tuttavia i concetti esplorati e gli elementi trattati erano talmente tanti che riassumerli in poche righe sarebbe un lavoro improbo: un motivo in più per partecipare in presenza la prossima volta. 😉
L’ultimo talk che vado a menzionare – non per ordine di importanza nel modo più assoluto – è quello di Maurizio Del Magno (developer di Levante Software) sulla TVirtualInterface: si tratta di una classe pressoché sconosciuta a molti sviluppatori Delphi, ma dalle infinite possibilità (tant’è che nel titolo del talk è stata battezzata “la pietra filosofale”), poiché consente di creare implementazioni dinamiche a runtime di qualunque interfaccia, dando accesso a soluzioni estremamente flessibili che si possono ottenere davvero con pochissime righe di codice, migliorandone quindi la manutenibilità. Anche in questo caso, spiegare la TVirtualInterface è come descrivere Matrix: non si può fare, deve essere vista dal vivo, o esplorata attraverso gli ottimi esempi che Maurizio ha presentato come “case study”, senz’altro utili per capirne le potenzialità; ad esempio, è calzante l’implementazione di un meccanismo di “lazy loading” per dilazionare nel tempo la creazione di un oggetto senza richiedere cambiamenti al codice che ne fa uso, il quale continua a ricevere in ogni caso un riferimento sempre valido a un oggetto. Per chi ha familiarità con il linguaggio C#, laTVirtualInterface permette di mettere in piedi implementazioni simili a quelle che si possono creare con il DLR (Dynamic Language Runtime) presente in .NET e il famigerato tipo dynamic.
Conclusioni
Che si tratti dell’edizione lunga o di quella corta, ITDevCon si rivela sempre e comunque un evento imperdibile per chiunque lavori nel mondo Delphi, non solo per i suoi contenuti sempre attuali e “di tendenza” ma anche per il contorno che li rende piacevolmente fruibili, grazie all’organizzazione sempre impeccabile dello staff di bit Time che ci mette l’anima e alla leggerezza con cui è possibile condividere esperienze e consigli con tutti gli altri partecipanti, senza trascurare i momenti di break fino al luculliano catering, capace di mettere a repentaglio qualunque dieta… del resto, la conferenza si tiene di venerdì proprio per poterla riprendere il lunedì appena dopo. 😄
Se siete curiosi, un altro breve reportage ufficiale sull’evento lo potete leggere nella sezione delle notizie di bit Time .
Se non avete partecipato a questa edizione, vi invito caldamente a considerare l’opportunità di farlo nel periodo tra fine ottobre e inizio novembre, quando si terrà l’edizione invernale, così potrete farvi “perdonare”.
Arrivederci a ITDevCon 2024 Winter Edition! 👋🏻