Writing.
Notes on building software that lasts: when an abstraction earns its place, how to structure a test suite, what observability actually buys you, how the JVM collects garbage, and why Kotlin won on the JVM. Also on Medium.
- Your “Clean” Code Is Slow, Bloated, and Impossible to Debug
Clean code principles are sound, but applied as dogma they inflate comprehension cost and slow teams down. When an abstraction earns its place — and when it does not.
- Java is Finally Over: Why Kotlin Won the War in 2026
A walk through the Kotlin features - null safety, sealed classes, coroutines, K2 - that make it my default choice on the JVM for systems meant to last.
- The Testing Pyramid — What You Might Get Wrong About Testing
A no-nonsense playbook for unit, integration, and end-to-end tests in modern teams — what each layer is for, what to cover, and what to keep out.
- Unlocking the Power of Observability
The three pillars of observability — metrics, logs, and traces — and the tooling that turns them into insight for distributed Java systems.
- Garbage Collector — An Introduction
How the JVM finds and frees unused objects, why it compacts the heap, what generations buy you, and how to reason about choosing a collector.
- Are You Writing Useless Comments in Your Code?
Knowing when and what to comment makes a difference. What to leave out, what to write down, and how to pack information into a short comment.
- How to Better Name Your Functions and Variables
Treat a name as a tiny comment. Practical rules for packing information into names without making them too long, too short, or too clever.