Essays

Related Is Not Useful: Agent Memory Systems in 2026

Eight families of agent memory, one transcript, and five systems measured at their documented defaults. All five return results for a turn that asks nothing of memory, and none surfaces the stored rule that would have changed the answer.

September 7, 202635 min read

LLM Inference: Post-Training Quantization

Shrinking a model's weights after training costs some quality and buys back size and speed. Six methods measured against the same unquantized model: what each one does, what it costs, and why getting the measurement right turned out to be harder than any of the methods.

August 30, 202636 min read

LLM Inference: Speculative Decoding

A small model guesses ahead, a large model checks the guesses in bulk. The answer is identical and it arrives 1.8x sooner. The cost is compute you pay for and throw away.

August 22, 202618 min read

LLM Inference: KV Caching

Why a model repeats the growing conversation while it writes, how a KV cache avoids the waste, and why the memory bill decides how many people a GPU can serve at once.

August 15, 202617 min read

Evaluation Is a Necessary Design Problem

Speech recognition, synthesis, the language model and retrieval each admit a different kind of evidence. The arithmetic was never the hard part. Deciding what to measure was.

August 12, 202613 min read

The Recorder in the Room: Rebuilding One Video From Separate Streams

Daily charges more to record a call than to host it. So I built the recorder. Putting the streams back on one timeline was the hard part.

August 3, 202612 min read

To Notify or to Deliver: Realtime Chat Without WebSockets

How inbound WhatsApp messages reach an open chat screen using SSE and Redis pub/sub, and why some events carry the message itself instead of just announcing it.

July 16, 20269 min read

The Blind Index: Prefix Search Without Plaintext

How to build prefix-search over encrypted messages in Postgres using blind indexing and n-gram tokens, without storing any plaintext.

April 10, 202610 min read

The Boring Answer to MCP Context Bloat

How to build prefix-search over encrypted messages in Postgres using blind indexing and n-gram tokens, without storing any plaintext.

April 3, 202610 min read

Blue/Green Is Not a Button: Upgrading RDS Postgres 13 to 17

AWS says the switchover takes under a minute. That part is true. It is also the cheapest part of the upgrade.

February 15, 202613 min read

Searchable PII Encryption in Postgres

How we encrypted PII so a leaked database dump reveals nothing, while prefix search, sorting, and filtering all kept working.

December 15, 20256 min read

Notes on Data Archival: Keeping Postgres Lean Without Downtime

Freeing up an RDS running out of disk space by archiving 8M rows to S3, and the three gotchas that stood in the way: concurrent index creation, hourly batching, and VACUUM FULL.

June 21, 20246 min read

Boost your Image Classification Model

Techniques for improving deep learning image classifier accuracy: progressive resizing, transfer learning, mixup augmentation, and test-time augmentation.

May 14, 20197 min read

Metrics to Evaluate Your Machine Learning Algorithm

A practical guide to the most important evaluation metrics for ML models and when to use each one.

January 1, 201910 min read

Training a Deep Learning Model on Handwritten Characters using Keras

Building a labeled dataset from handwritten character images and training a deep learning model with Keras from scratch.

January 1, 20186 min read