- Published on
Software Engineering Notes
Practical software engineering notes for real-world systems
CodeNotes is a software engineering blog about building, debugging, and evolving real systems. It covers backend architecture, databases, APIs, observability, reliability, engineering process, and the decisions that shape maintainable software over time. It is written for developers who want stronger fundamentals and better judgment as they grow.
Start Here
These are strong entry points if you are new to the site and want a feel for its technical depth across several software engineering topics.
- How to Find and Fix Slow SQL Queries in Production
A production workflow for finding slow SQL queries, reading EXPLAIN plans, choosing fixes, and proving the endpoint improved.
- How to Prevent Race Conditions in Backend Systems
How to prevent race conditions in backend systems by naming the invariant, moving correctness to durable boundaries, and testing overlapping requests, retries, and jobs.
- Background Jobs in Production
How to run background jobs safely in production with replay-safe handlers, bounded retries, dead-letter triage, visibility timeouts, queue dashboards, and business-level correctness checks.
- OpenTelemetry for Backend Engineers
A practical OpenTelemetry guide for backend engineers: what to instrument first, how traces, metrics, logs, context propagation, attributes, sampling, and collectors make production debugging clearer.
Topic Clusters
The site covers software engineering broadly, with a few deeper technical clusters that make related articles easier to explore.
Backend Reliability
Retries, queues, cascading failures, and production-safe recovery patterns.
SQL And Data Correctness
Query performance, migrations, locking, and correctness under production load.
Observability And Debugging
How to understand complex systems when logs stop being enough.
Software Engineering Fundamentals
Decision-making, maintainable code, code review, and engineering judgment.
API Correctness
Contract testing, race conditions, integration tests, idempotency, and safe API evolution.
Testing And Software Delivery
Integration tests, contract safety, staged releases, and changes that survive live rollout.
Latest Articles
Practical software engineering notes on backend systems, debugging, architecture, reliability, databases, and the engineering judgment developers build over time.
- How to plan database migration rollback in production with compatibility windows, forward fixes, backfill recovery, and clear stop points before destructive schema changes.
- Published on
How database connection pool exhaustion happens under production load, how to distinguish pool wait from slow SQL, and how to size pools across instances without overloading PostgreSQL.- Published on
How API contract testing catches breaking request, response, error, and schema changes before release with OpenAPI diffs, consumer examples, and CI compatibility checks.- Published on
How trace sampling affects production debugging, including head sampling, parent-based sampling, tail sampling trade-offs, error traces, rare paths, async work, and metrics that show whether sampling is hiding incidents.- Published on
How to choose database transaction boundaries in backend APIs so writes stay atomic without holding locks across external calls, slow work, retries, or post-commit side effects.