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.
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.
I've been blogging for about 8 years. My posts started short but gradually became full-fledged articles, mostly about software design and software engineering.
Some posts became instant classics, like Your coding conventions are hurting you or Life without a controller, case 1, but many others (like Delaying Decisions or Where is your Knowledge?) are probably worth reading for any software engineer.
In 2013 I suspended / shut down the blog to focus on other works, but of course all the posts are still freely available online.
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.