<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Articles (English)</title><description>Articles by Bruno Souza, in English.</description><link>https://brunosouzas.com/</link><language>en</language><atom:link href="https://brunosouzas.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>Integration patterns in Mule: you already use them, you just don&apos;t know their names</title><link>https://brunosouzas.com/blog/integration-patterns-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/integration-patterns-in-mulesoft/</guid><description>Scatter-Gather, Choice, For Each and the Anypoint MQ dead letter queue come from the book Enterprise Integration Patterns. Knowing the name of the pattern shows the problem the component solves, what it costs and when you can do without it.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/integration-patterns-card.Cldx_eHl.svg" medium="image" type="image/svg+xml"/></item><item><title>Write in Obsidian, Publish on Your Own Site</title><link>https://brunosouzas.com/blog/write-in-obsidian-publish-on-your-site/</link><guid isPermaLink="true">https://brunosouzas.com/blog/write-in-obsidian-publish-on-your-site/</guid><description>A folder in your vault becomes the blog. The note&apos;s name becomes the address, the top of the note becomes the page, and the site refuses anything that is wrong. Free, with a ready-made Astro template.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/write-in-obsidian-publish-on-your-site-card.BabIZBQA.svg" medium="image" type="image/svg+xml"/></item><item><title>From a one-line request to a living spec: spec-driven development in practice</title><link>https://brunosouzas.com/blog/spec-driven-development-in-practice/</link><guid isPermaLink="true">https://brunosouzas.com/blog/spec-driven-development-in-practice/</guid><description>A short request, a Mule 4 API and OpenSpec show how a spec reviewed before any code reveals what the request forgot and catches a breaking change.</description><pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/spec-driven-development-card.Ck6wHs6s.svg" medium="image" type="image/svg+xml"/></item><item><title>What Remains for Software Developers When AI Writes Code?</title><link>https://brunosouzas.com/blog/ai-writes-code/</link><guid isPermaLink="true">https://brunosouzas.com/blog/ai-writes-code/</guid><description>What the research says about AI and software development, and why I think fundamentals and review are still the job.</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/ai-writes-code-card.CIUWYI0q.svg" medium="image" type="image/svg+xml"/></item><item><title>When AI Writes the Code, the Engineer&apos;s Work Moves</title><link>https://brunosouzas.com/blog/where-the-work-moves/</link><guid isPermaLink="true">https://brunosouzas.com/blog/where-the-work-moves/</guid><description>A plausible 200 response, an inactive customer and the rule missing from the requirement.</description><pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/where-the-work-moves-card.DMheR9Ln.svg" medium="image" type="image/svg+xml"/></item><item><title>Circuit Breaker in MuleSoft: When Retry Makes Things Worse</title><link>https://brunosouzas.com/blog/circuit-breaker-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/circuit-breaker-in-mulesoft/</guid><description>Retry alone turns a degraded backend into an integration outage. A public, measured, tested plugin shows the difference — and what changes once you add replicas on CloudHub 2.0.</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/circuit-breaker-card.s1gNBXTa.svg" medium="image" type="image/svg+xml"/></item><item><title>Dependency Inversion in MuleSoft: business flows that own their abstractions</title><link>https://brunosouzas.com/blog/dip-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/dip-in-mulesoft/</guid><description>DIP is not externalised configuration. It is the business flow defining the model it needs and adapters conforming to it — shown in Mule 4 with swappable ERP and in-memory implementations.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/dip-card.BwfQT55c.svg" medium="image" type="image/svg+xml"/></item><item><title>Interface Segregation in MuleSoft: an API for each consumer</title><link>https://brunosouzas.com/blog/isp-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/isp-in-mulesoft/</guid><description>One order endpoint that returns everything to everyone, split into consumer-shaped interfaces — and why the strongest argument for ISP in integration is data exposure.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/isp-card.DJ8uLjj2.svg" medium="image" type="image/svg+xml"/></item><item><title>Liskov Substitution in MuleSoft: implementations that can replace each other</title><link>https://brunosouzas.com/blog/lsp-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/lsp-in-mulesoft/</guid><description>Mule has no inheritance, but LSP still bites: two adapters behind one contract, where the new one keeps the field names and quietly changes their meaning.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/lsp-card.Dp_josdG.svg" medium="image" type="image/svg+xml"/></item><item><title>Deploying to CloudHub 2.0 from Azure Pipelines: build once, approve, verify</title><link>https://brunosouzas.com/blog/mulesoft-cloudhub-deploy-approvals/</link><guid isPermaLink="true">https://brunosouzas.com/blog/mulesoft-cloudhub-deploy-approvals/</guid><description>Promote the same Exchange artifact through test, uat and prod on CloudHub 2.0, with approvals on Azure DevOps environments and a smoke test after every deployment.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/cloudhub-deploy-card.DG0EGsYg.svg" medium="image" type="image/svg+xml"/></item><item><title>GitFlow for MuleSoft: branch rules a pipeline can act on</title><link>https://brunosouzas.com/blog/mulesoft-gitflow/</link><guid isPermaLink="true">https://brunosouzas.com/blog/mulesoft-gitflow/</guid><description>Why GitFlow still fits scheduled MuleSoft releases, where it doesn&apos;t, and how to turn branch names into pipeline behaviour — with a working reference project.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/gitflow-card.DKRC41eo.svg" medium="image" type="image/svg+xml"/></item><item><title>Versioning Mule applications with the Maven release plugin in Azure Pipelines</title><link>https://brunosouzas.com/blog/mulesoft-maven-release/</link><guid isPermaLink="true">https://brunosouzas.com/blog/mulesoft-maven-release/</guid><description>release:prepare and release:perform explained step by step, running inside Azure Pipelines — detached HEAD, pushing with the pipeline token, [skip ci] and branch protection.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/maven-release-card.Cuw5eEvY.svg" medium="image" type="image/svg+xml"/></item><item><title>Azure Pipelines templates for MuleSoft: one delivery flow, many applications</title><link>https://brunosouzas.com/blog/mulesoft-pipeline-templates/</link><guid isPermaLink="true">https://brunosouzas.com/blog/mulesoft-pipeline-templates/</guid><description>How to structure versioned Azure Pipelines templates for Mule applications — stages, jobs and steps, secrets without secure files, and why MUnit is left out of a public pipeline.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/pipeline-templates-card.Cmumzan2.svg" medium="image" type="image/svg+xml"/></item><item><title>Open/Closed in MuleSoft: extending without editing, and what it costs</title><link>https://brunosouzas.com/blog/ocp-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/ocp-in-mulesoft/</guid><description>Adding a payment method to a Mule 4 app without touching the router — with config-driven dynamic routing, MUnit evidence, and an honest look at the trade-offs.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/ocp-card.CGyrPpfJ.svg" medium="image" type="image/svg+xml"/></item><item><title>SOLID in MuleSoft: what carries over from object-oriented design, and what doesn&apos;t</title><link>https://brunosouzas.com/blog/solid-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/solid-in-mulesoft/</guid><description>A code-backed look at the five SOLID principles in Mule 4 — where each one fits integration work, where it needs translating, and where it stops being useful.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/solid-intro-card.BYSKpXVF.svg" medium="image" type="image/svg+xml"/></item><item><title>Single Responsibility in MuleSoft: one reason to change per flow</title><link>https://brunosouzas.com/blog/srp-in-mulesoft/</link><guid isPermaLink="true">https://brunosouzas.com/blog/srp-in-mulesoft/</guid><description>SRP is not about small flows. It is about grouping logic by the reason it changes — shown with a Mule 4 order flow before and after, with MUnit tests.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><media:content url="https://brunosouzas.com/_astro/srp-card.D0SFfN0p.svg" medium="image" type="image/svg+xml"/></item></channel></rss>