<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sreekar Reddy</title>
    <description>The latest articles on Forem by Sreekar Reddy (@esreekarreddy).</description>
    <link>https://forem.com/esreekarreddy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3678910%2Fd7c2554f-5af3-4a55-ae45-d8f7b63e44f0.jpg</url>
      <title>Forem: Sreekar Reddy</title>
      <link>https://forem.com/esreekarreddy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/esreekarreddy"/>
    <language>en</language>
    <item>
      <title>♿ Web Accessibility Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Wed, 06 May 2026 22:54:14 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/web-accessibility-explained-like-youre-5-18ok</link>
      <guid>https://forem.com/esreekarreddy/web-accessibility-explained-like-youre-5-18ok</guid>
      <description>&lt;p&gt;&lt;em&gt;Making websites usable for everyone&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 132 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/web-accessibility" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Curb Cut Analogy
&lt;/h2&gt;

&lt;p&gt;Curb cuts (ramps in sidewalks) were designed for wheelchairs, but help everyone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parents with strollers&lt;/li&gt;
&lt;li&gt;People with luggage&lt;/li&gt;
&lt;li&gt;Delivery workers with carts&lt;/li&gt;
&lt;li&gt;Cyclists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Web accessibility is the same!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Designing for disabilities improves the experience for everyone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;Over 1 billion people have disabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visual&lt;/strong&gt; → Blind, low vision, color blind&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hearing&lt;/strong&gt; → Deaf, hard of hearing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motor&lt;/strong&gt; → Can't use mouse, limited movement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive&lt;/strong&gt; → Dyslexia, attention issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without accessibility, your website locks them out.&lt;/p&gt;




&lt;h2&gt;
  
  
  How People Access the Web Differently
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screen readers&lt;/strong&gt; → Read page aloud for blind users&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard only&lt;/strong&gt; → No mouse, just Tab and Enter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice control&lt;/strong&gt; → Speak commands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen magnifiers&lt;/strong&gt; → Zoom in for low vision&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your website needs to work with all of these!&lt;/p&gt;




&lt;h2&gt;
  
  
  Simple Accessibility Wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Images:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add alt text: "Golden retriever playing in park"&lt;/li&gt;
&lt;li&gt;Screen readers can describe images to blind users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't rely only on color (red for error)&lt;/li&gt;
&lt;li&gt;Good contrast between text and background&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Keyboard navigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can users Tab through the page?&lt;/li&gt;
&lt;li&gt;Are buttons and links focusable?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Forms:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Label every input field&lt;/li&gt;
&lt;li&gt;Show clear error messages&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Benefits Beyond Disabilities
&lt;/h2&gt;

&lt;p&gt;Accessibility helps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elderly users with declining vision&lt;/li&gt;
&lt;li&gt;Mobile users with small screens&lt;/li&gt;
&lt;li&gt;Users in bright sunlight (need contrast!)&lt;/li&gt;
&lt;li&gt;SEO (search engines read alt text too!)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Web Accessibility means designing websites so everyone, including people with disabilities, can use them—and it makes sites better for everyone.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>web</category>
      <category>a11y</category>
      <category>programming</category>
    </item>
    <item>
      <title>🧩 Web Components Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Tue, 05 May 2026 22:57:27 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/web-components-explained-like-youre-5-2p57</link>
      <guid>https://forem.com/esreekarreddy/web-components-explained-like-youre-5-2p57</guid>
      <description>&lt;p&gt;&lt;em&gt;Reusable custom HTML elements&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 131 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/web-components" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The LEGO Brick Analogy
&lt;/h2&gt;

&lt;p&gt;LEGO bricks are reusable building blocks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each brick works independently&lt;/li&gt;
&lt;li&gt;Combine them to build anything&lt;/li&gt;
&lt;li&gt;Same brick works in any LEGO set&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Web Components are LEGO bricks for websites!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a component once, use it anywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem They Solve
&lt;/h2&gt;

&lt;p&gt;Before Web Components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copying HTML, CSS, JS between projects&lt;/li&gt;
&lt;li&gt;Styles from one component affecting others&lt;/li&gt;
&lt;li&gt;Different frameworks couldn't share components&lt;/li&gt;
&lt;li&gt;Hard to encapsulate functionality&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Web Components Give You
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Custom Elements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define your own HTML tags&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;user-card&amp;gt;&lt;/code&gt; instead of &lt;code&gt;&amp;lt;div class="user-card"&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Shadow DOM:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component has its own isolated styles&lt;/li&gt;
&lt;li&gt;No CSS leaking in or out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;HTML Templates:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusable HTML structures&lt;/li&gt;
&lt;li&gt;Only rendered when needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Simple Example
&lt;/h2&gt;

&lt;p&gt;Create a custom element:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;my-greeting&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/my-greeting&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Renders as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello, Alice! Welcome to our site.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use it anywhere like a regular HTML tag!&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encapsulation&lt;/strong&gt; → Styles and logic stay inside&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusability&lt;/strong&gt; → Same component in any project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework agnostic&lt;/strong&gt; → Works with React, Vue, or vanilla JS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native browser support&lt;/strong&gt; → No library needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Uses
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design systems&lt;/strong&gt; → Company-wide UI components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Widgets&lt;/strong&gt; → Video players, date pickers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micro frontends&lt;/strong&gt; → Independent components from different teams&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Web Components let you create custom, reusable HTML elements with encapsulated styles and behavior that work in any web project.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>web</category>
      <category>frontend</category>
      <category>programming</category>
    </item>
    <item>
      <title>📱 Progressive Web Apps Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Mon, 04 May 2026 22:57:51 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/progressive-web-apps-explained-like-youre-5-4dj0</link>
      <guid>https://forem.com/esreekarreddy/progressive-web-apps-explained-like-youre-5-4dj0</guid>
      <description>&lt;p&gt;&lt;em&gt;Websites that feel like apps&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 130 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/progressive-web-apps" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Best of Both Worlds Analogy
&lt;/h2&gt;

&lt;p&gt;You want pizza:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restaurant:&lt;/strong&gt; Great experience, but you have to go there&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery:&lt;/strong&gt; Comes to you, but takes time each order&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Home oven with frozen pizza:&lt;/strong&gt; Available anytime, like having the restaurant at home!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PWAs are like having the restaurant experience at home!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All the benefits of apps, without the app store.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem They Solve
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Native apps are great but:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need to download from app store&lt;/li&gt;
&lt;li&gt;Take up phone storage&lt;/li&gt;
&lt;li&gt;Require separate iOS and Android versions&lt;/li&gt;
&lt;li&gt;Updates need re-downloading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Websites are accessible but:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need internet to work&lt;/li&gt;
&lt;li&gt;Can't send notifications&lt;/li&gt;
&lt;li&gt;Not on home screen&lt;/li&gt;
&lt;li&gt;Feel "less real" than apps&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How PWAs Fix This
&lt;/h2&gt;

&lt;p&gt;PWAs combine the best of both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install from browser&lt;/strong&gt; → No app store needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work offline&lt;/strong&gt; → Cached data and pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Home screen icon&lt;/strong&gt; → Feels like a real app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push notifications&lt;/strong&gt; → Keep users engaged&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One codebase&lt;/strong&gt; → Works on all devices&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Service Workers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run in the background&lt;/li&gt;
&lt;li&gt;Cache files for offline use&lt;/li&gt;
&lt;li&gt;Handle push notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Manifest file:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tells browser it's installable&lt;/li&gt;
&lt;li&gt;Sets icon, colors, name&lt;/li&gt;
&lt;li&gt;Configures how it launches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;HTTPS required:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security is mandatory&lt;/li&gt;
&lt;li&gt;Protects user data&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Real Examples
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Twitter Lite&lt;/strong&gt; → PWA, 70% data reduction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starbucks&lt;/strong&gt; → Works offline for ordering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pinterest&lt;/strong&gt; → 40% more user engagement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spotify Web Player&lt;/strong&gt; → PWA for music&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Progressive Web Apps are websites that work like native apps—installable, fast, and work offline—without needing an app store.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>web</category>
      <category>mobile</category>
      <category>programming</category>
    </item>
    <item>
      <title>🖥️ SSR vs CSR Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Sun, 03 May 2026 22:44:40 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/ssr-vs-csr-explained-like-youre-5-468g</link>
      <guid>https://forem.com/esreekarreddy/ssr-vs-csr-explained-like-youre-5-468g</guid>
      <description>&lt;p&gt;&lt;em&gt;Where your page gets rendered&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 129 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/ssr-csr" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Restaurant Analogy
&lt;/h2&gt;

&lt;p&gt;Two types of restaurants:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full-service restaurant (SSR):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kitchen prepares complete meal&lt;/li&gt;
&lt;li&gt;Served ready to eat&lt;/li&gt;
&lt;li&gt;You just enjoy it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Build-your-own taco bar (CSR):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You get ingredients&lt;/li&gt;
&lt;li&gt;You assemble at your table&lt;/li&gt;
&lt;li&gt;More interactive, but takes time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;SSR vs CSR is about where the webpage gets built!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Server-Side Rendering (SSR)
&lt;/h2&gt;

&lt;p&gt;The server builds the complete HTML page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User visits → Server builds page → Sends complete HTML → User sees content immediately
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast first load (content right away)&lt;/li&gt;
&lt;li&gt;Great for SEO (search engines see full content)&lt;/li&gt;
&lt;li&gt;Works without JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Downsides:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every click might need a new page from server&lt;/li&gt;
&lt;li&gt;Server does more work&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Client-Side Rendering (CSR)
&lt;/h2&gt;

&lt;p&gt;The browser builds the page with JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User visits → Server sends empty shell → Browser runs JavaScript → Content appears
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After first load, navigation is instant&lt;/li&gt;
&lt;li&gt;Feels like an app, not a website&lt;/li&gt;
&lt;li&gt;Server does less work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Downsides:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blank page until JavaScript loads&lt;/li&gt;
&lt;li&gt;Search engines may not see content&lt;/li&gt;
&lt;li&gt;Needs JavaScript to work&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When To Use Which
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose SSR when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SEO matters (blogs, e-commerce)&lt;/li&gt;
&lt;li&gt;Fast first load is critical&lt;/li&gt;
&lt;li&gt;Users might have slow devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose CSR when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building app-like experiences (dashboards)&lt;/li&gt;
&lt;li&gt;Lots of interactivity&lt;/li&gt;
&lt;li&gt;Users stay and explore (not quick visits)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Modern approach:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Many sites use BOTH (hybrid)&lt;/li&gt;
&lt;li&gt;SSR for first load, CSR for navigation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;SSR has the server build pages (fast first load, good SEO), while CSR has the browser build them (app-like experience after initial load).&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>web</category>
      <category>performance</category>
      <category>programming</category>
    </item>
    <item>
      <title>📮 REST API Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Sat, 02 May 2026 22:44:59 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/rest-api-explained-like-youre-5-58g8</link>
      <guid>https://forem.com/esreekarreddy/rest-api-explained-like-youre-5-58g8</guid>
      <description>&lt;p&gt;&lt;em&gt;Web services using HTTP verbs&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 128 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/rest-api" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Library Analogy
&lt;/h2&gt;

&lt;p&gt;A library with standard commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt; a book - Receive book&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; a book - Donate new book&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; a book - Replace with updated version&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DELETE&lt;/strong&gt; a book - Remove from library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;REST APIs use the same HTTP verbs to operate on resources.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  HTTP Methods = CRUD
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET /users&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Create&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /users&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUT&lt;/td&gt;
&lt;td&gt;Update&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PUT /users/1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DELETE /users/1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Real Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Get all users&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Create user&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;nouns&lt;/strong&gt;, not verbs (&lt;code&gt;/users&lt;/code&gt; not &lt;code&gt;/getUsers&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;plurals&lt;/strong&gt; (&lt;code&gt;/products&lt;/code&gt; not &lt;code&gt;/product&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Return proper &lt;strong&gt;status codes&lt;/strong&gt; (200, 201, 404, etc.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;REST APIs use standard HTTP methods (GET, POST, PUT, DELETE) to interact with resources identified by URLs.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>web</category>
      <category>api</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🚛 Database Migrations Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Fri, 01 May 2026 22:52:51 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/database-migrations-explained-like-youre-5-2hen</link>
      <guid>https://forem.com/esreekarreddy/database-migrations-explained-like-youre-5-2hen</guid>
      <description>&lt;p&gt;&lt;em&gt;Version control for database schema&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 127 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/database-migrations" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Recipe Card Analogy
&lt;/h2&gt;

&lt;p&gt;Your grandma's recipe evolves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version 1: Original recipe&lt;/li&gt;
&lt;li&gt;Version 2: Add a pinch of salt&lt;/li&gt;
&lt;li&gt;Version 3: Use brown sugar instead of white&lt;/li&gt;
&lt;li&gt;Each change is recorded and reversible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Database migrations track changes to your database structure!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Migrations Matter
&lt;/h2&gt;

&lt;p&gt;Without migrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Did we add that column?"&lt;/li&gt;
&lt;li&gt;"What does the database look like in production?"&lt;/li&gt;
&lt;li&gt;"How do I set up a new developer's database?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everyone's database might be different!&lt;/p&gt;




&lt;h2&gt;
  
  
  How They Work
&lt;/h2&gt;

&lt;p&gt;Each migration is a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Migration 1: Create users table
Migration 2: Add email column to users
Migration 3: Create orders table
Migration 4: Add index on email
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run in order, your database evolves consistently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Forward (up):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply changes: add column, create table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Backward (down):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Undo changes: remove column, drop table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Version tracking:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database knows which migrations have run&lt;/li&gt;
&lt;li&gt;Only applies new ones&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistent&lt;/strong&gt; → All databases match&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeatable&lt;/strong&gt; → New developer runs migrations, instant setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reversible&lt;/strong&gt; → Mistake? Roll back&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditable&lt;/strong&gt; → History of all changes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Write migration (add column, change type)&lt;/li&gt;
&lt;li&gt;Test locally&lt;/li&gt;
&lt;li&gt;Commit to version control&lt;/li&gt;
&lt;li&gt;Deploy runs migrations automatically&lt;/li&gt;
&lt;li&gt;Production updated safely!&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Database Migrations are versioned scripts that track and apply changes to your database structure, so every environment stays in sync.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>📦 Stored Procedures Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Thu, 30 Apr 2026 22:55:41 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/stored-procedures-explained-like-youre-5-1a62</link>
      <guid>https://forem.com/esreekarreddy/stored-procedures-explained-like-youre-5-1a62</guid>
      <description>&lt;p&gt;&lt;em&gt;Saved SQL scripts in the database&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 126 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/stored-procedures" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Restaurant Kitchen Analogy
&lt;/h2&gt;

&lt;p&gt;Ordering at a restaurant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't tell the chef each step: "Boil water, add pasta, cook 10 min..."&lt;/li&gt;
&lt;li&gt;You just say: "Spaghetti Carbonara, please"&lt;/li&gt;
&lt;li&gt;The chef already knows the recipe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stored procedures are recipes stored in the database!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You call them by name instead of writing the steps each time.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem They Solve
&lt;/h2&gt;

&lt;p&gt;Without stored procedures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every app sends complex SQL to the database&lt;/li&gt;
&lt;li&gt;Same logic repeated in multiple places&lt;/li&gt;
&lt;li&gt;If logic changes, update everywhere&lt;/li&gt;
&lt;li&gt;More network traffic&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How They Work
&lt;/h2&gt;

&lt;p&gt;You write the procedure once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create procedure "GetCustomerOrders":
  1. Find customer by ID
  2. Get all their orders
  3. Sort by date
  4. Return results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then call it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;Execute&lt;/span&gt; &lt;span class="n"&gt;GetCustomerOrders&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The database runs all steps internally!&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Faster&lt;/strong&gt; → Less data sent over network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable&lt;/strong&gt; → Call same procedure from anywhere&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access-controlled&lt;/strong&gt; → Users can run procedure without direct table access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintainable&lt;/strong&gt; → Change logic in one place&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When To Use Them
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex operations with multiple steps&lt;/li&gt;
&lt;li&gt;Business logic that should live in database&lt;/li&gt;
&lt;li&gt;Performance-critical queries&lt;/li&gt;
&lt;li&gt;Enforcing consistent data rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maybe avoid when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logic changes frequently&lt;/li&gt;
&lt;li&gt;You want portable code across databases&lt;/li&gt;
&lt;li&gt;Simple queries that don't need reuse&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>sql</category>
      <category>programming</category>
    </item>
    <item>
      <title>📏 Database Normalization Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Wed, 29 Apr 2026 22:58:33 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/database-normalization-explained-like-youre-5-3781</link>
      <guid>https://forem.com/esreekarreddy/database-normalization-explained-like-youre-5-3781</guid>
      <description>&lt;p&gt;&lt;em&gt;Organizing data to reduce redundancy&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 125 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/database-normalization" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Address Book Analogy
&lt;/h2&gt;

&lt;p&gt;Bad address book:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"John Smith, 123 Main St, Sydney NSW 2000"&lt;/li&gt;
&lt;li&gt;"John Smith, 123 Main St, Sydney NSW 2000" (repeated!)&lt;/li&gt;
&lt;li&gt;What if John moves? Update every entry!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good address book:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contact list: John Smith → Contact ID: 1&lt;/li&gt;
&lt;li&gt;Address list: Contact ID: 1 → 123 Main St, Sydney&lt;/li&gt;
&lt;li&gt;One place to update!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Normalization organizes data to avoid repetition!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problems It Solves
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Data repetition:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Same information in many places&lt;/li&gt;
&lt;li&gt;Wastes storage space&lt;/li&gt;
&lt;li&gt;Easy to have mismatches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Update anomalies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change one place, forget another&lt;/li&gt;
&lt;li&gt;Data becomes inconsistent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deletion anomalies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete one thing, accidentally lose other info&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Split data into related tables:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before (unnormalized):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| OrderID | Customer | CustomerEmail  | Product |
| 1       | Alice    | alice@mail.com | Laptop  |
| 2       | Alice    | alice@mail.com | Mouse   |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alice's email repeated!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After (normalized):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Customers: | CustomerID | Name  | Email           |
           | 1          | Alice | alice@mail.com  |

Orders:    | OrderID | CustomerID | Product |
| 1 | 1 | Laptop |
| 2 | 1 | Mouse  |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Email stored once, linked by ID.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No redundancy&lt;/strong&gt; → Data stored once&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt; → One source of truth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easier updates&lt;/strong&gt; → Change in one place&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Less storage&lt;/strong&gt; → No duplicate data&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Trade-off
&lt;/h2&gt;

&lt;p&gt;More tables = more joins (slower queries sometimes).&lt;/p&gt;

&lt;p&gt;Balance: Normalize for correctness, denormalize for performance when needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Database Normalization organizes data into tables that minimize repetition, ensuring data is stored once and stays consistent.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>design</category>
      <category>programming</category>
    </item>
    <item>
      <title>📐 CAP Theorem Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Tue, 28 Apr 2026 22:58:02 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/cap-theorem-explained-like-youre-5-17og</link>
      <guid>https://forem.com/esreekarreddy/cap-theorem-explained-like-youre-5-17og</guid>
      <description>&lt;p&gt;&lt;em&gt;Pick two: consistency, availability, partition tolerance&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 124 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/cap-theorem" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Three Wishes Analogy
&lt;/h2&gt;

&lt;p&gt;A genie says: "Pick any TWO wishes, but not all three"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wish 1: Fastest car&lt;/li&gt;
&lt;li&gt;Wish 2: Cheapest car&lt;/li&gt;
&lt;li&gt;Wish 3: Most reliable car&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can have fast + cheap (less reliable), or cheap + reliable (not fast).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CAP is like this—but the real trade-off shows up when the network is split (a partition).&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Three Properties
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;C - Consistency:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads behave as if there were a single up-to-date copy (strong consistency)&lt;/li&gt;
&lt;li&gt;In practice, “consistency” has levels; CAP discussions usually mean a very strong form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A - Availability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every request gets a response from a non-failing node&lt;/li&gt;
&lt;li&gt;That response might be an error (the key point is: the system doesn’t stop responding)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;P - Partition Tolerance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The system keeps operating even if messages between servers are dropped/delayed (a network partition)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why You Can't Have All Three
&lt;/h2&gt;

&lt;p&gt;Imagine two servers that should stay in sync:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Server A ←─ network break ─→ Server B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Network breaks. A user writes to Server A.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1: Stay Consistent&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't let Server B respond until synced&lt;/li&gt;
&lt;li&gt;But Server B becomes unavailable!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 2: Stay Available&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Both servers respond with what they have&lt;/li&gt;
&lt;li&gt;But data is now inconsistent!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During a partition, you must choose what to prioritize.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-World Choices
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CP (Consistency + Partition Tolerance):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bank transactions&lt;/li&gt;
&lt;li&gt;Might be briefly unavailable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AP (Availability + Partition Tolerance):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social media feeds&lt;/li&gt;
&lt;li&gt;Might show slightly stale data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CA (rarely used):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only works when you assume no partitions (for example: a single-node system or a very reliable network)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;CAP Theorem says that when a network partition happens, a distributed system has to trade off between consistency and availability.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>distributed</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>⚗️ ACID Properties Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Mon, 27 Apr 2026 22:54:58 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/acid-properties-explained-like-youre-5-4aik</link>
      <guid>https://forem.com/esreekarreddy/acid-properties-explained-like-youre-5-4aik</guid>
      <description>&lt;p&gt;&lt;em&gt;Guarantees for data reliability&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 123 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/acid-properties" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bank Transfer Analogy
&lt;/h2&gt;

&lt;p&gt;Transferring money from Account A to B:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subtract the amount from A&lt;/li&gt;
&lt;li&gt;Add the amount to B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What if the power goes out between steps?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A lost $100&lt;/li&gt;
&lt;li&gt;B didn't get it&lt;/li&gt;
&lt;li&gt;Money vanished!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ACID properties are the goals that help prevent this kind of disaster.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What ACID Stands For
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A - Atomicity:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"All or nothing"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Either both steps happen, or neither&lt;/li&gt;
&lt;li&gt;No partial transfers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;C - Consistency:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Rules are enforced"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Balance can't go negative&lt;/li&gt;
&lt;li&gt;Constraints/invariants stay true (according to your schema and business rules)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I - Isolation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Transactions don't see each other's incomplete work"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your transfer doesn't mess up someone else's&lt;/li&gt;
&lt;li&gt;Like each transaction runs without being confused by half-finished changes (exact guarantees depend on the isolation level)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;D - Durability:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Once done, it stays done"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power outage after? Data is still saved&lt;/li&gt;
&lt;li&gt;Written to permanent storage&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;Without ACID:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Money disappears or duplicates&lt;/li&gt;
&lt;li&gt;Inventory goes negative&lt;/li&gt;
&lt;li&gt;Orders get lost&lt;/li&gt;
&lt;li&gt;Users see incorrect data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With ACID:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transactions are more reliable&lt;/li&gt;
&lt;li&gt;Data stays consistent&lt;/li&gt;
&lt;li&gt;You can trust your database&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Quick Example
&lt;/h2&gt;

&lt;p&gt;Transfer money from A to B:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start transaction
  Check: A has enough money ✓
  Subtract amount from A
  Add amount to B
Commit transaction (all done, saved!)

If anything fails → Rollback (nothing changes)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;ACID properties describe the guarantees a database tries to provide for transactions so changes are applied safely (or rolled back) even when things fail.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>transactions</category>
      <category>programming</category>
    </item>
    <item>
      <title>📋 Database Replication Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Sun, 26 Apr 2026 22:41:08 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/database-replication-explained-like-youre-5-14p2</link>
      <guid>https://forem.com/esreekarreddy/database-replication-explained-like-youre-5-14p2</guid>
      <description>&lt;p&gt;&lt;em&gt;Copying data to multiple servers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 122 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/database-replication" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Backup Copy Analogy
&lt;/h2&gt;

&lt;p&gt;Important documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One copy at home&lt;/li&gt;
&lt;li&gt;One copy at the bank&lt;/li&gt;
&lt;li&gt;One copy at your lawyer's&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your house burns down, you still have copies!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database Replication keeps copies of your database in multiple places!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Replicate?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Safety:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If one server fails, another replica may still have the data (and can take over, depending on your setup)&lt;/li&gt;
&lt;li&gt;Can reduce data-loss risk, but replication is not a full backup strategy by itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Speed:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users far away can read from a nearby replica&lt;/li&gt;
&lt;li&gt;Can reduce read latency for globally distributed users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Availability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One server down → Others handle requests&lt;/li&gt;
&lt;li&gt;Less downtime for users (depending on failover and client behavior)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Types of Replication
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Primary-Replica:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Primary (writes) ──→ Replica 1 (reads)
                └──→ Replica 2 (reads)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;One leader accepts writes&lt;/li&gt;
&lt;li&gt;Replicas get copies, handle reads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Multi-Primary:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple servers accept writes&lt;/li&gt;
&lt;li&gt;More complex, handles conflicts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Trade-offs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Consistency:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replicas might be slightly behind&lt;/li&gt;
&lt;li&gt;User writes, then reads from replica = might see old data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Complexity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing multiple servers&lt;/li&gt;
&lt;li&gt;Handling conflicts if two writes happen&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Uses
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global apps&lt;/strong&gt; → Replicas in each region&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-traffic sites&lt;/strong&gt; → Spread read load&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disaster recovery&lt;/strong&gt; → Backup in different location&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Database Replication copies your data to multiple servers for safety, speed, and availability when one server isn't enough.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>scaling</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🍕 Database Sharding Explained Like You're 5</title>
      <dc:creator>Sreekar Reddy</dc:creator>
      <pubDate>Sat, 25 Apr 2026 22:39:12 +0000</pubDate>
      <link>https://forem.com/esreekarreddy/database-sharding-explained-like-youre-5-24j</link>
      <guid>https://forem.com/esreekarreddy/database-sharding-explained-like-youre-5-24j</guid>
      <description>&lt;p&gt;&lt;em&gt;Splitting data across servers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 121 of 149&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://sreekarreddy.com/learn/eli5/database-sharding" rel="noopener noreferrer"&gt;Full deep-dive with code examples&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Library Card Catalog Analogy
&lt;/h2&gt;

&lt;p&gt;One huge card catalog is hard to use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long lines at one catalog&lt;/li&gt;
&lt;li&gt;If it breaks, no one can find books&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Split by letters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A-F catalog in room 1&lt;/li&gt;
&lt;li&gt;G-M catalog in room 2&lt;/li&gt;
&lt;li&gt;N-Z catalog in room 3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sharding splits your database into pieces across servers!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Shard?
&lt;/h2&gt;

&lt;p&gt;One server has limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt; → Runs out of disk space&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; → Too many queries to handle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory&lt;/strong&gt; → Can't fit all data in RAM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sharding spreads the load across multiple servers.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Split data by some key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users A-H → Server 1
Users I-P → Server 2
Users Q-Z → Server 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each piece is a "shard." Each shard handles its portion.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sharding Strategies
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;By key range:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users 1-1000 → Shard 1&lt;/li&gt;
&lt;li&gt;Users 1001-2000 → Shard 2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;By hash:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hash(user_id) % 3 → determines shard&lt;/li&gt;
&lt;li&gt;Often spreads data more evenly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;By geography:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;US users → US shard&lt;/li&gt;
&lt;li&gt;EU users → EU shard&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Trade-offs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Complexity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Queries across shards are hard&lt;/li&gt;
&lt;li&gt;Need to route requests correctly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Availability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sharding doesn't automatically make you highly available&lt;/li&gt;
&lt;li&gt;If a shard goes down, data on that shard is unavailable unless you also use replication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Joins:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can't easily join data across shards&lt;/li&gt;
&lt;li&gt;Might need to restructure queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Rebalancing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding new shard? Need to move data&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  In One Sentence
&lt;/h2&gt;

&lt;p&gt;Database Sharding splits your data across multiple servers so each handles a smaller piece, allowing your database to scale beyond one machine's limits.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Enjoying these? Follow for daily ELI5 explanations!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making complex tech concepts simple, one day at a time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>eli5</category>
      <category>database</category>
      <category>scaling</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
