Blog
Notes on backend engineering, infrastructure and problem solving.

Self-hosting your apps on a VPS with Coolify
How I turn a cheap VPS into my own Heroku with Coolify - server setup, hardening, git-push deploys, HTTPS, databases and backups, plus the mistakes worth avoiding.
September 24, 2026 · 5 min read

Observability for Node.js with OpenTelemetry, Grafana, Prometheus, Loki and Jaeger
A practical, vendor-neutral observability stack for Node.js - traces, metrics and logs through one OpenTelemetry pipeline, all viewed in Grafana.
September 6, 2026 · 4 min read

Background jobs: BullMQ vs RabbitMQ - when to use which
Both move work out of the request path, but they solve different problems. A practical comparison with code, and the rule of thumb I use to choose.
August 19, 2026 · 5 min read

Scaling WebSockets horizontally with Redis pub/sub
One WebSocket server is easy. Two break your chat. How to fan out messages across instances with Redis, plus presence, heartbeats, back-pressure and graceful shutdown.
July 28, 2026 · 4 min read

GitOps on Kubernetes with Argo CD and Helm
Stop running kubectl apply from laptops. How to make git the single source of truth for your cluster - repo layout, Helm values per environment, Argo CD, CI image bumps, secrets and rollbacks.
July 11, 2026 · 4 min read

What competitive programming taught me about backend engineering
After 1000+ problems on Codeforces and other judges, here's what carried over to building real backend systems - and what I had to unlearn.
June 20, 2026 · 5 min read
Iktiup Mahmud