<?xml version="1.0" encoding="UTF-8" ?>
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>adarshm.com</title>
        <link>https://adarshm.com</link>
        <description>Adarsh M. — JavaScript developer writing about the web. Posts on data structures, algorithms, system design, and web development.</description>
        <language>en-us</language>
        <atom:link href="https://adarshm.com/rss" rel="self" type="application/rss+xml" />
        <item>
          <title>Caching Strategies: Cache-Aside, Write-Through, and Write-Back</title>
          <link>https://adarshm.com/blog/caching-strategies-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/caching-strategies-explained</guid>
          <description>Adding a cache in front of a database is easy. Deciding when the cache gets populated and how writes stay consistent with the source of truth is where cache-aside, write-through, and write-back diverge — each trading latency against staleness risk differently.</description>
          <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The CAP Theorem and Eventual Consistency, Explained</title>
          <link>https://adarshm.com/blog/cap-theorem-and-eventual-consistency</link>
          <guid isPermaLink="true">https://adarshm.com/blog/cap-theorem-and-eventual-consistency</guid>
          <description>Every distributed database quietly picks a side in a trade-off it can&apos;t escape: when the network partitions, you serve either possibly-stale data or an error. CAP theorem names that choice — and explains why &apos;eventual consistency&apos; is a deliberate design, not a bug.</description>
          <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Proxy and Reflect: Intercepting JavaScript Objects</title>
          <link>https://adarshm.com/blog/javascript-proxy-and-reflect</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-proxy-and-reflect</guid>
          <description>Proxy lets you intercept fundamental operations on an object — get, set, delete, has — before they happen. It&apos;s the mechanism behind Vue&apos;s reactivity, ORMs, and API validation layers.</description>
          <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>WeakMap and WeakSet: Memory-Safe References in JavaScript</title>
          <link>https://adarshm.com/blog/weakmap-and-weakset</link>
          <guid isPermaLink="true">https://adarshm.com/blog/weakmap-and-weakset</guid>
          <description>A regular Map keeps its keys alive forever, which turns &apos;metadata keyed by object&apos; into a memory leak. WeakMap holds weak references instead, letting the garbage collector reclaim entries the rest of the program has already forgotten.</description>
          <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Async/Await Under the Hood: Promises in Disguise</title>
          <link>https://adarshm.com/blog/async-await-under-the-hood</link>
          <guid isPermaLink="true">https://adarshm.com/blog/async-await-under-the-hood</guid>
          <description>async/await isn&apos;t a new concurrency model — it&apos;s syntax sugar over promises and generators. Understanding the desugared version explains error handling, sequential-looking parallel bugs, and why &apos;async&apos; functions always return a promise.</description>
          <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>KMP String Matching: Search Without Backtracking</title>
          <link>https://adarshm.com/blog/kmp-string-matching</link>
          <guid isPermaLink="true">https://adarshm.com/blog/kmp-string-matching</guid>
          <description>The naive substring search re-checks characters it&apos;s already seen and degrades to O(nm) on adversarial input. The Knuth-Morris-Pratt algorithm precomputes a failure table so the search pointer never moves backward, guaranteeing O(n + m).</description>
          <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Dijkstra&apos;s Algorithm: Shortest Paths With a Priority Queue</title>
          <link>https://adarshm.com/blog/dijkstra-shortest-paths</link>
          <guid isPermaLink="true">https://adarshm.com/blog/dijkstra-shortest-paths</guid>
          <description>BFS finds shortest paths when every edge costs the same. Dijkstra&apos;s algorithm generalizes that to weighted graphs by always expanding the closest unvisited node next — the algorithm behind every routing map you&apos;ve used.</description>
          <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Merge Intervals and Greedy Interval Scheduling</title>
          <link>https://adarshm.com/blog/merge-intervals-and-greedy-scheduling</link>
          <guid isPermaLink="true">https://adarshm.com/blog/merge-intervals-and-greedy-scheduling</guid>
          <description>Calendar conflicts, meeting rooms, and &apos;maximum non-overlapping tasks&apos; are all interval problems that collapse into a single sort-then-scan pattern once you pick the right key to sort by.</description>
          <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Bloom Filters: Probably in the Set, Definitely Not</title>
          <link>https://adarshm.com/blog/bloom-filters-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/bloom-filters-explained</guid>
          <description>A probabilistic data structure that answers set-membership queries in constant space by allowing false positives but never false negatives — and why Chrome, Cassandra, and CDNs all rely on that trade.</description>
          <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Segment Trees: Range Queries in O(log n)</title>
          <link>https://adarshm.com/blog/segment-trees-range-queries</link>
          <guid isPermaLink="true">https://adarshm.com/blog/segment-trees-range-queries</guid>
          <description>When an array changes and you still need fast range sum, min, or max queries, prefix sums stop working. Segment trees answer both range queries and point updates in logarithmic time.</description>
          <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Backtracking: Brute Force with an Undo Button</title>
          <link>https://adarshm.com/blog/backtracking-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/backtracking-explained</guid>
          <description>One template solves permutations, subsets, N-Queens, and Sudoku. Learn the choose–explore–unchoose pattern and how pruning turns exponential search into something usable.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Big-O Notation: A Practical Guide for Working Developers</title>
          <link>https://adarshm.com/blog/big-o-notation-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/big-o-notation-explained</guid>
          <description>What Big-O actually measures, how to read a function&apos;s complexity straight from its shape, and why O(n log n) beats O(n²) long before n gets big.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Database Indexing: Why Your Query Is Slow (and How B-Trees Fix It)</title>
          <link>https://adarshm.com/blog/database-indexing-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/database-indexing-explained</guid>
          <description>What an index physically is, how B-trees make lookups logarithmic, composite index ordering, covering indexes, and the query patterns that silently refuse to use your index.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>ESM vs CommonJS: What Actually Differs (and Why It Still Bites)</title>
          <link>https://adarshm.com/blog/esm-vs-commonjs</link>
          <guid isPermaLink="true">https://adarshm.com/blog/esm-vs-commonjs</guid>
          <description>require vs import isn&apos;t just syntax — it&apos;s dynamic vs static, copies vs live bindings, sync vs async. A field guide to the module systems and the interop errors between them.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Event Delegation: One Listener to Rule the List</title>
          <link>https://adarshm.com/blog/event-delegation-and-propagation</link>
          <guid isPermaLink="true">https://adarshm.com/blog/event-delegation-and-propagation</guid>
          <description>How DOM events really travel — capture, target, bubble — and how delegation exploits bubbling to handle a thousand rows with a single listener.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>JavaScript Memory Management: How the Garbage Collector Thinks</title>
          <link>https://adarshm.com/blog/javascript-memory-management</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-memory-management</guid>
          <description>Reachability, generational GC, and the four leak patterns that survive garbage collection — timers, detached DOM nodes, growing caches, and forgotten listeners.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Load Balancing Strategies: From Round Robin to Consistent Hashing</title>
          <link>https://adarshm.com/blog/load-balancing-strategies</link>
          <guid isPermaLink="true">https://adarshm.com/blog/load-balancing-strategies</guid>
          <description>How load balancers decide where each request goes — the classic algorithms, L4 vs L7, health checks, and the sticky-session problem that pushes state out of your servers.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Stacks and Queues: Two Rules That Run Your Whole Program</title>
          <link>https://adarshm.com/blog/stacks-and-queues</link>
          <guid isPermaLink="true">https://adarshm.com/blog/stacks-and-queues</guid>
          <description>LIFO and FIFO look trivial until you notice they power your call stack, undo history, browser navigation, and every BFS. Plus the classic interview patterns for each.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Topological Sort: Putting Dependencies in Order</title>
          <link>https://adarshm.com/blog/topological-sort</link>
          <guid isPermaLink="true">https://adarshm.com/blog/topological-sort</guid>
          <description>Build systems, package managers, and course schedulers all answer the same question: what order satisfies every dependency? Kahn&apos;s algorithm answers it — and detects impossible cycles.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Union-Find: Connectivity in (Almost) Constant Time</title>
          <link>https://adarshm.com/blog/union-find-disjoint-set</link>
          <guid isPermaLink="true">https://adarshm.com/blog/union-find-disjoint-set</guid>
          <description>The disjoint set union structure answers &apos;are these two connected?&apos; in near-O(1) — with two optimizations you can write in twenty lines. Includes Kruskal&apos;s MST and cycle detection.</description>
          <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Consistent Hashing: Scaling Without Reshuffling Everything</title>
          <link>https://adarshm.com/blog/consistent-hashing</link>
          <guid isPermaLink="true">https://adarshm.com/blog/consistent-hashing</guid>
          <description>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.</description>
          <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Generators and Iterators: Functions That Pause</title>
          <link>https://adarshm.com/blog/javascript-generators-and-iterators</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-generators-and-iterators</guid>
          <description>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.</description>
          <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Bit Manipulation Fundamentals</title>
          <link>https://adarshm.com/blog/bit-manipulation-fundamentals</link>
          <guid isPermaLink="true">https://adarshm.com/blog/bit-manipulation-fundamentals</guid>
          <description>The operators every developer half-remembers — AND, OR, XOR, shifts — and the handful of tricks that turn them into fast, elegant solutions.</description>
          <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Tries: Searching by Prefix</title>
          <link>https://adarshm.com/blog/tries-prefix-trees</link>
          <guid isPermaLink="true">https://adarshm.com/blog/tries-prefix-trees</guid>
          <description>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.</description>
          <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Heaps and the Priority Queue</title>
          <link>https://adarshm.com/blog/heaps-and-priority-queues</link>
          <guid isPermaLink="true">https://adarshm.com/blog/heaps-and-priority-queues</guid>
          <description>How a heap keeps the smallest (or largest) element one lookup away, why it&apos;s stored in a plain array, and the sift-up/sift-down operations that keep it valid.</description>
          <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Linked Lists and Floyd&apos;s Cycle Detection</title>
          <link>https://adarshm.com/blog/linked-lists-and-cycle-detection</link>
          <guid isPermaLink="true">https://adarshm.com/blog/linked-lists-and-cycle-detection</guid>
          <description>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.</description>
          <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Dynamic Programming: From Memoization to Tables</title>
          <link>https://adarshm.com/blog/dynamic-programming-intro</link>
          <guid isPermaLink="true">https://adarshm.com/blog/dynamic-programming-intro</guid>
          <description>DP is not a scary black box — it&apos;s recursion that stops repeating itself. Follow one problem from exponential recursion to a linear table, one cell at a time.</description>
          <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Graph Traversal: BFS and DFS Side by Side</title>
          <link>https://adarshm.com/blog/graph-traversal-bfs-dfs</link>
          <guid isPermaLink="true">https://adarshm.com/blog/graph-traversal-bfs-dfs</guid>
          <description>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.</description>
          <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Recursion and the Call Stack: What Actually Happens</title>
          <link>https://adarshm.com/blog/recursion-and-the-call-stack</link>
          <guid isPermaLink="true">https://adarshm.com/blog/recursion-and-the-call-stack</guid>
          <description>Recursion feels like magic until you see the call stack. Here&apos;s the mechanical picture — frames pushing and popping — plus base cases, stack overflows, and tail calls.</description>
          <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Two Pointers and the Sliding Window</title>
          <link>https://adarshm.com/blog/two-pointers-and-sliding-window</link>
          <guid isPermaLink="true">https://adarshm.com/blog/two-pointers-and-sliding-window</guid>
          <description>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.</description>
          <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Prototypes and Inheritance: How JavaScript Objects Really Work</title>
          <link>https://adarshm.com/blog/javascript-prototypes-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-prototypes-explained</guid>
          <description>The prototype chain is the engine behind every JavaScript object and the class keyword is sugar on top of it — here&apos;s how the whole thing actually works.</description>
          <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The this Keyword: Four Rules That Explain Every Case</title>
          <link>https://adarshm.com/blog/javascript-this-keyword</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-this-keyword</guid>
          <description>Why this is confusing in JavaScript and how four simple binding rules — plus arrow functions — determine its value in any situation.</description>
          <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Type Coercion and Equality: Making Sense of == in JavaScript</title>
          <link>https://adarshm.com/blog/javascript-type-coercion</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-type-coercion</guid>
          <description>Why [] == ![] is true and other coercion puzzles — the actual rules behind == , truthiness, and the handful of habits that keep them from biting.</description>
          <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Binary Search and BSTs: Halving Your Way to O(log n)</title>
          <link>https://adarshm.com/blog/binary-search-and-bst</link>
          <guid isPermaLink="true">https://adarshm.com/blog/binary-search-and-bst</guid>
          <description>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.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Closures in JavaScript: Private State, Loops, and Stale Values</title>
          <link>https://adarshm.com/blog/closures-and-the-module-pattern</link>
          <guid isPermaLink="true">https://adarshm.com/blog/closures-and-the-module-pattern</guid>
          <description>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.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Debounce vs Throttle: Taming Event Storms in JavaScript</title>
          <link>https://adarshm.com/blog/debounce-vs-throttle</link>
          <guid isPermaLink="true">https://adarshm.com/blog/debounce-vs-throttle</guid>
          <description>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.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Hash Maps Under the Hood: Why O(1) Comes With an Asterisk</title>
          <link>https://adarshm.com/blog/hash-maps-under-the-hood</link>
          <guid isPermaLink="true">https://adarshm.com/blog/hash-maps-under-the-hood</guid>
          <description>How hash maps actually work — hashing, buckets, collisions, and resizing — with an animated walkthrough and a from-scratch implementation.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The JavaScript Event Loop: How Async Actually Works</title>
          <link>https://adarshm.com/blog/javascript-event-loop</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-event-loop</guid>
          <description>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.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>JavaScript Promises in Depth: Chaining, Errors, and Combinators</title>
          <link>https://adarshm.com/blog/javascript-promises-in-depth</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-promises-in-depth</guid>
          <description>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.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Building an LRU Cache From Scratch</title>
          <link>https://adarshm.com/blog/lru-cache-from-scratch</link>
          <guid isPermaLink="true">https://adarshm.com/blog/lru-cache-from-scratch</guid>
          <description>Why the classic interview question is really a lesson in composing data structures — with an animated walkthrough and two working implementations.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Quick Sort and Heap Sort: The In-Place O(n log n) Sorts</title>
          <link>https://adarshm.com/blog/quick-sort-and-heap-sort</link>
          <guid isPermaLink="true">https://adarshm.com/blog/quick-sort-and-heap-sort</guid>
          <description>A visual walkthrough of quick sort and heap sort — how partitioning and heaps achieve O(n log n) without merge sort&apos;s extra memory, with animated demos and code in Java and JavaScript.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Rate Limiting Algorithms: Token Bucket, Windows, and Their Trade-offs</title>
          <link>https://adarshm.com/blog/rate-limiting-algorithms</link>
          <guid isPermaLink="true">https://adarshm.com/blog/rate-limiting-algorithms</guid>
          <description>How APIs decide who gets throttled — token bucket, fixed and sliding windows, animated demos of each, and what changes when the limiter goes distributed.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>WebSockets vs SSE vs Polling: Choosing a Real-Time Strategy</title>
          <link>https://adarshm.com/blog/websockets-sse-polling</link>
          <guid isPermaLink="true">https://adarshm.com/blog/websockets-sse-polling</guid>
          <description>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.</description>
          <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Sorting Algorithms Explained: Bubble, Selection, Insertion, and Merge Sort</title>
          <link>https://adarshm.com/blog/sorting-algorithms-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/sorting-algorithms-explained</guid>
          <description>A visual, hands-on walkthrough of four classic sorting algorithms with animated demos and code in both Java and JavaScript.</description>
          <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>How to Create Your First Micro-Frontend Using NextJS</title>
          <link>https://adarshm.com/blog/micro-frontend-using-nextjs</link>
          <guid isPermaLink="true">https://adarshm.com/blog/micro-frontend-using-nextjs</guid>
          <description>Build a micro-frontend architecture with Next.js multi-zones: rewrites, assetPrefix, cross-zone navigation, shared auth, deployment, and the pitfalls nobody mentions.</description>
          <pubDate>Sun, 22 Sep 2024 00:00:00 GMT</pubDate>
        </item>
    </channel>
  </rss>