The Java Memory Model, Explained Without the Headache

What actually happens to your data between two threads — and the small set of tools that let you control it Ask ten Java developers what “the Java Memory Model” means and you’ll get two different answers. Half of them will draw a box called Heap and another called Stack. The other half will start talking about volatile and happens-before. Both groups are talking about something real, but only the second group is talking about the actual Java Memory Model (JMM). The first group is describing the runtime data areas — where objects physically live. ...

September 3, 2026 · 9 min · Vitalii Sukach

Your DELETE + INSERT Is Burning PostgreSQL’s CPU. Here’s What’s Actually Happening on the Page.

A deep dive into MVCC, heap pages, vacuum, and what to do when you have billions of rows to update. The symptom You have a table that stores user state. Something happens — an event arrives — and your code does the obvious thing: BEGIN; DELETE FROM user_state WHERE user_id = $1; INSERT INTO user_state (user_id, state, score, updated_at) VALUES ($1, $2, $3, now()); COMMIT; It’s clean. It’s idempotent. It doesn’t require you to think about which columns changed. For a long time it works fine. ...

August 17, 2026 · 23 min · Vitalii Sukach

From Source to Running JVM: How Gradle Builds Your Java Application

Build phases, task graphs, dependency resolution, and what actually happens when the JVM opens your JAR You type gradle build, wait a few seconds, and out comes a JAR. Most Java developers use this pipeline every day without ever looking inside it. But when a build gets slow, a dependency conflict appears, or a NoClassDefFoundError shows up in production at 2 AM, understanding the machinery underneath is the difference between guessing and fixing. ...

July 19, 2026 · 8 min · Vitalii Sukach