<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Architecture on Hanh Pham's Blog</title><link>https://hanhpham.vercel.app/tags/architecture/</link><description>Recent content in Architecture on Hanh Pham's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 02 Oct 2026 14:00:00 +0700</lastBuildDate><atom:link href="https://hanhpham.vercel.app/tags/architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Meta-Learning and the Meta-Human: Building Your Personal AI Cognitive Scaffold</title><link>https://hanhpham.vercel.app/posts/meta-learning-and-meta-cognition-for-engineers/</link><pubDate>Fri, 02 Oct 2026 14:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/meta-learning-and-meta-cognition-for-engineers/</guid><description>We will all soon have AI companions integrated into daily life, but passive users risk severe cognitive atrophy. By grounding our workflow in metacognition, the extended mind, and dynamic scaffolding, meta-humans turn personal AI into a high-leverage learning engine.</description></item><item><title>The Renaissance Developer: Why AI Makes Systems Thinking the Ultimate Moat</title><link>https://hanhpham.vercel.app/posts/the-renaissance-developer/</link><pubDate>Fri, 02 Oct 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/the-renaissance-developer/</guid><description>When generative AI commoditizes syntax into zero-cost token emissions, the developer&amp;rsquo;s moat shifts from typing code to systems synthesis: understanding how a single concurrent change ripples across database row locks, cache lines, and cloud bills.</description></item><item><title>The ISA Is a Contract, Not a Benchmark: What the Instruction Set Still Costs You in 2026</title><link>https://hanhpham.vercel.app/posts/isa-as-a-contract-risc-vs-cisc/</link><pubDate>Thu, 01 Oct 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/isa-as-a-contract-risc-vs-cisc/</guid><description>Four decades of micro-op convergence absorbed the classic textbook differences between RISC and CISC, but the instruction set still bills you in three places you cannot optimize away: memory ordering contracts, frontend silicon budgets, and ecosystem sovereignty.</description></item><item><title>GitOps Reality with ArgoCD: When Declarative State Fights the Database</title><link>https://hanhpham.vercel.app/posts/gitops-argocd-database-migration-reality/</link><pubDate>Wed, 30 Sep 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/gitops-argocd-database-migration-reality/</guid><description>GitOps treats application deployments as stateless Git diffs, but production backends run on stateful databases. Here is why automated Git rollbacks break under schema migrations, and how to decouple delivery safely.</description></item><item><title>Zero-Downtime Kubernetes: Why preStop Sleep 5 Is an Architectural Anti-Pattern</title><link>https://hanhpham.vercel.app/posts/kubernetes-rolling-updates-and-connection-draining/</link><pubDate>Sat, 26 Sep 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/kubernetes-rolling-updates-and-connection-draining/</guid><description>Slapping a five-second sleep into your container lifecycle masks a distributed control plane race condition. Here is how packet routing, EndpointSlice propagation, and application connection draining actually fit together.</description></item><item><title>Terraform State Decomposition: Blast Radius vs The Integration Tax</title><link>https://hanhpham.vercel.app/posts/terraform-blast-radius-and-state-decomposition/</link><pubDate>Thu, 24 Sep 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/terraform-blast-radius-and-state-decomposition/</guid><description>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.</description></item><item><title>Deleting Language from the LLM: Inside TypeSafe's Jev and Decision Models</title><link>https://hanhpham.vercel.app/posts/typesafe-jev-decision-models/</link><pubDate>Tue, 22 Sep 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/typesafe-jev-decision-models/</guid><description>When you force a 70-billion-parameter language model to output &amp;rsquo;true&amp;rsquo; or &amp;lsquo;false&amp;rsquo;, you pay for sequential token decoding, uncalibrated probabilities, and broken JSON. Here is why TypeSafe stripped natural language out of the loop.</description></item><item><title>The Four-Layer AI Coding Stack: Why Your Assistant Fails (and It's Not the Model)</title><link>https://hanhpham.vercel.app/posts/the-four-layer-ai-coding-stack/</link><pubDate>Sat, 19 Sep 2026 09:30:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/the-four-layer-ai-coding-stack/</guid><description>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.</description></item><item><title>Apple M4 vs Huawei Ascend 950: Two Theories of the AI Chip</title><link>https://hanhpham.vercel.app/posts/m4-vs-ascend-950/</link><pubDate>Wed, 09 Sep 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/m4-vs-ascend-950/</guid><description>One is a fixed-function FP16 block hidden inside a laptop chip Apple won&amp;rsquo;t document. The other is a programmable FP4 datacenter engine Huawei ships in 8,192-chip fabrics. Same goal, opposite theses: here&amp;rsquo;s what the M4 family actually is, and what the numbers do and don&amp;rsquo;t mean against the Ascend 950.</description></item><item><title>Huawei's Ascend 950 &amp; DaVinci v3: How China Built a Competitive AI Chip Without EUV</title><link>https://hanhpham.vercel.app/posts/huawei-ascend-950-davinci-v3/</link><pubDate>Mon, 07 Sep 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/huawei-ascend-950-davinci-v3/</guid><description>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&amp;rsquo;s how the thing actually works, and where it still falls short.</description></item><item><title>Designing an Order Workflow: Putting the Patterns Together</title><link>https://hanhpham.vercel.app/posts/microservices-designing-an-order-workflow/</link><pubDate>Thu, 03 Sep 2026 09:30:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-designing-an-order-workflow/</guid><description>Boundaries, communication styles, technology, and sagas all sound reasonable in isolation. Here&amp;rsquo;s what it looks like to actually apply all four decisions to one real workflow, in order.</description></item><item><title>When Two-Phase Commit Isn't the Answer: Sagas for Microservice Transactions</title><link>https://hanhpham.vercel.app/posts/microservices-sagas-vs-two-phase-commit/</link><pubDate>Tue, 01 Sep 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-sagas-vs-two-phase-commit/</guid><description>Splitting a monolith means splitting its database transactions too. The instinct is to reach for a distributed transaction. Here&amp;rsquo;s why that instinct is usually wrong, and what to do instead.</description></item><item><title>REST, gRPC, GraphQL, or a Broker: Picking Your Communication Tech</title><link>https://hanhpham.vercel.app/posts/microservices-picking-communication-tech/</link><pubDate>Thu, 20 Aug 2026 09:30:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-picking-communication-tech/</guid><description>The communication style (sync/async, request-response/event-driven) narrows the field. Here&amp;rsquo;s how the actual technologies stack up once you&amp;rsquo;re choosing among them.</description></item><item><title>Debugging Microservices: Where Did That Request Go?</title><link>https://hanhpham.vercel.app/posts/debugging-microservices-where-did-that-request-go/</link><pubDate>Sat, 15 Aug 2026 10:30:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/debugging-microservices-where-did-that-request-go/</guid><description>In a monolith, a stack trace tells you what went wrong. In microservices, you&amp;rsquo;re grepping across three services&amp;rsquo; logs at 2 AM trying to figure out which one lost the request. Here&amp;rsquo;s how to make that possible instead of painful.</description></item><item><title>Versioning Microservices Without Breaking Everyone</title><link>https://hanhpham.vercel.app/posts/microservices-versioning-without-breaking-everyone/</link><pubDate>Thu, 13 Aug 2026 15:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-versioning-without-breaking-everyone/</guid><description>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&amp;rsquo;t upgraded yet. Here&amp;rsquo;s how.</description></item><item><title>Running Microservices Locally Without Docker Compose Hell</title><link>https://hanhpham.vercel.app/posts/microservices-local-dev-without-docker-compose-hell/</link><pubDate>Tue, 11 Aug 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-local-dev-without-docker-compose-hell/</guid><description>You split the monolith into twelve services. Now a new developer&amp;rsquo;s first week is spent getting Docker Compose to run all twelve on their laptop, and half of them crash because of a port conflict. Here&amp;rsquo;s how to make local development work without the pain.</description></item><item><title>Deploying Microservices Without the Fear</title><link>https://hanhpham.vercel.app/posts/microservices-deploying-without-the-fear/</link><pubDate>Sat, 08 Aug 2026 14:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-deploying-without-the-fear/</guid><description>In a monolith, deploy means pushing one thing. In microservices, every service deploys independently, which is the whole point, until you realize that &amp;lsquo;independently&amp;rsquo; also means &amp;lsquo;without knowing what the other services are doing right now.&amp;rsquo;</description></item><item><title>Database Per Service: The Pattern That's Harder Than It Sounds</title><link>https://hanhpham.vercel.app/posts/microservices-database-per-service/</link><pubDate>Thu, 06 Aug 2026 09:30:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-database-per-service/</guid><description>Each service owns its database. That&amp;rsquo;s the rule. But when a report needs data from four services, or a customer wants to see their complete order history, you&amp;rsquo;ve got a query problem that a single SELECT can&amp;rsquo;t solve. Here&amp;rsquo;s how to handle it.</description></item><item><title>Service Mesh: When You Actually Need One (and When You Don't)</title><link>https://hanhpham.vercel.app/posts/microservices-service-mesh-when-you-actually-need-one/</link><pubDate>Tue, 04 Aug 2026 11:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-service-mesh-when-you-actually-need-one/</guid><description>A service mesh gives you mTLS, traffic management, and observability without changing application code. It also gives you another piece of infrastructure to operate, debug, and explain to new hires. Here&amp;rsquo;s how to tell whether the trade-off is worth it.</description></item><item><title>The Five Ways Microservices Talk to Each Other</title><link>https://hanhpham.vercel.app/posts/microservices-five-ways-to-talk/</link><pubDate>Thu, 30 Jul 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-five-ways-to-talk/</guid><description>Before picking REST, gRPC, or Kafka, you need to answer a more basic question: does this interaction block, and does the caller expect an answer? Get that wrong and no technology choice saves you.</description></item><item><title>What Actually Makes a Good Microservice Boundary</title><link>https://hanhpham.vercel.app/posts/microservices-boundaries-coupling-cohesion/</link><pubDate>Tue, 28 Jul 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/microservices-boundaries-coupling-cohesion/</guid><description>Before you draw a single service boundary, you need a vocabulary for why some splits age well and others turn into a distributed monolith. Coupling and cohesion are that vocabulary.</description></item><item><title>Should You Even Use Microservices?</title><link>https://hanhpham.vercel.app/posts/should-you-even-use-microservices/</link><pubDate>Sat, 25 Jul 2026 10:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/should-you-even-use-microservices/</guid><description>Microservices are a solution to organizational scaling problems, not a technology choice. Here&amp;rsquo;s how to tell whether you actually have the problem they solve, before you pay the cost.</description></item></channel></rss>