-
Immutability vs concurrency: making a fast graph writable
An in-memory graph is fast until you need to write to it. Making the whole structure immutable is too expensive, locking every read kills the point — here’s the middle path: optimistic reads over StampedLock plus immutable nested lists.

-
When Postgres is the wrong place to traverse the graph
Recursive CTEs hit an O(b^D) wall, and no amount of indexing or tuning moves it. Why deep graph traversal doesn’t belong in the database at all, and what it looks like once you move it into the JVM.

-
Behavioral drift: silent bugs in LLM workflows
One line went missing from a system prompt and the classifier started returning markdown instead of an enum. The bug passed every schema check. Why validation can’t catch this class of failure, and what to do instead.

-
Hexagonal architecture
Ports and adapters is usually sold as a way to separate business logic from technical details. The more useful part: naming a port forces you to decide what is actually essential to your domain and what is just an implementation you happened to pick.

-
Robust and convenient Kotlin primitives
Hundreds of indistinguishable val id: Int properties, and one swapped argument is a security breach. Kotlin value classes give every id its own type at near-zero runtime cost — including in jOOQ.

-
Kotlin IR: Transforming DSL at Compile-Time
Type-safe DSL syntax and runtime flexibility usually pull in opposite directions. A compiler plugin resolves both: the user writes code that satisfies the type checker, and an IR transformer swaps the call for a real matcher object before bytecode.

-
Kotlin IR: Unlocking Incredible Possibilities for Code Manipulation
Runtime bytecode manipulation can’t turn an int into an Int, and Kotlin’s null-safety metadata is gone by then anyway. Why hijacking the compiler through IR turned out to be the workable route.

-
Reducing memory usage 10 times with High-Performance Primitive Collections
A HashSet with 100 million entries takes 5 GB. The same data in an HPPC IntHashSet takes 518 MB. Where the difference comes from and when it’s worth reaching for primitive collections.