- Bazel Explained: What Hermetic Builds Actually Cost
Bazel delivers reproducible, precisely cached builds and demands that you describe everything. Here is what you get, what it costs, and who should say no.
Code · August 19, 2026 - GraphQL Federation: One Graph, Many Teams
Federation composes independently-owned subgraphs into a single API. Here is what it solves, the operational cost it adds, and when a simpler gateway is enough.
Code · August 19, 2026 - Hermetic Builds Explained: Same Inputs, Same Output
A hermetic build depends only on declared inputs. Here is what that property gives you, the common leaks that break it, and how to move toward it incrementally.
Code · August 19, 2026 - Monorepo Tooling Compared: What You Actually Need
Monorepo tools solve task orchestration and caching, not repository layout. Here is what each tier provides and how to tell when you have outgrown the simple option.
Code · August 19, 2026 - React Server Components: The Mental Model That Helps
Server components run once on the server and never hydrate. Here is the boundary that actually matters, what breaks when you cross it, and when the complexity pays.
Code · August 19, 2026 - SBOM and Supply Chain Security: Beyond the Checkbox
A software bill of materials lists what is in your build. Here is how to generate one that is actually useful, and why most SBOM programmes stop short of value.
Code · August 19, 2026 - The Sidecar Pattern: Running Infrastructure Beside Your App
A second container next to your service handles TLS, retries, metrics, and logging so your code does not have to. It is a real simplification with a real bill.
Code · August 19, 2026 - Structured Logging: Logs You Can Actually Query
String logs are unsearchable at scale. Here is how to move to structured events, which fields matter, and how to avoid the cost explosion that follows.
Code · August 19, 2026 - Thundering Herd and Cache Stampede: Failures at Recovery
The outage ends and the system immediately falls over again. Everything that was waiting arrives at once, and the recovery is what kills you.
Code · August 19, 2026 - Index Bloat: Why Your Indexes Get Slower Over Time
The index was fast when you built it. A year of updates later it is three times the size, half empty, and the queries using it have quietly degraded.
Code · August 18, 2026 - LLM Fallback Strategies: Staying Up When a Model Is Not
Your provider rate-limits you, or a model refuses, or an endpoint goes down. What your app does in the next 200 milliseconds decides whether users notice.
Code · August 18, 2026 - Multimodal Embeddings: Searching Images and Text Together
One vector space holding both pictures and sentences lets you search a photo library by description. Here is how that works and where the shared space gets lumpy.
Code · August 18, 2026 - Prepared Statements: Faster, Safer, and Occasionally Slower
Preparing a statement once and executing it many times saves parsing and blocks injection. It can also lock in a plan chosen for parameters you no longer send.
Code · August 18, 2026 - SQLite Vector Search: Embeddings Without a Vector DB
SQLite can store and search embeddings with an extension, no separate service required. Here is where that is genuinely enough and where it stops scaling.
Code · August 18, 2026 - CI/CD Caching Strategies That Actually Cut Build Time
Most CI caches are configured wrong and quietly miss on every run. Here is how to design cache keys, what to cache, and how to tell whether it is working.
Code · August 17, 2026 - LLM Regression Testing: Stopping the Same Bug Twice
A prompt change fixes one case and breaks three others you never checked. Regression testing for non-deterministic systems needs different machinery than assertEquals.
Code · August 17, 2026 - Query Planners: Why Your Index Is Being Ignored
You added the index and the query got no faster. The planner looked at it, estimated it would be slower, and chose a sequential scan. It is often right.
Code · August 17, 2026 - Testcontainers: Testing Against the Real Database
Mocking your database means testing your mock. Running a real one per test suite in a container removes the gap, and the setup cost is smaller than it used to be.
Code · August 17, 2026 - Upsert Patterns: Insert or Update Without a Race
Checking whether a row exists and then inserting it is a race condition with good intentions. The database has a single-statement answer, with sharp edges.
Code · August 17, 2026 - Database Branching Explained: A Branch Per Pull Request
Copy-on-write database branches give every pull request a real database with real data shape. Here is how it works, what it costs, and the data governance catch.
Code · August 16, 2026 - Generated Columns: Let the Database Compute It
A value derived from other columns can be maintained by the database itself, indexed like any other column, and never fall out of sync with its inputs.
Code · August 15, 2026 - HTTP/3 Adoption: When QUIC Actually Helps
HTTP/3 runs over QUIC and fixes head-of-line blocking at the transport layer. Here is which users benefit, what breaks in enterprise networks, and how to roll it out.
Code · August 15, 2026 - Advisory Locks: Mutual Exclusion Without a Lock Table
You need exactly one worker running a job. A lock row in a table almost works and leaks on crashes. Advisory locks solve it properly using the database you already have.
Code · August 14, 2026 - Columnar Storage Explained: Why Analytics Databases Are Fast
Storing a table by column instead of by row changes which queries are cheap. It is the single biggest reason an analytics query that crawls in Postgres flies in a warehouse.
Code · August 14, 2026 - Edge Runtime vs Node Runtime: Picking the Right One
Edge runtimes start instantly and run everywhere, but they are not Node. Here is exactly what is missing, when the tradeoff is worth it, and how to avoid a rewrite.
Code · August 14, 2026 - LISTEN and NOTIFY: Push Without a Message Broker
Your database can tell your application when something changed, instead of your application asking every two seconds. It is elegant, built in, and not a message queue.
Code · August 14, 2026 - MVCC Explained: How Readers Stop Blocking Writers
Your database serves a consistent snapshot to every transaction without locking anything. The trick is keeping several versions of every row, and it has a cost.
Code · August 14, 2026 - OAuth 2.1 Explained: The Consolidation of Best Practice
OAuth 2.1 removes the insecure parts of OAuth 2.0 and makes the safe patterns mandatory. Here is exactly what changed and what it means for existing integrations.
Code · August 14, 2026 - WASM Component Model: Modules That Compose
The component model gives WebAssembly typed interfaces and language-agnostic composition. Here is what it enables beyond plain modules and where it fits today.
Code · August 14, 2026 - API Error Design: Responses Callers Can Act On
Most API errors tell the caller something went wrong and nothing else. Here is what an error response needs to contain and how to make failures debuggable.
Code · August 13, 2026 - Expand and Contract: Schema Changes Without Downtime
Renaming a column in one deploy breaks every running instance of the old code. Splitting the change into three deploys makes it invisible to users.
Code · August 13, 2026 - JSON Schema Validation: Where to Put the Boundary
Validation belongs at trust boundaries and nowhere else. Here is how to write schemas that produce useful errors, and how to keep them in sync with your types.
Code · August 13, 2026 - Rust in the Linux Kernel: Where It Actually Runs
Rust is in the kernel tree and shipping in real drivers. Here is what it is used for, what the abstraction work involves, and why the debate was never really technical.
Code · August 13, 2026 - Soft Delete: The Flag That Infects Every Query
Adding a deleted_at column looks like the safe choice. Then every query needs a filter, every unique constraint breaks, and one forgotten WHERE clause leaks deleted data.
Code · August 13, 2026 - Write-Ahead Logging Explained: How Databases Survive Crashes
Your database promised the write was durable, then the machine lost power. Write-ahead logging is the reason the data is still there when it comes back.
Code · August 13, 2026 - Config as Code: Getting Past YAML Sprawl
Configuration outgrew static files and templating produced a mess. Here is how typed and programmable config languages help, and when plain files are still right.
Code · August 12, 2026 - Database Isolation Levels: The Bugs You Only Get Under Load
Your code is correct when one user runs it. Two users at once produce a result neither would accept. Isolation levels decide which of those anomalies you get.
Code · August 12, 2026 - Dead Letter Queues: Where Failed Messages Should Go
A message that cannot be processed will retry forever unless you catch it. Here is how dead letter queues work, what to put in one, and the replay discipline.
Code · August 12, 2026 - Join Algorithms: Why the Same Query Is Fast Then Slow
Your database picks between three join strategies based on estimated row counts. When the estimate is wrong, it picks the one that turns milliseconds into minutes.
Code · August 12, 2026 - Infrastructure Drift: When Reality Stops Matching Code
Someone fixes production in the console and never updates the code. Here is how drift accumulates, how to detect it early, and how to close the loop.
Code · August 12, 2026 - Partial Indexes: Indexing Only the Rows That Matter
Most queries against a large table only ever touch a small slice of it. A partial index covers just that slice, and is a fraction of the size and cost.
Code · August 12, 2026 - Postgres 18 Features: Async I/O and What It Means
Postgres 18 added asynchronous I/O, native UUIDv7, virtual generated columns, and OAuth authentication. Here is which changes affect real workloads.
Code · August 12, 2026 - Table Partitioning: Splitting One Table Without Sharding
Partitioning divides a table into pieces inside one database. It is not sharding, it is not a general speed-up, and it solves a narrower problem than most people expect.
Code · August 12, 2026 - TypeScript Native Compiler: What the Rewrite Changes
The TypeScript compiler was ported to a native language for a large speedup. Here is what actually gets faster, what stays the same, and how to try it safely.
Code · August 12, 2026 - Backpressure Explained: Failing Before You Fall Over
A system without backpressure accepts work until it collapses. Here is how to signal overload, where to put queues, and why unbounded buffering is the core mistake.
Code · August 11, 2026 - Continuous Batching Explained: Why LLM Servers Got Fast
Static batching makes every request in a batch wait for the slowest one. Continuous batching lets finished sequences leave and new ones join mid-flight. The throughput difference is large.
Code · August 11, 2026 - Least Privilege IAM: Narrowing Permissions Safely
Broad permissions get granted to unblock someone and never get narrowed. Here is a practical method for reducing them using observed usage rather than guesswork.
Code · August 11, 2026 - LSM Trees vs B-Trees: Why Your Database Chose One
Two ways to organise data on disk, optimised for opposite workloads. Which one your database uses explains most of its performance character.
Code · August 11, 2026