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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Boost your Image Classification Model
Techniques for improving deep learning image classifier accuracy: progressive resizing, transfer learning, mixup augmentation, and test-time augmentation.
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.
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.