Lombok is Still Relevant in the Age of Java Records

Every six months, like clockwork, a new JDK drops—and right on cue, the Java community’s ideological purity tests begin. The usual suspects crawl out to complain about Project Lombok. They argue that it does “weird hacks” to the javac compiler, that it slows down upgrades, and that we don’t need it anymore because we have Records. I am a little tired of this constant principled stance against its usage. I am an application developer, not a compiler engineer. I’ve been using Lombok for roughly 15 years now, and I can clearly say its benefits massively outweigh its cons. I’m glad I don’t work with people who hold that dogmatic opinion, because at the end of the day, we are paid to deliver working software—not to coddle the compiler. ...

July 12, 2026 · 5 min

dloom: the dotfile manager I wanted

I have gone through a few generations of dotfile management over the years: hand-written setup scripts, ad-hoc symlinks, shell aliases, Stow and friends, and the usual “I will clean this up later” folder structures. They all worked until I eventually ran into annoying issues. What I wanted was fairly specific: A single dotfiles repo that works on macOS and Linux. A tool that does not turn shared directories like ~/.config/ or /etc/openvpn/ into all-or-nothing symlinks. A clean way to express machine-specific or tool-specific configs without branching the repo. A safe migration path for files that already exist on the machine. That set of constraints is what led me to build dloom. It is a small CLI for linking, unlinking, and adopting dotfiles. ...

June 1, 2026 · 6 min

A short-lived lock for a long-running evaluation

I recently added a deduplication safeguard to a queue-driven system. The problem was simple to describe but harder to solve well; many obvious answers turned out to have some bad trade-offs. The setup The system is event-driven. Workers pull messages off an SQS FIFO queue, where each message is grouped by an entity ID. Processing a message may create an “incident” for the entity. The processing flow looks like this: ...

April 26, 2026 · 9 min

My experience with Claude and Codex on a system architecture bug

Recently, I encountered a subtle bug in an event-driven system. Looking at the symptoms, the immediate defect looked clear to me but of late, for most bugs, I tend to rubber-duck it with an AI model before I make the fix. In the last few months, I have mostly used Claude but my employer recently rolled out initial support for Codex which also seems to be well regarded in the industry. I decided to do the back-and-forth with both models this time. I did not expect much difference in the results but I was a little curious how Codex would fare against Claude but also wanted to be exhaustive and make sure I don’t miss anything. ...

April 15, 2026 · 10 min