I’m Patrick McDonald, a software engineer focused on distributed systems, payments infrastructure, and the problems that show up when software crosses service, database, queue, and provider boundaries.

I’ve spent much of my career working on systems where a timeout, retry, duplicate message, or partial failure can have real business consequences. Those experiences shaped the questions I write about here:

  • What actually became true?
  • Can the application prove how it reached its current state?
  • Can failed work be retried without creating duplicate effects?
  • Can operators replay or repair a workflow without making things worse?
  • What changes when AI agents begin taking actions inside these systems?

This publication covers event-driven architecture, state machines, idempotency, external effects, event history, replay, repair, observability, and AI reliability.

Systems That Can Explain Themselves

My current series, Systems That Can Explain Themselves, explores how to build applications that can clearly account for:

  • what was requested,
  • what was attempted,
  • what happened outside the application,
  • what became authoritative business state,
  • and what can safely happen next.

The goal is not to promote one architecture as the answer to every problem. It is to look closely at where existing tools and patterns work, where their guarantees stop, and how they can be composed into systems that are easier to understand and operate under failure.

Everything here reflects my own experience and opinions, not those of any current or former employer.