Blog

Thoughts, write-ups, and notes on building software, design, and everything in between.

Caching in System Design Interviews

Caching in System Design Interviews
August 31, 2026

Caching is a key system-design technique for improving performance and reducing database load by storing frequently accessed data in faster storage. These notes cover where caching fits in a system, common architectures such as cache-aside, write-through, write-behind, and read-through, eviction pol

Message Queues in System Design Interviews

Message Queues in System Design Interviews
August 30, 2026

Message queues are a fundamental building block in distributed systems and a common topic in system design interviews. They enable asynchronous communication between producers and consumers, helping applications reduce latency, handle traffic spikes, improve reliability, and scale services independe

Why LSTMs Work: The One Line That Makes Long-Range Memory Possible

Why LSTMs Work: The One Line That Makes Long-Range Memory Possible
August 24, 2026

Plain recurrent networks forget everything past about ten steps. LSTMs don't. The reason comes down to a single equation — and it's the same trick that makes ResNets and Transformers trainable.

API Gateway Deep Dive: Fundamentals, JWT Auth & Revocation Strategies

API Gateway Deep Dive: Fundamentals, JWT Auth & Revocation Strategies
August 24, 2026

A comprehensive guide to how API Gateways work, how they validate JWTs, and the tradeoffs behind token revocation. Table of Contents Part 1: API Gateway Fundame...

Semantic Matching Without a Single Line of Training Data

Semantic Matching Without a Single Line of Training Data
August 15, 2026

How I designed an embeddingbased job–candidate matching service and why the interesting decisions were the ones I said "no" to. The setup I'm building a job pla...