Docker BuildKit in CI: The Economics of Network I/O vs CPU Compilation

Enabling remote layer caching in CI often slows builds down instead of speeding them up. Here is how network transit limits, cache thrashing, and local NVMe runners dictate the real economics of container builds.

October 2, 2026 · 6 min · Hanh Pham

CFS Quota Throttling & Silent OOMKills: The Fallacy of Kubernetes CPU Limits

Setting hard CPU limits on latency-sensitive microservices destroys p99 response times while average utilization appears deceptively low. Here is how Linux CFS quotas, Go GOMAXPROCS, and GOMEMLIMIT actually behave under load.

September 28, 2026 · 8 min · Hanh Pham

Deleting Language from the LLM: Inside TypeSafe's Jev and Decision Models

When you force a 70-billion-parameter language model to output ’true’ or ‘false’, you pay for sequential token decoding, uncalibrated probabilities, and broken JSON. Here is why TypeSafe stripped natural language out of the loop.

September 22, 2026 · 9 min · Hanh Pham

Making a Multi-Step SQL Server Script's Rollback Actually Trustworthy

When one step in a multi-step SQL Server script fails, what actually happens to your data depends entirely on how you’ve wired up error handling, and the default is not what most people assume. Three scenarios, measured with real ledger output.

September 6, 2026 · 6 min · Hanh Pham

When a Wildcard Join Multiplies Your Data (and How to Actually Fix It)

A join rule that matches ‘anything’ looks like an ordinary filter, until it quietly multiplies your row count. Measured, not estimated: what a wildcard join actually costs, why a CREATE INDEX line doesn’t always buy you a seek, and why UNPIVOT beats a ten-way OR chain.

September 5, 2026 · 9 min · Hanh Pham

Go Performance Profiling with pprof: Finding the Slow Part

Your Go service is slow, but you don’t know where. Guessing is not a strategy. pprof tells you exactly where your program spends its time, memory, and CPU; here’s how to use it.

August 1, 2026 · 7 min · Hanh Pham