<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Lens of Charlie</title><description>An engineering journal about .NET, Azure, Rust, algorithms, and building thoughtful software.</description><link>https://cuthanhcam.pages.dev/</link><item><title>How Do You Know They Are Wrong?</title><link>https://cuthanhcam.pages.dev/narratives/how-do-you-know-they-are-wrong/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/how-do-you-know-they-are-wrong/</guid><description>Trước khi phán xét code hay quyết định của người khác, mình muốn hiểu bối cảnh, giới hạn và lý do phía sau.</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate></item><item><title>The Culture We Learn</title><link>https://cuthanhcam.pages.dev/narratives/the-culture-we-learn/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/the-culture-we-learn/</guid><description>Văn hóa nơi làm việc âm thầm dạy mình cách hành xử, và câu hỏi là mình đang trở thành người như thế nào.</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate></item><item><title>A Folder Is Not a URL</title><link>https://cuthanhcam.pages.dev/narratives/a-folder-is-not-a-url/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/a-folder-is-not-a-url/</guid><description>A short note on separating editorial organization from public identity so content can move without breaking the web around it.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Async/Await Is Not a Thread</title><link>https://cuthanhcam.pages.dev/narratives/async-await-is-not-a-thread/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/async-await-is-not-a-thread/</guid><description>A mental model for C# async code that separates operations, tasks, continuations, threads, and concurrency.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Big O Is a Model, Not a Stopwatch</title><link>https://cuthanhcam.pages.dev/narratives/big-o-is-a-model-not-a-stopwatch/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/big-o-is-a-model-not-a-stopwatch/</guid><description>How asymptotic analysis helps predict growth without pretending to replace measurement, representation, or workload evidence.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>DDD Is Not Folder Structure</title><link>https://cuthanhcam.pages.dev/narratives/ddd-is-not-folder-structure/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/ddd-is-not-folder-structure/</guid><description>Why domain-driven design begins with language and boundaries rather than Entities, Services, and Repositories folders.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Debugging Is a Form of Scientific Thinking</title><link>https://cuthanhcam.pages.dev/narratives/debugging-is-a-form-of-scientific-thinking/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/debugging-is-a-form-of-scientific-thinking/</guid><description>A disciplined debugging loop built from observations, hypotheses, controlled tests, and durable decisions.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Ownership Is Not Only About Memory Management</title><link>https://cuthanhcam.pages.dev/narratives/ownership-is-not-about-memory-management/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/ownership-is-not-about-memory-management/</guid><description>A C# developer&apos;s model of Rust ownership as responsibility for values, resources, mutation, and concurrency.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>RBAC Is Simple Until Your Product Isn&apos;t</title><link>https://cuthanhcam.pages.dev/narratives/rbac-is-simple-until-your-product-isnt/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/rbac-is-simple-until-your-product-isnt/</guid><description>How roles become an authorization system involving tenants, resources, context, explanation, and auditability.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>What Happens After an HTTP Request Reaches ASP.NET Core</title><link>https://cuthanhcam.pages.dev/narratives/what-happens-after-an-http-request-reaches-aspnet-core/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/what-happens-after-an-http-request-reaches-aspnet-core/</guid><description>A request-lifecycle model connecting the server, middleware order, endpoint execution, cancellation, and the response path.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Why Lens of Charlie Does Not Have a Database</title><link>https://cuthanhcam.pages.dev/narratives/why-lens-of-charlie-does-not-have-a-database/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/why-lens-of-charlie-does-not-have-a-database/</guid><description>A static-first decision record about content ownership, build-time indexes, and the threshold for adding mutable infrastructure.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Composition Is About Change Boundaries</title><link>https://cuthanhcam.pages.dev/narratives/composition-is-about-change-boundaries/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/composition-is-about-change-boundaries/</guid><description>A concrete C# example of using invariants, policy interfaces, and tests to make change explicit without turning every class into an abstraction.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Graph Algorithms Are Contracts, Not Recipes</title><link>https://cuthanhcam.pages.dev/narratives/graph-algorithms-are-contracts-not-recipes/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/graph-algorithms-are-contracts-not-recipes/</guid><description>How Dijkstra, topological sorting, Tarjan&apos;s SCC algorithm, and Union-Find become easier to reason about when their contracts and invariants are explicit.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Building Lens of Charlie</title><link>https://cuthanhcam.pages.dev/narratives/building-lens-of-charlie/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/building-lens-of-charlie/</guid><description>Why this site starts with portable content and a deliberately small architecture.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Becoming a Better Software Engineer Through Deliberate Practice</title><link>https://cuthanhcam.pages.dev/narratives/becoming-a-better-software-engineer/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/becoming-a-better-software-engineer/</guid><description>A sustainable learning system built around feedback, mental models, real projects, writing, and reflection.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Result Is a Control-Flow Contract</title><link>https://cuthanhcam.pages.dev/narratives/result-is-a-control-flow-contract/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/result-is-a-control-flow-contract/</guid><description>A practical Rust mental model for recoverable failure, the question behind panic, and what the question-mark operator actually preserves.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>An Authorization Decision Is More Than a Boolean</title><link>https://cuthanhcam.pages.dev/narratives/an-authorization-decision-is-more-than-a-boolean/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/an-authorization-decision-is-more-than-a-boolean/</guid><description>A source-guided look at deterministic precedence, reason codes, traces, tenant scope, and audit boundaries in a centralized authorization engine.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate></item><item><title>Operating a .NET Service on Azure</title><link>https://cuthanhcam.pages.dev/narratives/operating-dotnet-on-azure/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/operating-dotnet-on-azure/</guid><description>A production-minded checklist for identity, configuration, observability, resilience, deployment, and cost.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate></item><item><title>Design Patterns as Conversations, Not Conclusions</title><link>https://cuthanhcam.pages.dev/narratives/design-patterns-as-conversations/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/design-patterns-as-conversations/</guid><description>A practical guide to using patterns as shared engineering vocabulary without turning software into a catalogue of abstractions.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Competitive Programming Without Losing the Engineer</title><link>https://cuthanhcam.pages.dev/narratives/competitive-programming-without-losing-the-engineer/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/competitive-programming-without-losing-the-engineer/</guid><description>How to gain speed, precision, and algorithmic range without carrying contest shortcuts into production software.</description><pubDate>Sun, 08 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Between C# and Rust: Two Ways of Seeing a System</title><link>https://cuthanhcam.pages.dev/narratives/csharp-by-day-rust-by-night/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/csharp-by-day-rust-by-night/</guid><description>Why learning Rust is not an escape from .NET, but another way to sharpen systems thinking and bring better questions back to everyday engineering.</description><pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Learning .NET from Language Fundamentals to Production Systems</title><link>https://cuthanhcam.pages.dev/narratives/learning-dotnet-from-language-to-production/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/learning-dotnet-from-language-to-production/</guid><description>A curriculum for connecting C# syntax, runtime behavior, backend architecture, and the realities of shipping software.</description><pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Research as an Engineering Habit</title><link>https://cuthanhcam.pages.dev/narratives/research-as-an-engineering-habit/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/research-as-an-engineering-habit/</guid><description>A practical method for moving from vague curiosity to questions, experiments, evidence, and decisions.</description><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Building Under Pressure: Lessons from Competitions and Hackathons</title><link>https://cuthanhcam.pages.dev/narratives/building-under-pressure/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/building-under-pressure/</guid><description>What time-boxed building teaches about scope, teamwork, evidence, and the difference between a demo and a durable product.</description><pubDate>Sun, 06 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Why I Still Study Data Structures and Algorithms</title><link>https://cuthanhcam.pages.dev/narratives/why-i-still-study-dsa/</link><guid isPermaLink="true">https://cuthanhcam.pages.dev/narratives/why-i-still-study-dsa/</guid><description>Competitive programming is not production engineering, but it is a valuable laboratory for precise reasoning under constraints.</description><pubDate>Sun, 18 May 2025 00:00:00 GMT</pubDate></item></channel></rss>