Notes on backend engineering, system design, leading a team and building products. Written mostly to think more clearly.
2026
· 7 min read
Idempotency, Deduplication and Memoization Are Not the Same Thing
Three ideas that all sound like "don't do it twice". They solve different problems, and mixing them up leads to slow code at best and double charges at worst.
Read· 10 min read
LRU Cache Explained: Design, Java Implementation, and the Mistakes That Trip Up Senior Engineers
A deep, practical walkthrough of how LRU caches actually work, how to build one correctly in Java with a HashMap and a doubly linked list, and the subtle mistakes that cause bugs in interviews and in production.
Read· 4 min read
Stop Designing REST APIs Wrong: 10 Mistakes Developers Keep Making
A practical guide to the 10 REST API design mistakes that create confusion, break clients, and add technical debt, with clear fixes for each.
Read
2025
· 9 min read
Cut Your LLM Token Bill in Half - How TOON Rewrites the Rules of JSON
Discover how TOON (Token-Oriented Object Notation) can reduce your LLM API costs by 30-60% through smarter data formatting designed specifically for AI applications.
Read· 16 min read
Encoding, Hashing, Encrypting: The Ultimate Guide to Securing Your Data
Understand the key differences between encoding, hashing, and encryption - including how they work, their use cases, and real-world examples.
Read
2024
Shorter notes, on LinkedIn.
Have you ever sent two WhatsApp messages in a row and wondered how the other person could possibly receive them in the wrong order? Something as simple as a chat message can hide a surprising amount of backend complexity.
One of the smartest UX features I've seen lately: Google Meet telling you you're speaking while you're muted. Does that mean it's listening continuously? Mute doesn't always mean no signal.
Get new writing by email.
Occasional deep-dives on systems, architecture and AI engineering, sent when they’re published.