Loading introduction
Loading stats
Loading about
Loading posts
Skip to content
Md Nayeem Hossain
Explorer
home.tsx
blog.json
blog.json
40 posts · 8 topics

Blog

Technical writing on building for the web: tutorials, insights and lessons learned from real projects.

// posts.sort((a, b) => b.publishedAt - a.publishedAt)

01
🚀

Email Deliverability for Developers: SPF, DKIM, DMARC and Beyond

What we learned running our own SMTP server: SPF, DKIM and DMARC, reverse DNS, IP warm-up and keeping a sender reputation healthy.

Sep 14, 20264 min read#DevOps
02
🚀

Monorepos with pnpm Workspaces and Turborepo

One repository for web, admin and API: pnpm workspaces for strict dependencies and Turborepo caching so only what changed gets built.

Aug 24, 20263 min read#DevOps
03
🧭

Technical Debt: How to Measure It and Actually Pay It Down

Find debt hotspots with git history and incident data, explain the cost in business terms, and pay it down continuously instead of heroically.

Aug 3, 20264 min read#Leadership
04
🏗️

Event-Driven Architecture: Decoupling Services with Message Queues

Commands vs events, designing event contracts, at-least-once delivery, ordering and dead-letter queues in event-driven systems.

Jul 13, 20264 min read#Architecture
05
🚀

Kubernetes for Application Developers: What You Actually Need to Know

The handful of Kubernetes settings that prevent most production incidents: resources, readiness vs liveness, graceful shutdown and rollbacks.

Jun 22, 20264 min read#DevOps
06
🤖

Integrating LLMs into Production Apps: Patterns and Pitfalls

Going from AI demo to production: fallbacks, grounding, prompt injection defenses, cost control and evaluation for LLM-powered features.

Jun 1, 20264 min read#AI
07
🧩

API Versioning and Backward Compatibility Without the Pain

Most API versions are avoidable. How to evolve APIs without breaking clients, and how to version and deprecate when you really must.

May 11, 20263 min read#Backend
08
🚀

Infrastructure as Code with Terraform: Lessons from Production

Remote state, blast-radius splits, reviewing plans instead of code, deletion protection and drift detection — Terraform habits from production.

Apr 20, 20264 min read#DevOps
09
🧩

A Testing Strategy for Real Teams: Confidence Over Coverage

Coverage is not confidence. Why integration tests against real dependencies deserve the most investment, and how to keep tests trustworthy.

Mar 30, 20263 min read#Backend
10
🏗️

Building Resilient Systems: Timeouts, Retries and Circuit Breakers

Timeouts, retries with jitter, circuit breakers, fallbacks and bulkheads: how to keep one failing dependency from taking down everything.

Mar 9, 20264 min read#Architecture
11
🧭

Writing Design Docs That Get Read and Approved

A structure for design docs that busy reviewers actually read: problem, goals, non-goals, alternatives, risks and a rollback plan.

Feb 16, 20264 min read#Leadership
12
🧩

Rate Limiting at Scale: Token Buckets, Sliding Windows and Redis

Token buckets, sliding windows and an atomic Redis implementation for rate limiting across many API instances, with sensible failure modes.

Jan 26, 20263 min read#Backend
13
🗄️

Transactions and Isolation Levels Explained with Real Bugs

A transaction alone does not make concurrent code safe. Lost updates, write skew and how atomic updates, locks and retries prevent them.

Jan 5, 20264 min read#Database
14
⚛️

Server State vs Client State: Rethinking Frontend State Management

Most of your global store is really a cache of server data. Separating server state from client state makes React apps dramatically simpler.

Dec 15, 20253 min read#Frontend
15
🏗️

Monolith First: When (and When Not) to Split into Microservices

Microservices solve organizational problems at a real operational cost. Start with a modular monolith and split only when the signals are clear.

Nov 24, 20253 min read#Architecture
16
🚀

Observability Beyond Logs: Traces, Metrics and SLOs

Structured logs, RED metrics, OpenTelemetry traces and SLOs with error budgets — and why you should alert on symptoms, not causes.

Nov 3, 20253 min read#DevOps
17
🚀

Feature Flags Done Right: Ship Safely Without Long-Lived Branches

Separate deploy from release with feature flags, roll out progressively, and avoid the flag debt that turns a superpower into a trap.

Oct 13, 20253 min read#DevOps
18
🗄️

PostgreSQL Indexing Deep Dive: B-tree, GIN and Partial Indexes

Composite column order, covering, partial and expression indexes, GIN for arrays and JSONB — and how to find the indexes nothing uses.

Sep 22, 20253 min read#Database
19
🧩

Background Jobs with BullMQ: Retries, Backoff and Dead Letters

Reliable background processing with BullMQ: idempotent handlers, exponential backoff, unrecoverable errors, dead letters and graceful shutdown.

Sep 1, 20254 min read#Backend
20
🔐

JWT, Sessions and Refresh Tokens: Getting Authentication Right

JWTs or sessions is the wrong question. Short-lived access tokens, rotating refresh tokens and reuse detection give you the best of both.

Aug 11, 20254 min read#Security
21
⚛️

Web Performance Budgets and Core Web Vitals in Practice

Fix LCP, INP and CLS for real users, then keep them fixed with a performance budget that fails the build when a regression slips in.

Jul 21, 20253 min read#Frontend
22
🏗️

Designing a Multi-Tenant SaaS Architecture

Database per tenant, schema per tenant or a shared schema? The trade-offs, and how we made tenant isolation automatic in a white-label SaaS.

Jun 30, 20254 min read#Architecture
23
🧭

Writing Postmortems That Actually Prevent Incidents

Most postmortems end with "be more careful". Here is how to write ones that find real contributing factors and stop incidents from repeating.

Jun 9, 20253 min read#Leadership
24
🧩

Caching Strategies That Don't Lie: Invalidation in Practice

Fast is easy, fast and correct is hard. Cache-aside, stampede protection and versioned keys for caches that never show stale data by surprise.

May 19, 20253 min read#Backend
25
🔐

Securing Node.js APIs: An OWASP-Driven Checklist

A practical, OWASP-driven security checklist for Node.js APIs: access control, injection, validation, dependencies, SSRF and secrets.

Apr 28, 20253 min read#Security
26
🏗️

The Transactional Outbox Pattern: Reliable Events Without Distributed Transactions

Saving to the database and publishing an event are two writes that can fail independently. The outbox pattern makes them one.

Apr 7, 20253 min read#Architecture
27
⚛️

React Server Components in Production: Lessons Learned

Hard-earned lessons from shipping the Next.js App Router: where to draw client boundaries, avoiding waterfalls and keeping secrets on the server.

Mar 17, 20253 min read#Frontend
28
🗄️

Zero-Downtime Database Migrations with Expand and Contract

Rename columns and change schemas on live tables without an outage, using the expand and contract pattern and lock-aware DDL.

Feb 24, 20253 min read#Database
29
🧭

Code Review as a Senior Engineer: What to Look For

Stop reviewing semicolons. A practical checklist for reviewing design, correctness, security and operability — and giving feedback people learn from.

Feb 3, 20253 min read#Leadership
30
🧩

Designing Idempotent APIs: Retries Without Double Charges

Retries are inevitable. Learn how idempotency keys, atomic inserts and downstream keys keep a retried request from charging a customer twice.

Jan 13, 20254 min read#Backend
31

Building Scalable React Applications: Best Practices for 2024

Learn the essential patterns and practices for building large-scale React applications that are maintainable and performant.

Dec 28, 202410 min read#Frontend
32

Next.js 14 App Router: The Complete Developer's Guide

Master the new App Router in Next.js 14 with server components, streaming, and advanced patterns.

Dec 25, 202412 min read#Frontend
33

Node.js Backend Architecture: Patterns for Production

Discover battle-tested architecture patterns for building robust and scalable Node.js backend applications.

Dec 22, 202414 min read#Backend
34

MongoDB Performance Optimization: Complete Guide

Learn advanced techniques to optimize MongoDB queries, indexes, and schema design for maximum performance.

Dec 20, 202413 min read#Database
35

Docker Containerization: From Development to Production

Master Docker for modern application deployment with practical examples and production-ready configurations.

Dec 18, 202411 min read#DevOps
36

PostgreSQL Query Optimization: Advanced Techniques

Deep dive into PostgreSQL performance tuning with indexing strategies, query plans, and optimization techniques.

Dec 15, 202412 min read#Database
37

CI/CD Pipeline with GitHub Actions: Complete Setup Guide

Build robust CI/CD pipelines using GitHub Actions for automated testing, building, and deployment.

Dec 12, 202411 min read#DevOps
38

TypeScript Advanced Patterns for Professional Developers

Master advanced TypeScript patterns including generics, utility types, and type-safe design patterns.

Dec 10, 202413 min read#Frontend
39

REST API Design: Best Practices and Standards

Learn how to design clean, intuitive, and scalable REST APIs following industry best practices.

Dec 8, 202412 min read#Backend
40

Nginx Configuration for Production: Complete Guide

Configure Nginx for production with SSL, load balancing, caching, and security best practices.

Dec 5, 202411 min read#DevOps