This space is a collection of reflections on software architecture in general, and on bringing order to chaos in particular.
I believe good architecture is not about adding abstractions, but about reducing cognitive load and making systems easier to understand, evolve, and document.

I don’t claim to have all the answers. I’m simply documenting my journey and sharing what I learn along the way, in the hope that it might inspire others.

On Exceptions and Expected Business Failures

Introducing a domain layer made me reconsider how business failures and exceptions are handled, and what responsibility each architectural layer should have in that process.

DRY...at last

Extracting a reusable Java DSL for generating Mermaid diagrams into an open-source library.

The illusion of Encapsulation

Getters and setters were introduced as a practical way to represent data in Java. Decades later, the convention has become so pervasive that it shapes how many developers interpret objects, often in ways the language itself never specifies.

View all articles →