Yearly Archives: 2026

Context Engineering – Stop Stuffing the Window

When teams ship their first AI agent, they usually find out — within a few weeks — that the model wasn’t the problem. The agent hallucinates a customer ID three turns into a conversation and then cheerfully references it for the rest of the session. A 50-step task dies at step 42 because the context window is filled with tool output nobody needed. A “simple” migration tool that worked beautifully on 10 files collapses on 100 because the noise drowns out the signal. The team retries with a bigger model. The bugs move, but they don’t leave.

This is the pattern that has pushed an entire sub-discipline — context engineering — from niche jargon to what Cognition has called “effectively the #1 job of engineers building AI agents.” In April 2026, Thoughtworks moved context engineering into the Adopt ring of its Technology Radar, framing it as having “evolved from an optimization tactic into a foundational architectural concern for modern AI systems.” In their words, the context window is “a design surface,” and your job is to “intentionally construct the AI’s information environment.”

In the last six months, every serious agent builder has published essentially the same lesson: what separates a demo from a production agent is not which model you pick, but how you shape the information that model sees on every turn.

For engineering leaders, this matters beyond the mechanics. Context engineering is reshaping how we structure codebases, document systems, think about memory and observability, and which skills we value on our teams. This post is a tour of that landscape.

Continue reading

Reviving a dead Spring Batch side project from 2013 with AI

I wrote the original three-part Spring Batch blog series in 2013. The code worked back then, the posts got published, and then — like most side projects — it sat untouched on GitHub for over a decade. Java 1.5, Spring 3.1, Spring Batch 2.1, JUnit 3. It was a time capsule.

These are projects I would never have gone back and updated. The effort-to-reward ratio just isn’t there when you’re doing it manually. You’d spend hours chasing down deprecated APIs, fixing broken imports, untangling framework migration guides — all for a demo project that already works.

Fast forward to now (Mar 2026), and in less than an hour (over 2 days due to token resets), I used VSCode+Claude Code to vibe code the entire modernization.

Continue reading