
Every Organiser, Their Own Stripe Account
Four payment flows, one reconciliation. What it actually takes to run multi-tenant payouts, refunds and chargebacks in an Eventbrite-shaped marketplace, and what I would do differently now.
Case studies and technical notes from the products I take ownership of: payment systems, integrations, production rescue, and the decisions behind them.
New pieces go out first as Dispatches from the Workshop. Or subscribe by email.

Four payment flows, one reconciliation. What it actually takes to run multi-tenant payouts, refunds and chargebacks in an Eventbrite-shaped marketplace, and what I would do differently now.

Most enterprise .NET systems don't need a rewrite. They need someone who can find the actual problem, stabilize the system, and modernize it in controllable steps.

A production failure is an evidence problem before it is a code problem. A disciplined sequence for diagnosing the system without making the outage longer.
An AI agent with access to every internal API is not an assistant. It is an unauthenticated user with a good vocabulary. The production work is the tool boundary.
The most expensive architecture decision in most systems is not the framework. It is the dependency nobody can remove.
Most slow endpoint tickets are database problems with an HTTP wrapper. A server can sit at low CPU while every request waits on a lock.
Webhook providers retry. That is not a bug, it is the contract. The bug is on the receiving side when the same event changes business state twice.
Projects rarely stall because the team cannot write code. They stall because nobody can name the next decision, and activity fills the gap.

Most developers use AI every week, but few say it reduced their workload. The honest answer to 'am I about to be replaced,' from thirty years of shipping software.
New pieces go out on LinkedIn first. No schedule, no filler, only work I have actually done.