Search

Press ESC to close
Matias' Thoughts
Software Engineering Christianity Politics Philosophy
Github LinkedIn SSH Keys GPG Key
About

Software Engineering

24 articles

Greed: "Grabbing Every Relationship You Can"

February 2, 2026 · 12 min read

Just because you can map it, doesn’t mean you should. Greedy relationships bloat your model and your queries.

Doctrine ORMData Patterns

It's About Time

January 22, 2026 · 12 min read

A series of facts that every developer should know about time, timezones and clocks.

Software Engineering

Sloth: "Lazy Entities, Lazier Minds"

January 20, 2026 · 14 min read

Turning your entities into empty vessels with no behavior is the ORM equivalent of spiritual apathy

Doctrine ORMData PatternsDomain Driven Design

On Scaling Software Companies

November 15, 2023 · 12 min read

Scaling isn't about doubling headcount—it's about delivery speed, developer experience, and doing more with less.

Scaling

To Array is Human

September 27, 2023 · 7 min read

Context matters more than dogma. Why arrays aren't always evil and how to know when rules don't apply.

PHPPhilosophy

A CRUD Reality

August 3, 2023 · 14 min read

The 'U' in CRUD is lying to you—updates don't tell the story, domain events do.

PHPArchitecture

The Repository Pattern Done Right

July 7, 2023 · 14 min read

Stop wrapping ORMs and start thinking in collections. Build repositories that are specific, immutable abstractions over your domain.

PHPData PatternsArchitectureDoctrine ORM

Naming Interfaces in PHP, Java, et al.

April 3, 2023 · 2 min read

Ditch the 'Interface' suffix—let abstractions have pure names and implementations be specific.

PHPDesign Patterns

Interfacing is Decoupling

March 30, 2023 · 4 min read

Interfaces are like electrical outlets - they remove complexity and make components easily swappable. Learn how to use interfaces to decouple your software components.

PHPSOLID PrinciplesDesign Patterns

The Bigger the Interface, The Weaker the Abstraction

March 22, 2023 · 6 min read

Fat interfaces lie about their capabilities—split them into focused contracts that use types, not boolean checks.

PHPSOLID PrinciplesDesign Patterns

What You Really Need To Know About Testing

March 21, 2023 · 3 min read

Forget the jargon wars. Good tests do two things: run fast and fail for the right reasons.

Testing

The Goal of Software Engineering

February 20, 2023 · 4 min read

Great software isn't pragmatic OR maintainable—it's both. Learn to navigate the tension between shipping fast and building right.

Software EngineeringPhilosophy

Leaks Can Become Floods

February 15, 2023 · 6 min read

Small leaks in your abstractions can flood your entire codebase. Design interfaces that hide implementation details, or pay the price later.

SOLID PrinciplesDesign Patterns

Dealing With Imposter Syndrome

February 13, 2023 · 9 min read

No one is adequate for their role, and that's okay—break it until you make it, one experiment at a time.

Career

Adding is Better Than Changing

February 3, 2023 · 6 min read

Ship new features without touching a single line of existing code—composition beats modification every time.

Software EngineeringSOLID Principles

Isolating Your Enemy Wins You The War

January 27, 2023 · 6 min read

Change is the enemy of software. Win the war by isolating what changes behind abstractions—the true meaning of Single Responsibility.

SOLID PrinciplesSoftware Engineering

My Top 3 PHP Naming Pet Peeves

January 26, 2023 · 8 min read

Stop polluting your code with 'Interface' suffixes, pattern names, and namespace taxonomies—less noise, more clarity.

PHPSoftware Engineering

Messaging Guarantees

November 22, 2022 · 7 min read

Exactly-once delivery is impossible—learn why the Two Generals can't agree, and how idempotency saves the day.

Distributed Systems

Codebases are Pets, Not Cattle

November 11, 2022 · 5 min read

Your services can be disposable, but your source code deserves love, care, and individual attention.

Software EngineeringDevOpsSystem Design

Globals are bad, but!

November 5, 2022 · 4 min read

Singletons are convenient until you try to test them—but they have their place in bootstrapping code where coupling is expected.

PHPObject Oriented Programming

HELM vs Kustomize

August 21, 2022 · 5 min read

HELM's templating creates more problems than it solves. Kustomize's composition approach is simpler, more flexible, and natively supported by kubectl.

DevOps

Considerations before jumping into Microservices

May 5, 2022 · 16 min read

Microservices can save you or sink you—estimate the cost before you build the tower.

System Design

Unit Testing the Filesystem in PHP

December 16, 2019 · 2 min read

Rules say that for unit testing we should not access the filesystem, but what if you don't have a filesystem abstraction you can stub?

PHPTesting

Efficient Data Crunching in PHP

December 10, 2019 · 9 min read

Four rules I try to sacredly adhere to when streaming data for reporting purposes in PHP.

PHPData Patterns

© 2026 Matias Navarro-Carter