pglifecycle
A PostgreSQL schema management tool for tracking and applying DDL changes. Version control for your database schema.
View on GitHub

CTO · Author · Speaker · Open Source Developer
Building distributed systems and developer tools. Writing code in Rust, Python, and Erlang. Currently leading technology at AWeber and lives in Washington, DC.
I've spent over 30 years building distributed systems, from early internet infrastructure in the mid-90s to modern cloud-native architectures. My focus has been on messaging systems, databases, and the tools that make developers more productive.
As CTO at AWeber , I lead the technology organization while staying hands-on with architecture and open source contributions. I'm particularly interested in PostgreSQL tooling, event oriented architectures with RabbitMQ, and building reliable systems at scale.

Featured talk · RabbitMQ Summit 2018
My opening keynote from the first RabbitMQ Summit: if you don't fully understand AMQP, you don't understand RabbitMQ. A tour of the protocol underneath — connections, channels, framing, and the message properties that make your architecture idiomatic.

My YouTube channel, where I go deeper on distributed systems,
AI,
databases, and the trade-offs behind real-world architecture.
New talks and walkthroughs land here.












A PostgreSQL schema management tool for tracking and applying DDL changes. Version control for your database schema.
View on GitHubLanguage Server Protocol implementation for PostgreSQL and PL/pgSQL. Diagnostics, semantic highlighting, go-to-definition, and formatting.
View on GitHubA PostgreSQL-specific SQL formatter. Enforces consistent style across your SQL codebase with configurable formatting rules.
View on GitHubA pure Python, thread-safe, minimalistic and Pythonic RabbitMQ client library for simple and reliable AMQP messaging.
View on GitHubLow level AMQP 0-9-1 frame encoding and decoding library. The foundation used by multiple Python AMQP client libraries.
View on GitHubPython module for interacting with nested dicts as a single level dict with delimited keys. Simplifies complex data structures.
View on GitHubInject AWS SSM Parameters as environment variables. Simple secrets management for containerized applications.
View on GitHubA consumer framework for RabbitMQ. Build robust message consumers with automatic reconnection and error handling.
View on GitHubCurrently listening to
Tool · Radiohead · Queens of the Stone Age · the Claypool Lennon Delirium