Java Concurrency Revisited: Synchronized vs. ReentrantLock

Java Concurrency in Practice is the bible of Java multi-threading. It’s dense, thorough, and frankly, a bit intimidating. For years, I relied heavily on Java’s java.util.concurrent package (ConcurrentHashMap, my beloved), ignoring the low-level mechanics underneath. Why reinvent the wheel when the standard library is so good? But to truly master scalability, you have to understand what happens under the hood. Recently, I decided to peel back the layers and revisit the building blocks of Java concurrency: synchronized and ReentrantLock. ...

November 22, 2025 · 5 min · 1018 words · Me

Vibe Driven Development

How I Built a Zotero Plugin with an AI Pair Programmer I had an itch. My Zotero library, a collection of academic papers I’ve gathered over the years, was full of dead links. It felt messy, and I desperately wanted to clean it up. But the thought of checking each attachment manually was daunting. “How hard could it be,” I thought, “to just build a plugin to do it for me?” ...

June 8, 2025 · 6 min · 1241 words · Me