<?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>Back-of-the-Envelope Estimation for System Design</title>
          <link>https://adarshm.com/blog/back-of-the-envelope-estimation</link>
          <guid isPermaLink="true">https://adarshm.com/blog/back-of-the-envelope-estimation</guid>
          <description>How to turn &apos;a hundred million users&apos; into requests per second, storage, bandwidth and cache size in a few lines of arithmetic. The handful of numbers worth memorising, a worked URL-shortener example, and how each estimate should change the design.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Composition over Inheritance, with Numbers</title>
          <link>https://adarshm.com/blog/composition-over-inheritance</link>
          <guid isPermaLink="true">https://adarshm.com/blog/composition-over-inheritance</guid>
          <description>Why inheritance hierarchies explode when behaviours combine, how composing small objects avoids it, and when inheritance is still the right tool. With the arithmetic, the fragile base class problem, and decorators in TypeScript.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Hybrid Search: BM25 + Vectors with Reciprocal Rank Fusion</title>
          <link>https://adarshm.com/blog/hybrid-search-and-rank-fusion</link>
          <guid isPermaLink="true">https://adarshm.com/blog/hybrid-search-and-rank-fusion</guid>
          <description>Keyword search finds exact terms; vector search finds meaning; each misses what the other catches. How BM25 scores documents, why you can&apos;t just add the two scores, how reciprocal rank fusion merges rankings using positions alone, and where a reranker fits.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The Observer Pattern: Telling Others Without Knowing Them</title>
          <link>https://adarshm.com/blog/observer-pattern</link>
          <guid isPermaLink="true">https://adarshm.com/blog/observer-pattern</guid>
          <description>How a subject notifies a list of observers through a small interface, so new reactions can be added without editing the code that triggers them. Implementing it in TypeScript, its pitfalls — ordering, errors, leaks, re-entrancy — and how it relates to event emitters, pub/sub and the DOM.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Sagas vs. Two-Phase Commit: Transactions Across Services</title>
          <link>https://adarshm.com/blog/sagas-and-two-phase-commit</link>
          <guid isPermaLink="true">https://adarshm.com/blog/sagas-and-two-phase-commit</guid>
          <description>When one business operation spans several databases, there&apos;s no single transaction to wrap it in. How two-phase commit makes it atomic at the price of blocking, how sagas use compensating actions instead, orchestration vs. choreography, and the isolation problems sagas leave you to solve.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Sliding Window Maximum with a Monotonic Deque</title>
          <link>https://adarshm.com/blog/sliding-window-maximum</link>
          <guid isPermaLink="true">https://adarshm.com/blog/sliding-window-maximum</guid>
          <description>The maximum of every window of size k in an array, in O(n) instead of O(n·k). How a deque of indices with decreasing values throws away elements that can never win, why every element is pushed and popped at most once, and where the same idea shows up.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>SOLID Principles, Shown on One Class</title>
          <link>https://adarshm.com/blog/solid-principles</link>
          <guid isPermaLink="true">https://adarshm.com/blog/solid-principles</guid>
          <description>Five principles for object-oriented design, applied one at a time to a single order service. What each one actually prevents, how to spot a violation in a code review, and when following them blindly makes code worse.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>State Machines and the State Pattern</title>
          <link>https://adarshm.com/blog/state-pattern-and-state-machines</link>
          <guid isPermaLink="true">https://adarshm.com/blog/state-pattern-and-state-machines</guid>
          <description>A vending machine, an order, a TCP connection: objects that respond to the same event differently depending on what happened before. How to model them as explicit state machines, implement them with the State pattern or a transition table, and stop invalid states from existing.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The Strategy Pattern: Swapping Behaviour Without if/else</title>
          <link>https://adarshm.com/blog/strategy-pattern</link>
          <guid isPermaLink="true">https://adarshm.com/blog/strategy-pattern</guid>
          <description>When one step of an algorithm varies — pricing, sorting, retry policy, compression — the Strategy pattern puts each variant behind an interface and picks one at runtime. How it works, how it looks in TypeScript with classes or plain functions, and when a switch statement is still better.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The 0/1 Knapsack Problem, Step by Step</title>
          <link>https://adarshm.com/blog/zero-one-knapsack</link>
          <guid isPermaLink="true">https://adarshm.com/blog/zero-one-knapsack</guid>
          <description>Pick items with weights and values to maximise value without going over a capacity, using each at most once. Why greedy fails, how a table of &apos;best value with these items and this capacity&apos; solves it, how to recover the chosen items, and the one-array version that iterates backwards.</description>
          <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Cookies, localStorage, sessionStorage, IndexedDB: Which Browser Storage When?</title>
          <link>https://adarshm.com/blog/browser-storage-compared</link>
          <guid isPermaLink="true">https://adarshm.com/blog/browser-storage-compared</guid>
          <description>Browsers offer five places to keep data, and they differ in size, lifetime, scope, speed, and whether the server sees them. A side-by-side guide to choosing — and the security mistakes, like tokens in localStorage, that come from choosing wrong.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Edit Distance: How Spell-Checkers Measure &apos;Close Enough&apos;</title>
          <link>https://adarshm.com/blog/edit-distance-levenshtein</link>
          <guid isPermaLink="true">https://adarshm.com/blog/edit-distance-levenshtein</guid>
          <description>The fewest inserts, deletes and substitutions to turn one word into another. How the Levenshtein distance is computed with a small DP table, how to recover the actual edits, and where it&apos;s used — from &apos;did you mean&apos; to fuzzy search and DNA alignment.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Event Sourcing and CQRS: Storing What Happened, Not Just What Is</title>
          <link>https://adarshm.com/blog/event-sourcing-and-cqrs</link>
          <guid isPermaLink="true">https://adarshm.com/blog/event-sourcing-and-cqrs</guid>
          <description>Instead of overwriting the current state, store every change as an immutable event and derive state by replaying them. What event sourcing gives you — full history, audit, time travel, new views of old data — what it costs, and how CQRS fits alongside it.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Floyd–Warshall: Shortest Paths Between Every Pair of Nodes</title>
          <link>https://adarshm.com/blog/floyd-warshall-all-pairs-shortest-paths</link>
          <guid isPermaLink="true">https://adarshm.com/blog/floyd-warshall-all-pairs-shortest-paths</guid>
          <description>Dijkstra answers &apos;how far from here to everywhere&apos;. Floyd–Warshall answers &apos;how far from everywhere to everywhere&apos; — with three nested loops and one table. How the via-vertex idea works, how to rebuild the paths, and when it beats running Dijkstra many times.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Health Checks: Liveness vs Readiness, and the Restart Storm</title>
          <link>https://adarshm.com/blog/health-checks-liveness-readiness</link>
          <guid isPermaLink="true">https://adarshm.com/blog/health-checks-liveness-readiness</guid>
          <description>&apos;Is it alive?&apos; and &apos;can it take traffic?&apos; are different questions with different consequences: one restarts the process, the other just routes around it. How liveness, readiness and startup probes work, and the one mistake that turns a database blip into a full outage.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The Intl API: Formatting Numbers, Dates and Lists for Every Locale</title>
          <link>https://adarshm.com/blog/intl-api-formatting</link>
          <guid isPermaLink="true">https://adarshm.com/blog/intl-api-formatting</guid>
          <description>1,234,567.89 or 12,34,567.89 or 1.234.567,89? JavaScript&apos;s built-in Intl API formats numbers, currencies, dates, relative times, lists and plurals correctly for any language — no libraries, no hand-written rules.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Error Handling in JavaScript: try/catch, Promises, and Error Causes</title>
          <link>https://adarshm.com/blog/javascript-error-handling</link>
          <guid isPermaLink="true">https://adarshm.com/blog/javascript-error-handling</guid>
          <description>How errors travel up the call stack, how try/catch/finally works, why async errors become rejected promises, the fetch call that doesn&apos;t reject on a 404, and how to add context with error causes without losing the original problem.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Raft: How a Cluster Agrees on a Leader</title>
          <link>https://adarshm.com/blog/raft-leader-election</link>
          <guid isPermaLink="true">https://adarshm.com/blog/raft-leader-election</guid>
          <description>Several servers need to agree on one ordered log, even when some crash. How Raft elects a leader with terms and randomized timeouts, why a majority is the magic number, and how replication and stale leaders are handled — the consensus algorithm behind etcd and many databases.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Service Workers: Making a Website Work Offline</title>
          <link>https://adarshm.com/blog/service-workers-and-offline</link>
          <guid isPermaLink="true">https://adarshm.com/blog/service-workers-and-offline</guid>
          <description>A service worker is a script that sits between your page and the network and can answer requests itself. How it&apos;s installed and updated, the main caching strategies — cache-first, network-first, stale-while-revalidate — and the lifecycle details that trip everyone up.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Declaration Files (.d.ts): Giving JavaScript Code TypeScript Types</title>
          <link>https://adarshm.com/blog/typescript-declaration-files</link>
          <guid isPermaLink="true">https://adarshm.com/blog/typescript-declaration-files</guid>
          <description>How TypeScript type-checks code that isn&apos;t written in TypeScript: declaration files describe the shape of JavaScript that lives elsewhere. Where they come from — libraries, DefinitelyTyped, your own builds — and how to write one for an untyped module or a global.</description>
          <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>CDNs Explained: Moving Your Site Closer to Your Users</title>
          <link>https://adarshm.com/blog/cdn-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/cdn-explained</guid>
          <description>Light in fibre is fast, but not fast enough to cross the world many times per page load. How a content delivery network caches your files at edges near users, what it can and can&apos;t cache, and how to control it with headers and purges.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Core Web Vitals: LCP, INP and CLS in Plain Language</title>
          <link>https://adarshm.com/blog/core-web-vitals</link>
          <guid isPermaLink="true">https://adarshm.com/blog/core-web-vitals</guid>
          <description>Three numbers that describe how a page feels to a real user: how fast the main content appears, how quickly it responds, and how much it jumps around. What each one measures, the thresholds that count as good, and the fixes that move them.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Counting Sort and Radix Sort: Sorting Without Comparisons</title>
          <link>https://adarshm.com/blog/counting-sort-and-radix-sort</link>
          <guid isPermaLink="true">https://adarshm.com/blog/counting-sort-and-radix-sort</guid>
          <description>No comparison sort can beat O(n log n) — but if you never compare, the rule doesn&apos;t apply. How counting sort sorts small-range integers in O(n + k), why stability matters, and how radix sort extends the trick to large numbers digit by digit.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Database Transactions and Isolation Levels: The Lost Update Problem</title>
          <link>https://adarshm.com/blog/database-transactions-and-isolation-levels</link>
          <guid isPermaLink="true">https://adarshm.com/blog/database-transactions-and-isolation-levels</guid>
          <description>ACID promises a lot, but the I — isolation — comes in levels, and the default one still lets concurrent transactions overwrite each other. What dirty reads, non-repeatable reads, phantoms and lost updates are, and the fixes that actually work.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>HTTP/1.1, HTTP/2 and HTTP/3: What Changed and Why</title>
          <link>https://adarshm.com/blog/http2-vs-http3</link>
          <guid isPermaLink="true">https://adarshm.com/blog/http2-vs-http3</guid>
          <description>The meaning of a web request hasn&apos;t changed in decades — the way it travels has. How HTTP/2 fixed HTTP/1.1&apos;s one-request-at-a-time problem, why it hit a new wall in TCP, and how HTTP/3 over QUIC gets around it.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Kadane&apos;s Algorithm: The Maximum Subarray in One Pass</title>
          <link>https://adarshm.com/blog/kadanes-algorithm-maximum-subarray</link>
          <guid isPermaLink="true">https://adarshm.com/blog/kadanes-algorithm-maximum-subarray</guid>
          <description>Find the contiguous slice of an array with the largest sum — in O(n) time and O(1) memory. Why a negative running sum should always be dropped, how to recover the slice itself, and how the same idea solves stock prices, circular arrays and products.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Tree Shaking: How Bundlers Remove the Code You Don&apos;t Use</title>
          <link>https://adarshm.com/blog/tree-shaking-and-bundlers</link>
          <guid isPermaLink="true">https://adarshm.com/blog/tree-shaking-and-bundlers</guid>
          <description>Import one function from a library and you might ship all of it. How bundlers use the static structure of ES modules to drop unused exports, the things that silently defeat it — CommonJS, side effects, barrel files — and how to check what you&apos;re actually shipping.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Vertical vs Horizontal Scaling: Bigger Machine or More Machines?</title>
          <link>https://adarshm.com/blog/vertical-vs-horizontal-scaling</link>
          <guid isPermaLink="true">https://adarshm.com/blog/vertical-vs-horizontal-scaling</guid>
          <description>When one server can&apos;t keep up, you can buy a bigger one or add more. Why scaling up is the right first move, why it eventually stops working, and what scaling out really costs: stateless servers, load balancers, and shared state.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Webhooks: Receiving Events Reliably</title>
          <link>https://adarshm.com/blog/webhooks-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/webhooks-explained</guid>
          <description>A webhook is an API calling you instead of you calling it. How to verify that a request really came from the provider, why you should acknowledge fast and process later, and how to handle the retries, duplicates and out-of-order events that always come.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>XSS and Content Security Policy: Stopping Injected JavaScript</title>
          <link>https://adarshm.com/blog/xss-and-content-security-policy</link>
          <guid isPermaLink="true">https://adarshm.com/blog/xss-and-content-security-policy</guid>
          <description>Cross-site scripting gets your own site to run an attacker&apos;s JavaScript in your users&apos; browsers. How it happens, why escaping output is the real fix, the places frameworks can&apos;t protect you, and how a Content Security Policy limits the damage when something slips through.</description>
          <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>as const vs enum: Modelling Fixed Sets of Values in TypeScript</title>
          <link>https://adarshm.com/blog/as-const-vs-enums</link>
          <guid isPermaLink="true">https://adarshm.com/blog/as-const-vs-enums</guid>
          <description>TypeScript widens literals by default and enums generate runtime code. How as const preserves exact values, how to derive a union type from one list, and why many teams now prefer const objects over enums.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Conditional Types and infer: If/Else for TypeScript Types</title>
          <link>https://adarshm.com/blog/conditional-types-and-infer</link>
          <guid isPermaLink="true">https://adarshm.com/blog/conditional-types-and-infer</guid>
          <description>T extends U ? X : Y lets a type make decisions, and infer lets it pull pieces out of other types. How conditional types work, why they distribute over unions, and how ReturnType, Awaited and Exclude are built from them.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Prompting, RAG, or Fine-Tuning? Choosing How to Customise an LLM</title>
          <link>https://adarshm.com/blog/fine-tuning-vs-rag-vs-prompting</link>
          <guid isPermaLink="true">https://adarshm.com/blog/fine-tuning-vs-rag-vs-prompting</guid>
          <description>Three ways to make a general model work for your problem: change what you ask, change what it can see, or change the model itself. What each one is actually good at, why fine-tuning is the wrong tool for teaching facts, and the order to try them in.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Streaming LLM Responses: Show the First Word in Under a Second</title>
          <link>https://adarshm.com/blog/streaming-llm-responses</link>
          <guid isPermaLink="true">https://adarshm.com/blog/streaming-llm-responses</guid>
          <description>A long model answer can take many seconds to finish, but the first tokens exist almost immediately. How streaming works over server-sent events, how to relay it from your server to the browser, and the details — stop reasons, cancellation, errors — that make it production-ready.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Structured Outputs: Getting Reliable JSON From an LLM</title>
          <link>https://adarshm.com/blog/structured-outputs-from-llms</link>
          <guid isPermaLink="true">https://adarshm.com/blog/structured-outputs-from-llms</guid>
          <description>“Respond in JSON” works most of the time, which isn&apos;t good enough for software. How schema-constrained generation guarantees the shape of a model&apos;s output, how to use it with a Zod schema, and what it still can&apos;t guarantee.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Temperature and Sampling: Why the Same Prompt Gives Different Answers</title>
          <link>https://adarshm.com/blog/temperature-and-sampling</link>
          <guid isPermaLink="true">https://adarshm.com/blog/temperature-and-sampling</guid>
          <description>A language model doesn&apos;t choose words — it produces probabilities, and then something draws from them. How temperature, top-p and top-k reshape that draw, why randomness is useful, and why you can&apos;t always count on turning it off.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Template Literal Types: String Patterns the Compiler Understands</title>
          <link>https://adarshm.com/blog/template-literal-types</link>
          <guid isPermaLink="true">https://adarshm.com/blog/template-literal-types</guid>
          <description>The same backtick syntax as template strings, but for types. How to generate every valid combination of a class name or event handler, type routes and IDs by their shape, rename keys in mapped types, and parse strings with infer.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The satisfies Operator: Check a Type Without Losing It</title>
          <link>https://adarshm.com/blog/typescript-satisfies-operator</link>
          <guid isPermaLink="true">https://adarshm.com/blog/typescript-satisfies-operator</guid>
          <description>A type annotation validates a value and then forgets everything specific about it. satisfies validates the value and keeps the precise type TypeScript inferred. When to use it, and how it compares with annotations and as.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>unknown vs any vs never: TypeScript&apos;s Special Types</title>
          <link>https://adarshm.com/blog/unknown-any-and-never</link>
          <guid isPermaLink="true">https://adarshm.com/blog/unknown-any-and-never</guid>
          <description>any switches type checking off, unknown accepts anything but makes you check before using it, and never is the type with no values at all. What each one is for, and why unknown should replace almost every any you write.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Why LLMs Hallucinate — and How to Reduce It</title>
          <link>https://adarshm.com/blog/why-llms-hallucinate</link>
          <guid isPermaLink="true">https://adarshm.com/blog/why-llms-hallucinate</guid>
          <description>A model trained to predict plausible text will produce plausible text, whether or not it&apos;s true. Where hallucinations come from, why they sound so confident, and the practical defences: grounding, letting the model abstain, citations, and verification.</description>
          <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>map, filter, reduce: Array Methods for Beginners</title>
          <link>https://adarshm.com/blog/array-methods-map-filter-reduce</link>
          <guid isPermaLink="true">https://adarshm.com/blog/array-methods-map-filter-reduce</guid>
          <description>Four array methods replace most of the for-loops you&apos;ll ever write. What map, filter, reduce and find each do, step by step, how to chain them, and when a plain loop is still the better choice.</description>
          <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Hash Functions Explained: Turning Anything Into a Number</title>
          <link>https://adarshm.com/blog/hash-functions-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/hash-functions-explained</guid>
          <description>A hash function maps any input to a fixed-size number, the same input always to the same number. How a simple one works, why collisions are unavoidable, what makes a hash good, and how the same idea powers hash maps, caches and passwords.</description>
          <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The DOM Explained: How JavaScript Sees a Web Page</title>
          <link>https://adarshm.com/blog/the-dom-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/the-dom-explained</guid>
          <description>The browser turns your HTML into a tree of objects, and that tree — not the HTML file — is what&apos;s on screen and what JavaScript changes. How to find, change, create and remove elements, and how events travel through the tree.</description>
          <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Arrays vs Linked Lists: How Data Sits in Memory</title>
          <link>https://adarshm.com/blog/arrays-vs-linked-lists</link>
          <guid isPermaLink="true">https://adarshm.com/blog/arrays-vs-linked-lists</guid>
          <description>The two most basic ways to store a sequence. Arrays keep items side by side for instant access by position; linked lists chain scattered nodes for cheap inserts. What each operation costs, and why arrays win most of the time anyway.</description>
          <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Callbacks Explained: Passing Functions Around</title>
          <link>https://adarshm.com/blog/callbacks-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/callbacks-explained</guid>
          <description>A callback is a function you hand to another function to call later. Why JavaScript is built on them, the difference between synchronous and asynchronous callbacks, and how &apos;callback hell&apos; led to promises and async/await.</description>
          <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>let, const, and var: Which One and Why</title>
          <link>https://adarshm.com/blog/let-const-and-var</link>
          <guid isPermaLink="true">https://adarshm.com/blog/let-const-and-var</guid>
          <description>Three ways to declare a variable, and the differences that actually matter: block scope vs function scope, the loop bug that var causes, and what const does (and doesn&apos;t) protect. A beginner&apos;s guide with one simple rule at the end.</description>
          <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Structural Typing: Why TypeScript Cares About Shape, Not Names</title>
          <link>https://adarshm.com/blog/structural-typing-in-typescript</link>
          <guid isPermaLink="true">https://adarshm.com/blog/structural-typing-in-typescript</guid>
          <description>In TypeScript, a value fits a type if it has the right properties — no matter what it&apos;s called or where it came from. How structural typing works, the excess-property check that seems to contradict it, and how to opt into nominal types with brands.</description>
          <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>TypeScript Utility Types: Partial, Pick, Omit, Record — and How They Work</title>
          <link>https://adarshm.com/blog/typescript-utility-and-mapped-types</link>
          <guid isPermaLink="true">https://adarshm.com/blog/typescript-utility-and-mapped-types</guid>
          <description>Define a type once, then derive the variations — update payloads, public views, dictionaries — so they can never drift apart. The built-in utility types, and the mapped-type machinery (keyof, in, T[K]) they&apos;re built from.</description>
          <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Discriminated Unions: Making Impossible States Impossible</title>
          <link>https://adarshm.com/blog/discriminated-unions-in-typescript</link>
          <guid isPermaLink="true">https://adarshm.com/blog/discriminated-unions-in-typescript</guid>
          <description>Give every member of a union a shared literal field, and TypeScript can tell them apart — narrowing in each branch and refusing to compile when a case is forgotten. The pattern behind loading states, reducers and API results.</description>
          <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Type Narrowing: How TypeScript Follows Your if Statements</title>
          <link>https://adarshm.com/blog/type-narrowing-in-typescript</link>
          <guid isPermaLink="true">https://adarshm.com/blog/type-narrowing-in-typescript</guid>
          <description>A union type means “one of these — find out which before you use it”. How typeof, equality, in, instanceof and early returns narrow a type line by line, and how to write your own type guards.</description>
          <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>TypeScript Generics: Functions That Work for Any Type</title>
          <link>https://adarshm.com/blog/typescript-generics</link>
          <guid isPermaLink="true">https://adarshm.com/blog/typescript-generics</guid>
          <description>A generic is a type parameter — a placeholder for a type, filled in at each call. How generics keep reusable code type-safe, how inference fills them in, and how constraints with extends limit them to types that make sense.</description>
          <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>HTTP Caching: Cache-Control, ETags, and the Fastest Request</title>
          <link>https://adarshm.com/blog/http-caching-headers</link>
          <guid isPermaLink="true">https://adarshm.com/blog/http-caching-headers</guid>
          <description>The fastest request is the one the browser never sends. How Cache-Control, max-age, ETags and 304 responses decide when a cached copy can be reused, and the content-hash pattern that lets you cache forever without ever serving stale files.</description>
          <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>TypeScript for JavaScript Developers: Types Exist Only Before Runtime</title>
          <link>https://adarshm.com/blog/typescript-types-at-compile-time</link>
          <guid isPermaLink="true">https://adarshm.com/blog/typescript-types-at-compile-time</guid>
          <description>TypeScript is JavaScript with type annotations that a checker reads and then deletes. What it catches, what it can&apos;t, why types vanish at runtime, and what that means for data from the outside world.</description>
          <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>What Is an API? A Beginner&apos;s Guide to REST and JSON</title>
          <link>https://adarshm.com/blog/what-is-an-api</link>
          <guid isPermaLink="true">https://adarshm.com/blog/what-is-an-api</guid>
          <description>An API is a menu of requests one program agrees to answer for another. What that means on the web, how REST maps resources to URLs and actions to HTTP methods, what JSON looks like, and how to call an API from JavaScript.</description>
          <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Cookies and Sessions: How Websites Remember You</title>
          <link>https://adarshm.com/blog/cookies-and-sessions</link>
          <guid isPermaLink="true">https://adarshm.com/blog/cookies-and-sessions</guid>
          <description>HTTP forgets you after every request, yet you stay logged in for weeks. How Set-Cookie and session IDs work, what HttpOnly, Secure and SameSite protect against, and how sessions compare with tokens like JWTs.</description>
          <pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>CORS Explained: Why the Browser Blocked Your Request</title>
          <link>https://adarshm.com/blog/cors-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/cors-explained</guid>
          <description>“Blocked by CORS policy” is the most common error in front-end development, and the most misunderstood. What the same-origin policy protects, what a preflight is, and why the fix always lives on the server you&apos;re calling.</description>
          <pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>HTTP Requests and Responses: The Language of the Web</title>
          <link>https://adarshm.com/blog/http-requests-and-responses</link>
          <guid isPermaLink="true">https://adarshm.com/blog/http-requests-and-responses</guid>
          <description>Every page load, image, form and API call is the same exchange: a request with a method, path and headers, and a response with a status code, headers and a body. A plain-language tour of what&apos;s inside each one.</description>
          <pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>DNS: How a Name Becomes an Address</title>
          <link>https://adarshm.com/blog/dns-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/dns-explained</guid>
          <description>No single server knows every domain. How resolvers walk from the root to the .com servers to a domain&apos;s own nameservers, what A, CNAME and MX records are, and why TTLs decide how fast a DNS change takes effect.</description>
          <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>HTTPS and the TLS Handshake, Explained Simply</title>
          <link>https://adarshm.com/blog/https-and-tls-handshake</link>
          <guid isPermaLink="true">https://adarshm.com/blog/https-and-tls-handshake</guid>
          <description>Two strangers on an open network agree on a secret key that eavesdroppers can&apos;t learn, and one proves its identity to the other. What the TLS handshake does, what certificates prove, and what HTTPS does and doesn&apos;t hide.</description>
          <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>What Happens When You Type a URL and Press Enter</title>
          <link>https://adarshm.com/blog/what-happens-when-you-type-a-url</link>
          <guid isPermaLink="true">https://adarshm.com/blog/what-happens-when-you-type-a-url</guid>
          <description>The classic question, answered step by step: URL parsing, DNS, TCP, TLS, HTTP, and rendering. A map of the whole trip, with links to a deeper post for each stop.</description>
          <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Hidden Classes and Inline Caches: Why Object Shape Matters</title>
          <link>https://adarshm.com/blog/hidden-classes-and-inline-caches</link>
          <guid isPermaLink="true">https://adarshm.com/blog/hidden-classes-and-inline-caches</guid>
          <description>JavaScript objects look like hash maps, but engines don&apos;t treat them that way. How hidden shapes and inline caches turn property access into a single memory load — and the coding habits that quietly switch that optimization off.</description>
          <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The Stack and the Heap: Where JavaScript Keeps Your Data</title>
          <link>https://adarshm.com/blog/stack-and-heap-in-javascript</link>
          <guid isPermaLink="true">https://adarshm.com/blog/stack-and-heap-in-javascript</guid>
          <description>Local variables vanish when a function returns; objects outlive it. The two regions of memory behind that difference, why assigning an object never copies it, and what it means for closures, performance, and leaks.</description>
          <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Lamport and Vector Clocks: Ordering Events Without a Shared Clock</title>
          <link>https://adarshm.com/blog/lamport-and-vector-clocks</link>
          <guid isPermaLink="true">https://adarshm.com/blog/lamport-and-vector-clocks</guid>
          <description>Machine clocks drift, so timestamps can&apos;t tell you which of two events in a distributed system came first. Logical clocks can — Lamport clocks give a consistent order, vector clocks tell you whether an order exists at all.</description>
          <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>React Reconciliation: What Keys Are Actually For</title>
          <link>https://adarshm.com/blog/react-reconciliation-and-keys</link>
          <guid isPermaLink="true">https://adarshm.com/blog/react-reconciliation-and-keys</guid>
          <description>The key prop isn&apos;t there to silence a console warning. It&apos;s how React decides whether an element is the same thing it rendered last time — and getting it wrong moves state to the wrong row. How the diff works, and how to pick a key.</description>
          <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Shallow vs Deep Copy in JavaScript, and What structuredClone Can&apos;t Copy</title>
          <link>https://adarshm.com/blog/shallow-vs-deep-copy</link>
          <guid isPermaLink="true">https://adarshm.com/blog/shallow-vs-deep-copy</guid>
          <description>Spread and Object.assign copy one level; everything below is shared. Why that causes “I copied it and the original still changed”, how structuredClone fixes it, and the functions, classes and DOM nodes it refuses to touch.</description>
          <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Tokenization: How LLMs Actually Read Text</title>
          <link>https://adarshm.com/blog/tokenization-and-bpe</link>
          <guid isPermaLink="true">https://adarshm.com/blog/tokenization-and-bpe</guid>
          <description>Models don&apos;t see characters or words — they see tokens, produced by byte-pair encoding. How BPE learns its vocabulary, why it explains so many odd LLM behaviours, and what it means for cost and context limits.</description>
          <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Idempotency Keys: Making Retries Safe</title>
          <link>https://adarshm.com/blog/idempotency-keys</link>
          <guid isPermaLink="true">https://adarshm.com/blog/idempotency-keys</guid>
          <description>A request timed out. Did the charge go through? The client can&apos;t know, so it has to retry — and the server has to make that retry harmless. How idempotency keys work, and the race conditions a naive implementation misses.</description>
          <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>LSM Trees: Why Write-Heavy Databases Never Update in Place</title>
          <link>https://adarshm.com/blog/lsm-trees-and-write-optimized-storage</link>
          <guid isPermaLink="true">https://adarshm.com/blog/lsm-trees-and-write-optimized-storage</guid>
          <description>B-trees update pages where they live. LSM trees buffer writes in memory, flush them as immutable sorted files, and merge those files in the background. How the memtable, SSTables, tombstones and compaction fit together — and what reads pay for it.</description>
          <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Rabin-Karp and the Rolling Hash</title>
          <link>https://adarshm.com/blog/rabin-karp-rolling-hash</link>
          <guid isPermaLink="true">https://adarshm.com/blog/rabin-karp-rolling-hash</guid>
          <description>Compare a fingerprint of each window instead of the window itself — and update that fingerprint in O(1) as the window slides. The string-matching algorithm that also powers plagiarism detection, rsync, and content-defined chunking.</description>
          <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Bellman-Ford: Shortest Paths When Edges Can Be Negative</title>
          <link>https://adarshm.com/blog/bellman-ford-negative-edges</link>
          <guid isPermaLink="true">https://adarshm.com/blog/bellman-ford-negative-edges</guid>
          <description>Dijkstra locks in a node the moment it&apos;s popped, which is exactly what breaks when an edge weight is negative. Bellman-Ford gives up that greed, relaxes every edge V − 1 times, and can tell you when no shortest path exists at all.</description>
          <pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Quickselect: The kth Smallest Element in Linear Time</title>
          <link>https://adarshm.com/blog/quickselect-kth-smallest</link>
          <guid isPermaLink="true">https://adarshm.com/blog/quickselect-kth-smallest</guid>
          <description>Quicksort recurses into both halves. Quickselect recurses into one — and that single change drops the expected cost from O(n log n) to O(n). How it works, why it&apos;s linear, and when a heap is the better call.</description>
          <pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Skip Lists: A Balanced Tree Built Out of Coin Flips</title>
          <link>https://adarshm.com/blog/skip-lists-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/skip-lists-explained</guid>
          <description>A sorted linked list with express lanes stacked on top. Search, insert and delete in O(log n) expected time, with no rotations and no rebalancing — just a random height for each new node. Why Redis sorted sets use one.</description>
          <pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Cursor vs Offset Pagination: Why Page 2 Shows You Page 1 Again</title>
          <link>https://adarshm.com/blog/cursor-vs-offset-pagination</link>
          <guid isPermaLink="true">https://adarshm.com/blog/cursor-vs-offset-pagination</guid>
          <description>OFFSET is a position in a result set that keeps changing, and it gets slower the deeper you go. A cursor is a value in the data. When each one is the right answer.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Dates, Timezones, and Why Temporal Exists</title>
          <link>https://adarshm.com/blog/dates-timezones-and-temporal</link>
          <guid isPermaLink="true">https://adarshm.com/blog/dates-timezones-and-temporal</guid>
          <description>An instant and a wall-clock reading are different things, and Date conflates them. What DST actually does to your data, and how Temporal&apos;s types stop the bugs at the point of modelling.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Dual Writes and the Outbox Pattern</title>
          <link>https://adarshm.com/blog/dual-writes-and-the-outbox-pattern</link>
          <guid isPermaLink="true">https://adarshm.com/blog/dual-writes-and-the-outbox-pattern</guid>
          <description>Save the row, then publish the event. Two writes, no shared transaction, and a window where one succeeds and the other doesn&apos;t. Why no ordering fixes it, and what does.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Evals: How You Know the Change Helped</title>
          <link>https://adarshm.com/blog/evals-for-llm-apps</link>
          <guid isPermaLink="true">https://adarshm.com/blog/evals-for-llm-apps</guid>
          <description>Prompt engineering without measurement is guessing with extra steps. How to build an eval set from real traffic, pick a grader that isn&apos;t lying to you, and avoid tuning your way to a number that means nothing.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Prompt Injection: The Vulnerability You Can&apos;t Prompt Your Way Out Of</title>
          <link>https://adarshm.com/blog/prompt-injection</link>
          <guid isPermaLink="true">https://adarshm.com/blog/prompt-injection</guid>
          <description>Everything an agent reads is input, and a model has no structural way to separate instructions from data. Why mitigations in the prompt are not a boundary, and where the real one goes.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Catastrophic Backtracking: How a Regex Takes Down a Server</title>
          <link>https://adarshm.com/blog/regex-backtracking-and-redos</link>
          <guid isPermaLink="true">https://adarshm.com/blog/regex-backtracking-and-redos</guid>
          <description>A twenty-character input, a regex that looks fine, and a CPU pinned for minutes. Why backtracking engines go exponential, how to spot the pattern, and what to do instead.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>What an Embedding Actually Is</title>
          <link>https://adarshm.com/blog/what-embeddings-actually-are</link>
          <guid isPermaLink="true">https://adarshm.com/blog/what-embeddings-actually-are</guid>
          <description>A list of numbers where distance means similarity. What cosine similarity measures, why the same word can have two vectors, and the queries embeddings are quietly bad at.</description>
          <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>AbortController: Cancellation That Actually Cleans Up</title>
          <link>https://adarshm.com/blog/abortcontroller-and-cancellation</link>
          <guid isPermaLink="true">https://adarshm.com/blog/abortcontroller-and-cancellation</guid>
          <description>Promises have no cancel button. AbortController is the standard signal that does — for fetch, event listeners, streams, timers, and your own async functions.</description>
          <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Binary Search on the Answer</title>
          <link>https://adarshm.com/blog/binary-search-on-the-answer</link>
          <guid isPermaLink="true">https://adarshm.com/blog/binary-search-on-the-answer</guid>
          <description>The array isn&apos;t sorted. There is no array. You can still binary search — as long as you can write a yes/no question whose answers flip exactly once.</description>
          <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Longest Increasing Subsequence in O(n log n)</title>
          <link>https://adarshm.com/blog/longest-increasing-subsequence</link>
          <guid isPermaLink="true">https://adarshm.com/blog/longest-increasing-subsequence</guid>
          <description>The O(n²) dynamic program is the one everyone learns. The faster version keeps one array of &apos;best endings&apos; and binary searches it — and the array it builds is not the answer.</description>
          <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Reservoir Sampling: A Fair Sample From a Stream You Can&apos;t Count</title>
          <link>https://adarshm.com/blog/reservoir-sampling</link>
          <guid isPermaLink="true">https://adarshm.com/blog/reservoir-sampling</guid>
          <description>Pick k items uniformly at random from a sequence of unknown length, in one pass, holding only k items. The algorithm is four lines; the proof is one induction step.</description>
          <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Reflow, Repaint, Composite: The Browser Rendering Pipeline</title>
          <link>https://adarshm.com/blog/rendering-pipeline-reflow-repaint</link>
          <guid isPermaLink="true">https://adarshm.com/blog/rendering-pipeline-reflow-repaint</guid>
          <description>Why animating left janks and animating transform doesn&apos;t. The five stages of a frame, which properties skip which stages, and what layout thrashing actually costs.</description>
          <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Immutability and Structural Sharing</title>
          <link>https://adarshm.com/blog/immutability-and-structural-sharing</link>
          <guid isPermaLink="true">https://adarshm.com/blog/immutability-and-structural-sharing</guid>
          <description>Copying a whole object to change one field sounds wasteful — and isn&apos;t, because almost nothing gets copied. How structural sharing works, why it makes === a valid change check, and where it quietly breaks.</description>
          <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Streams and Backpressure: Why Your Node Process Runs Out of Memory</title>
          <link>https://adarshm.com/blog/streams-and-backpressure</link>
          <guid isPermaLink="true">https://adarshm.com/blog/streams-and-backpressure</guid>
          <description>A fast producer and a slow consumer need a way to say &apos;wait&apos;. What backpressure is, how pipeline() gives it to you for free, and why the version with the callback silently buffers everything.</description>
          <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Distributed Tracing: Reading the Waterfall</title>
          <link>https://adarshm.com/blog/distributed-tracing</link>
          <guid isPermaLink="true">https://adarshm.com/blog/distributed-tracing</guid>
          <description>Logs tell you what one service did. Metrics tell you that something is slow. A trace tells you where the time went across every service a single request touched.</description>
          <pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Web Workers: Getting Heavy Work Off the Main Thread</title>
          <link>https://adarshm.com/blog/web-workers-off-the-main-thread</link>
          <guid isPermaLink="true">https://adarshm.com/blog/web-workers-off-the-main-thread</guid>
          <description>The main thread paints your UI and runs your JavaScript, and it can only do one at a time. What workers can and can&apos;t do, the cost of postMessage, and when the copy is worse than the work.</description>
          <pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Distributed Locks: Why Your Lock Isn&apos;t Holding</title>
          <link>https://adarshm.com/blog/distributed-locks-and-fencing</link>
          <guid isPermaLink="true">https://adarshm.com/blog/distributed-locks-and-fencing</guid>
          <description>A lease can expire while the client that holds it is still running. Why process pauses break mutual exclusion, what fencing tokens fix, and when you shouldn&apos;t be using a lock at all.</description>
          <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Hoisting and the Temporal Dead Zone</title>
          <link>https://adarshm.com/blog/hoisting-and-the-temporal-dead-zone</link>
          <guid isPermaLink="true">https://adarshm.com/blog/hoisting-and-the-temporal-dead-zone</guid>
          <description>Nothing moves to the top of the file. What actually happens is that bindings are created before any code runs — and let, const, var, and function declarations are created in four different states.</description>
          <pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Minimum Spanning Trees: Kruskal, Prim, and the Cut Property</title>
          <link>https://adarshm.com/blog/minimum-spanning-trees</link>
          <guid isPermaLink="true">https://adarshm.com/blog/minimum-spanning-trees</guid>
          <description>Connect every node for the least total weight. Two greedy algorithms that both work, the one theorem that explains why, and how to choose between them.</description>
          <pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Fenwick Trees: Prefix Sums That Can Change</title>
          <link>https://adarshm.com/blog/fenwick-tree-binary-indexed-tree</link>
          <guid isPermaLink="true">https://adarshm.com/blog/fenwick-tree-binary-indexed-tree</guid>
          <description>A prefix sum array answers range queries in O(1) but costs O(n) to update. A Fenwick tree makes both O(log n) using nothing but the lowest set bit of an index.</description>
          <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Message Queues vs Event Logs: Why Kafka Isn&apos;t a Queue</title>
          <link>https://adarshm.com/blog/message-queues-vs-event-logs</link>
          <guid isPermaLink="true">https://adarshm.com/blog/message-queues-vs-event-logs</guid>
          <description>A queue deletes a message when it&apos;s handled; a log keeps it and tracks who has read how far. That one difference decides replay, fan-out, ordering, and how you debug a bad deploy.</description>
          <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The Circuit Breaker: Failing Fast on Purpose</title>
          <link>https://adarshm.com/blog/circuit-breaker-pattern</link>
          <guid isPermaLink="true">https://adarshm.com/blog/circuit-breaker-pattern</guid>
          <description>When a dependency is down, the worst thing you can do is keep waiting for it. Three states, the thresholds that matter, and how a breaker stops one slow service from taking down everything upstream.</description>
          <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>RAG Retrieval: Chunking, Embeddings, and Why It Misses</title>
          <link>https://adarshm.com/blog/rag-retrieval-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/rag-retrieval-explained</guid>
          <description>Most RAG failures are retrieval failures, not generation failures. How chunking and embeddings decide what the model ever sees, the similarity-is-not-relevance trap, and what actually fixes it.</description>
          <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Context Windows: Budgeting Tokens Like Memory</title>
          <link>https://adarshm.com/blog/context-windows-and-caching</link>
          <guid isPermaLink="true">https://adarshm.com/blog/context-windows-and-caching</guid>
          <description>The window is a budget you refill from scratch every turn. Where the tokens actually go in an agent, why prompt caching is a prefix match, and the difference between clearing context and compacting it.</description>
          <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Retries, Backoff, and Jitter: How to Retry Without Causing an Outage</title>
          <link>https://adarshm.com/blog/retries-backoff-and-jitter</link>
          <guid isPermaLink="true">https://adarshm.com/blog/retries-backoff-and-jitter</guid>
          <description>A naive retry loop is a denial-of-service attack you wrote yourself. Exponential backoff, why jitter matters more than the backoff, idempotency, and retry budgets.</description>
          <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Sharding and Replication: Splitting a Database That Outgrew One Box</title>
          <link>https://adarshm.com/blog/database-sharding-and-replication</link>
          <guid isPermaLink="true">https://adarshm.com/blog/database-sharding-and-replication</guid>
          <description>Replication copies the same data; sharding splits different data. What each one actually buys you, how routing and failover behave, and the problems sharding creates that you have to live with.</description>
          <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Tool Calling: How a Model Picks a Function</title>
          <link>https://adarshm.com/blog/tool-calling-explained</link>
          <guid isPermaLink="true">https://adarshm.com/blog/tool-calling-explained</guid>
          <description>A tool is a name, a description, and a JSON Schema — and the description is prompt text that gets read every turn. Schema design, validation, error messages that repair, and why fewer tools work better.</description>
          <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>A* Pathfinding: Dijkstra With a Sense of Direction</title>
          <link>https://adarshm.com/blog/a-star-pathfinding</link>
          <guid isPermaLink="true">https://adarshm.com/blog/a-star-pathfinding</guid>
          <description>One extra term in the priority function turns an exhaustive search into a guided one. What admissible and consistent heuristics mean, why they preserve optimality, and where A* degrades.</description>
          <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>The Agent Loop: What Actually Happens Between Prompt and Answer</title>
          <link>https://adarshm.com/blog/the-agent-loop</link>
          <guid isPermaLink="true">https://adarshm.com/blog/the-agent-loop</guid>
          <description>An agent is a while loop around a stateless API. What stop_reason really controls, why the transcript is resent on every turn, and the failure modes that show up once tools are in the mix.</description>
          <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Prefix Sums and Difference Arrays: Trading Space for Constant-Time Queries</title>
          <link>https://adarshm.com/blog/prefix-sums-and-difference-arrays</link>
          <guid isPermaLink="true">https://adarshm.com/blog/prefix-sums-and-difference-arrays</guid>
          <description>Precompute once, answer range queries in O(1). How prefix sums work, the sentinel zero that removes every edge case, difference arrays for range updates, and the 2D version.</description>
          <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<item>
          <title>Monotonic Stacks: The Pattern Behind Next Greater Element</title>
          <link>https://adarshm.com/blog/monotonic-stack</link>
          <guid isPermaLink="true">https://adarshm.com/blog/monotonic-stack</guid>
          <description>A stack that refuses to hold out-of-order values turns a pile of quadratic problems into linear ones. How the invariant works, why the amortised cost is O(n), and the four questions it answers.</description>
          <pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate>
        </item>
<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>