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: Ahead-of-Time Object Caching with Any GC (JEP 516)
Faster startup and lower initial GC pressure — without changing a line of application code. JEP 516 extends Java’s Ahead-of-Time (AOT) cache to include heap objects, and lifts the restriction that previously limited this to SerialGC only. In JDK 26,...
Read more →Java 26: Remove the Applet API (JEP 504)
After 28 years, the java.applet package is gone. JEP 504 removes the Applet API entirely from JDK 26, completing a deprecation journey that started in JDK 9.
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: Vector API — SIMD for Java (JEP 529 — Incubator)
Want 4x–16x speedups on data-parallel workloads? JEP 529 brings the Vector API to its 11th incubator round in JDK 26, enabling explicit SIMD (Single Instruction, Multiple Data) computations that compile to optimal hardware vector instructions.
Read more →Java 26: PEM Encodings of Cryptographic Objects (JEP 524 — Preview)
No more manual Base64 wrapping or Bouncy Castle dependency. JEP 524 introduces a built-in API for encoding and decoding cryptographic objects in PEM format — the ubiquitous text format used by OpenSSL, SSH, TLS, and virtually every crypto tool.
Read more →Java 26: Structured Concurrency (JEP 525 — Preview)
Concurrent programming in Java just got a lot safer. JEP 525 continues Structured Concurrency as a preview API that treats groups of related concurrent tasks as a single unit of work with automatic lifecycle management.
Read more →Java 26: Primitive Types in Patterns (JEP 530 — Preview)
Pattern matching in Java is now complete. JEP 530 extends patterns to support primitive types in switch, instanceof, and record patterns — closing the last gap in Java’s pattern matching story.
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 →