Sharing real-world experiences

Build. Deploy. Solve.
Document. Repeat.

Sharing real-world experience in Backend, Cloud, DevOps and Homelab. Bugs encountered, debugging approaches, and solutions applied.

Featured posts

View all
📄

Latest posts

BOT
MSG
FREE
Telegram Bot
alert • monitor • notify
BackendDevOps

NestJS Telegram Alerts: Exception Filter, Jobs, and Deploy

Telegram Bot API in NestJS: TelegramModule, exception filter for 5xx alerts, BullMQ job failures, and deploy hooks — no external libraries needed.

11 min read18/06/2026
LOST
DIRTY
PHTM
Isolation Level
rc • rr • for update
BackendMySQL

MySQL Isolation Levels: Common Race Conditions and How to Fix Them

MySQL's default REPEATABLE READ doesn't prevent every race condition. Dirty reads, lost updates, phantom reads, write skew — which isolation level prevents which, when SELECT FOR UPDATE is the real fix, and when optimistic locking is better.

12 min read18/06/2026
DTO
DB
Validate in Code
dto • service • not db
BackendDatabase

Stop Using Database Constraints as Input Validation: Use DTOs Instead

Many backends rely on NOT NULL, VARCHAR(n), and UNIQUE constraints to catch bad input. This is the wrong layer for validation — databases aren't built for it. Where validation actually belongs: the DTO layer and service layer, before data ever reaches the DB.

10 min read18/06/2026
TX1
LOCK
TX2
Deadlock
innodb • log • rollback
BackendMySQL

MySQL Deadlock: How to Read InnoDB Logs and Reduce Occurrence

MySQL auto-resolves deadlocks but randomly rolls back a transaction, causing errors at the app layer. How to read SHOW ENGINE INNODB STATUS to find exactly which row was locked, common causes, and 5 ways to reduce deadlock probability.

12 min read18/06/2026
1
+N
SQL
SLOW
N+1 Query
orm • join • batch
BackendDatabase

N+1 Query in Prisma, TypeORM, and Sequelize: How to Detect and Fix It

N+1 query causes no errors but makes APIs slow as data grows — ORM fetches a list with 1 query then fires N more for each item. How to catch it with SQL logging, count queries per request, and fix with eager loading, batching, or DataLoader.

11 min read18/06/2026