Field notes
How we build and run software. Methods only, no client names.
The tells turn over
The words that marked model-written Korean in 2024 are falling in 2026 while a different set rises. Anything built on a fixed list of tells has a half-life.
ai · llm · research
Compute the placebo floor first
Any estimator that extrapolates a trend will return something. Running it on years where nothing happened is the cheapest test we know, and the one that most often kills the claim.
research · statistics · method
Korean journal abstracts changed in late 2024
We adapted excess-vocabulary measurement to Korean morphology, ran it over 398,296 abstracts, and found a register shift that starts in late 2024 and flattens in mid-2026.
ai · llm · research
The multilingual cache tax
Two field notes turned out to be the same inequality, so we wrote the paper, published the data, and stated plainly which of our own claims did not survive review.
ai · llm · research
A planet in a browser tab
Real satellite imagery, forty-six thousand city lights, and one line of spherical trigonometry that fixed the camera, in about 1.5 megabytes.
webgl · graphics
We padded a prompt with junk to make it cheaper
A prompt below the cache floor gets cheaper if you make it longer. We ran 500 graded tasks to find out whether the filler costs accuracy. It does not, and useful filler pays twice.
ai · llm · evals
Design QA at 1:1
Eyeballing a layout lies to you. We read computed styles off the live DOM, crop screenshots at full resolution, and let numbers referee the argument.
design · qa
The cache discount has a floor
Our Korean traffic was billed at a tenth of our English traffic for the same prompt. The pipeline was fine. English was the only language too short to cache.
ai · llm · performance
Small models where they win
A frontier model labels the dataset once. A small model serves the traffic forever. A confidence router decides who handles the 7% that are actually hard.
ai · llm · performance
Trust, then verify, then verify again
Generative systems fail politely: fluent, plausible, wrong. Between them and the outside world we run evidence gates, adversarial refuters, and a 3,900-case regression wall.
ai · qa
Our AI coworkers run on files
No vector database, no memory service. Agent memory is markdown with frontmatter, a 40-line index, and hard line caps. Boring on purpose.
ai · agents
The night shift is a fleet of models
Planners plan, workers execute, verifiers attack, and a gate with a whitelist and a ledger stands between all of them and the outside world.
ai · agents · ops
Evals are the unit tests of prompts
Every prompt change ships against a golden set. Every incident becomes a case. And the LLM judging the outputs is treated as the biased witness it is.
ai · evals
Screenshots or it didn't happen
Build passing is not done. Our definition of done is a full-resolution capture of the deployed page, triaged by a vision model, signed off by a human.
qa · ai
Grep first, embed when it earns it
We run retrieval two opposite ways: plain files and grep for agent memory, hybrid embeddings for user-facing search. Both decisions came from measurements, not fashion.
ai · search
Write prompts for the cache, not the reader
Prefix caching bills repeated tokens at a fraction of the price. Once you know that, prompt layout stops being a writing problem and becomes a systems problem.
ai · llm · performance
An agent is a while loop with taste
Strip the frameworks away and a production agent is about eighty lines. Ours have outlived four model generations without structural change.
ai · agents
Structured output is a contract, not a request
A language model returns prose. Production systems consume JSON. The boundary between the two is a validator that has never heard of AI.
ai · llm
One box is enough
Why we run dozens of production sites on a single dedicated server, and the three config blocks that make it survivable.
infra · ops