Skip to content

Navid's Blog

Ideas, Experiments, and Lessons Learned

Menu
Menu

Category: Lessons Learned

Dark moody photo of code on a screen, for a post about a YAML parsing bug

Norway Vanished From Our App for Two Days — It Was One Unquoted Line

Posted on September 10, 2026September 10, 2026 by Navid

A config file listed Norway as NO, and YAML 1.1 read it as false. Two days of debugging later, I quote everything that reads like English.

Read more
Dark laptop with code on the screen late in the afternoon

I Force-Pushed to Main on a Friday — Here’s What Happened Next

Posted on September 1, 2026 by Navid

One force push on a Friday afternoon, three commits gone, and the four-minute rescue that got them back.

Read more

What Nobody Tells You About Being On-Call (From Someone Who’s Been There)

Posted on April 11, 2026 by Navid

I still remember my first on-call shift. It was a Friday night, I was three drinks in, and my phone started buzzing. Production database was down. My heart rate spiked. I had no idea what to do. That’s when I realized — nobody teaches you this stuff. You learn to code. You learn algorithms. But…

Read more

Why I Stopped Using Docker for Local Development (And What I Use Instead)

Posted on April 9, 2026 by Navid

I used to Dockerize everything. Every project, every service, every side hustle — straight into a Dockerfile. It felt right. “Works on my machine” solved, reproducible environments, production parity. What could go wrong? Turns out, a lot. At least for local development. The Docker Desktop Tax Docker Desktop is hungry. On my MacBook, it easily…

Read more

I Deleted 2000 Lines of Code and Everything Still Worked

Posted on April 1, 2026 by Navid

Last month I was debugging a feature that should have taken two hours. It took two days. The code was a mess — sprawling functions, nested conditionals, and comments that hadn’t been updated since 2019. I’d had enough. I started deleting. What I Actually Deleted The original module was around 2,400 lines. After my “refactoring…

Read more

The Side Project I Abandoned Because It Was Too Well-Built

Posted on March 24, 2026 by Navid

I spent three months building what I thought was a masterpiece. Clean architecture. Proper separation of concerns. Full test coverage. Everything I learned in my career, poured into this side project. Then I stopped working on it. Not because I got busy. Not because I lost interest. I stopped because it was too damn hard…

Read more

I Over-Engineered Everything and It Cost Me More Than I Thought

Posted on March 10, 2026 by Navid

The Moment I Realized Something Was Wrong I spent three hours designing a “scalable” solution for a feature that would maybe get 100 users. Built a custom caching layer. Created an elaborate state management system. Added metrics and monitoring everywhere. It took two weeks to ship. The feature worked fine. Nobody noticed any of the…

Read more

What Debugging Taught Me About Problem Solving

Posted on March 4, 2026 by Navid

I’ve spent more hours staring at error messages than I’d like to admit. But somewhere along the way, I realized debugging isn’t just about fixing code—it’s about thinking clearly when everything feels broken. The Frustration Is Real You know that feeling. You’ve been debugging for 3 hours. You changed something, broke something else, and now…

Read more

I Thought Message Queues Would Fix My Performance Problems – They Didn’t

Posted on February 24, 2026 by Navid

Here’s a story about the time I over-engineered a simple problem and learned a hard lesson about message queues. What Happened It was 2022. I had an API endpoint that processed user uploads and sent confirmation emails. The endpoint was slow – sometimes timing out when thousands of users uploaded at once. My first thought:…

Read more

Why I Stopped Over-Engineering My Side Projects

Posted on February 21, 2026 by Navid

How It Started As a backend developer, I used to treat every side project like a potential unicorn startup. I’d spin up a microservice architecture, integrate a message broker, add caching layers, and set up CI/CD pipelines — for a project that might never see a production user. It wasn’t just excitement; it was a…

Read more

Posts pagination

  • 1
  • 2
  • Next

Categories

  • AI Experiments
  • Coding
  • Debugging Stories
  • Hot Takes
  • Ideas
  • Lessons Learned
  • Productivity
  • Project Management
  • Systems & Architecture
  • Uncategorized
  • Vibe Coding

Recent Posts

  • 5 ORM Mistakes That Pushed Me Back to Raw SQL
  • Norway Vanished From Our App for Two Days — It Was One Unquoted Line
  • I Ignored a Deprecation Warning for 11 Months — It Worked Until It Didn’t
  • Why I Stopped Time-Blocking (And What I Do Instead)
  • I Vibe-Coded a Tool in One Afternoon — It Died on Its First Real User