Hi, I'm Jeremy.
Data engineer in Chicago. I write about building data pipelines, AI workflows, and the occasional productivity obsession. Currently building things at Bain.
$ ls -la posts/
-
Rust for Data Engineers: A Python-to-Rust Field Guide
Mar 25, 2026I spent a decade writing Python for data pipelines. ETL scripts, API integrations, data transformations—Python was the obvious choice. Then I hit the wall: a...
-
Reading Gmail Without the Gmail API: A gog CLI Postmortem
Mar 05, 2026I needed to read emails programmatically. Google’s official solution wants OAuth flows, consent screens, API quotas, and a 47-step verification process for “...
-
Moving My AI Workers to Hetzner: A Migration Guide with Blood on the Page
Mar 04, 2026I moved my entire AI agent infrastructure from a home server to a 4 euro Hetzner CX21 in under three hours. The migration worked. Then it broke. Then it brok...
-
My Monthly Client Reports Took 4 Hours to Build. Now They Take Zero. Here Is What I Broke Along the Way.
Mar 04, 2026Every month I send performance reports to twelve clients. The process used to take four hours: pulling data from three databases, normalizing schemas that ne...
-
I Replaced 6 Cron Jobs with One Agent Loop. Here's What Broke First.
Mar 02, 2026The migration seemed straightforward. Six cron jobs, one per server, each doing one thing. I consolidated them into a single Python process with an event loo...
-
My AI Agents Kept Failing Silently. So I Built a Dead Man's Switch.
Feb 26, 2026I run six AI agents on a permanent loop. They check my calendar, monitor GitHub repos, summarize pull requests, and handle routine data pipeline alerts. For ...
-
My $5 Semantic Search Setup Outperformed Elastic. Here's the Bill of Materials.
Feb 25, 2026I had 12,000 notes spread across Notion, Obsidian, and random Markdown files. Finding anything required remembering where I put it and what I called it. Keyw...
-
I Replaced 6 Cron Jobs with One Agent Loop. Here's What Broke First.
Feb 23, 2026I had six cron jobs scattered across three servers. They checked APIs, sent alerts, generated reports, and kept the lights on. They worked fine until they di...
-
Why I Stopped Using Browser Automation for APIs
Feb 19, 2026I used to love browser automation. Give me a website without an API, and I’d fire up Selenium or Playwright and make it bend to my will. Login forms? No prob...
-
The Atomic Task System That Actually Works
Feb 19, 2026I’ve tried every productivity system under the sun. GTD, bullet journaling, Notion templates with more databases than a data warehouse, time-blocking, energy...
-
How I Cut Our dbt Runtime by 80% Using These 3 Patterns
Feb 19, 2026Our dbt project had a problem. A 6-hour runtime problem.
-
The dbt Model That Taught Me Everything About Optimization
Feb 19, 2026I once had a dbt model that took 47 minutes to run. It wasn’t even doing anything complicated—just joining a few large tables, some aggregations, the usual s...