<?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>DEV Community: Sourav Bandyopadhyay</title>
    <description>The latest articles on DEV Community by Sourav Bandyopadhyay (@souravbandyopadhyay).</description>
    <link>https://dev.to/souravbandyopadhyay</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%2F919295%2F0806389f-771b-4f15-b566-77d5e92ba633.jpg</url>
      <title>DEV Community: Sourav Bandyopadhyay</title>
      <link>https://dev.to/souravbandyopadhyay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/souravbandyopadhyay"/>
    <language>en</language>
    <item>
      <title>When Your API Ghosts You: A Deep Dive Into Idempotency in REST APIs</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Sun, 04 Jan 2026 10:49:54 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/when-your-api-ghosts-you-a-deep-dive-into-idempotency-in-rest-apis-153</link>
      <guid>https://dev.to/souravbandyopadhyay/when-your-api-ghosts-you-a-deep-dive-into-idempotency-in-rest-apis-153</guid>
      <description>&lt;p&gt;You know that sinking feeling when a user clicks "Pay" twice because the spinner froze—and your backend quietly double-charges them? That isn't "network unreliability." That's "we didn't design for idempotency."&lt;/p&gt;

&lt;p&gt;In distributed systems, retries are not an edge case; they're the default path. Clients will retry. Proxies will retry. Your own code will retry. &lt;strong&gt;The only question is whether your system can handle it without corrupting state.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Situation: The "Phantom Double Charge"
&lt;/h2&gt;

&lt;p&gt;You ship a payments API. A customer hits &lt;code&gt;/payments&lt;/code&gt; with a POST, the network hiccups, your client never sees the 201, so it retries.&lt;/p&gt;

&lt;p&gt;From your user's perspective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"I clicked once. Your app broke."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From your database's perspective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"I just created two payments, both valid, good luck explaining that."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The bug isn't in the retry. &lt;strong&gt;The bug is that the operation wasn't idempotent.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Task: Make Retries Boring
&lt;/h2&gt;

&lt;p&gt;The real job is not "process this payment." The real job is "process this payment in a way that stays correct even if the same request hits us multiple times."&lt;/p&gt;

&lt;p&gt;Idempotency means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple identical requests have the same effect as a single request.&lt;/li&gt;
&lt;li&gt;After the first success, every duplicate is effectively a no-op in terms of system state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Boring? Yes. That's the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Action: Treat Requests Like Events, Not Wishes
&lt;/h2&gt;

&lt;p&gt;Here's the simple move most teams skip: give each potentially destructive request a stable identity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Typical Pattern:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client generates&lt;/strong&gt; an &lt;code&gt;Idempotency-Key&lt;/code&gt; (UUID, payment intent ID, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sends it with the POST:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   POST /payments HTTP/1.1
   Idempotency-Key: 123e4567-e89b-12d3-a456-426614174000
   Content-Type: application/json

   {"amount": 5000, "currency": "USD"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Server logic:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Check if this key has been seen before&lt;/li&gt;
&lt;li&gt;If &lt;strong&gt;not&lt;/strong&gt;: process the request, store result keyed by &lt;code&gt;Idempotency-Key&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If &lt;strong&gt;yes&lt;/strong&gt;: return the previously stored response instead of processing again&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Why This Works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Network retries become safe—the second call is just a cache lookup&lt;/li&gt;
&lt;li&gt;Client logic simplifies to: "retry until success or clear failure"&lt;/li&gt;
&lt;li&gt;No more worrying about double side effects&lt;/li&gt;
&lt;li&gt;Even if your database is eventually consistent, idempotency keys make this deterministic&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick Implementation Pattern:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Pseudocode for the idea
&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_payment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request_body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Check cache first
&lt;/span&gt;    &lt;span class="n"&gt;cached_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;idempotency_cache&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cached_response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cached_response&lt;/span&gt;  &lt;span class="c1"&gt;# Already processed
&lt;/span&gt;
    &lt;span class="c1"&gt;# Process only if new
&lt;/span&gt;    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_payment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request_body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Store for future retries
&lt;/span&gt;    &lt;span class="n"&gt;idempotency_cache&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;A note on HTTP semantics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GET, PUT, DELETE are &lt;em&gt;supposed&lt;/em&gt; to be idempotent by design&lt;/li&gt;
&lt;li&gt;POST is not, which is why idempotency keys usually show up there&lt;/li&gt;
&lt;li&gt;Some teams use idempotency keys for all mutable operations—even better&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Result: Fewer Fires, More Sleep
&lt;/h2&gt;

&lt;p&gt;Once you design around idempotency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment "double charges" turn into "same payment, same receipt, every time."&lt;/li&gt;
&lt;li&gt;Support tickets about "I only clicked once" quietly vanish&lt;/li&gt;
&lt;li&gt;Retries become a reliability &lt;em&gt;feature&lt;/em&gt;, not a reliability bug&lt;/li&gt;
&lt;li&gt;Your team debugs 3 AM incidents with more confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Idempotency won't make your API exciting. &lt;strong&gt;It will make it trustworthy.&lt;/strong&gt; And trust is what lets you ship faster without being afraid of your own error logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Deeper Breakdown
&lt;/h2&gt;

&lt;p&gt;If this resonates—if you're into the kind of "real-world backend hygiene"—idempotency, retries, failure modes, the unglamorous stuff that actually keeps systems up—then you might want to check out &lt;strong&gt;CoreCraft&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's a newsletter focused on exactly this: concrete patterns, real trade-offs, code you can use tomorrow. No fluff, no vague "best practices," just battle-tested abstractions for working engineers.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://corecraft.substack.com" rel="noopener noreferrer"&gt;Read more at CoreCraft&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Have a production idempotency horror story?&lt;/strong&gt; Drop it in the comments. Let's normalize talking about this stuff.&lt;/p&gt;

</description>
      <category>api</category>
      <category>restapi</category>
      <category>backend</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Stop Confusing Replication and Sharding 🔥</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Mon, 08 Dec 2025 12:56:59 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/stop-confusing-replication-and-sharding-1lo2</link>
      <guid>https://dev.to/souravbandyopadhyay/stop-confusing-replication-and-sharding-1lo2</guid>
      <description>&lt;p&gt;Ever been in a meeting where someone says, “Let’s shard the database!” — and half the team nods like it’s obvious?&lt;/p&gt;

&lt;p&gt;Yeah. That’s the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 The Real Problem
&lt;/h2&gt;

&lt;p&gt;Replication and sharding are &lt;em&gt;not the same&lt;/em&gt;.&lt;br&gt;&lt;br&gt;
Yet, they often get tangled together in early scaling conversations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One scales &lt;strong&gt;reads&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;The other scales &lt;strong&gt;writes&lt;/strong&gt;.
Mix them up, and you’ll over-engineer your app or burn nights debugging latency that didn’t need to exist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers keep asking the wrong question:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Should we shard or replicate?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The right answer?&lt;br&gt;&lt;br&gt;
You probably need both — but at &lt;strong&gt;different stages&lt;/strong&gt; of growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ The Action (When to Use Each)
&lt;/h2&gt;

&lt;p&gt;Here’s the quick mental model you should carry into your next sprint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Replication&lt;/strong&gt;: Copy the same data across multiple nodes. Great for &lt;em&gt;read-heavy&lt;/em&gt; systems.&lt;br&gt;&lt;br&gt;
→ Perfect when your users start outnumbering your database connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sharding&lt;/strong&gt;: Split your dataset across multiple servers. Great for &lt;em&gt;write-heavy&lt;/em&gt; loads.&lt;br&gt;&lt;br&gt;
→ Use when your single-node writes start choking throughput.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are tools in your scaling toolkit — but each solves a distinct performance constraint.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 The Solution (Stay Simple, Scale Smart)
&lt;/h2&gt;

&lt;p&gt;Most apps don’t need sharding on day one.&lt;br&gt;&lt;br&gt;
If your Postgres instance still fits under 100GB and isn’t begging for mercy, sharding is premature optimization.&lt;/p&gt;

&lt;p&gt;Start simple.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Vertically scale first.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Add replication when reads explode.&lt;br&gt;&lt;br&gt;
Shard &lt;em&gt;only&lt;/em&gt; when writes become the bottleneck.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build for today’s problem.&lt;br&gt;&lt;br&gt;
Architect for tomorrow’s.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;That’s the short of it.&lt;br&gt;&lt;br&gt;
If you liked this breakdown, you’ll love the full version on &lt;strong&gt;&lt;a href="https://corecraft.substack.com/p/replication-vs-sharding-stop-confusing" rel="noopener noreferrer"&gt;CoreCraft&lt;/a&gt;&lt;/strong&gt; — where we unpack complex backend topics with caffeine and curiosity.&lt;/p&gt;

&lt;p&gt;Grab the full post 👉 &lt;a href="https://corecraft.substack.com/p/replication-vs-sharding-stop-confusing" rel="noopener noreferrer"&gt;Replication vs. Sharding: Stop Confusing Them&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;CoreCraft&lt;/strong&gt; is a newsletter for tech thinkers who write — part debugging notes, part data architecture therapy, always tested before shipping.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cloud</category>
      <category>aws</category>
      <category>azure</category>
    </item>
    <item>
      <title>When the Cloud Went Dark ☁️💥</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Sun, 26 Oct 2025 05:08:56 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/when-the-cloud-went-dark-4gcb</link>
      <guid>https://dev.to/souravbandyopadhyay/when-the-cloud-went-dark-4gcb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhuv58gzb4ekxjzcsnxxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhuv58gzb4ekxjzcsnxxv.png" alt=" " width="800" height="575"&gt;&lt;/a&gt;&lt;strong&gt;15 hours of downtime.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;17M+ outage reports across 60+ countries.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;One DNS failure that brought the internet to its knees.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On October 19th, 2025, AWS &lt;strong&gt;US-EAST-1&lt;/strong&gt; didn't just have a bad day — it had a &lt;em&gt;catastrophic&lt;/em&gt; collapse.&lt;/p&gt;

&lt;p&gt;Snapchat froze. Roblox went dark. UK taxpayers couldn't file returns. Even &lt;em&gt;smart mattresses&lt;/em&gt; stopped working (yes, really). Developer tools like Postman became unusable. A Premier League match got interrupted.&lt;/p&gt;

&lt;p&gt;If you were building on AWS that day, you had a front-row seat to what happens when &lt;strong&gt;70% of the world's internet traffic&lt;/strong&gt; routes through a single point of failure.&lt;/p&gt;

&lt;p&gt;This wasn't just an outage.&lt;br&gt;&lt;br&gt;
This was a &lt;strong&gt;brutal stress test of modern cloud architecture&lt;/strong&gt; — and most of us failed it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 What This Teardown Covers
&lt;/h2&gt;

&lt;p&gt;I spent weeks dissecting this incident, and here's what you'll discover:&lt;/p&gt;

&lt;h3&gt;
  
  
  The Technical Reality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Why &lt;strong&gt;multi-AZ deployments&lt;/strong&gt; offered zero protection when the entire region went down&lt;/li&gt;
&lt;li&gt;How a &lt;strong&gt;DNS resolution failure&lt;/strong&gt; cascaded through DynamoDB → EC2 → IAM → everything else&lt;/li&gt;
&lt;li&gt;The hidden architecture trap: &lt;strong&gt;your dependencies have dependencies&lt;/strong&gt; (and those can fail too)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Business Impact
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Real numbers: How a mid-sized e-commerce site lost &lt;strong&gt;$62,500 in 15 hours&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The companies nobody expected to go offline: Eight Sleep, Postman, UK HMRC tax portals&lt;/li&gt;
&lt;li&gt;Why this outage &lt;strong&gt;obliterated annual SLA budgets by 17x&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Resilience Playbook
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3 multi-region patterns&lt;/strong&gt; (Active-Active, Active-Passive, Pilot Light) with cost-benefit breakdowns&lt;/li&gt;
&lt;li&gt;Why teams with &lt;strong&gt;automated failover&lt;/strong&gt; experienced a 3-minute incident while manual teams suffered 3-6 &lt;em&gt;hours&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The hard truth about &lt;strong&gt;multi-cloud&lt;/strong&gt;: when it's overkill vs. when it's essential&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Bigger Picture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This isn't a one-off: Meta (2021), CrowdStrike (2024), Cloudflare-AWS (2025) — &lt;strong&gt;concentration risk is the pattern&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How EU DORA and UK Critical Third Parties regulations are changing the game&lt;/li&gt;
&lt;li&gt;Why "AWS-only expertise" is no longer enough in 2025&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Why This Matters to You
&lt;/h2&gt;

&lt;p&gt;If you're building anything on the cloud, you're making a bet: &lt;em&gt;that someone else's infrastructure will hold.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But here's what this outage taught us:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your architecture is only as resilient as your weakest hidden dependency.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can follow every AWS best practice. Deploy across multiple AZs. Implement health checks. Follow the Well-Architected Framework.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It won't matter if you're still in a single region when DNS fails.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This teardown isn't optional reading.&lt;br&gt;&lt;br&gt;
It's the &lt;strong&gt;mirror you need to hold up to your own system design&lt;/strong&gt; before the next outage finds you unprepared.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Three Takeaways You Can't Ignore
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Multi-AZ ≠ Multi-Region
&lt;/h3&gt;

&lt;p&gt;AZs are rooms in a house. When the &lt;em&gt;entire house&lt;/em&gt; floods, every room goes underwater.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;You need multiple houses.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. DNS Is the Silent Killer
&lt;/h3&gt;

&lt;p&gt;It's not just "another service." When internal DNS fails, your entire cloud provider's ecosystem can become unreachable — even to their own engineers.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Every modern app has DNS as a hidden single point of failure.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Resilience Is a Design Choice, Not a Checkbox
&lt;/h3&gt;

&lt;p&gt;The teams that survived this outage didn't get lucky. They designed for it.&lt;br&gt;&lt;br&gt;
They automated failover. They tested regional failures in production. They mapped &lt;em&gt;every&lt;/em&gt; dependency.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;They treated resilience as a first-class architectural concern.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 What Engineers Are Saying
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"This is the most comprehensive breakdown of the October outage I've read. The section on hidden dependencies alone is worth the read."&lt;br&gt;&lt;br&gt;
— Senior SRE at a Fortune 500 company&lt;/p&gt;

&lt;p&gt;"We ran our first full regional failover test after reading this. Found 3 critical gaps we didn't know existed."&lt;br&gt;&lt;br&gt;
— Platform Engineering Lead&lt;/p&gt;

&lt;p&gt;"Forwarded this to our entire engineering org. Should be required reading for anyone designing cloud systems."&lt;br&gt;&lt;br&gt;
— CTO, Series B startup&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🚀 Ready to Build More Resilient Systems?
&lt;/h2&gt;

&lt;p&gt;This is just the beginning. At &lt;strong&gt;CoreCraft&lt;/strong&gt;, we dig deep into the engineering decisions that separate bulletproof systems from fragile ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want more insights like this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://peerlist.io/scroll/post/ACTHMQ6L78OG8REQMIDDGBQAMDBBPR" rel="noopener noreferrer"&gt;&lt;strong&gt;Read the full AWS US-EAST-1 teardown&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://corecraft.substack.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to the CoreCraft newsletter&lt;/strong&gt;&lt;/a&gt; for weekly deep-dives on cloud architecture, incident analysis, and engineering resilience&lt;/p&gt;

&lt;p&gt;We cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-world outage autopsies with actionable lessons&lt;/li&gt;
&lt;li&gt;Resilience patterns that actually work in production&lt;/li&gt;
&lt;li&gt;The infrastructure decisions that make or break modern systems&lt;/li&gt;
&lt;li&gt;Multi-cloud strategies, cost optimization, and scaling insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;No fluff. No vendor pitches. Just engineering truth.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Let's Talk
&lt;/h2&gt;

&lt;p&gt;Have you experienced a major cloud outage firsthand? How did your team respond?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop a comment below — I'd love to hear:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your biggest cloud resilience challenge right now&lt;/li&gt;
&lt;li&gt;Whether your team has run a full regional failover test (and what you learned)&lt;/li&gt;
&lt;li&gt;Any hidden dependencies you discovered the hard way&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if this post helped you think differently about resilience, &lt;strong&gt;share it with your team&lt;/strong&gt;. Every engineer should read this before the next outage hits.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Quick Links
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://corecraft.substack.com/p/when-the-cloud-went-dark-the-aws?r=185j2n&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;triedRedirect=true" rel="noopener noreferrer"&gt;&lt;strong&gt;Full Teardown&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
📬 &lt;a href="https://corecraft.substack.com" rel="noopener noreferrer"&gt;&lt;strong&gt;CoreCraft Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💼 &lt;a href="https://corecraft.substack.com/about" rel="noopener noreferrer"&gt;&lt;strong&gt;Connect with us&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If your team hasn't tested a full regional failover this quarter, it's already overdue. The next outage won't wait for you to be ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.P.S.&lt;/strong&gt; Downtime isn't just a technical problem — it's a trust problem. Every minute your service is offline, your competitors are online. Build resilience not because the cloud is unreliable, but because your customers' trust is irreplaceable.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building resilient systems in 2025?&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Join 10,000+ engineers who trust CoreCraft for the insights that matter.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://corecraft.substack.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe now&lt;/strong&gt;&lt;/a&gt; and never miss a breakdown.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>programming</category>
      <category>javascript</category>
      <category>cloud</category>
    </item>
    <item>
      <title>System Design Articles You Should Never Miss</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Mon, 13 Oct 2025 05:33:33 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/system-design-articles-you-should-never-miss-200a</link>
      <guid>https://dev.to/souravbandyopadhyay/system-design-articles-you-should-never-miss-200a</guid>
      <description>&lt;p&gt;Hey there! 👋 I'm Sourav, and I've been deep in the trenches of system design, backend engineering, and building things that actually scale. This is my curated collection of practical guides that'll help you move from "theory" to "shipped."&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 My Core Articles on System Design
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Scaling from Zero: Building Your First Production System&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;The foundational piece every engineer needs&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Learn how to think about scalability from day one—before you even need it. We'll cover database design decisions, caching strategies, and why that microservices architecture isn't the answer... yet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://corecraft.substack.com/" rel="noopener noreferrer"&gt;Read on Substack →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. &lt;strong&gt;Database Design That Won't Bite You Later&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Because schema changes at 3 AM are nobody's idea of fun&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We'll walk through real examples of what breaks when you scale, why indexes matter more than you think, and how to avoid the "we need to rewrite our database" moment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://corecraft.substack.com/" rel="noopener noreferrer"&gt;Read on Substack →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. &lt;strong&gt;Caching Patterns That Actually Work&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Redis, memcached, and when to say no to both&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cache invalidation is one of the hardest problems in computer science. Here's how to get it right without losing your mind. Plus, real code examples you can use tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://corecraft.substack.com/" rel="noopener noreferrer"&gt;Read on Substack →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  4. &lt;strong&gt;APIs That Don't Make People Hate You&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;RESTful design, versioning, and rate limiting for humans&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A deep dive into designing APIs that are actually a pleasure to work with. We'll cover versioning strategies, error handling, and why your webhook implementation is probably broken.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://corecraft.substack.com/" rel="noopener noreferrer"&gt;Read on Substack →&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. &lt;strong&gt;Message Queues: When, Why, and How Not to Overcomplicate Them&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Async processing that makes sense&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;RabbitMQ, Kafka, AWS SQS—they all have their place. Learn when to use them, when you're overengineering, and how to debug async systems when things go sideways.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://corecraft.substack.com/" rel="noopener noreferrer"&gt;Read on Substack →&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 The Quick Wins (Short Reads)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Handling Database Migrations in Production&lt;/strong&gt; — Don't lock your tables. Here's how.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring &amp;gt; Hoping&lt;/strong&gt; — Three metrics that matter more than you think.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Anatomy of a Good Error Message&lt;/strong&gt; — Because "something went wrong" won't cut it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Load Balancing Without the Headache&lt;/strong&gt; — Round-robin, least connections, and sticky sessions explained.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why You Should Follow CoreCraft
&lt;/h2&gt;

&lt;p&gt;I write about the stuff that actually matters when you're building systems that users depend on. No fluff, no "10 tips" listicles—just real problems, real solutions, and code you can actually use.&lt;/p&gt;

&lt;p&gt;Every week, I share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Practical guides&lt;/strong&gt; that go deep without being overwhelming&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-world lessons&lt;/strong&gt; from shipping products at scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code examples&lt;/strong&gt; you can adapt to your stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "why" behind the "how"&lt;/strong&gt; so you understand the tradeoffs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're architecting your first major system or debugging production issues, there's something here for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Next Steps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Want more like this?&lt;/strong&gt; Subscribe to CoreCraft on Substack for weekly deep dives into system design, backend engineering, and building products that work.&lt;/p&gt;

&lt;p&gt;I'm also active on Dev.to and happy to engage in the comments—ask questions, share your experiences, and let me know what topics you want to see explored next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your next system design breakthrough is waiting.&lt;/strong&gt; Let's build it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Follow &lt;a href="https://corecraft.substack.com/" rel="noopener noreferrer"&gt;@CoreCraft&lt;/a&gt; for the latest in system design and engineering blogs&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>systemdesign</category>
      <category>interview</category>
    </item>
    <item>
      <title>Codex is Here to Slaughter Bad Code—And I’m Here for It 💥</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Sun, 25 May 2025 19:10:37 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/codex-is-here-to-slaughter-bad-code-and-im-here-for-it-9k8</link>
      <guid>https://dev.to/souravbandyopadhyay/codex-is-here-to-slaughter-bad-code-and-im-here-for-it-9k8</guid>
      <description>&lt;p&gt;Let’s be real: most coding tools are overhyped trash that promise the moon and deliver a buggy mess. Then comes &lt;strong&gt;Codex&lt;/strong&gt;, the ChatGPT-powered coding assistant that’s not just another wannabe—it’s a straight-up &lt;em&gt;code assassin&lt;/em&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 Not Your Average Autocomplete Toy
&lt;/h3&gt;

&lt;p&gt;Codex &lt;strong&gt;doesn’t suggest code&lt;/strong&gt;—it &lt;strong&gt;writes it&lt;/strong&gt;, clean and functional, faster than you can rage-quit a &lt;code&gt;null pointer exception&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Got a bug haunting your repo for days? Codex &lt;strong&gt;sniffs it out&lt;/strong&gt; and &lt;strong&gt;squashes it&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Need a pull request that doesn’t look like a weekend hackathon project? Done—&lt;strong&gt;it’s pristine&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Running on the cloud, so your wheezing laptop? Not its problem.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hacking together your next MVP 💡
&lt;/li&gt;
&lt;li&gt;Wrestling legacy spaghetti 🤢
&lt;/li&gt;
&lt;li&gt;Or trying to ship &lt;em&gt;anything&lt;/em&gt; before the next stand-up 🚨
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Codex is like &lt;strong&gt;strapping a jet engine to your workflow&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  📈 Why It’s a Game-Changer (And Not Just Another AI Toy)
&lt;/h3&gt;

&lt;p&gt;I broke it &lt;em&gt;all&lt;/em&gt; down in my latest Substack post:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ How Codex actually works under the hood
&lt;/li&gt;
&lt;li&gt;✅ Why it’s leaving other tools choking on dust
&lt;/li&gt;
&lt;li&gt;✅ Real-world dev use cases that &lt;em&gt;seriously&lt;/em&gt; slap
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;Read it here if you write code and breathe air&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://www.link-trim.in/z5o9v1h2" rel="noopener noreferrer"&gt;https://www.link-trim.in/z5o9v1h2&lt;/a&gt;&lt;/strong&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  🔥 Hot Take Time
&lt;/h3&gt;

&lt;p&gt;Codex isn’t the future—it’s the &lt;em&gt;present&lt;/em&gt;, and it’s &lt;strong&gt;brutal&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Are you sleeping on it, or already riding the wave? 🌊  &lt;/p&gt;

&lt;p&gt;🗯️ Drop your &lt;strong&gt;hottest takes&lt;/strong&gt; in the comments:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What’s working
&lt;/li&gt;
&lt;li&gt;What sucks
&lt;/li&gt;
&lt;li&gt;Wild Codex moments you &lt;em&gt;didn’t believe actually happened&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s geek out. 😈  &lt;/p&gt;




</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>openai</category>
    </item>
    <item>
      <title>Sharding vs. Partitioning: Stop Guessing, Start Building Scalable Systems</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Fri, 09 May 2025 17:03:59 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/sharding-vs-partitioning-1cfh</link>
      <guid>https://dev.to/souravbandyopadhyay/sharding-vs-partitioning-1cfh</guid>
      <description>&lt;p&gt;Spent 6 months debugging database bottlenecks? Wasted years on overhyped “silver bullet” scaling solutions?&lt;/p&gt;

&lt;p&gt;80% of scaling attempts fail to deliver promised performance. 50% of teams misapply sharding or partitioning, tanking their systems.&lt;/p&gt;

&lt;p&gt;Unbalanced shards, query latency spikes, data migration nightmares.&lt;/p&gt;

&lt;p&gt;I’ve been a backend engineer for considerable amount of time, scaling systems at startups and Big Tech. I’ve seen databases choke, teams panic, and “experts” push buzzword-driven nonsense. No magic frameworks or AI-powered DBs. Just hard-earned truth from the trenches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s what works&lt;/strong&gt; (and what doesn’t):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sharding is for Horizontal Scale, Not Quick Fixes&lt;/strong&gt;:&lt;br&gt;
Pick sharding when your dataset is massive and you need to distribute it across nodes. Use consistent hashing to avoid hotspotting, and plan for rebalancing upfront. &lt;em&gt;&lt;strong&gt;Shard smart, or you’re just splitting headaches.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Partitioning is for Query Efficiency, Not Infinite Growth&lt;/strong&gt;: Use partitioning to break tables into manageable chunks for faster queries, but don’t expect it to scale indefinitely without sharding. Index wisely and monitor query plans._ &lt;strong&gt;Partition for speed, shard for scale.&lt;/strong&gt;_&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test Your Strategy Under Real Load&lt;/strong&gt;: Simulate traffic spikes and node failures before going live. Tools like pgbench or Sysbench can expose weaknesses early. &lt;em&gt;&lt;strong&gt;Theory is cute; load tests are brutal.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The full Sharding vs. Partitioning Guide (with full explanation on &lt;a href="//link-trim.in/A_bh4guF"&gt;Substack&lt;/a&gt;) is free&lt;/p&gt;

&lt;p&gt;No vendor-sponsored fluff or cookie-cutter tutorials. Just practical, no-BS advice for developers who want systems that scale without imploding.&lt;/p&gt;

&lt;p&gt;P.S. If you want more like this, I write [no-nonsense, technical deep dives] on &lt;a href="http://link-trim.in/_GLxXwj2" rel="noopener noreferrer"&gt;Substack&lt;/a&gt;. No fluff, just actionable insights.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>database</category>
      <category>aws</category>
    </item>
    <item>
      <title>Model Context Protocol (MCP)</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Sat, 26 Apr 2025 17:49:24 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/model-context-protocol-mcp-53dc</link>
      <guid>https://dev.to/souravbandyopadhyay/model-context-protocol-mcp-53dc</guid>
      <description>&lt;h3&gt;
  
  
  How Model Context Protocol Is Rewriting the Rules of AI Integration
&lt;/h3&gt;

&lt;p&gt;Imagine an AI that books flights, syncs calendars, and messages your team—all without a single line of code. That’s &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, the open standard turning AI into a seamless automation powerhouse.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What Is MCP?
&lt;/h2&gt;

&lt;p&gt;Launched by Anthropic in late 2024, &lt;strong&gt;MCP is the USB-C of AI&lt;/strong&gt;—a universal protocol letting models like Claude or ChatGPT connect to any app, database, or tool. No more custom API spaghetti.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For devs:&lt;/strong&gt; Skip API boilerplate—MCP servers handle Slack/GitHub/Postgres in minutes
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For businesses:&lt;/strong&gt; AI auto-generates reports from Shopify+Sheets+Slack
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For creatives:&lt;/strong&gt; Generate music in Ableton or tweak Figma designs via AI
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why MCP &amp;gt; Traditional Integrations
&lt;/h2&gt;

&lt;p&gt;Without MCP, connecting AI means brittle one-off scripts. Gartner reports &lt;strong&gt;70% of AI projects fail due to integration issues&lt;/strong&gt;—MCP fixes this with:  &lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Standardized connections&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;10x faster development&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;No-code automation&lt;/strong&gt;  &lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works (In 10 Seconds)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AI (MCP Host) sends request&lt;/li&gt;
&lt;li&gt;MCP Server (mini-adapter) talks to tools&lt;/li&gt;
&lt;li&gt;Your app gets results—zero manual coding&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Future: MCP as AI’s HTTP
&lt;/h3&gt;

&lt;p&gt;With OpenAI/Microsoft adopting it, expect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart cities optimizing traffic via MCP&lt;/li&gt;
&lt;li&gt;Personal agents managing health+groceries+schedules&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Want the full technical deep dive?&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;→ &lt;a href="//link-trim.in/7bfXIhTG"&gt;Read on Substack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>ai</category>
    </item>
    <item>
      <title>HTTP vs HTTPS: Why Website Security Matters</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Mon, 21 Apr 2025 08:28:13 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/http-vs-https-why-website-security-matters-nke</link>
      <guid>https://dev.to/souravbandyopadhyay/http-vs-https-why-website-security-matters-nke</guid>
      <description>&lt;p&gt;&lt;strong&gt;🚨 85% of Users Abandon "Not Secure" Websites—Here’s Why HTTPS Is Non-Negotiable&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;You’ve seen the warnings: &lt;strong&gt;"Not Secure"&lt;/strong&gt; in red, a broken padlock, or worse—your browser blocking access entirely. If your site still runs on &lt;strong&gt;HTTP&lt;/strong&gt;, you’re not just losing trust; you’re leaking data like a sieve.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;HTTP vs. HTTPS: A Matter of Security &amp;amp; Survival&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;🔓 HTTP: The Digital Postcard&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No encryption&lt;/strong&gt; → Every login, credit card, and private message is sent in &lt;strong&gt;plain text&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hacker’s playground&lt;/strong&gt; → Anyone on the same Wi-Fi (coffee shop, airport) can intercept your data.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Not Secure" warnings&lt;/strong&gt; → Chrome, Firefox, and Safari actively scare users away.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;🔒 HTTPS: The Bank-Grade Vault&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;End-to-end encryption&lt;/strong&gt; → Scrambles data so only the intended recipient can read it.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSL/TLS certificates&lt;/strong&gt; → Prove your site is legit (no phishing clones).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google loves it&lt;/strong&gt; → Higher rankings, better SEO, and no scary warnings.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Why the Switch Isn’t Optional Anymore&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;🚨 Browser Blocking&lt;/strong&gt; – Chrome/Firefox now &lt;strong&gt;block&lt;/strong&gt; HTTP pages with forms.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📉 SEO Penalty&lt;/strong&gt; – Google ranks HTTPS sites &lt;strong&gt;higher&lt;/strong&gt;—HTTP is outdated.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💸 Lost Conversions&lt;/strong&gt; – 92% of users &lt;strong&gt;avoid&lt;/strong&gt; "Not Secure" sites.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ Faster Performance&lt;/strong&gt; – HTTPS enables &lt;strong&gt;HTTP/2 &amp;amp; HTTP/3&lt;/strong&gt; (faster loading).
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How to Fix It (Before It’s Too Late)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free SSL Certificates&lt;/strong&gt; → Let’s Encrypt, Cloudflare.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forced HTTPS Redirect&lt;/strong&gt; → Ensure no one accesses the unsecured version.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test Your Site&lt;/strong&gt; → Use &lt;a href="https://www.ssllabs.com/ssltest/" rel="noopener noreferrer"&gt;SSL Labs&lt;/a&gt; to check for vulnerabilities.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🚀 The Web Is Moving to HTTPS—Don’t Get Left Behind&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If your site still runs on HTTP, you’re &lt;strong&gt;losing traffic, trust, and money&lt;/strong&gt;. The fix? &lt;strong&gt;One hour of work for a lifetime of security.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Want the full deep dive?&lt;/strong&gt; &lt;a href="//link-trim.in/pWeYLZvU"&gt;Read the detailed guide on Substack&lt;/a&gt; to lock down your site today.  &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Single Point of Failure (SPOF)</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Sat, 12 Apr 2025 05:22:03 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/single-point-of-failure-spof-11h6</link>
      <guid>https://dev.to/souravbandyopadhyay/single-point-of-failure-spof-11h6</guid>
      <description>&lt;p&gt;In system design, redundancy is resilience, and SPOF—Single Point of Failure—is its arch-nemesis.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;SPOF&lt;/strong&gt; is any individual component of a system that, if it fails, causes the entire system to go down. It’s the load balancer with no failover, the monolithic database with no replica, the EC2 instance that runs everything—alone.&lt;/p&gt;

&lt;p&gt;Even in distributed systems, where we aim for high availability, SPOFs still lurk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A single centralized cache layer (e.g., Redis) with no HA setup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DNS misconfiguration—yes, your whole stack can fall with that&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A CI/CD pipeline bound to one region or one engineer's access&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The irony? SPOFs are often born out of early optimization or technical debt disguised as speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚨 Here's the thing...
&lt;/h2&gt;

&lt;p&gt;I go deeper into real SPOF stories, failure modes, and how to design systems that don't panic under pressure over on my Substack.&lt;/p&gt;

&lt;p&gt;If you're into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Breaking down why systems fail&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learning practical patterns to avoid SPOFs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applying resilience engineering in your architecture&lt;br&gt;
👉 Then come hang out and &lt;a href="https://www.link-trim.in/DbprcbGg" rel="noopener noreferrer"&gt;subscribe here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I promise it’s not just theory—it’s battle-tested lessons from the trenches.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>architecture</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>JavaScript's Promise.race() for Efficient Asynchronous Operations</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Mon, 18 Sep 2023 06:02:25 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/javascripts-promiserace-for-efficient-asynchronous-operations-efc</link>
      <guid>https://dev.to/souravbandyopadhyay/javascripts-promiserace-for-efficient-asynchronous-operations-efc</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Asynchronous operations are a common occurrence in modern web development. Whether you're dealing with API calls, timeouts, or load balancing, it's often crucial to respond quickly to the first completed operation. JavaScript's &lt;code&gt;Promise.race()&lt;/code&gt; method provides an elegant solution to this challenge. In this article, we'll explore what &lt;code&gt;Promise.race()&lt;/code&gt; is, its syntax, and practical use cases with examples to help you grasp its power.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding &lt;code&gt;Promise.race()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Promise.race()&lt;/code&gt; is a built-in JavaScript method designed to work with Promises. It takes an iterable, typically an array, containing multiple Promise objects and returns a new Promise. This new Promise resolves or rejects as soon as the first Promise within the iterable resolves or rejects. The value or reason for rejection of the first settled Promise becomes the settled value of the new Promise returned by &lt;code&gt;Promise.race()&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Promise.race(iterable);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Practical Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implementing Timeouts:
One common use case for &lt;code&gt;Promise.race()&lt;/code&gt; is implementing timeouts for asynchronous operations. Consider a scenario where you need to make an API call, but you want to ensure it responds within a certain time frame. You can achieve this using &lt;code&gt;Promise.race()&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const fetchWithTimeout = (url, timeout) =&amp;gt; {
  const fetchPromise = fetch(url);
  const timeoutPromise = new Promise((_, reject) =&amp;gt; {
    setTimeout(() =&amp;gt; reject(new Error('Timeout')), timeout);
  });

  return Promise.race([fetchPromise, timeoutPromise]);
};

fetchWithTimeout('https://example.com/api/data', 5000)
  .then(response =&amp;gt; console.log(response))
  .catch(error =&amp;gt; console.error(error)); // Handles timeout or fetch errors.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the fetchWithTimeout function races the fetch operation with a timeout Promise. It resolves with the API response or rejects with a timeout error, allowing you to handle both scenarios.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handling Multiple API Requests:
When dealing with multiple API requests and you only care about the response from the fastest one, &lt;code&gt;Promise.race()&lt;/code&gt; comes in handy:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const api1 = fetch('https://api1.example.com/data');
const api2 = fetch('https://api2.example.com/data');

Promise.race([api1, api2])
  .then(response =&amp;gt; console.log(response)) // Resolves with the response of the first API to respond.
  .catch(error =&amp;gt; console.error(error)); // Handles errors from both APIs.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, the first resolved or rejected Promise among api1 and api2 will determine the fate of the race, allowing you to efficiently handle API responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;JavaScript's &lt;code&gt;Promise.race()&lt;/code&gt; is a powerful tool for managing asynchronous operations. It allows you to respond promptly to the first completed Promise, making it essential for scenarios where time is of the essence.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>What is shadow DOM?</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Sun, 26 Mar 2023 19:23:47 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/what-is-shadow-dom-1lm3</link>
      <guid>https://dev.to/souravbandyopadhyay/what-is-shadow-dom-1lm3</guid>
      <description>&lt;p&gt;The Shadow DOM (Document Object Model) is a web standard that allows developers to create encapsulated and isolated DOM trees within an HTML document. Shadow DOM allows you to create components with their own DOM tree, styles, and behavior, which are completely separate from the rest of the document. It is a way to create components that are more robust, reusable, and maintainable.&lt;/p&gt;

&lt;p&gt;The Shadow DOM is composed of two main parts: &lt;strong&gt;the Shadow DOM tree **and **the Shadow host&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The Shadow host is the element that contains the Shadow DOM tree, and the Shadow DOM tree is the DOM tree that is encapsulated within the Shadow host. The Shadow DOM tree can have its own styles, JavaScript, and other properties that are separate from the rest of the document.&lt;/p&gt;

&lt;p&gt;One of the main benefits of using the Shadow DOM is that it allows you to create custom HTML elements with their own encapsulated styles and functionality. This means that you can create reusable components that are more robust and easier to maintain, without worrying about conflicting styles or behavior with other elements on the page.&lt;/p&gt;

&lt;p&gt;Another benefit of using the Shadow DOM is that it allows you to create custom CSS properties and apply them to your Shadow DOM components. This means that you can create custom CSS properties that are specific to your components, which can help simplify your code and improve performance.&lt;/p&gt;

&lt;p&gt;In summary, Shadow DOM is a web standard that allows developers to create encapsulated and isolated DOM trees within an HTML document. It provides a way to create reusable components with their own styles, behavior, and functionality, which are completely separate from the rest of the document.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Instance and Non-instance properties</title>
      <dc:creator>Sourav Bandyopadhyay</dc:creator>
      <pubDate>Wed, 22 Mar 2023 09:57:30 +0000</pubDate>
      <link>https://dev.to/souravbandyopadhyay/instance-and-non-instance-properties-3l64</link>
      <guid>https://dev.to/souravbandyopadhyay/instance-and-non-instance-properties-3l64</guid>
      <description>&lt;p&gt;In JavaScript, instance properties are properties that belong to an instance of a class or an object, while non-instance properties are properties that belong to the class or the object itself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instance properties&lt;/strong&gt; are defined inside the class constructor using the "this" keyword, and they can be accessed and modified using the dot notation on an instance of the class:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Person {
  constructor(name, age) {
    this.name = name; // instance property
    this.age = age;   // instance property
  }
}

const john = new Person("John", 30);
console.log(john.name); // "John"
john.age = 31;
console.log(john.age); // 31
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Non-instance properties&lt;/strong&gt;, on the other hand, are defined outside the class constructor or object literal using the class name or object name, respectively. They can be accessed and modified using the dot notation on the class or object itself:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Class example
class Person {
  static species = "Homo sapiens"; // non-instance property
}

console.log(Person.species); // "Homo sapiens"

// Object example
const person = {
  name: "John",
  age: 30,
};

person.gender = "Male"; // non-instance property
console.log(person.gender); // "Male"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, Person.species is a non-instance property of the Person class, while person.gender is a non-instance property of the person object. Non-instance properties are typically used to define values that are shared among all instances of a class or all objects of a certain type.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
