<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[esreekarreddy]]></title><description><![CDATA[esreekarreddy]]></description><link>https://esreekarreddy.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 18 Jun 2026 02:30:15 GMT</lastBuildDate><atom:link href="https://esreekarreddy.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🗺️ Maps Explained Like You're 5]]></title><description><![CDATA[Key-value pairs for lookup
Day 136 of 149
👉 Full deep-dive with code examples

The Phone Book Analogy
Remember phone books?

Find "Smith" → Flip directly to S section
Look up the name → Get the phone number
You don't scan from the beginning!

Maps w...]]></description><link>https://esreekarreddy.hashnode.dev/maps-eli5-mp0dabl8</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/maps-eli5-mp0dabl8</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[datastructures]]></category><category><![CDATA[ELI5]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Sun, 10 May 2026 22:51:25 GMT</pubDate><content:encoded><![CDATA[<p><em>Key-value pairs for lookup</em></p>
<p><strong>Day 136 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/maps">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-phone-book-analogy">The Phone Book Analogy</h2>
<p>Remember phone books?</p>
<ul>
<li>Find "Smith" → Flip directly to S section</li>
<li>Look up the name → Get the phone number</li>
<li>You don't scan from the beginning!</li>
</ul>
<p><strong>Maps work like phone books!</strong></p>
<p>You look up a "key" (name) and instantly get a "value" (phone number).</p>
<hr />
<h2 id="heading-the-problem-they-solve">The Problem They Solve</h2>
<p>Looking up things in a list is slow:</p>
<ul>
<li>1 million items?</li>
<li>Check one by one?</li>
<li>That could take forever!</li>
</ul>
<p>With a map:</p>
<ul>
<li>Store key → value pairs</li>
<li>Look up by key</li>
<li>Get the answer instantly!</li>
</ul>
<hr />
<h2 id="heading-how-maps-work">How Maps Work</h2>
<p>Maps store pairs of things:</p>
<pre><code>Key        →  Value
<span class="hljs-string">"name"</span>     →  <span class="hljs-string">"Alice"</span>
<span class="hljs-string">"age"</span>      →  <span class="hljs-number">30</span>
<span class="hljs-string">"city"</span>     →  <span class="hljs-string">"Sydney"</span>
</code></pre><p>To get a value, just use the key:</p>
<ul>
<li>Ask for "name" → Get "Alice"</li>
<li>Ask for "age" → Get 30</li>
</ul>
<p>No searching through everything!</p>
<hr />
<h2 id="heading-why-theyre-fast">Why They're Fast</h2>
<p>Behind the scenes, maps use a smart trick:</p>
<ol>
<li>Convert the key to a number (hashing)</li>
<li>Use that number to find the exact location</li>
<li>Go directly there</li>
</ol>
<p>Like a library catalog card telling you exactly which shelf.</p>
<hr />
<h2 id="heading-common-uses">Common Uses</h2>
<ul>
<li><strong>User profiles</strong> → ID → user data</li>
<li><strong>Configuration</strong> → setting name → value</li>
<li><strong>Counting things</strong> → item → count</li>
<li><strong>Caching</strong> → query → result</li>
</ul>
<hr />
<h2 id="heading-map-vs-array">Map vs Array</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Array</td><td>Map</td></tr>
</thead>
<tbody>
<tr>
<td>Access by position (0, 1, 2...)</td><td>Access by key ("name", "age")</td></tr>
<tr>
<td>Good for ordered lists</td><td>Good for lookups</td></tr>
<tr>
<td>Find item: slow (scan)</td><td>Find item: instant</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Maps store key-value pairs so you can instantly look up any value by its key, like finding a phone number by name.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🎯 Sets Explained Like You're 5]]></title><description><![CDATA[Collections with no duplicates
Day 135 of 149
👉 Full deep-dive with code examples

The Guest List Analogy
You're making a party guest list:

Add "Alice" → Alice is on the list
Add "Bob" → Bob is on the list
Add "Alice" again → Nothing happens! She's...]]></description><link>https://esreekarreddy.hashnode.dev/sets-eli5-moyxsbor</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/sets-eli5-moyxsbor</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[datastructures]]></category><category><![CDATA[ELI5]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Sat, 09 May 2026 22:49:45 GMT</pubDate><content:encoded><![CDATA[<p><em>Collections with no duplicates</em></p>
<p><strong>Day 135 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/sets">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-guest-list-analogy">The Guest List Analogy</h2>
<p>You're making a party guest list:</p>
<ul>
<li>Add "Alice" → Alice is on the list</li>
<li>Add "Bob" → Bob is on the list</li>
<li>Add "Alice" again → Nothing happens! She's already there</li>
</ul>
<p><strong>Sets work like guest lists!</strong></p>
<p>Every item appears exactly once. Duplicates are automatically ignored.</p>
<hr />
<h2 id="heading-the-problem-they-solve">The Problem They Solve</h2>
<p>Sometimes you need unique items:</p>
<ul>
<li>"What unique words are in this document?"</li>
<li>"Who has visited this page?"</li>
<li>"Which tags are used in this article?"</li>
</ul>
<p>With arrays, you'd have to check for duplicates yourself. Sets handle it automatically!</p>
<hr />
<h2 id="heading-what-sets-can-do">What Sets Can Do</h2>
<p><strong>Membership check (fast!):</strong></p>
<ul>
<li>"Is Alice on the list?" → Yes/No instantly</li>
</ul>
<p><strong>Add items:</strong></p>
<ul>
<li>Adds if not there</li>
<li>Ignores if already present</li>
</ul>
<p><strong>Remove items:</strong></p>
<ul>
<li>Takes the item out</li>
</ul>
<p><strong>Set operations:</strong></p>
<ul>
<li><strong>Union:</strong> Combine two sets</li>
<li><strong>Intersection:</strong> What's in BOTH sets?</li>
<li><strong>Difference:</strong> What's in one but not the other?</li>
</ul>
<hr />
<h2 id="heading-a-simple-example">A Simple Example</h2>
<pre><code><span class="hljs-built_in">Set</span> A: {apple, banana, cherry}
<span class="hljs-built_in">Set</span> B: {banana, date, elderberry}

<span class="hljs-attr">Union</span>: {apple, banana, cherry, date, elderberry}
<span class="hljs-attr">Intersection</span>: {banana}
Difference (A-B): {apple, cherry}
</code></pre><hr />
<h2 id="heading-when-to-use-sets">When To Use Sets</h2>
<p>Use sets when:</p>
<ul>
<li>You need unique items only</li>
<li>You need fast "is this in here?" checks</li>
<li>You don't care about order</li>
<li>You want to find common or unique items between groups</li>
</ul>
<hr />
<h2 id="heading-sets-vs-arrays">Sets vs Arrays</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Arrays</td><td>Sets</td></tr>
</thead>
<tbody>
<tr>
<td>Can have duplicates</td><td>Only unique items</td></tr>
<tr>
<td>Ordered</td><td>Usually unordered</td></tr>
<tr>
<td>Find item: slow (scan)</td><td>Find item: instant</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Sets store unique items only, making it fast to check membership and find what's common or different between groups.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🔤 Tries Explained Like You're 5]]></title><description><![CDATA[Trees for storing strings efficiently
Day 134 of 149
👉 Full deep-dive with code examples

The Autocomplete Analogy
When you type on your phone:

Type "hel" → Suggestions: "hello", "help", "helicopter"
Type "help" → Suggestions: "help", "helpful", "h...]]></description><link>https://esreekarreddy.hashnode.dev/tries-eli5-moxilx6t</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/tries-eli5-moxilx6t</guid><category><![CDATA[datastructures]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[Trees]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Fri, 08 May 2026 22:57:06 GMT</pubDate><content:encoded><![CDATA[<p><em>Trees for storing strings efficiently</em></p>
<p><strong>Day 134 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/tries">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-autocomplete-analogy">The Autocomplete Analogy</h2>
<p>When you type on your phone:</p>
<ul>
<li>Type "hel" → Suggestions: "hello", "help", "helicopter"</li>
<li>Type "help" → Suggestions: "help", "helpful", "helpless"</li>
</ul>
<p>The phone quickly finds all words starting with what you typed.</p>
<p><strong>A Trie is the data structure that makes autocomplete super fast!</strong></p>
<hr />
<h2 id="heading-the-problem-it-solves">The Problem It Solves</h2>
<p>Searching through all words is slow:</p>
<ul>
<li>Dictionary has 100,000 words</li>
<li>Check if "hello" starts with "hel"... for each word?</li>
<li>Very slow!</li>
</ul>
<p>We need a smarter way to find words by their beginning.</p>
<hr />
<h2 id="heading-how-tries-work">How Tries Work</h2>
<p>A Trie is a tree where:</p>
<ul>
<li>Each path from root spells a word</li>
<li>Shared prefixes share paths</li>
<li>Branching happens where words differ</li>
</ul>
<pre><code>        (root)
        /    \
       c      h
      /        \
     a          e
    / \          \
   r   t          l
   |   |          |
  [car][cat]     l
                 |
                 o
                 |
               [hello]
</code></pre><p>"car" and "cat" share "ca" path, then split.</p>
<hr />
<h2 id="heading-why-its-fast">Why It's Fast</h2>
<p>To find "cat":</p>
<ul>
<li>Start at root</li>
<li>Go to 'c' → found</li>
<li>Go to 'a' → found</li>
<li>Go to 't' → found, it's a word!</li>
</ul>
<p>Only 3 steps, regardless of dictionary size!</p>
<hr />
<h2 id="heading-common-uses">Common Uses</h2>
<ul>
<li><strong>Autocomplete</strong> → Find all words starting with prefix</li>
<li><strong>Spell checking</strong> → Is this word in the dictionary?</li>
<li><strong>IP routing</strong> → Match network prefixes</li>
<li><strong>Predictive text</strong> → Suggest next words</li>
</ul>
<hr />
<h2 id="heading-trie-vs-hash-table">Trie vs Hash Table</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td></td><td>Hash Table</td><td>Trie</td></tr>
</thead>
<tbody>
<tr>
<td>Find exact word</td><td>Fast</td><td>Fast</td></tr>
<tr>
<td>Find by prefix</td><td>Slow (check all)</td><td>Fast!</td></tr>
<tr>
<td>Memory</td><td>More compact</td><td>Uses more memory</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>A Trie is a tree structure that organizes strings by their characters, making it incredibly fast to find all words that start with a given prefix.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🌲 Binary Trees Explained Like You're 5]]></title><description><![CDATA[Each node has at most two children
Day 133 of 149
👉 Full deep-dive with code examples

The Family Tree Analogy
Imagine a family tree where each person can have at most two children. The top person is the root, with branches going down.
A binary tree...]]></description><link>https://esreekarreddy.hashnode.dev/binary-trees-eli5-mow3btd5</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/binary-trees-eli5-mow3btd5</guid><category><![CDATA[datastructures]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[Trees]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Thu, 07 May 2026 23:01:34 GMT</pubDate><content:encoded><![CDATA[<p><em>Each node has at most two children</em></p>
<p><strong>Day 133 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/binary-trees">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-family-tree-analogy">The Family Tree Analogy</h2>
<p>Imagine a family tree where each person can have at most two children. The top person is the root, with branches going down.</p>
<p><strong>A binary tree is a hierarchical structure where each node has at most two children: left and right.</strong></p>
<hr />
<h2 id="heading-the-structure">The Structure</h2>
<pre><code class="lang-text">        10        ← Root
       /  \
      5    15     ← Children
     / \
    3   7        ← Grandchildren
</code></pre>
<pre><code class="lang-python"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TreeNode</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, value</span>):</span>
        self.value = value
        self.left = <span class="hljs-literal">None</span>
        self.right = <span class="hljs-literal">None</span>
</code></pre>
<hr />
<h2 id="heading-binary-search-tree-bst">Binary Search Tree (BST)</h2>
<p>A special binary tree with ordering:</p>
<ul>
<li>Left subtree: values LESS than parent</li>
<li>Right subtree: values GREATER than parent</li>
</ul>
<p>This ordering enables O(log n) search!</p>
<hr />
<h2 id="heading-tree-traversals">Tree Traversals</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Traversal</td><td>Order</td><td>Use Case</td></tr>
</thead>
<tbody>
<tr>
<td>Inorder</td><td>Left, Root, Right</td><td>Sorted output</td></tr>
<tr>
<td>Preorder</td><td>Root, Left, Right</td><td>Copy tree</td></tr>
<tr>
<td>Postorder</td><td>Left, Right, Root</td><td>Delete tree</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-real-uses">Real Uses</h2>
<ul>
<li><strong>File systems</strong> - Directories and files</li>
<li><strong>HTML DOM</strong> - Page element hierarchy</li>
<li><strong>Database indexes</strong> - Fast lookups</li>
<li><strong>Expression parsing</strong> - Math expressions</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Binary trees are hierarchical data structures where each node has at most two children, enabling efficient searching and sorting operations.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[♿ Web Accessibility Explained Like You're 5]]></title><description><![CDATA[Making websites usable for everyone
Day 132 of 149
👉 Full deep-dive with code examples

The Curb Cut Analogy
Curb cuts (ramps in sidewalks) were designed for wheelchairs, but help everyone:

Parents with strollers
People with luggage
Delivery worker...]]></description><link>https://esreekarreddy.hashnode.dev/web-accessibility-eli5-mounmjof</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/web-accessibility-eli5-mounmjof</guid><category><![CDATA[a11y]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[web]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Wed, 06 May 2026 22:54:14 GMT</pubDate><content:encoded><![CDATA[<p><em>Making websites usable for everyone</em></p>
<p><strong>Day 132 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/web-accessibility">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-curb-cut-analogy">The Curb Cut Analogy</h2>
<p>Curb cuts (ramps in sidewalks) were designed for wheelchairs, but help everyone:</p>
<ul>
<li>Parents with strollers</li>
<li>People with luggage</li>
<li>Delivery workers with carts</li>
<li>Cyclists</li>
</ul>
<p><strong>Web accessibility is the same!</strong></p>
<p>Designing for disabilities improves the experience for everyone.</p>
<hr />
<h2 id="heading-why-it-matters">Why It Matters</h2>
<p>Over 1 billion people have disabilities:</p>
<ul>
<li><strong>Visual</strong> → Blind, low vision, color blind</li>
<li><strong>Hearing</strong> → Deaf, hard of hearing</li>
<li><strong>Motor</strong> → Can't use mouse, limited movement</li>
<li><strong>Cognitive</strong> → Dyslexia, attention issues</li>
</ul>
<p>Without accessibility, your website locks them out.</p>
<hr />
<h2 id="heading-how-people-access-the-web-differently">How People Access the Web Differently</h2>
<ul>
<li><strong>Screen readers</strong> → Read page aloud for blind users</li>
<li><strong>Keyboard only</strong> → No mouse, just Tab and Enter</li>
<li><strong>Voice control</strong> → Speak commands</li>
<li><strong>Screen magnifiers</strong> → Zoom in for low vision</li>
</ul>
<p>Your website needs to work with all of these!</p>
<hr />
<h2 id="heading-simple-accessibility-wins">Simple Accessibility Wins</h2>
<p><strong>Images:</strong></p>
<ul>
<li>Add alt text: "Golden retriever playing in park"</li>
<li>Screen readers can describe images to blind users</li>
</ul>
<p><strong>Colors:</strong></p>
<ul>
<li>Don't rely only on color (red for error)</li>
<li>Good contrast between text and background</li>
</ul>
<p><strong>Keyboard navigation:</strong></p>
<ul>
<li>Can users Tab through the page?</li>
<li>Are buttons and links focusable?</li>
</ul>
<p><strong>Forms:</strong></p>
<ul>
<li>Label every input field</li>
<li>Show clear error messages</li>
</ul>
<hr />
<h2 id="heading-benefits-beyond-disabilities">Benefits Beyond Disabilities</h2>
<p>Accessibility helps:</p>
<ul>
<li>Elderly users with declining vision</li>
<li>Mobile users with small screens</li>
<li>Users in bright sunlight (need contrast!)</li>
<li>SEO (search engines read alt text too!)</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Web Accessibility means designing websites so everyone, including people with disabilities, can use them—and it makes sites better for everyone.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🧩 Web Components Explained Like You're 5]]></title><description><![CDATA[Reusable custom HTML elements
Day 131 of 149
👉 Full deep-dive with code examples

The LEGO Brick Analogy
LEGO bricks are reusable building blocks:

Each brick works independently
Combine them to build anything
Same brick works in any LEGO set

Web C...]]></description><link>https://esreekarreddy.hashnode.dev/web-components-eli5-mot8atqa</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/web-components-eli5-mot8atqa</guid><category><![CDATA[ELI5]]></category><category><![CDATA[frontend]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[web]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Tue, 05 May 2026 22:57:27 GMT</pubDate><content:encoded><![CDATA[<p><em>Reusable custom HTML elements</em></p>
<p><strong>Day 131 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/web-components">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-lego-brick-analogy">The LEGO Brick Analogy</h2>
<p>LEGO bricks are reusable building blocks:</p>
<ul>
<li>Each brick works independently</li>
<li>Combine them to build anything</li>
<li>Same brick works in any LEGO set</li>
</ul>
<p><strong>Web Components are LEGO bricks for websites!</strong></p>
<p>Create a component once, use it anywhere.</p>
<hr />
<h2 id="heading-the-problem-they-solve">The Problem They Solve</h2>
<p>Before Web Components:</p>
<ul>
<li>Copying HTML, CSS, JS between projects</li>
<li>Styles from one component affecting others</li>
<li>Different frameworks couldn't share components</li>
<li>Hard to encapsulate functionality</li>
</ul>
<hr />
<h2 id="heading-what-web-components-give-you">What Web Components Give You</h2>
<p><strong>Custom Elements:</strong></p>
<ul>
<li>Define your own HTML tags</li>
<li><code>&lt;user-card&gt;</code> instead of <code>&lt;div class="user-card"&gt;</code></li>
</ul>
<p><strong>Shadow DOM:</strong></p>
<ul>
<li>Component has its own isolated styles</li>
<li>No CSS leaking in or out</li>
</ul>
<p><strong>HTML Templates:</strong></p>
<ul>
<li>Reusable HTML structures</li>
<li>Only rendered when needed</li>
</ul>
<hr />
<h2 id="heading-a-simple-example">A Simple Example</h2>
<p>Create a custom element:</p>
<pre><code>&lt;my-greeting name=<span class="hljs-string">"Alice"</span>&gt;&lt;/my-greeting&gt;
</code></pre><p>Renders as:</p>
<pre><code>Hello, Alice! Welcome to our site.
</code></pre><p>Use it anywhere like a regular HTML tag!</p>
<hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li><strong>Encapsulation</strong> → Styles and logic stay inside</li>
<li><strong>Reusability</strong> → Same component in any project</li>
<li><strong>Framework agnostic</strong> → Works with React, Vue, or vanilla JS</li>
<li><strong>Native browser support</strong> → No library needed</li>
</ul>
<hr />
<h2 id="heading-common-uses">Common Uses</h2>
<ul>
<li><strong>Design systems</strong> → Company-wide UI components</li>
<li><strong>Widgets</strong> → Video players, date pickers</li>
<li><strong>Micro frontends</strong> → Independent components from different teams</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Web Components let you create custom, reusable HTML elements with encapsulated styles and behavior that work in any web project.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📱 Progressive Web Apps Explained Like You're 5]]></title><description><![CDATA[Websites that feel like apps
Day 130 of 149
👉 Full deep-dive with code examples

The Best of Both Worlds Analogy
You want pizza:

Restaurant: Great experience, but you have to go there
Delivery: Comes to you, but takes time each order
Home oven with...]]></description><link>https://esreekarreddy.hashnode.dev/progressive-web-apps-eli5-morsvhqx</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/progressive-web-apps-eli5-morsvhqx</guid><category><![CDATA[ELI5]]></category><category><![CDATA[mobile]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[web]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Mon, 04 May 2026 22:57:51 GMT</pubDate><content:encoded><![CDATA[<p><em>Websites that feel like apps</em></p>
<p><strong>Day 130 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/progressive-web-apps">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-best-of-both-worlds-analogy">The Best of Both Worlds Analogy</h2>
<p>You want pizza:</p>
<ul>
<li><strong>Restaurant:</strong> Great experience, but you have to go there</li>
<li><strong>Delivery:</strong> Comes to you, but takes time each order</li>
<li><strong>Home oven with frozen pizza:</strong> Available anytime, like having the restaurant at home!</li>
</ul>
<p><strong>PWAs are like having the restaurant experience at home!</strong></p>
<p>All the benefits of apps, without the app store.</p>
<hr />
<h2 id="heading-the-problem-they-solve">The Problem They Solve</h2>
<p><strong>Native apps are great but:</strong></p>
<ul>
<li>Need to download from app store</li>
<li>Take up phone storage</li>
<li>Require separate iOS and Android versions</li>
<li>Updates need re-downloading</li>
</ul>
<p><strong>Websites are accessible but:</strong></p>
<ul>
<li>Need internet to work</li>
<li>Can't send notifications</li>
<li>Not on home screen</li>
<li>Feel "less real" than apps</li>
</ul>
<hr />
<h2 id="heading-how-pwas-fix-this">How PWAs Fix This</h2>
<p>PWAs combine the best of both:</p>
<ul>
<li><strong>Install from browser</strong> → No app store needed</li>
<li><strong>Work offline</strong> → Cached data and pages</li>
<li><strong>Home screen icon</strong> → Feels like a real app</li>
<li><strong>Push notifications</strong> → Keep users engaged</li>
<li><strong>One codebase</strong> → Works on all devices</li>
</ul>
<hr />
<h2 id="heading-key-features">Key Features</h2>
<p><strong>Service Workers:</strong></p>
<ul>
<li>Run in the background</li>
<li>Cache files for offline use</li>
<li>Handle push notifications</li>
</ul>
<p><strong>Manifest file:</strong></p>
<ul>
<li>Tells browser it's installable</li>
<li>Sets icon, colors, name</li>
<li>Configures how it launches</li>
</ul>
<p><strong>HTTPS required:</strong></p>
<ul>
<li>Security is mandatory</li>
<li>Protects user data</li>
</ul>
<hr />
<h2 id="heading-real-examples">Real Examples</h2>
<ul>
<li><strong>Twitter Lite</strong> → PWA, 70% data reduction</li>
<li><strong>Starbucks</strong> → Works offline for ordering</li>
<li><strong>Pinterest</strong> → 40% more user engagement</li>
<li><strong>Spotify Web Player</strong> → PWA for music</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Progressive Web Apps are websites that work like native apps—installable, fast, and work offline—without needing an app store.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🖥️ SSR vs CSR Explained Like You're 5]]></title><description><![CDATA[Where your page gets rendered
Day 129 of 149
👉 Full deep-dive with code examples

The Restaurant Analogy
Two types of restaurants:
Full-service restaurant (SSR):

Kitchen prepares complete meal
Served ready to eat
You just enjoy it

Build-your-own t...]]></description><link>https://esreekarreddy.hashnode.dev/ssr-csr-eli5-moqcyory</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/ssr-csr-eli5-moqcyory</guid><category><![CDATA[ELI5]]></category><category><![CDATA[performance]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[web]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Sun, 03 May 2026 22:44:41 GMT</pubDate><content:encoded><![CDATA[<p><em>Where your page gets rendered</em></p>
<p><strong>Day 129 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/ssr-csr">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-restaurant-analogy">The Restaurant Analogy</h2>
<p>Two types of restaurants:</p>
<p><strong>Full-service restaurant (SSR):</strong></p>
<ul>
<li>Kitchen prepares complete meal</li>
<li>Served ready to eat</li>
<li>You just enjoy it</li>
</ul>
<p><strong>Build-your-own taco bar (CSR):</strong></p>
<ul>
<li>You get ingredients</li>
<li>You assemble at your table</li>
<li>More interactive, but takes time</li>
</ul>
<p><strong>SSR vs CSR is about where the webpage gets built!</strong></p>
<hr />
<h2 id="heading-server-side-rendering-ssr">Server-Side Rendering (SSR)</h2>
<p>The server builds the complete HTML page:</p>
<pre><code>User visits → Server builds page → Sends complete HTML → User sees content immediately
</code></pre><p><strong>Benefits:</strong></p>
<ul>
<li>Fast first load (content right away)</li>
<li>Great for SEO (search engines see full content)</li>
<li>Works without JavaScript</li>
</ul>
<p><strong>Downsides:</strong></p>
<ul>
<li>Every click might need a new page from server</li>
<li>Server does more work</li>
</ul>
<hr />
<h2 id="heading-client-side-rendering-csr">Client-Side Rendering (CSR)</h2>
<p>The browser builds the page with JavaScript:</p>
<pre><code>User visits → Server sends empty shell → Browser runs JavaScript → Content appears
</code></pre><p><strong>Benefits:</strong></p>
<ul>
<li>After first load, navigation is instant</li>
<li>Feels like an app, not a website</li>
<li>Server does less work</li>
</ul>
<p><strong>Downsides:</strong></p>
<ul>
<li>Blank page until JavaScript loads</li>
<li>Search engines may not see content</li>
<li>Needs JavaScript to work</li>
</ul>
<hr />
<h2 id="heading-when-to-use-which">When To Use Which</h2>
<p><strong>Choose SSR when:</strong></p>
<ul>
<li>SEO matters (blogs, e-commerce)</li>
<li>Fast first load is critical</li>
<li>Users might have slow devices</li>
</ul>
<p><strong>Choose CSR when:</strong></p>
<ul>
<li>Building app-like experiences (dashboards)</li>
<li>Lots of interactivity</li>
<li>Users stay and explore (not quick visits)</li>
</ul>
<p><strong>Modern approach:</strong></p>
<ul>
<li>Many sites use BOTH (hybrid)</li>
<li>SSR for first load, CSR for navigation</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>SSR has the server build pages (fast first load, good SEO), while CSR has the browser build them (app-like experience after initial load).</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📮 REST API Explained Like You're 5]]></title><description><![CDATA[Web services using HTTP verbs
Day 128 of 149
👉 Full deep-dive with code examples

The Library Analogy
A library with standard commands:

GET a book - Receive book
POST a book - Donate new book
PUT a book - Replace with updated version
DELETE a book ...]]></description><link>https://esreekarreddy.hashnode.dev/rest-api-eli5-mooxj8uk</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/rest-api-eli5-mooxj8uk</guid><category><![CDATA[api]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[web]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Sat, 02 May 2026 22:45:00 GMT</pubDate><content:encoded><![CDATA[<p><em>Web services using HTTP verbs</em></p>
<p><strong>Day 128 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/rest-api">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-library-analogy">The Library Analogy</h2>
<p>A library with standard commands:</p>
<ul>
<li><strong>GET</strong> a book - Receive book</li>
<li><strong>POST</strong> a book - Donate new book</li>
<li><strong>PUT</strong> a book - Replace with updated version</li>
<li><strong>DELETE</strong> a book - Remove from library</li>
</ul>
<p><strong>REST APIs use the same HTTP verbs to operate on resources.</strong></p>
<hr />
<h2 id="heading-http-methods-crud">HTTP Methods = CRUD</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Method</td><td>Action</td><td>Example</td></tr>
</thead>
<tbody>
<tr>
<td>GET</td><td>Read</td><td><code>GET /users</code></td></tr>
<tr>
<td>POST</td><td>Create</td><td><code>POST /users</code></td></tr>
<tr>
<td>PUT</td><td>Update</td><td><code>PUT /users/1</code></td></tr>
<tr>
<td>DELETE</td><td>Delete</td><td><code>DELETE /users/1</code></td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-real-example">Real Example</h2>
<pre><code class="lang-javascript"><span class="hljs-comment">// Get all users</span>
<span class="hljs-keyword">const</span> users = <span class="hljs-keyword">await</span> fetch(<span class="hljs-string">"/api/users"</span>);

<span class="hljs-comment">// Create user</span>
<span class="hljs-keyword">await</span> fetch(<span class="hljs-string">"/api/users"</span>, {
  <span class="hljs-attr">method</span>: <span class="hljs-string">"POST"</span>,
  <span class="hljs-attr">body</span>: <span class="hljs-built_in">JSON</span>.stringify({ <span class="hljs-attr">name</span>: <span class="hljs-string">"Alice"</span> }),
});
</code></pre>
<hr />
<h2 id="heading-best-practices">Best Practices</h2>
<ul>
<li>Use <strong>nouns</strong>, not verbs (<code>/users</code> not <code>/getUsers</code>)</li>
<li>Use <strong>plurals</strong> (<code>/products</code> not <code>/product</code>)</li>
<li>Return proper <strong>status codes</strong> (200, 201, 404, etc.)</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>REST APIs use standard HTTP methods (GET, POST, PUT, DELETE) to interact with resources identified by URLs.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🚛 Database Migrations Explained Like You're 5]]></title><description><![CDATA[Version control for database schema
Day 127 of 149
👉 Full deep-dive with code examples

The Recipe Card Analogy
Your grandma's recipe evolves:

Version 1: Original recipe
Version 2: Add a pinch of salt
Version 3: Use brown sugar instead of white
Eac...]]></description><link>https://esreekarreddy.hashnode.dev/database-migrations-eli5-monidin6</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/database-migrations-eli5-monidin6</guid><category><![CDATA[Databases]]></category><category><![CDATA[Devops]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Fri, 01 May 2026 22:52:52 GMT</pubDate><content:encoded><![CDATA[<p><em>Version control for database schema</em></p>
<p><strong>Day 127 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/database-migrations">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-recipe-card-analogy">The Recipe Card Analogy</h2>
<p>Your grandma's recipe evolves:</p>
<ul>
<li>Version 1: Original recipe</li>
<li>Version 2: Add a pinch of salt</li>
<li>Version 3: Use brown sugar instead of white</li>
<li>Each change is recorded and reversible</li>
</ul>
<p><strong>Database migrations track changes to your database structure!</strong></p>
<hr />
<h2 id="heading-why-migrations-matter">Why Migrations Matter</h2>
<p>Without migrations:</p>
<ul>
<li>"Did we add that column?"</li>
<li>"What does the database look like in production?"</li>
<li>"How do I set up a new developer's database?"</li>
</ul>
<p>Everyone's database might be different!</p>
<hr />
<h2 id="heading-how-they-work">How They Work</h2>
<p>Each migration is a file:</p>
<pre><code>Migration <span class="hljs-number">1</span>: Create users table
Migration <span class="hljs-number">2</span>: Add email column to users
Migration <span class="hljs-number">3</span>: Create orders table
Migration <span class="hljs-number">4</span>: Add index on email
</code></pre><p>Run in order, your database evolves consistently.</p>
<hr />
<h2 id="heading-key-features">Key Features</h2>
<p><strong>Forward (up):</strong></p>
<ul>
<li>Apply changes: add column, create table</li>
</ul>
<p><strong>Backward (down):</strong></p>
<ul>
<li>Undo changes: remove column, drop table</li>
</ul>
<p><strong>Version tracking:</strong></p>
<ul>
<li>Database knows which migrations have run</li>
<li>Only applies new ones</li>
</ul>
<hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li><strong>Consistent</strong> → All databases match</li>
<li><strong>Repeatable</strong> → New developer runs migrations, instant setup</li>
<li><strong>Reversible</strong> → Mistake? Roll back</li>
<li><strong>Auditable</strong> → History of all changes</li>
</ul>
<hr />
<h2 id="heading-the-workflow">The Workflow</h2>
<ol>
<li>Write migration (add column, change type)</li>
<li>Test locally</li>
<li>Commit to version control</li>
<li>Deploy runs migrations automatically</li>
<li>Production updated safely!</li>
</ol>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Database Migrations are versioned scripts that track and apply changes to your database structure, so every environment stays in sync.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📦 Stored Procedures Explained Like You're 5]]></title><description><![CDATA[Saved SQL scripts in the database
Day 126 of 149
👉 Full deep-dive with code examples

The Restaurant Kitchen Analogy
Ordering at a restaurant:

You don't tell the chef each step: "Boil water, add pasta, cook 10 min..."
You just say: "Spaghetti Carbo...]]></description><link>https://esreekarreddy.hashnode.dev/stored-procedures-eli5-mom31aqq</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/stored-procedures-eli5-mom31aqq</guid><category><![CDATA[Databases]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[SQL]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Thu, 30 Apr 2026 22:55:41 GMT</pubDate><content:encoded><![CDATA[<p><em>Saved SQL scripts in the database</em></p>
<p><strong>Day 126 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/stored-procedures">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-restaurant-kitchen-analogy">The Restaurant Kitchen Analogy</h2>
<p>Ordering at a restaurant:</p>
<ul>
<li>You don't tell the chef each step: "Boil water, add pasta, cook 10 min..."</li>
<li>You just say: "Spaghetti Carbonara, please"</li>
<li>The chef already knows the recipe</li>
</ul>
<p><strong>Stored procedures are recipes stored in the database!</strong></p>
<p>You call them by name instead of writing the steps each time.</p>
<hr />
<h2 id="heading-the-problem-they-solve">The Problem They Solve</h2>
<p>Without stored procedures:</p>
<ul>
<li>Every app sends complex SQL to the database</li>
<li>Same logic repeated in multiple places</li>
<li>If logic changes, update everywhere</li>
<li>More network traffic</li>
</ul>
<hr />
<h2 id="heading-how-they-work">How They Work</h2>
<p>You write the procedure once:</p>
<pre><code>Create procedure <span class="hljs-string">"GetCustomerOrders"</span>:
  <span class="hljs-number">1.</span> Find customer by ID
  <span class="hljs-number">2.</span> Get all their orders
  <span class="hljs-number">3.</span> Sort by date
  <span class="hljs-number">4.</span> Return results
</code></pre><p>Then call it:</p>
<pre><code>Execute GetCustomerOrders(customer_id: <span class="hljs-number">123</span>)
</code></pre><p>The database runs all steps internally!</p>
<hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li><strong>Faster</strong> → Less data sent over network</li>
<li><strong>Reusable</strong> → Call same procedure from anywhere</li>
<li><strong>Access-controlled</strong> → Users can run procedure without direct table access</li>
<li><strong>Maintainable</strong> → Change logic in one place</li>
</ul>
<hr />
<h2 id="heading-when-to-use-them">When To Use Them</h2>
<p><strong>Good for:</strong></p>
<ul>
<li>Complex operations with multiple steps</li>
<li>Business logic that should live in database</li>
<li>Performance-critical queries</li>
<li>Enforcing consistent data rules</li>
</ul>
<p><strong>Maybe avoid when:</strong></p>
<ul>
<li>Logic changes frequently</li>
<li>You want portable code across databases</li>
<li>Simple queries that don't need reuse</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Stored Procedures are pre-written programs saved in the database that you can run by name, like calling a recipe instead of writing all the steps.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📏 Database Normalization Explained Like You're 5]]></title><description><![CDATA[Organizing data to reduce redundancy
Day 125 of 149
👉 Full deep-dive with code examples

The Address Book Analogy
Bad address book:

"John Smith, 123 Main St, Sydney NSW 2000"
"John Smith, 123 Main St, Sydney NSW 2000" (repeated!)
What if John moves...]]></description><link>https://esreekarreddy.hashnode.dev/database-normalization-eli5-moknp5ew</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/database-normalization-eli5-moknp5ew</guid><category><![CDATA[Databases]]></category><category><![CDATA[Design]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Wed, 29 Apr 2026 22:58:34 GMT</pubDate><content:encoded><![CDATA[<p><em>Organizing data to reduce redundancy</em></p>
<p><strong>Day 125 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/database-normalization">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-address-book-analogy">The Address Book Analogy</h2>
<p>Bad address book:</p>
<ul>
<li>"John Smith, 123 Main St, Sydney NSW 2000"</li>
<li>"John Smith, 123 Main St, Sydney NSW 2000" (repeated!)</li>
<li>What if John moves? Update every entry!</li>
</ul>
<p>Good address book:</p>
<ul>
<li>Contact list: John Smith → Contact ID: 1</li>
<li>Address list: Contact ID: 1 → 123 Main St, Sydney</li>
<li>One place to update!</li>
</ul>
<p><strong>Normalization organizes data to avoid repetition!</strong></p>
<hr />
<h2 id="heading-the-problems-it-solves">The Problems It Solves</h2>
<p><strong>Data repetition:</strong></p>
<ul>
<li>Same information in many places</li>
<li>Wastes storage space</li>
<li>Easy to have mismatches</li>
</ul>
<p><strong>Update anomalies:</strong></p>
<ul>
<li>Change one place, forget another</li>
<li>Data becomes inconsistent</li>
</ul>
<p><strong>Deletion anomalies:</strong></p>
<ul>
<li>Delete one thing, accidentally lose other info</li>
</ul>
<hr />
<h2 id="heading-how-it-works">How It Works</h2>
<p>Split data into related tables:</p>
<p><strong>Before (unnormalized):</strong></p>
<pre><code>| OrderID | Customer | CustomerEmail  | Product |
| <span class="hljs-number">1</span>       | Alice    | alice@mail.com | Laptop  |
| <span class="hljs-number">2</span>       | Alice    | alice@mail.com | Mouse   |
</code></pre><p>Alice's email repeated!</p>
<p><strong>After (normalized):</strong></p>
<pre><code>Customers: | CustomerID | Name  | Email           |
           | <span class="hljs-number">1</span>          | Alice | alice@mail.com  |

Orders:    | OrderID | CustomerID | Product |
| <span class="hljs-number">1</span> | <span class="hljs-number">1</span> | Laptop |
| <span class="hljs-number">2</span> | <span class="hljs-number">1</span> | Mouse  |
</code></pre><p>Email stored once, linked by ID.</p>
<hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li><strong>No redundancy</strong> → Data stored once</li>
<li><strong>Consistency</strong> → One source of truth</li>
<li><strong>Easier updates</strong> → Change in one place</li>
<li><strong>Less storage</strong> → No duplicate data</li>
</ul>
<hr />
<h2 id="heading-the-trade-off">The Trade-off</h2>
<p>More tables = more joins (slower queries sometimes).</p>
<p>Balance: Normalize for correctness, denormalize for performance when needed.</p>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Database Normalization organizes data into tables that minimize repetition, ensuring data is stored once and stays consistent.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📐 CAP Theorem Explained Like You're 5]]></title><description><![CDATA[Pick two: consistency, availability, partition tolerance
Day 124 of 149
👉 Full deep-dive with code examples

The Three Wishes Analogy
A genie says: "Pick any TWO wishes, but not all three"

Wish 1: Fastest car
Wish 2: Cheapest car
Wish 3: Most relia...]]></description><link>https://esreekarreddy.hashnode.dev/cap-theorem-eli5-moj88m6k</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/cap-theorem-eli5-moj88m6k</guid><category><![CDATA[Databases]]></category><category><![CDATA[distributed]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Tue, 28 Apr 2026 22:58:02 GMT</pubDate><content:encoded><![CDATA[<p><em>Pick two: consistency, availability, partition tolerance</em></p>
<p><strong>Day 124 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/cap-theorem">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-three-wishes-analogy">The Three Wishes Analogy</h2>
<p>A genie says: "Pick any TWO wishes, but not all three"</p>
<ul>
<li>Wish 1: Fastest car</li>
<li>Wish 2: Cheapest car</li>
<li>Wish 3: Most reliable car</li>
</ul>
<p>You can have fast + cheap (less reliable), or cheap + reliable (not fast).</p>
<p><strong>CAP is like this—but the real trade-off shows up when the network is split (a partition).</strong></p>
<hr />
<h2 id="heading-the-three-properties">The Three Properties</h2>
<p><strong>C - Consistency:</strong></p>
<ul>
<li>Reads behave as if there were a single up-to-date copy (strong consistency)</li>
<li>In practice, “consistency” has levels; CAP discussions usually mean a very strong form</li>
</ul>
<p><strong>A - Availability:</strong></p>
<ul>
<li>Every request gets a response from a non-failing node</li>
<li>That response might be an error (the key point is: the system doesn’t stop responding)</li>
</ul>
<p><strong>P - Partition Tolerance:</strong></p>
<ul>
<li>The system keeps operating even if messages between servers are dropped/delayed (a network partition)</li>
</ul>
<hr />
<h2 id="heading-why-you-cant-have-all-three">Why You Can't Have All Three</h2>
<p>Imagine two servers that should stay in sync:</p>
<pre><code>Server A ←─ network <span class="hljs-keyword">break</span> ─→ Server B
</code></pre><p>Network breaks. A user writes to Server A.</p>
<p><strong>Option 1: Stay Consistent</strong></p>
<ul>
<li>Don't let Server B respond until synced</li>
<li>But Server B becomes unavailable!</li>
</ul>
<p><strong>Option 2: Stay Available</strong></p>
<ul>
<li>Both servers respond with what they have</li>
<li>But data is now inconsistent!</li>
</ul>
<p>During a partition, you must choose what to prioritize.</p>
<hr />
<h2 id="heading-real-world-choices">Real-World Choices</h2>
<p><strong>CP (Consistency + Partition Tolerance):</strong></p>
<ul>
<li>Bank transactions</li>
<li>Might be briefly unavailable</li>
</ul>
<p><strong>AP (Availability + Partition Tolerance):</strong></p>
<ul>
<li>Social media feeds</li>
<li>Might show slightly stale data</li>
</ul>
<p><strong>CA (rarely used):</strong></p>
<ul>
<li>Only works when you assume no partitions (for example: a single-node system or a very reliable network)</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>CAP Theorem says that when a network partition happens, a distributed system has to trade off between consistency and availability.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[⚗️ ACID Properties Explained Like You're 5]]></title><description><![CDATA[Guarantees for data reliability
Day 123 of 149
👉 Full deep-dive with code examples

The Bank Transfer Analogy
Transferring money from Account A to B:

Subtract the amount from A
Add the amount to B

What if the power goes out between steps?

A lost ...]]></description><link>https://esreekarreddy.hashnode.dev/acid-properties-eli5-mohsotw5</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/acid-properties-eli5-mohsotw5</guid><category><![CDATA[Databases]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[transactions]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Mon, 27 Apr 2026 22:54:59 GMT</pubDate><content:encoded><![CDATA[<p><em>Guarantees for data reliability</em></p>
<p><strong>Day 123 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/acid-properties">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-bank-transfer-analogy">The Bank Transfer Analogy</h2>
<p>Transferring money from Account A to B:</p>
<ul>
<li>Subtract the amount from A</li>
<li>Add the amount to B</li>
</ul>
<p>What if the power goes out between steps?</p>
<ul>
<li>A lost $100</li>
<li>B didn't get it</li>
<li>Money vanished!</li>
</ul>
<p><strong>ACID properties are the goals that help prevent this kind of disaster.</strong></p>
<hr />
<h2 id="heading-what-acid-stands-for">What ACID Stands For</h2>
<p><strong>A - Atomicity:</strong></p>
<p>"All or nothing"</p>
<ul>
<li>Either both steps happen, or neither</li>
<li>No partial transfers</li>
</ul>
<p><strong>C - Consistency:</strong></p>
<p>"Rules are enforced"</p>
<ul>
<li>Balance can't go negative</li>
<li>Constraints/invariants stay true (according to your schema and business rules)</li>
</ul>
<p><strong>I - Isolation:</strong></p>
<p>"Transactions don't see each other's incomplete work"</p>
<ul>
<li>Your transfer doesn't mess up someone else's</li>
<li>Like each transaction runs without being confused by half-finished changes (exact guarantees depend on the isolation level)</li>
</ul>
<p><strong>D - Durability:</strong></p>
<p>"Once done, it stays done"</p>
<ul>
<li>Power outage after? Data is still saved</li>
<li>Written to permanent storage</li>
</ul>
<hr />
<h2 id="heading-why-it-matters">Why It Matters</h2>
<p>Without ACID:</p>
<ul>
<li>Money disappears or duplicates</li>
<li>Inventory goes negative</li>
<li>Orders get lost</li>
<li>Users see incorrect data</li>
</ul>
<p>With ACID:</p>
<ul>
<li>Transactions are more reliable</li>
<li>Data stays consistent</li>
<li>You can trust your database</li>
</ul>
<hr />
<h2 id="heading-a-quick-example">A Quick Example</h2>
<p>Transfer money from A to B:</p>
<pre><code>Start transaction
  <span class="hljs-attr">Check</span>: A has enough money ✓
  Subtract amount <span class="hljs-keyword">from</span> A
  Add amount to B
Commit transaction (all done, saved!)

If anything fails → Rollback (nothing changes)
</code></pre><hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>ACID properties describe the guarantees a database tries to provide for transactions so changes are applied safely (or rolled back) even when things fail.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📋 Database Replication Explained Like You're 5]]></title><description><![CDATA[Copying data to multiple servers
Day 122 of 149
👉 Full deep-dive with code examples

The Backup Copy Analogy
Important documents:

One copy at home
One copy at the bank
One copy at your lawyer's

If your house burns down, you still have copies!
Data...]]></description><link>https://esreekarreddy.hashnode.dev/database-replication-eli5-mogcr6mi</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/database-replication-eli5-mogcr6mi</guid><category><![CDATA[Databases]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[scaling]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Sun, 26 Apr 2026 22:41:08 GMT</pubDate><content:encoded><![CDATA[<p><em>Copying data to multiple servers</em></p>
<p><strong>Day 122 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/database-replication">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-backup-copy-analogy">The Backup Copy Analogy</h2>
<p>Important documents:</p>
<ul>
<li>One copy at home</li>
<li>One copy at the bank</li>
<li>One copy at your lawyer's</li>
</ul>
<p>If your house burns down, you still have copies!</p>
<p><strong>Database Replication keeps copies of your database in multiple places!</strong></p>
<hr />
<h2 id="heading-why-replicate">Why Replicate?</h2>
<p><strong>Safety:</strong></p>
<ul>
<li>If one server fails, another replica may still have the data (and can take over, depending on your setup)</li>
<li>Can reduce data-loss risk, but replication is not a full backup strategy by itself</li>
</ul>
<p><strong>Speed:</strong></p>
<ul>
<li>Users far away can read from a nearby replica</li>
<li>Can reduce read latency for globally distributed users</li>
</ul>
<p><strong>Availability:</strong></p>
<ul>
<li>One server down → Others handle requests</li>
<li>Less downtime for users (depending on failover and client behavior)</li>
</ul>
<hr />
<h2 id="heading-types-of-replication">Types of Replication</h2>
<p><strong>Primary-Replica:</strong></p>
<pre><code>Primary (writes) ──→ Replica <span class="hljs-number">1</span> (reads)
                └──→ Replica <span class="hljs-number">2</span> (reads)
</code></pre><ul>
<li>One leader accepts writes</li>
<li>Replicas get copies, handle reads</li>
</ul>
<p><strong>Multi-Primary:</strong></p>
<ul>
<li>Multiple servers accept writes</li>
<li>More complex, handles conflicts</li>
</ul>
<hr />
<h2 id="heading-the-trade-offs">The Trade-offs</h2>
<p><strong>Consistency:</strong></p>
<ul>
<li>Replicas might be slightly behind</li>
<li>User writes, then reads from replica = might see old data</li>
</ul>
<p><strong>Complexity:</strong></p>
<ul>
<li>Managing multiple servers</li>
<li>Handling conflicts if two writes happen</li>
</ul>
<hr />
<h2 id="heading-common-uses">Common Uses</h2>
<ul>
<li><strong>Global apps</strong> → Replicas in each region</li>
<li><strong>High-traffic sites</strong> → Spread read load</li>
<li><strong>Disaster recovery</strong> → Backup in different location</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Database Replication copies your data to multiple servers for safety, speed, and availability when one server isn't enough.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🍕 Database Sharding Explained Like You're 5]]></title><description><![CDATA[Splitting data across servers
Day 121 of 149
👉 Full deep-dive with code examples

The Library Card Catalog Analogy
One huge card catalog is hard to use:

Long lines at one catalog
If it breaks, no one can find books

Split by letters:

A-F catalog i...]]></description><link>https://esreekarreddy.hashnode.dev/database-sharding-eli5-moex8ueg</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/database-sharding-eli5-moex8ueg</guid><category><![CDATA[Databases]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[scaling]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Sat, 25 Apr 2026 22:39:12 GMT</pubDate><content:encoded><![CDATA[<p><em>Splitting data across servers</em></p>
<p><strong>Day 121 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/database-sharding">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-library-card-catalog-analogy">The Library Card Catalog Analogy</h2>
<p>One huge card catalog is hard to use:</p>
<ul>
<li>Long lines at one catalog</li>
<li>If it breaks, no one can find books</li>
</ul>
<p>Split by letters:</p>
<ul>
<li>A-F catalog in room 1</li>
<li>G-M catalog in room 2</li>
<li>N-Z catalog in room 3</li>
</ul>
<p>Search is faster, and if one catalog goes down, you can still use the others (but you lose access to that section until it comes back).</p>
<p><strong>Sharding splits your database into pieces across servers!</strong></p>
<hr />
<h2 id="heading-why-shard">Why Shard?</h2>
<p>One server has limits:</p>
<ul>
<li><strong>Storage</strong> → Runs out of disk space</li>
<li><strong>Speed</strong> → Too many queries to handle</li>
<li><strong>Memory</strong> → Can't fit all data in RAM</li>
</ul>
<p>Sharding spreads the load across multiple servers.</p>
<hr />
<h2 id="heading-how-it-works">How It Works</h2>
<p>Split data by some key:</p>
<pre><code>Users A-H → Server <span class="hljs-number">1</span>
Users I-P → Server <span class="hljs-number">2</span>
Users Q-Z → Server <span class="hljs-number">3</span>
</code></pre><p>Each piece is a "shard." Each shard handles its portion.</p>
<hr />
<h2 id="heading-sharding-strategies">Sharding Strategies</h2>
<p><strong>By key range:</strong></p>
<ul>
<li>Users 1-1000 → Shard 1</li>
<li>Users 1001-2000 → Shard 2</li>
</ul>
<p><strong>By hash:</strong></p>
<ul>
<li>hash(user_id) % 3 → determines shard</li>
<li>Often spreads data more evenly</li>
</ul>
<p><strong>By geography:</strong></p>
<ul>
<li>US users → US shard</li>
<li>EU users → EU shard</li>
</ul>
<hr />
<h2 id="heading-the-trade-offs">The Trade-offs</h2>
<p><strong>Complexity:</strong></p>
<ul>
<li>Queries across shards are hard</li>
<li>Need to route requests correctly</li>
</ul>
<p><strong>Availability:</strong></p>
<ul>
<li>Sharding doesn't automatically make you highly available</li>
<li>If a shard goes down, data on that shard is unavailable unless you also use replication</li>
</ul>
<p><strong>Joins:</strong></p>
<ul>
<li>Can't easily join data across shards</li>
<li>Might need to restructure queries</li>
</ul>
<p><strong>Rebalancing:</strong></p>
<ul>
<li>Adding new shard? Need to move data</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Database Sharding splits your data across multiple servers so each handles a smaller piece, allowing your database to scale beyond one machine's limits.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🔗 ORM Explained Like You're 5]]></title><description><![CDATA[Objects to database rows translator
Day 120 of 149
👉 Full deep-dive with code examples

The Translator Analogy
In a foreign country, a translator converts between languages.
ORM translates between your code and the database.
You work with objects. O...]]></description><link>https://esreekarreddy.hashnode.dev/orm-eli5-modhv805</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/orm-eli5-modhv805</guid><category><![CDATA[Databases]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Fri, 24 Apr 2026 22:40:56 GMT</pubDate><content:encoded><![CDATA[<p><em>Objects to database rows translator</em></p>
<p><strong>Day 120 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/orm">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-translator-analogy">The Translator Analogy</h2>
<p>In a foreign country, a translator converts between languages.</p>
<p><strong>ORM translates between your code and the database.</strong></p>
<p>You work with objects. ORM converts them to SQL.</p>
<hr />
<h2 id="heading-without-vs-with-orm">Without vs With ORM</h2>
<pre><code class="lang-python"><span class="hljs-comment"># Raw SQL</span>
cursor.execute(
    <span class="hljs-string">"INSERT INTO users (name) VALUES (?)"</span>,
    (<span class="hljs-string">"Alice"</span>,)
)

<span class="hljs-comment"># ORM</span>
user = User(name=<span class="hljs-string">"Alice"</span>)
session.add(user)
</code></pre>
<p>Much cleaner!</p>
<hr />
<h2 id="heading-common-orms">Common ORMs</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Language</td><td>ORM</td></tr>
</thead>
<tbody>
<tr>
<td>Python</td><td>SQLAlchemy</td></tr>
<tr>
<td>JavaScript</td><td>Prisma</td></tr>
<tr>
<td>Java</td><td>Hibernate</td></tr>
<tr>
<td>Ruby</td><td>ActiveRecord</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li>Write code in your language</li>
<li>SQL injection protection</li>
<li>Handle relationships naturally</li>
<li>Switch databases easily</li>
</ul>
<hr />
<h2 id="heading-watch-out-for">Watch Out For</h2>
<p><strong>N+1 Problem</strong>: 100 users = 101 queries if not careful. Use eager loading!</p>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>ORM maps database tables to programming objects, letting you interact with data using your language instead of SQL.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[⚡ Circuit Breaker Explained Like You're 5]]></title><description><![CDATA[Preventing cascade failures
Day 119 of 149
👉 Full deep-dive with code examples

The Electrical Circuit Breaker Analogy
When too much electricity flows:

The circuit breaker trips
Stops electricity to prevent fire
You fix the problem
Then reset the b...]]></description><link>https://esreekarreddy.hashnode.dev/circuit-breaker-eli5-moc2qwpw</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/circuit-breaker-eli5-moc2qwpw</guid><category><![CDATA[architecture]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[General Programming]]></category><category><![CDATA[Resilience]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Thu, 23 Apr 2026 22:49:55 GMT</pubDate><content:encoded><![CDATA[<p><em>Preventing cascade failures</em></p>
<p><strong>Day 119 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/circuit-breaker">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-electrical-circuit-breaker-analogy">The Electrical Circuit Breaker Analogy</h2>
<p>When too much electricity flows:</p>
<ul>
<li>The circuit breaker trips</li>
<li>Stops electricity to prevent fire</li>
<li>You fix the problem</li>
<li>Then reset the breaker</li>
</ul>
<p><strong>Software circuit breakers work the same way!</strong></p>
<p>They can temporarily stop sending requests to a failing dependency so your system can fail fast and stay more stable.</p>
<hr />
<h2 id="heading-the-problem-it-solves">The Problem It Solves</h2>
<p>In connected systems, one failure spreads:</p>
<pre><code>Service A → calls Service B → B is down!
                 ↓
A keeps trying... and waiting... and trying...
                 ↓
A<span class="hljs-string">'s resources exhausted → A crashes too!
                 ↓
Other services calling A start failing
                 ↓
Entire system down!</span>
</code></pre><p>This is a cascading failure.</p>
<hr />
<h2 id="heading-how-circuit-breaker-works">How Circuit Breaker Works</h2>
<p>Three states:</p>
<p><strong>Closed (Normal):</strong></p>
<ul>
<li>Requests pass through normally</li>
<li>Failures are counted</li>
</ul>
<p><strong>Open (Tripped):</strong></p>
<ul>
<li>Too many failures? Stop calling that service</li>
<li>Return error immediately</li>
<li>Don't waste time/resources on a dependency that's likely still unhealthy</li>
</ul>
<p><strong>Half-Open (Testing):</strong></p>
<ul>
<li>After some time, try one request</li>
<li>If it works, go back to Closed</li>
<li>If it fails, stay Open</li>
</ul>
<hr />
<h2 id="heading-a-simple-flow">A Simple Flow</h2>
<pre><code>Closed → failure threshold reached → Open (stop calling <span class="hljs-keyword">for</span> a cooldown)
                         ↓
         Wait <span class="hljs-keyword">for</span> cooldown
                         ↓
        Half-Open → <span class="hljs-keyword">try</span> one request
                         ↓
        Success? → Closed (normal)
        Failure? → Open (keep waiting)
</code></pre><hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li><strong>Fast failure</strong> → Don't wait for timeouts</li>
<li><strong>Resource protection</strong> → Don't waste resources on dead services</li>
<li><strong>Recovery time</strong> → Give failing service time to recover</li>
<li><strong>Graceful degradation</strong> → Return fallback instead of error</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Circuit breakers help your app fail fast when a dependency is unhealthy, reducing the chance that one failing service causes wider outages.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[🚪 API Gateway Explained Like You're 5]]></title><description><![CDATA[Single entry point for services
Day 118 of 149
👉 Full deep-dive with code examples

The Hotel Concierge Analogy
At a hotel, you don't go directly to housekeeping, the kitchen, or maintenance:

You talk to the concierge
They route your request to the...]]></description><link>https://esreekarreddy.hashnode.dev/api-gateway-eli5-moanc9pd</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/api-gateway-eli5-moanc9pd</guid><category><![CDATA[architecture]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[Microservices]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Wed, 22 Apr 2026 22:50:51 GMT</pubDate><content:encoded><![CDATA[<p><em>Single entry point for services</em></p>
<p><strong>Day 118 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/api-gateway">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-hotel-concierge-analogy">The Hotel Concierge Analogy</h2>
<p>At a hotel, you don't go directly to housekeeping, the kitchen, or maintenance:</p>
<ul>
<li>You talk to the concierge</li>
<li>They route your request to the right department</li>
<li>They handle translations and special requests</li>
</ul>
<p><strong>An API Gateway is the concierge for your APIs!</strong></p>
<p>All requests go through one door, then get routed appropriately.</p>
<hr />
<h2 id="heading-the-problem-it-solves">The Problem It Solves</h2>
<p>With many microservices:</p>
<ul>
<li>Client needs to know all service addresses</li>
<li>Each service implements its own auth, rate limiting</li>
<li>Mobile clients make many requests to different services</li>
<li>Hard to make changes without breaking clients</li>
</ul>
<hr />
<h2 id="heading-what-an-api-gateway-does">What an API Gateway Does</h2>
<p><strong>Single entry point:</strong></p>
<pre><code>Client → API Gateway → Service A
                    → Service B
                    → Service C
</code></pre><p><strong>Handles cross-cutting concerns:</strong></p>
<ul>
<li><strong>Authentication</strong> → Verify user identity</li>
<li><strong>Rate limiting</strong> → Prevent abuse</li>
<li><strong>Caching</strong> → Speed up responses</li>
<li><strong>Logging</strong> → Track all requests</li>
<li><strong>Routing</strong> → Send to right service</li>
</ul>
<hr />
<h2 id="heading-the-benefits">The Benefits</h2>
<ul>
<li><strong>Simplified clients</strong> → One address, not many</li>
<li><strong>Security centralized</strong> → Auth in one place</li>
<li><strong>Flexible backend</strong> → Change services without changing clients</li>
<li><strong>Aggregation</strong> → Combine multiple service calls into one</li>
</ul>
<hr />
<h2 id="heading-common-features">Common Features</h2>
<ul>
<li>Route requests based on URL path</li>
<li>Transform requests/responses</li>
<li>Load balance across instances</li>
<li>Handle SSL/TLS termination</li>
<li>Provide API versioning</li>
</ul>
<hr />
<h2 id="heading-popular-api-gateways">Popular API Gateways</h2>
<ul>
<li><strong>Kong</strong> → Open source, plugins</li>
<li><strong>AWS API Gateway</strong> → Cloud managed</li>
<li><strong>NGINX</strong> → Web server + gateway</li>
<li><strong>Apigee</strong> → Enterprise, by Google</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>An API Gateway provides a single, unified entry point for all API requests, handling security, routing, and common concerns in one place.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[📜 Event Sourcing Explained Like You're 5]]></title><description><![CDATA[Store events, not current state
Day 117 of 149
👉 Full deep-dive with code examples

The Bank Statement Analogy
Your bank doesn't just show your balance:

It keeps every transaction ever
Deposit $100, withdraw $20, transfer $50...
You can see exactly...]]></description><link>https://esreekarreddy.hashnode.dev/event-sourcing-eli5-mo97im06</link><guid isPermaLink="true">https://esreekarreddy.hashnode.dev/event-sourcing-eli5-mo97im06</guid><category><![CDATA[architecture]]></category><category><![CDATA[ELI5]]></category><category><![CDATA[patterns]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Sreekar Reddy]]></dc:creator><pubDate>Tue, 21 Apr 2026 22:40:07 GMT</pubDate><content:encoded><![CDATA[<p><em>Store events, not current state</em></p>
<p><strong>Day 117 of 149</strong></p>
<p>👉 <strong><a target="_blank" href="https://sreekarreddy.com/learn/eli5/event-sourcing">Full deep-dive with code examples</a></strong></p>
<hr />
<h2 id="heading-the-bank-statement-analogy">The Bank Statement Analogy</h2>
<p>Your bank doesn't just show your balance:</p>
<ul>
<li>It keeps every transaction ever</li>
<li>Deposit $100, withdraw $20, transfer $50...</li>
<li>You can see exactly HOW you got to your current balance</li>
</ul>
<p><strong>Event Sourcing stores all the events that happened!</strong></p>
<p>Not just the final result, but every step along the way.</p>
<hr />
<h2 id="heading-the-problem-it-solves">The Problem It Solves</h2>
<p>Traditional databases store current state:</p>
<ul>
<li>"User has $500 in account"</li>
<li>But how did they get there?</li>
<li>What happened yesterday?</li>
</ul>
<p>If you only store current state:</p>
<ul>
<li>Can't answer "what changed?"</li>
<li>Can't undo mistakes easily</li>
<li>Can't understand the journey</li>
</ul>
<hr />
<h2 id="heading-how-event-sourcing-works">How Event Sourcing Works</h2>
<p>Instead of storing just the result:</p>
<pre><code>Traditional: { <span class="hljs-attr">balance</span>: $<span class="hljs-number">500</span> }

Event Sourcing:
<span class="hljs-number">1.</span> AccountCreated (initial: $<span class="hljs-number">0</span>)
<span class="hljs-number">2.</span> Deposited $<span class="hljs-number">1000</span>
<span class="hljs-number">3.</span> Withdrew $<span class="hljs-number">300</span>
<span class="hljs-number">4.</span> Transferred $<span class="hljs-number">200</span> to Friend
<span class="hljs-number">5.</span> Deposited $<span class="hljs-number">0</span> (fee charged mistake?)

Current balance = replay all events = $<span class="hljs-number">500</span>
</code></pre><p>Every change is an event, stored forever.</p>
<hr />
<h2 id="heading-benefits">Benefits</h2>
<ul>
<li><strong>Complete history</strong> → See exactly what happened</li>
<li><strong>Time travel</strong> → Rebuild state at any point in time</li>
<li><strong>Audit trail</strong> → Perfect for compliance</li>
<li><strong>Debug easily</strong> → Replay events to find issues</li>
<li><strong>Undo/redo</strong> → Just remove or replay events</li>
</ul>
<hr />
<h2 id="heading-when-to-use-it">When To Use It</h2>
<p>Great for:</p>
<ul>
<li>Financial systems (need full audit trail)</li>
<li>Shopping carts (track user journey)</li>
<li>Gaming (replay matches)</li>
<li>Collaboration tools (track all changes)</li>
</ul>
<p>Not needed for simple apps where you don't care about history.</p>
<hr />
<h2 id="heading-the-trade-off">The Trade-Off</h2>
<ul>
<li><strong>More storage</strong> → You're keeping everything</li>
<li><strong>More complexity</strong> → Rebuilding state takes work</li>
<li><strong>Worth it</strong> → When history matters!</li>
</ul>
<hr />
<h2 id="heading-in-one-sentence">In One Sentence</h2>
<p>Event Sourcing stores every change as an event, so you can trace how things reached their current state.</p>
<hr />
<p>🔗 <strong>Enjoying these? Follow for daily ELI5 explanations!</strong></p>
<p><em>Making complex tech concepts simple, one day at a time.</em></p>
]]></content:encoded></item></channel></rss>