Terraform State Decomposition: Blast Radius vs The Integration Tax

Splitting a monolithic terraform.tfstate into fifty micro-states speeds up plans, but introduces cross-stack read locks, secret leakage, and brittle dependencies. Here is how to structure state boundaries without the integration tax.

September 24, 2026 · 6 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

The Four-Layer AI Coding Stack: Why Your Assistant Fails (and It's Not the Model)

Most developer frustration with AI coding assistants comes from conflating the editor, the agent loop, the gateway, and the model. Here is how the four layers actually fit together, where failures originate, and how to build a setup that survives production work.

September 19, 2026 · 11 min · Hanh Pham

Apple M4 vs Huawei Ascend 950: Two Theories of the AI Chip

One is a fixed-function FP16 block hidden inside a laptop chip Apple won’t document. The other is a programmable FP4 datacenter engine Huawei ships in 8,192-chip fabrics. Same goal, opposite theses: here’s what the M4 family actually is, and what the numbers do and don’t mean against the Ascend 950.

September 9, 2026 · 14 min · Hanh Pham

Huawei's Ascend 950 & DaVinci v3: How China Built a Competitive AI Chip Without EUV

DeepSeek just ordered 160,000 Huawei Ascend 950DT chips: a chip built on a DUV-only process, with self-developed HBM and a homegrown interconnect, because export controls left no other choice. Here’s how the thing actually works, and where it still falls short.

September 7, 2026 · 24 min · Hanh Pham

Designing an Order Workflow: Putting the Patterns Together

Boundaries, communication styles, technology, and sagas all sound reasonable in isolation. Here’s what it looks like to actually apply all four decisions to one real workflow, in order.

September 3, 2026 · 7 min · Hanh Pham

When Two-Phase Commit Isn't the Answer: Sagas for Microservice Transactions

Splitting a monolith means splitting its database transactions too. The instinct is to reach for a distributed transaction. Here’s why that instinct is usually wrong, and what to do instead.

September 1, 2026 · 9 min · Hanh Pham

REST, gRPC, GraphQL, or a Broker: Picking Your Communication Tech

The communication style (sync/async, request-response/event-driven) narrows the field. Here’s how the actual technologies stack up once you’re choosing among them.

August 20, 2026 · 9 min · Hanh Pham

Debugging Microservices: Where Did That Request Go?

In a monolith, a stack trace tells you what went wrong. In microservices, you’re grepping across three services’ logs at 2 AM trying to figure out which one lost the request. Here’s how to make that possible instead of painful.

August 15, 2026 · 10 min · Hanh Pham

Versioning Microservices Without Breaking Everyone

In a monolith, renaming a field means updating all callers in one commit. In microservices, consumers upgrade on their own schedule, so your API has to evolve without breaking the ones that haven’t upgraded yet. Here’s how.

August 13, 2026 · 10 min · Hanh Pham