<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <atom:link href="https://piotrbach.com/topics/architecture/rss/" rel="self" type="application/rss+xml" />

        <title>Piotr Bach RSS Feed - Architecture</title>

        <link>https://piotrbach.com/topics/architecture</link>

        <description>Explore software architecture guides on modularity, boundaries, integrations, maintainability and system design for modern .NET and web platforms.</description>

        <pubDate>Wed, 12 Aug 2026 09:19:41 GMT</pubDate>

        <lastBuildDate>Thu, 24 Sep 2026 16:08:50 GMT</lastBuildDate>

        <language>en</language>

        <generator>BachPlatform / Umbraco CMS</generator>

            <item>
                <title>Umbraco Technical Debt: What I Fix, What I Investigate, and What I Leave Alone</title>

                <link>https://piotrbach.com/blog/umbraco-technical-debt/</link>

                <description>Technical debt is not a backlog of everything that could be cleaner. In a mature Umbraco platform, the useful question is economic and operational: what cost does the current design create, what evidence supports it, and what should the team do next?</description>

                <pubDate>Sun, 20 Sep 2026 11:41:13 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/umbraco-technical-debt/</guid>
            </item>
            <item>
                <title>How I Diagnose Slow Umbraco Sites in Production</title>

                <link>https://piotrbach.com/blog/how-to-diagnose-umbraco-performance-problems/</link>

                <description>Performance diagnosis is not a sequence of optimizations. It is an evidence loop: define the symptom, reproduce or observe it, decompose the latency, form a hypothesis, change the smallest useful variable, and verify the original symptom.</description>

                <pubDate>Sun, 20 Sep 2026 09:48:50 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/how-to-diagnose-umbraco-performance-problems/</guid>
            </item>
            <item>
                <title>Why Umbraco Projects Become Expensive: Technical Failure Patterns</title>

                <link>https://piotrbach.com/blog/why-umbraco-projects-become-expensive/</link>

                <description>Umbraco projects rarely become expensive because of one catastrophic decision. Cost grows when content architecture, custom code, data, search, infrastructure, deployments, dependencies, and ownership drift apart. This guide examines the technical failure patterns that make mature Umbraco platforms harder to change, operate, and upgrade. They are not isolated checklist items: several usually reinforce one another, and the visible CMS is often only where the underlying problem surfaces.</description>

                <pubDate>Sat, 22 Aug 2026 20:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/why-umbraco-projects-become-expensive/</guid>
            </item>
            <item>
                <title>ASP.NET Core Architecture: The Decisions That Matter in Production</title>

                <link>https://piotrbach.com/blog/aspnet-core-architecture/</link>

                <description>ASP.NET Core does not force you into one application architecture. That freedom is useful, but it also makes it easy to accumulate layers, abstractions and infrastructure without being clear about the problem each one solves.</description>

                <pubDate>Sat, 22 Aug 2026 10:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/aspnet-core-architecture/</guid>
            </item>
            <item>
                <title>Why Umbraco&#x2019;s Move to ASP.NET Core Changed the CMS</title>

                <link>https://piotrbach.com/blog/why-umbraco-s-move-to-aspnet-core-changed-the-cms/</link>

                <description>Umbraco 9 did more than replace one runtime with another. Moving from .NET Framework to ASP.NET Core changed where Umbraco could run, how projects were structured, how developers extended the CMS, and how Umbraco could follow Microsoft&#x2019;s modern .NET release cycle.</description>

                <pubDate>Sun, 16 Aug 2026 09:34:39 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/why-umbraco-s-move-to-aspnet-core-changed-the-cms/</guid>
            </item>
            <item>
                <title>Defensive Programming in .NET: Principles and Examples</title>

                <link>https://piotrbach.com/blog/defensive-programming-in-dotnet/</link>

                <description>A production-focused guide to designing explicit contracts, handling realistic failures, protecting trust boundaries, and recognizing defensive-programming signals during .NET code reviews and technical audits.</description>

                <pubDate>Sun, 16 Aug 2026 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/defensive-programming-in-dotnet/</guid>
            </item>
            <item>
                <title>How I Audit an Umbraco Project: A Practical Technical Framework</title>

                <link>https://piotrbach.com/blog/how-to-audit-an-umbraco-project/</link>

                <description>An Umbraco project can be stable in production and still be expensive to change, difficult to upgrade, fragile under failure, or dependent on assumptions nobody has written down. A useful audit finds those risks before the next migration, incident or major feature makes them expensive.</description>

                <pubDate>Thu, 28 Nov 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/how-to-audit-an-umbraco-project/</guid>
            </item>
            <item>
                <title>Implementing Async Action Filters in ASP.NET Core</title>

                <link>https://piotrbach.com/blog/implementing-async-action-filters-in-aspnet-core/</link>

                <description>Learn how IAsyncActionFilter works in ASP.NET Core, when to use it, how to short-circuit safely, inject services, and avoid production mistakes.</description>

                <pubDate>Sat, 13 Jan 2024 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/implementing-async-action-filters-in-aspnet-core/</guid>
            </item>
            <item>
                <title>Authenticate WordPress Users from .NET with JWT REST API</title>

                <link>https://piotrbach.com/blog/authenticate-wordpress-users-from-dotnet-with-jwt-rest-api/</link>

                <description>Authenticate an existing WordPress user from a .NET application by sending the user&#x27;s credentials to the JWT Authentication for WP REST API token endpoint. The flow returns a JWT when WordPress accepts the credentials and can be exercised from C# and xUnit.</description>

                <pubDate>Sun, 19 Nov 2023 06:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/authenticate-wordpress-users-from-dotnet-with-jwt-rest-api/</guid>
            </item>
            <item>
                <title>Delete Millions of Rows in SQL Server Safely in Batches</title>

                <link>https://piotrbach.com/blog/mastering-paginated-deletions-in-mssql-tables/</link>

                <description>Large DELETE operations can generate substantial transaction-log activity, increase blocking, and make rollback expensive. This guide shows a production-oriented batch-delete pattern that keeps transactional work bounded and predictable.</description>

                <pubDate>Tue, 15 Sep 2020 03:00:00 GMT</pubDate>

                <dc:creator>Piotr Bach</dc:creator>

                <guid isPermaLink="true">https://piotrbach.com/blog/mastering-paginated-deletions-in-mssql-tables/</guid>
            </item>
    </channel>
</rss>
