Blog
Notes on data structures & algorithms, system design, and things I learn along the way.
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.
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.
Why this is confusing in JavaScript and how four simple binding rules — plus arrow functions — determine its value in any situation.
Why [] == ![] is true and other coercion puzzles — the actual rules behind == , truthiness, and the handful of habits that keep them from biting.
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.
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.
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.
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.