Aspectroid è una esplorazione delle reali potenzialità della progettazione e della programmazione Aspect-Oriented, attraverso un insieme di Episodi - ebook autocontenuti che affrontano problemi realistici, seppure di piccola scala, come la realizzazione di una app android o modifiche importanti al core di android stesso.
Il linguaggio utilizzato è AspectJ, e la piattaforma di riferimento Android. Tuttavia, gran parte della discussione è language-independent e platform-independent, e più in generale, si tratta di ebook di software design. Gli ebook sono gratuiti ed in lingua Inglese.
Si parla spesso di software "flessibile" o "estendibile". Tuttavia, una corretta definizione delle proprietà di un artefatto richiede una comprensione delle forze a cui è sottoposto. La nozione di forza manca completamente nel software, e da questo seguono definizioni arbitrarie, principi di design sovrageneralizzati, e così via.
The Physics of Software è un lavoro in divenire, una esplorazione scientifica delle forze a cui è sottoposto il software e delle reazioni dei diversi materiali (classi, funzioni, moduli) e dei diversi stili architetturali sottoposti a tali forze. In lingua Inglese.
Per circa 8 anni ho pubblicato una serie di post (in Inglese), inizialmente molto brevi, ma via via trasformandoli in veri e propri articoli, principalmente su tematiche di software design e di software engineering. Alcuni post sono diventati dei classici, come Your coding conventions are hurting you oppure Life without a controller, case 1, ma anche altri magari meno noti, come Delaying Decisions oppure Where is your Knowledge? meriterebbero probabilmente una lettura da parte di ogni software engineer.
Nel 2013 ho sospeso / chiuso il blog per concentrarmi su altri lavori, ma ovviamente tutti i post sono disponibili online.
Tra la fine degli anni 90 ed i primi anni 2000 ho pubblicato un certo numero di articoli sulle principali riviste statunitensi ed inglesi dell'epoca (ancora si usava la carta).
Alcuni sono apparsi su riviste più "consumer" come il C/C++ User's Journal, altri su periodici accademici come IEEE Software o IEEE Computer. Alcuni sono stati tradotti in altre lingue, sia da riviste accademiche che da appassionati.
Si tratta ovviamente di lavori datati, figli di un momento storico diverso, in cui si guardava allo sviluppo del software con altri occhi. Tuttavia conservano un loro valore, ed alcuni messaggi sono per natura piuttosto longevi.
Ho scritto "C++ Manuale di Stile" per Edizioni Infomedia nel 1995, con l'obiettivo di raccogliere, in un testo ragionato e non dogmatico, un insieme di raccomandazioni di codifica utilizzate nel corso degli anni per standardizzare lo stile di vari progetti. Il testo è ancora in uso in molte aziende, e mi capitava di ricevere email da studenti e da professionisti interessati ad una eventuale nuova edizione o semplicemente a reperirne una copia. Nel 2010, avendone ormai acquisito i diritti, ho deciso di renderne disponibile gratuitamente una versione digitalizzata in formato DejaVu. Ho poi attivato un progetto community based, con un piccolo gruppo di volontari, per ricreare un testo editabile e poterlo aggiornare e sviluppare, mantenendone la natura gratuita. La versione Reloaded è ora disponibile gratuitamente in PDF, in Italiano.
Il testo "UML Manuale di Stile" nasce sulla falsariga del "C++ Manuale di Stile", con gli stessi obiettivi: raccogliere un insieme di raccomandazioni sull'uso "migliore" di UML.
Il progetto ha avuto un suo breve momento di gloria, ma nel tempo molti sviluppatori si sono allontanati dalla modellazione visuale e dall'UML, in parte proprio perchè veniva adottato dalle aziende in modo errato, senza comprenderne la natura di strumento di pensiero e comunicazione. Di conseguenza, il progetto è stato sospeso, ma il testo rimane disponibile gratuitamente in PDF (in Italiano), ed al di là dell'UML in se', contiene interessanti riflessioni sul ruolo dei diagrammi nella progettazione del software e rimane una buona lettura per chi voglia pensare al software oltre la dimensione lineare del codice.
Tra la fine degli anni 90 ed i primi anni 2000 ho pubblicato un ampio numero di articoli in Italiano, sia su Computer Programming (Edizioni Infomedia), in cui per anni ho avuto una rubrica fissa su tematiche di software engineering ed object oriented technologies, sia su una newsletter gratuita (C++ Informer) che contava all'epoca qualche migliaio di appassionati.
Non credo di esagerare affermando che quegli articoli abbiano contribuito in modo sostanziale alla formazione di una intera generazione di sviluppatori Italiani.
Come per le mie pubblicazioni in Inglese dell'epoca, va tuttavia detto che si tratta di lavori datati, che non riflettono necessariamente la mia visione attuale: alcuni articoli hanno oltre 20 anni, e fortunatamente non ho smesso di imparare nel frattempo :-). Tuttavia, alcune pubblicazioni sono piuttosto longeve, e pur conscio della loro età, ho scelto di lasciarle tutte disponibili online.
Dal 2016 ho ripreso la partecipazione a conferenze pubbliche come speaker. Ho raccolto qui gli interventi più interessanti:
Software Design and the Physics of Software
(DDD Europe 2016, Bruxelles, video)
Evolving the Android Core with Aspects
(DroidCon IT 2016, Turin, slides only)
On Growth and Software
(NewCrafts 2016, Paris, video in the link, slides here)
Extending C# with Roslyn and Code Aware Libraries
(Future Decoded 2016, Milan, slides only)
Eco-Friendly Hardware Hacking with Android
(DroidCon IT 2017, Turin, video in the link, slides here)
An overly simple, C++ idiomatic pattern language for message-based product families
(Italian C++ Conference 2017, Milan, video in the link, slides here)
(Slightly) Smarter Smart Pointerss
(C++ Day 2017, Modena, video in the link, slides here)
Sempre tra la fine anni 90 - inizio 2000 ho tenuto una serie di seminari e corsi pubblici. Sono lavori datati, su argomenti che all'epoca potevano sembrare "avanzati" (come la meta-programmazione template in C++) e che ora appaiono tutto sommato "ordinari". Al momento non sono piu' online.