Blog
Notes on building production software — mostly Rails, databases, and the systems around them, with the occasional foray into the rest of the stack.
-
Introducing LazySQL: A Database Client for the Shell
A minimal, terminal-first Postgres client with Vim bindings, a command-mode auth flow for rotating credentials, and session logs you can hand to an LLM agent.
-
Adding a Change-Log System Without Breaking the One You Have
Building an audit trail into a live product is mostly about what *not* to break — observability, latency, context, and a database that can scale alone.
-
Reshaping an Invoice-Sync Pipeline Without a Rewrite
A 1:1 sync framework had to absorb a 1:N invoice workflow with prepayments, locking, and idempotent retries — without forking the platform.
-
Traveling time with Postgres Range Columns
Using Postgres tstzrange columns and exclusion constraints to model temporal data — effective dates, history, and as-of queries — without bolting it on later.
-
Challenges of Time-Based Systems Without Proper Database Structures
What goes wrong when temporal data — effective dates, history, audits — is forced into a schema that was only ever designed to hold the present.
-
Automation Engine Refactor for Performance and Maintainability
How a five-minute scheduler choked the database under a 16k-lead import, and the refactor that made the pipeline-automation engine safe to scale.