posts

August 25, 2026

Rebuilding stateful CDC pipelines without replaying the world

Posted in Brex Engineering Blog

Part 1 of a Brex engineering series on rebuilding stateful Flink CDC pipelines with federated snapshots.

August 25, 2026

Making CDC snapshot merges correct

Posted in Brex Engineering Blog

Part 2 of the series, covering the keyed-state merge rules that keep live CDC mutations ahead of stale snapshot rows.

August 25, 2026

Operating hundreds of stateful Flink pipelines

Posted in Brex Engineering Blog

Part 3 of the series, on the deployment, validation, rollback, and operating model behind Brex's stateful Flink platform.

June 21, 2026

Data continues to be the moat

AI is making it easier to render software surfaces. The harder thing to replace is the data a product stores, protects, and makes useful.

June 6, 2026

Reviewing Anthropic's AI analytics stack

The headline is Claude doing analytics. The actual story is the unglamorous work of making the data model usable.

April 13, 2026

What a production eval system actually looks like

A production eval system is not a notebook. It is an operational feedback loop, and the labels are usually the hard part.

March 25, 2026

Stop building AI features

Some AI product work gets commoditized quickly. The durable work tends to live lower in the stack: data, permissions, workflows, and integrations.

January 27, 2026

Data catalogs are only useful if they match real workflows

Metadata catalogs fail when they become polished inventories. The useful ones fit the decisions people are already trying to make.

January 13, 2026

The semantic layer is execution infrastructure

Agents turned semantic layers from BI cleanup into runtime infrastructure. Many AI reliability problems are really modeling problems.

October 21, 2025

Zero-downtime Flink upgrades

Savepoints are great for recovery. They are a fragile deployment primitive once stateful jobs start evolving quickly.

September 12, 2024

Transitioning from PM to SWE

Moving from product to engineering gave me a better angle on systems work. It also forced me to unlearn some habits I did not know I had.

June 19, 2024

Domain-driven pipelines

One perfect data pipeline sounds clean until every domain needs it to mean something different.

April 8, 2024

DI and the Cake Pattern

The cake pattern is clever Scala. Constructor injection is usually the better default.