I always had a strong drive to learn and then share what I learnt. On one side, that brought me to create a lot of training material, and teach on-site courses at many companies, universities, and occasionally do some public speaking. On the other, I've always had a soft spot for writing, for the reflective process that is only possible with the more relaxed pace of reading and studying.
That's why I started writing in the '90s, and never really quit, although I had long breaks and even left some works unfinished. I've been occasionally focusing on mainstream topics, like OOP when it was about to become everyday practice, but most often I've been writing about niche arguments, like aspect-oriented programming or the notion of force in software engineering.
I've collected links to most of my works on this page. Some are recent (like Aspectroid or The Physics of Software), and are in fact still in progress. Some date back to the '90s. For those, you'll find a link to old pages on my eptacom.net website, which historically has been hosting those papers. Re-creating everything in a modern style would have been a daunting job, and I would rather spend time investigating new ideas. Leaving appearances behind, however, some of those old works keep their core message intact, and might be worth reading even after all these years.
Aspectroid is an exploration of the true potential of Aspect Oriented Programming and Design. It takes place as a set of Episodes: self-contained ebooks solving realistic (although small-scale) problems, like building an android app or applying relevant changes to the core of android itself.
The language adopted is AspectJ, and the reference platform is Android. However, most of the discussion is language-independent and platform-independent; in a larger perspective, these ebooks are mainly about software design. All the ebooks are free.
open website »
The Physics of Software
We often talk about "flexible" or "extendible" software. Still, a proper definition of the properties of any artifact requires a precise understanding of the forces acting on it. The notion of force is completely lacking in software design, and this is the root of arbitrary definitions, over-generalized design principles, and so on.
The Physics of Software is a work in progress, a scientific exploration of the forces acting on software, and of the reactions of different materials (classes, functions, modules, etc.) and of different architectural styles when subject to those forces.
open website »
In the late '90s / early 2000s I published quite a few papers on the flagship USA and UK publications, when paper was still the dominant media. Some appeared on "consumer" magazines like C/C++ User's Journal, others on academic journals like IEEE Software or IEEE Computer. Some have been translated in other languages, by academic journals or by enthusiastic readers.
These are works of a certain age, born in a different time, when we looked at software development with different eyes. Some notions, however, are long-lived, and therefore some of those papers are still slightly interesting.
"old" website »
I've been doing a few public talks lately, after years of silence :-). Here are the most relevant links:
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, slides in the link, talk was in Italian, change language above to see the link)
(Slightly) Smarter Smart Pointerss
(C++ Day 2017, Modena, slides in the link, talk was in Italian, change language above to see the link)