<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tô Gia Bảo — Writing</title><description>Technical writing on data systems, software design and applied AI.</description><link>https://tgblab.io.vn/</link><language>en-us</language><item><title>Start With the Decision, Not the Stack</title><link>https://tgblab.io.vn/writing/start-with-the-decision-not-the-stack/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/start-with-the-decision-not-the-stack/</guid><description>A production data architecture starts with the decision it must support. Define the output grain, freshness, correctness and repair promise before choosing the tools.</description><pubDate>Wed, 09 Sep 2026 02:00:00 GMT</pubDate><category>Data systems</category><category>Cloud infrastructure</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Production Must Confirm the Release</title><link>https://tgblab.io.vn/writing/production-must-confirm-the-release/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/production-must-confirm-the-release/</guid><description>A rollout becomes the current release only when production evidence matches the intended artifact, configuration, schema and functional path.</description><pubDate>Thu, 13 Aug 2026 11:15:00 GMT</pubDate><category>Cloud infrastructure</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Deployment Is a State Transition</title><link>https://tgblab.io.vn/writing/deployment-is-a-state-transition/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/deployment-is-a-state-transition/</guid><description>A production change is safer when provisioning, schema compatibility, rollout and verification move through named states with explicit stop conditions.</description><pubDate>Thu, 13 Aug 2026 09:15:00 GMT</pubDate><category>Cloud infrastructure</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>A Container Needs a Runtime Contract</title><link>https://tgblab.io.vn/writing/a-container-needs-a-runtime-contract/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/a-container-needs-a-runtime-contract/</guid><description>A stable image becomes a reliable service only when configuration, secrets, state, probes and shutdown behaviour have explicit owners.</description><pubDate>Thu, 13 Aug 2026 07:15:00 GMT</pubDate><category>Cloud infrastructure</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>The Image Is the Release</title><link>https://tgblab.io.vn/writing/the-image-is-the-release/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/the-image-is-the-release/</guid><description>Build once, name the result by digest and let environments configure the same artifact instead of quietly creating different releases.</description><pubDate>Thu, 13 Aug 2026 04:15:00 GMT</pubDate><category>Cloud infrastructure</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Proving a Pipeline Is Replayable</title><link>https://tgblab.io.vn/writing/proving-a-pipeline-is-replayable/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/proving-a-pipeline-is-replayable/</guid><description>Replayability becomes credible when controlled failures produce independently observed evidence that named invariants still hold.</description><pubDate>Wed, 12 Aug 2026 08:18:00 GMT</pubDate><category>Data systems</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Validation Is Not a Publish Protocol</title><link>https://tgblab.io.vn/writing/validation-is-not-a-publish-protocol/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/validation-is-not-a-publish-protocol/</guid><description>Passing checks matters only when the evidence, candidate and reader-visible commit belong to the same revision.</description><pubDate>Wed, 12 Aug 2026 07:25:00 GMT</pubDate><category>Data systems</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Late Data Without Endless Reprocessing</title><link>https://tgblab.io.vn/writing/late-data-without-endless-reprocessing/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/late-data-without-endless-reprocessing/</guid><description>A correction window should bound automatic work without turning older truth into dropped data or a full-history rebuild.</description><pubDate>Wed, 12 Aug 2026 06:45:00 GMT</pubDate><category>Data systems</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Idempotent Writes Are Not Replay Safety</title><link>https://tgblab.io.vn/writing/idempotent-writes-are-not-replay-safety/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/idempotent-writes-are-not-replay-safety/</guid><description>A table can converge perfectly while the workflow around it still repeats the wrong effect.</description><pubDate>Wed, 12 Aug 2026 05:30:00 GMT</pubDate><category>Data systems</category><category>Software design</category><author>baokdl2226@gmail.com</author></item><item><title>Backfills Are a Data Model Problem, Not an Airflow Feature</title><link>https://tgblab.io.vn/writing/backfills-are-a-data-model-problem/</link><guid isPermaLink="true">https://tgblab.io.vn/writing/backfills-are-a-data-model-problem/</guid><description>A scheduler can recreate yesterday&apos;s run. Only the data model can make that run safe to publish again.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><category>Data systems</category><category>Software design</category><author>baokdl2226@gmail.com</author></item></channel></rss>