<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog</title><description>A blog about technology, programming, and life.</description><link>https://thienlb.io.vn/</link><item><title>HTTP and CORS Basics</title><link>https://thienlb.io.vn/en/posts/backend-notes/01-http-and-cors/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/backend-notes/01-http-and-cors/</guid><description>Backend notes on HTTP from its core principles — messages, methods, status codes, caching, versions — and on CORS, the browser mechanism built on top of it.</description><pubDate>Tue, 06 Oct 2026 02:00:00 GMT</pubDate></item><item><title>Non-Functional Testing</title><link>https://thienlb.io.vn/en/posts/testing-principles/03-non-functional-testing/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/testing-principles/03-non-functional-testing/</guid><description>Functionally correct software can still fail in production. Performance, data volume, stability, reliability, scalability and security each answer a different question.</description><pubDate>Sun, 20 Sep 2026 02:00:00 GMT</pubDate></item><item><title>Software Component Integration Testing</title><link>https://thienlb.io.vn/en/posts/testing-principles/02-software-component-integration-testing/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/testing-principles/02-software-component-integration-testing/</guid><description>Functional Testing: Integration tests are not bigger unit tests. Black box, walking skeleton, Gherkin, Docker Compose — and which risks belong to which layer of testing.</description><pubDate>Sat, 19 Sep 2026 02:30:00 GMT</pubDate></item><item><title>A Practical View of Unit Testing, TDD, and Specification</title><link>https://thienlb.io.vn/en/posts/testing-principles/01-functional-testing-unit-test-tdd-and-specification/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/testing-principles/01-functional-testing-unit-test-tdd-and-specification/</guid><description>Three test layers and the pyramid, why 100% coverage still ships bugs, and how TDD, BDD and USDD differ in workflow but share one idea: define behaviour first.</description><pubDate>Sat, 19 Sep 2026 02:00:00 GMT</pubDate></item><item><title>Wrapping and Connecting Objects</title><link>https://thienlb.io.vn/en/posts/design-patterns/03-wrapping-and-connecting-objects/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/design-patterns/03-wrapping-and-connecting-objects/</guid><description>Adapter, Facade, Proxy and Decorator look almost identical in code. This post puts the comparison table first, then goes through each one, plus Composite, Bridge and Flyweight.</description><pubDate>Sat, 05 Sep 2026 02:10:00 GMT</pubDate></item><item><title>Design Patterns for Creating Objects</title><link>https://thienlb.io.vn/en/posts/design-patterns/02-design-pattern-for-creating-objects/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/design-patterns/02-design-pattern-for-creating-objects/</guid><description>An introduction to common Design Patterns for creating and initializing objects, and how to recognize when to use them.</description><pubDate>Sat, 05 Sep 2026 02:05:00 GMT</pubDate></item><item><title>Patterns and the Principles</title><link>https://thienlb.io.vn/en/posts/design-patterns/01-design-patterns-and-principles/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/design-patterns/01-design-patterns-and-principles/</guid><description>Most pattern guides teach you what a pattern is. The harder half is knowing when applying one makes your code worse.</description><pubDate>Sat, 05 Sep 2026 02:00:00 GMT</pubDate></item><item><title>Using Logging to Build Self-Improving Systems with AI</title><link>https://thienlb.io.vn/en/posts/software-engineering/logging-system/01-logging-systems-overview-and-design/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/software-engineering/logging-system/01-logging-systems-overview-and-design/</guid><description>Logs have traditionally been created for developers to read and debug. But what if AI could understand what is happening in those logs too? A well-designed logging system can become the foundation for AI to investigate issues, understand the system, and help drive continuous improvement.</description><pubDate>Thu, 03 Sep 2026 03:00:00 GMT</pubDate></item><item><title>Do we really need extra layers to save tokens?</title><link>https://thienlb.io.vn/en/posts/ai-coding/01-do-we-need-extra-layers-to-save-tokens/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/ai-coding/01-do-we-need-extra-layers-to-save-tokens/</guid><description>More and more tools claim they cut token usage by 60–90% on AI coding tools. Before putting another layer between you and the tool, there are a few things worth weighing: output quality, security, and where those numbers actually came from.</description><pubDate>Tue, 25 Aug 2026 03:00:00 GMT</pubDate></item><item><title>My journey into Software Engineering</title><link>https://thienlb.io.vn/en/posts/chuyen-nghe-go-phim/01-my-journey-into-software-engineering/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/chuyen-nghe-go-phim/01-my-journey-into-software-engineering/</guid><description>Four years of Business Administration, six months in Sales, then realising I belonged on the technical side — and deciding to learn Software Engineering again from close to zero.</description><pubDate>Sat, 22 Aug 2026 03:00:00 GMT</pubDate></item><item><title>AI writes the code — what&apos;s left for Software Engineers?</title><link>https://thienlb.io.vn/en/posts/software-engineering/ai-assisted/01-mindsets-for-software-engineers-in-ai-era/</link><guid isPermaLink="true">https://thienlb.io.vn/en/posts/software-engineering/ai-assisted/01-mindsets-for-software-engineers-in-ai-era/</guid><description>When implementation becomes fast and cheap, the value of a Software Engineer comes from how they think, ask the right questions, and make decisions — not how much code they can write.</description><pubDate>Wed, 08 Jul 2026 03:00:00 GMT</pubDate></item></channel></rss>