<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Matias Navarro-Carter | Engineering &amp; Architecture</title><description>Thoughts on software architecture, PHP, design patterns, and building maintainable systems.</description><link>https://mnavarro.dev/</link><item><title>A CRUD Reality</title><link>https://mnavarro.dev/blog/a-crud-reality/</link><guid isPermaLink="true">https://mnavarro.dev/blog/a-crud-reality/</guid><description>The &apos;U&apos; in CRUD is lying to you—updates don&apos;t tell the story, domain events do.</description><pubDate>Thu, 03 Aug 2023 00:00:00 GMT</pubDate></item><item><title>Adding is Better Than Changing</title><link>https://mnavarro.dev/blog/adding-is-better-than-changing/</link><guid isPermaLink="true">https://mnavarro.dev/blog/adding-is-better-than-changing/</guid><description>Ship new features without touching a single line of existing code—composition beats modification every time.</description><pubDate>Fri, 03 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Codebases are Pets, Not Cattle</title><link>https://mnavarro.dev/blog/codebases-are-pets-not-cattle/</link><guid isPermaLink="true">https://mnavarro.dev/blog/codebases-are-pets-not-cattle/</guid><description>Your services can be disposable, but your source code deserves love, care, and individual attention.</description><pubDate>Fri, 11 Nov 2022 00:00:00 GMT</pubDate></item><item><title>Considerations before jumping into Microservices</title><link>https://mnavarro.dev/blog/considerations-before-jumping-into-microservices/</link><guid isPermaLink="true">https://mnavarro.dev/blog/considerations-before-jumping-into-microservices/</guid><description>Microservices can save you or sink you—estimate the cost before you build the tower.</description><pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate></item><item><title>Dealing With Imposter Syndrome</title><link>https://mnavarro.dev/blog/dealing-with-imposter-syndrome/</link><guid isPermaLink="true">https://mnavarro.dev/blog/dealing-with-imposter-syndrome/</guid><description>No one is adequate for their role, and that&apos;s okay—break it until you make it, one experiment at a time.</description><pubDate>Mon, 13 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Greed: &quot;Grabbing Every Relationship You Can&quot;</title><link>https://mnavarro.dev/blog/doctrine-sins-greed/</link><guid isPermaLink="true">https://mnavarro.dev/blog/doctrine-sins-greed/</guid><description>Just because you can map it, doesn’t mean you should. Greedy relationships bloat your model and your queries.</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Sloth: &quot;Lazy Entities, Lazier Minds&quot;</title><link>https://mnavarro.dev/blog/doctrine-sins-sloth/</link><guid isPermaLink="true">https://mnavarro.dev/blog/doctrine-sins-sloth/</guid><description>Turning your entities into empty vessels with no behavior is the ORM equivalent of spiritual apathy</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Efficient Data Crunching in PHP</title><link>https://mnavarro.dev/blog/efficient-data-crunching-in-php/</link><guid isPermaLink="true">https://mnavarro.dev/blog/efficient-data-crunching-in-php/</guid><description>Four rules I try to sacredly adhere to when streaming data for reporting purposes in PHP.</description><pubDate>Tue, 10 Dec 2019 00:00:00 GMT</pubDate></item><item><title>When Event Sourcing is Ignored: The Case of Chile&apos;s Open Finance Directory</title><link>https://mnavarro.dev/blog/event-sourcing-sfa/</link><guid isPermaLink="true">https://mnavarro.dev/blog/event-sourcing-sfa/</guid><description>Good System design not always thinks about the internals of a system, but also its consumers.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Globals are bad, but!</title><link>https://mnavarro.dev/blog/globals-are-bad-but/</link><guid isPermaLink="true">https://mnavarro.dev/blog/globals-are-bad-but/</guid><description>Singletons are convenient until you try to test them—but they have their place in bootstrapping code where coupling is expected.</description><pubDate>Sat, 05 Nov 2022 00:00:00 GMT</pubDate></item><item><title>HELM vs Kustomize</title><link>https://mnavarro.dev/blog/helm-vs-kustomize/</link><guid isPermaLink="true">https://mnavarro.dev/blog/helm-vs-kustomize/</guid><description>HELM&apos;s templating creates more problems than it solves. Kustomize&apos;s composition approach is simpler, more flexible, and natively supported by kubectl.</description><pubDate>Sun, 21 Aug 2022 00:00:00 GMT</pubDate></item><item><title>Hiring in the Age of AI</title><link>https://mnavarro.dev/blog/hiring-in-the-age-of-ai/</link><guid isPermaLink="true">https://mnavarro.dev/blog/hiring-in-the-age-of-ai/</guid><description>Thoughts on how to obtain the best talent quickly in a market where AI is shaping the way we work and the skills we need.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Interfacing is Decoupling</title><link>https://mnavarro.dev/blog/interfacing-is-decoupling/</link><guid isPermaLink="true">https://mnavarro.dev/blog/interfacing-is-decoupling/</guid><description>Interfaces are like electrical outlets - they remove complexity and make components easily swappable. Learn how to use interfaces to decouple your software components.</description><pubDate>Thu, 30 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Isolating Your Enemy Wins You The War</title><link>https://mnavarro.dev/blog/isolating-your-enemy-wins-you-the-war/</link><guid isPermaLink="true">https://mnavarro.dev/blog/isolating-your-enemy-wins-you-the-war/</guid><description>Change is the enemy of software. Win the war by isolating what changes behind abstractions—the true meaning of Single Responsibility.</description><pubDate>Fri, 27 Jan 2023 00:00:00 GMT</pubDate></item><item><title>It&apos;s About Time</title><link>https://mnavarro.dev/blog/its-about-time/</link><guid isPermaLink="true">https://mnavarro.dev/blog/its-about-time/</guid><description>A series of facts that every developer should know about time, timezones and clocks.</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Leaks Can Become Floods</title><link>https://mnavarro.dev/blog/leaks-can-become-floods/</link><guid isPermaLink="true">https://mnavarro.dev/blog/leaks-can-become-floods/</guid><description>Small leaks in your abstractions can flood your entire codebase. Design interfaces that hide implementation details, or pay the price later.</description><pubDate>Wed, 15 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Messaging Guarantees</title><link>https://mnavarro.dev/blog/messaging-guarantees/</link><guid isPermaLink="true">https://mnavarro.dev/blog/messaging-guarantees/</guid><description>Exactly-once delivery is impossible—learn why the Two Generals can&apos;t agree, and how idempotency saves the day.</description><pubDate>Tue, 22 Nov 2022 00:00:00 GMT</pubDate></item><item><title>My Top 3 PHP Naming Pet Peeves</title><link>https://mnavarro.dev/blog/my-top-3-php-naming-pet-peeves/</link><guid isPermaLink="true">https://mnavarro.dev/blog/my-top-3-php-naming-pet-peeves/</guid><description>Stop polluting your code with &apos;Interface&apos; suffixes, pattern names, and namespace taxonomies—less noise, more clarity.</description><pubDate>Thu, 26 Jan 2023 00:00:00 GMT</pubDate></item><item><title>Naming Interfaces in PHP, Java, et al.</title><link>https://mnavarro.dev/blog/naming-interfaces-in-php-java-et-al/</link><guid isPermaLink="true">https://mnavarro.dev/blog/naming-interfaces-in-php-java-et-al/</guid><description>Ditch the &apos;Interface&apos; suffix—let abstractions have pure names and implementations be specific.</description><pubDate>Mon, 03 Apr 2023 00:00:00 GMT</pubDate></item><item><title>On Scaling Software Companies</title><link>https://mnavarro.dev/blog/on-scaling-software-companies/</link><guid isPermaLink="true">https://mnavarro.dev/blog/on-scaling-software-companies/</guid><description>Scaling isn&apos;t about doubling headcount—it&apos;s about delivery speed, developer experience, and doing more with less.</description><pubDate>Wed, 15 Nov 2023 00:00:00 GMT</pubDate></item><item><title>The Bigger the Interface, The Weaker the Abstraction</title><link>https://mnavarro.dev/blog/the-bigger-the-interface-the-weaker-the-abstraction/</link><guid isPermaLink="true">https://mnavarro.dev/blog/the-bigger-the-interface-the-weaker-the-abstraction/</guid><description>Fat interfaces lie about their capabilities—split them into focused contracts that use types, not boolean checks.</description><pubDate>Wed, 22 Mar 2023 00:00:00 GMT</pubDate></item><item><title>The Goal of Software Engineering</title><link>https://mnavarro.dev/blog/the-goal-of-software-engineering/</link><guid isPermaLink="true">https://mnavarro.dev/blog/the-goal-of-software-engineering/</guid><description>Great software isn&apos;t pragmatic OR maintainable—it&apos;s both. Learn to navigate the tension between shipping fast and building right.</description><pubDate>Mon, 20 Feb 2023 00:00:00 GMT</pubDate></item><item><title>The Power of Aesthetics</title><link>https://mnavarro.dev/blog/the-power-of-aesthetics/</link><guid isPermaLink="true">https://mnavarro.dev/blog/the-power-of-aesthetics/</guid><description>Logic doesn&apos;t change minds—aesthetics do. Why the most compelling argument is the one that looks and feels right.</description><pubDate>Sun, 19 Feb 2023 00:00:00 GMT</pubDate></item><item><title>The Repository Pattern Done Right</title><link>https://mnavarro.dev/blog/the-repository-pattern-done-right/</link><guid isPermaLink="true">https://mnavarro.dev/blog/the-repository-pattern-done-right/</guid><description>Stop wrapping ORMs and start thinking in collections. Build repositories that are specific, immutable abstractions over your domain.</description><pubDate>Fri, 07 Jul 2023 00:00:00 GMT</pubDate></item><item><title>To Array is Human</title><link>https://mnavarro.dev/blog/to-array-is-human/</link><guid isPermaLink="true">https://mnavarro.dev/blog/to-array-is-human/</guid><description>Context matters more than dogma. Why arrays aren&apos;t always evil and how to know when rules don&apos;t apply.</description><pubDate>Wed, 27 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Unit Testing the Filesystem in PHP</title><link>https://mnavarro.dev/blog/unit-testing-file-system/</link><guid isPermaLink="true">https://mnavarro.dev/blog/unit-testing-file-system/</guid><description>Rules say that for unit testing we should not access the filesystem, but what if you don&apos;t have a filesystem abstraction you can stub?</description><pubDate>Mon, 16 Dec 2019 00:00:00 GMT</pubDate></item><item><title>What You Really Need To Know About Testing</title><link>https://mnavarro.dev/blog/what-you-really-need-to-know-about-testing/</link><guid isPermaLink="true">https://mnavarro.dev/blog/what-you-really-need-to-know-about-testing/</guid><description>Forget the jargon wars. Good tests do two things: run fast and fail for the right reasons.</description><pubDate>Tue, 21 Mar 2023 00:00:00 GMT</pubDate></item></channel></rss>