Recent Posts

Augmenting vs Training Large Language Models

One of the most consequential decisions in any AI project is whether to augment an existing Large Language Model or train (or retrain) one. The wrong choice can cost months of engineering effort, hundreds of thousands of dollars in compute,...

Read more →

Augmenting Large Language Models

Large Language Models are remarkably capable out of the box, but they have well-known limitations — stale training data, hallucinations, no access to private knowledge, inability to take actions in the real world, and lack of domain depth. Augmentation is...

Read more →

Java 26: Stable Values (JEP 526 — Preview)

What if you could have a lazily-initialized field that the JIT compiler treats exactly like final? JEP 526 introduces Stable Values — a new API for constants that are computed once and then permanently trusted by the JVM, enabling the...

Read more →

Java 26: G1 GC Throughput via Reduced Synchronization (JEP 522)

Invisible to your application code, but measurable in your throughput metrics. JEP 522 refactors internal synchronization in the G1 garbage collector to reduce thread contention, delivering higher application throughput on multi-core servers — no JVM flags, no code changes required....

Read more →

Java 26: Prepare to Make Final Mean Final (JEP 500)

The final keyword is about to mean something again. JEP 500 introduces runtime warnings in JDK 26 when reflection mutates final fields — the first step toward making final truly immutable. In a future JDK, those mutations will be blocked...

Read more →

Java 26: HTTP/3 for the HTTP Client API (JEP 517)

Zero-RTT connection setup, no head-of-line blocking, and connection migration across networks — Java’s built-in HttpClient now speaks HTTP/3. JEP 517 finalizes HTTP/3 support in JDK 26, making it the first JDK version with zero-dependency QUIC-based HTTP.

Read more →