Blog

Notes on data structures & algorithms, system design, and things I learn along the way.

July 12, 2026Consistent Hashing: Scaling Without Reshuffling Everything4 min read

Why `hash % N` falls apart the moment you add a server, and how consistent hashing moves only a fraction of your keys when the cluster changes.

#System Design
July 12, 2026Generators and Iterators: Functions That Pause4 min read

The protocol behind for...of, the spread operator, and async/await — plus generator functions, which can pause mid-execution and resume exactly where they left off.

#JavaScript
July 11, 2026Bit Manipulation Fundamentals3 min read

The operators every developer half-remembers — AND, OR, XOR, shifts — and the handful of tricks that turn them into fast, elegant solutions.

#DSA
July 11, 2026Tries: Searching by Prefix4 min read

The data structure behind autocomplete and spellcheck. How a trie stores words as shared character paths, and why lookups cost the length of the word — not the size of the dictionary.

#DSA
July 10, 2026Heaps and the Priority Queue4 min read

How a heap keeps the smallest (or largest) element one lookup away, why it's stored in a plain array, and the sift-up/sift-down operations that keep it valid.

#DSA
July 10, 2026Linked Lists and Floyd's Cycle Detection3 min read

Why linked lists still matter, and the two-pointer trick that detects a loop in one pass with no extra memory — the famous tortoise and hare.

#DSA
July 9, 2026Dynamic Programming: From Memoization to Tables3 min read

DP is not a scary black box — it's recursion that stops repeating itself. Follow one problem from exponential recursion to a linear table, one cell at a time.

#DSA
July 9, 2026Graph Traversal: BFS and DFS Side by Side3 min read

Breadth-first and depth-first search are the same algorithm with one data structure swapped. See both walk the same graph, and learn which to reach for.

#DSA
July 8, 2026Recursion and the Call Stack: What Actually Happens3 min read

Recursion feels like magic until you see the call stack. Here's the mechanical picture — frames pushing and popping — plus base cases, stack overflows, and tail calls.

#DSA
July 8, 2026Two Pointers and the Sliding Window3 min read

Two of the highest-leverage array patterns in interviews and real code — how they turn nested O(n²) loops into a single O(n) pass, and when each one applies.

#DSA
July 7, 2026Prototypes and Inheritance: How JavaScript Objects Really Work6 min read

The prototype chain is the engine behind every JavaScript object and the class keyword is sugar on top of it — here's how the whole thing actually works.

#JavaScript
July 7, 2026The this Keyword: Four Rules That Explain Every Case4 min read

Why this is confusing in JavaScript and how four simple binding rules — plus arrow functions — determine its value in any situation.

#JavaScript
July 7, 2026Type Coercion and Equality: Making Sense of == in JavaScript5 min read

Why [] == ![] is true and other coercion puzzles — the actual rules behind == , truthiness, and the handful of habits that keep them from biting.

#JavaScript
July 6, 2026Binary Search and BSTs: Halving Your Way to O(log n)5 min read

How binary search eliminates half the problem with every comparison, and how binary search trees turn the same idea into a data structure — with interactive animations.

#DSA
July 6, 2026Closures in JavaScript: Private State, Loops, and Stale Values5 min read

What a closure actually is, how the scope chain makes it work, and the three places closures matter most — private state, the classic loop bug, and React hooks.

#JavaScript
July 6, 2026Debounce vs Throttle: Taming Event Storms in JavaScript4 min read

An interactive guide to debouncing and throttling — when to use each, how to implement them from scratch, and the edge cases that bite in production.

#JavaScript
July 6, 2026Hash Maps Under the Hood: Why O(1) Comes With an Asterisk5 min read

How hash maps actually work — hashing, buckets, collisions, and resizing — with an animated walkthrough and a from-scratch implementation.

#DSA
July 6, 2026The JavaScript Event Loop: How Async Actually Works5 min read

A visual, step-by-step guide to the event loop — call stack, task queue, microtasks, and async/await — with interactive animations you can play through.

#JavaScript
July 6, 2026JavaScript Promises in Depth: Chaining, Errors, and Combinators5 min read

The rules that make promises predictable — state transitions, how .then chains really resolve, error propagation, and when to reach for all, allSettled, race, or any.

#JavaScript
July 6, 2026Building an LRU Cache From Scratch4 min read

Why the classic interview question is really a lesson in composing data structures — with an animated walkthrough and two working implementations.

#DSA#System Design
July 6, 2026Quick Sort and Heap Sort: The In-Place O(n log n) Sorts6 min read

A visual walkthrough of quick sort and heap sort — how partitioning and heaps achieve O(n log n) without merge sort's extra memory, with animated demos and code in Java and JavaScript.

#DSA
July 6, 2026Rate Limiting Algorithms: Token Bucket, Windows, and Their Trade-offs5 min read

How APIs decide who gets throttled — token bucket, fixed and sliding windows, animated demos of each, and what changes when the limiter goes distributed.

#System Design
July 6, 2026WebSockets vs SSE vs Polling: Choosing a Real-Time Strategy4 min read

Four ways to get server data to the browser without a refresh — animated message flows for each, and a decision guide drawn from building live-data UIs.

#System Design
July 5, 2026Sorting Algorithms Explained: Bubble, Selection, Insertion, and Merge Sort5 min read

A visual, hands-on walkthrough of four classic sorting algorithms with animated demos and code in both Java and JavaScript.

#DSA
September 22, 2024How to Create Your First Micro-Frontend Using NextJS2 min read

Learn how to build your first micro-frontend architecture using NextJS, exploring the benefits of modular development and strategies for seamless integration in modern web applications.

#System Design