<?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: Rengaswamy Marimuthu</title>
    <description>The latest articles on DEV Community by Rengaswamy Marimuthu (@rengas).</description>
    <link>https://dev.to/rengas</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%2F3647094%2F155968da-f3c5-4555-8903-4b67e4064066.jpeg</url>
      <title>DEV Community: Rengaswamy Marimuthu</title>
      <link>https://dev.to/rengas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rengas"/>
    <language>en</language>
    <item>
      <title>The Great Centralisation: History of the internet is a tragedy in Four acts</title>
      <dc:creator>Rengaswamy Marimuthu</dc:creator>
      <pubDate>Sat, 06 Dec 2025 22:30:23 +0000</pubDate>
      <link>https://dev.to/rengas/the-great-centralisation-history-of-the-internet-is-a-tragedy-in-four-acts-30k5</link>
      <guid>https://dev.to/rengas/the-great-centralisation-history-of-the-internet-is-a-tragedy-in-four-acts-30k5</guid>
      <description>&lt;h1&gt;
  
  
  &lt;strong&gt;The Great Centralization: History of the internet is a tragedy in Four acts.&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The internet was born not by chance, nor as a startup venture seeking funding, but as an essential mechanism for survival.&lt;/p&gt;

&lt;p&gt;During the nuclear tensions of the 1960s and 70s, brilliant minds like Paul Baran, Vint Cerf, and Bob Kahn faced a critical challenge: &lt;strong&gt;How could a communication network be engineered to remain operational even if half its infrastructure were obliterated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Their groundbreaking solution was the "mesh" network with no central point, no single master switch, and no head. Data was rerouted seamlessly; It was built for resilience.&lt;/p&gt;

&lt;p&gt;Yet, five decades on, this miracle of decentralization is largely managed by a few powerful corporations in Seattle and Silicon Valley, often protected by a single proxy service. These are the three major  incidents of this year that took down half of the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;December 5, 2025:&lt;/strong&gt;  &lt;a href="https://www.pymnts.com/technology/2025/cloudflare-says-it-resolved-services-issues-from-software-update/" rel="noopener noreferrer"&gt;&lt;strong&gt;Cloudflare pushed a routine update to their Web Application Firewall&lt;/strong&gt;&lt;/a&gt; (WAF) to patch a minor React vulnerability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Mistake:&lt;/strong&gt; A single logic error in the update code (a "killswitch" for a testing tool) triggered a bug that caused their servers to reject valid traffic.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blast Radius:&lt;/strong&gt; Instantly, &lt;strong&gt;28% of the world's HTTP traffic&lt;/strong&gt; hit a wall. &lt;strong&gt;Zoom&lt;/strong&gt; calls dropped mid-sentence. &lt;strong&gt;LinkedIn&lt;/strong&gt; vanished. &lt;strong&gt;Coinbase&lt;/strong&gt; users couldn't trade. Even &lt;strong&gt;Zerodha&lt;/strong&gt; (India's largest broker) went dark.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Lesson:&lt;/strong&gt; It wasn't a nuclear bomb that took down the world's communication; it was a bad config file from one company in San Francisco.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;November 18, 2025: &lt;a href="https://blog.cloudflare.com/18-november-2025-outage/" rel="noopener noreferrer"&gt;The Cloudflare "Bad File" Blackout&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What happened:&lt;/strong&gt; A routine change to a database permission caused a configuration file for Cloudflare's Bot Management system to bloat in size. This "bad file" was pushed globally, instantly crashing the proxy software on every server in their network simultaneously.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Impact:&lt;/strong&gt; &lt;strong&gt;X (Twitter), ChatGPT, Spotify, Canva, and Discord&lt;/strong&gt; all went dark at the exact same second.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Lesson:&lt;/strong&gt; We built a "decentralized" edge network, but we manage it with a centralized switch. One bad config file can brick the world's most popular apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;October 20, 2025: &lt;a href="https://aws.amazon.com/message/101925/" rel="noopener noreferrer"&gt;The AWS "US-EAST-1" Collapse&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What happened:&lt;/strong&gt; A malfunction in a subsystem monitoring network load balancers in Northern Virginia (&lt;code&gt;us-east-1&lt;/code&gt;) triggered cascading DNS failures.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Impact:&lt;/strong&gt; It took down 113 separate AWS services. The "blast radius" wiped out &lt;strong&gt;Snapchat, Roblox, Ring smart home devices, and banking apps&lt;/strong&gt; globally.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Lesson:&lt;/strong&gt; We realized that &lt;code&gt;us-east-1&lt;/code&gt; isn't just a data center; it’s a single point of failure for 30% of the internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Furthermore, the very "revolution" intended as a safeguard—Web3—is now being acquired en masse by the same financial institutions it was designed to disrupt.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;I. The Architects of the Unbreakable (1969–1995)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We often forget the sheer difficulty of the early internet. The engineers who built ARPANET (the precursor to the Internet) were working with hardware less powerful than a modern digital watch.&lt;/p&gt;

&lt;p&gt;They weren't just writing code; they were inventing the laws of digital physics. They created &lt;strong&gt;TCP/IP&lt;/strong&gt; (Transmission Control Protocol/Internet Protocol), a language that allowed any computer, of any make, to talk to any other computer without a middleman.&lt;/p&gt;

&lt;p&gt;The ethos was "dumb network, smart edges." The network didn't care what you were saying or who you were; it just moved packets. Power resided at the edges—with the users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Dream:&lt;/strong&gt; A global library where no book could be burned.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Reality:&lt;/strong&gt; To be online, you had to be a technician. You ran your own mail server. You hosted your own website on a box in your closet. You were free, but you were also responsible for everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;II. The Convenience (The Web 2.0 Takeover)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As the internet grew, a friction point emerged: &lt;strong&gt;Freedom is exhausting.&lt;/strong&gt;Managing your own server is hard. Security patches are annoying. If your hard drive fails, your data is gone forever.&lt;/p&gt;

&lt;p&gt;Enter the giants. In the mid-2000s, Amazon (AWS), Google, and later Cloudflare offered the world a deal.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Stop worrying about the hardware. Give us your data. We will host it, secure it, back it up, and serve it to the world faster than you ever could. All for pennies."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We took the deal and changed the topology of the internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Hub-and-Spoke Disaster&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We moved from a mesh network to a feudal system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Cloud:&lt;/strong&gt; Today, AWS, Microsoft Azure, and Google Cloud control the vast majority of the world's backend infrastructure. If us-east-1 (an AWS region) has a hiccup, half the internet—from Netflix to your smart doorbell—stops working.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Gatekeeper:&lt;/strong&gt; Then there is Cloudflare. In our quest to stop DDoS attacks, we routed the world's traffic through one company's reverse proxies. Cloudflare sees, scrubs, and approves a massive percentage of global web traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The engineers of the 70s worked to ensure no single nuclear bomb could kill the network. Today, a single bad configuration update at a data center in Virginia can take it offline. We traded resilience for convenience.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;III. The Broken Promise of Web3 (The Infrastructure Lie)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Then came the rebellion. Bitcoin (2009) and Ethereum (2015) arrived with a promise to undo the centralization of Web 2.0.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Web3 is permissionless. It runs on thousands of nodes. No one can shut it down. It is the return of the open internet."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But look under the hood of your favorite Decentralized App (dApp).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where is the frontend hosted?&lt;/strong&gt; Usually on AWS or Vercel. If Amazon shuts off the hosting, the "uncensorable" dApp vanishes from the browser.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How does the wallet talk to the blockchain?&lt;/strong&gt; Your MetaMask wallet doesn't run a full Bitcoin or Ethereum node. It connects to the blockchain via &lt;strong&gt;RPC (Remote Procedure Call)&lt;/strong&gt; providers like &lt;strong&gt;Infura&lt;/strong&gt; (owned by Consensys) or &lt;strong&gt;Alchemy&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Result:&lt;/strong&gt; Most of Web3 relies on centralized APIs to function. If Infura decides to block IP addresses from a sanctioned country (which they have done), those users are cut off from the "decentralized" blockchain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We built a decentralized ledger, but we access it through the same centralized doors we built in the Web 2.0 era.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;IV. The Banker's Takeover&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  If the infrastructure centralization is disappointing, the financial capture is heartbreaking.
&lt;/h2&gt;

&lt;p&gt;The genesis block of Bitcoin contains a hidden message: &lt;em&gt;"The Times 03/Jan/2009 Chancellor on brink of second bailout for banks."&lt;/em&gt; Satoshi Nakamoto built Bitcoin specifically as a protest against the reckless gambling of institutional banks.&lt;/p&gt;

&lt;p&gt;Fifteen years later, the "Cypherpunk" dream is dead. The "Institutional Grade" reality is here.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The ETF Trojan Horse&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We cheered when the Bitcoin and Ethereum ETFs (Exchange Traded Funds) were approved. "Number Go Up," we said. "Mass Adoption," we said.&lt;/p&gt;

&lt;p&gt;But look at who is buying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BlackRock, Fidelity, and VanEck:&lt;/strong&gt; These asset managers now hold billions of dollars worth of Bitcoin.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Supply Crunch:&lt;/strong&gt; As these giants vacuum up the supply, Bitcoin shifts from being a peer-to-peer currency to a pristine collateral asset for Wall Street. You aren't supposed to spend it; you're supposed to leverage it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What about Proof-of-stake?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It is even worse on Proof-of-Stake networks like Ethereum.&lt;/p&gt;

&lt;p&gt;To secure the network, you need to stake 32 ETH. Most people can't afford that, and the technical overhead is high (echoing the early internet server problem). So, users hand their ETH to &lt;strong&gt;Lido&lt;/strong&gt; or &lt;strong&gt;Coinbase&lt;/strong&gt; to stake it for them. The result is a massive percentage of all staked Ethereum is controlled by a handful of entities. If regulators pressure these entities to censor transactions, they have the market power to threaten the network's neutrality.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion: The Cycle Completes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The history of the internet is a tragedy in three acts.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Act I:&lt;/strong&gt; Engineers work hard to build a free, survival-focused mesh network.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act II:&lt;/strong&gt; We handed the keys to Big Tech because we wanted faster video streaming and easier emails.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act III:&lt;/strong&gt; Greed took over our attempt to decentralize.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act IV:&lt;/strong&gt; We built a "decentralized" financial system to escape the banks, only to sell the coins to BlackRock because we wanted our portfolios to turn green.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We have arrived at a strange destination. We have "decentralized" protocols running on Amazon servers, funded by Venture Capitalists, and bought by Investment Banks.&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://www.linkedin.com/in/rengaswamy-marimuthu-6a292992/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>architecture</category>
      <category>discuss</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Go: Stick to the Standard Library, Fill the Gaps with Chi, Zap, and Migrate</title>
      <dc:creator>Rengaswamy Marimuthu</dc:creator>
      <pubDate>Fri, 05 Dec 2025 22:55:29 +0000</pubDate>
      <link>https://dev.to/rengas/go-stick-to-the-standard-library-fill-the-gaps-with-chi-zap-and-migrate-1ben</link>
      <guid>https://dev.to/rengas/go-stick-to-the-standard-library-fill-the-gaps-with-chi-zap-and-migrate-1ben</guid>
      <description>&lt;p&gt;As a Go developer with significant experience in web development, I have seen the cycle repeat itself. New developers often jump straight into heavy frameworks like Gin or Beego, or reach for complex ORMs like GORM, thinking they need them to be productive.&lt;/p&gt;

&lt;p&gt;I used to do the same. But over time, I realised that Go is different. The standard library is incredibly powerful, and adding "magic" usually just adds technical debt.&lt;/p&gt;

&lt;p&gt;My philosophy for 2025 is simple: &lt;strong&gt;Stick to the Standard Library for the core, and use specialised libraries only to fill the gaps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the "Standard+Gap" stack I use to build production-ready services, and why I chose these specific tools over the alternatives.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Core: Why I Reject Web Frameworks and ORMs
&lt;/h2&gt;

&lt;p&gt;Before talking about the libraries I &lt;em&gt;do&lt;/em&gt; use, let's talk about what I &lt;em&gt;don't&lt;/em&gt; use.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP Server: &lt;code&gt;net/http&lt;/code&gt; vs. Frameworks
&lt;/h3&gt;

&lt;p&gt;I don't use heavy HTTP frameworks to start the server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Reality:&lt;/strong&gt; Go’s standard &lt;code&gt;net/http&lt;/code&gt; is production-grade. It handles HTTP/2, timeouts, and cancellation contexts natively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Problem with Frameworks:&lt;/strong&gt; Frameworks often wrap the &lt;code&gt;http.ResponseWriter&lt;/code&gt; and &lt;code&gt;http.Request&lt;/code&gt; in their own context objects. This breaks compatibility with the rest of the Go ecosystem and hides what is actually happening over the wire.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database: &lt;code&gt;database/sql&lt;/code&gt; vs. ORMs (GORM, Ent)
&lt;/h3&gt;

&lt;p&gt;I stick to the standard &lt;code&gt;database/sql&lt;/code&gt; (occasionally with &lt;code&gt;sqlx&lt;/code&gt; for struct mapping).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Cons of ORMs:&lt;/strong&gt; ORMs promise speed but often deliver inflexibility. They rely on reflection (slow) and introduce "magic" behavior. Simple queries are easy, but complex joins or performance tuning become a nightmare of fighting the ORM's syntax.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Pros of Standard Lib:&lt;/strong&gt; SQL is the universal language of data. Using the standard library forces you to write efficient queries and gives you full control over database interactions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Filling the Routing Gap: Chi
&lt;/h2&gt;

&lt;p&gt;While &lt;code&gt;net/http&lt;/code&gt; is great, its default request multiplexer (router) can be a bit basic for complex REST APIs. This is where I fill the gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Choice:&lt;/strong&gt; &lt;a href="https://github.com/go-chi/chi" rel="noopener noreferrer"&gt;Chi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt;&lt;br&gt;
Chi is barely a framework; it's a router that is 100% compatible with &lt;code&gt;net/http&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; It uses standard &lt;code&gt;http.Handler&lt;/code&gt;. It has zero external dependencies. Middleware integration is intuitive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; You have to handle your own JSON encoding/decoding (which I prefer, as it gives me control).&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gin/Echo:&lt;/strong&gt; These are full web frameworks. They are faster in micro-benchmarks, but they lock you into their vendor-specific context. If you use Chi, your code is just "Go code."&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Filling the Logging Gap: Zap
&lt;/h2&gt;

&lt;p&gt;The standard &lt;code&gt;log&lt;/code&gt; package is insufficient for modern observability. You need structured (JSON) logging for tools like Datadog or ELK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Choice:&lt;/strong&gt; &lt;a href="https://github.com/uber-go/zap" rel="noopener noreferrer"&gt;Zap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt;&lt;br&gt;
Zap is Uber's structured logger. It is obsessively optimized for performance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; Zero-allocation in hot paths. Extremely fast. Strongly typed fields prevent runtime errors in logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; The syntax is verbose (&lt;code&gt;logger.Info("msg", zap.String("key", "value"))&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logrus:&lt;/strong&gt; The old standard. It’s easy to read but slow and uses a lot of memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slog:&lt;/strong&gt; The new standard library addition. It is excellent and likely the future, but Zap currently has a larger ecosystem and battle-tested edge cases in high-load systems.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Filling the Migration Gap: Go-Migrate
&lt;/h2&gt;

&lt;p&gt;Database schemas evolve. You need a way to version control your database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Choice:&lt;/strong&gt; &lt;a href="https://github.com/golang-migrate/migrate" rel="noopener noreferrer"&gt;golang-migrate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt;&lt;br&gt;
It treats migrations as what they are: SQL files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; It supports almost every database driver. It keeps &lt;code&gt;up&lt;/code&gt; and &lt;code&gt;down&lt;/code&gt; migrations in plain SQL files, separating your DB logic from your Go code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; Error handling can be tricky; if a migration fails halfway, you often have to manually fix the "dirty" state in the schema table.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goose:&lt;/strong&gt; Goose allows migrations written in Go code. This is powerful for data backfilling, but for schema changes, I prefer the strict isolation of SQL files that &lt;code&gt;go-migrate&lt;/code&gt; enforces.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;This stack represents the "sweet spot" of Go development:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Server:&lt;/strong&gt; Standard &lt;code&gt;net/http&lt;/code&gt; (Reliable, Standard).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Database:&lt;/strong&gt; Standard &lt;code&gt;database/sql&lt;/code&gt; (Explicit, High Control).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Router:&lt;/strong&gt; &lt;code&gt;Chi&lt;/code&gt; (Fills the routing gap without locking you in).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Logs:&lt;/strong&gt; &lt;code&gt;Zap&lt;/code&gt; (Fills the observability gap with high performance).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Migrations:&lt;/strong&gt; &lt;code&gt;Go-migrate&lt;/code&gt; (Fills the versioning gap).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By avoiding bloated frameworks and inflexibility ORMs, you keep your Go applications readable, maintainable, and close to the metal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is your "Gap-Filling" stack? Tell me in the comments!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://www.linkedin.com/in/rengaswamy-marimuthu-6a292992/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
