Data systems & migration
Replay-based migration of about 100M rows with idempotent ids, delta sync and reconciliation to 99.9%.
Backend & Platform Systems · Denver, CO
Hard problems. Quiet launches.
Staff-track software engineer. Spec-first APIs, safe large-scale migrations, identity and cloud platforms on .NET and Azure, backed by a decade of industrial-controls discipline.
rows migrated into a four-table design, with zero incidents.
01About
I spent a decade engineering industrial control systems, where a bad release stops a production line. That is why I plan cutovers, rehearse failure and measure twice.
Eight years ago I moved into application code. At MarketOnce I was the main back-end implementor of a ground-up redesign of the Rewards platform, working alongside a Principal Engineer: a spec-first API, a four-table ledger, and a 100-million-row migration that went live with a 1.4-second gap and no incidents.
Colleagues bring me their Rewards and Auth questions. I am evidence-driven: I push back when the data says to, then aim that conviction at the company's goals.
Hired as a junior at my first software job; my manager said I thought and coded like a mid-level.— First engineering manager, BBG, 2018
Replay-based migration of about 100M rows with idempotent ids, delta sync and reconciliation to 99.9%.
TypeSpec to OpenAPI to generated API and clients, so a spec change reaches every layer of the codebase.
OAuth 2.0, OpenID Connect and SAML; central contributor to moving IdentityServer4 to Microsoft Entra and Google.
A Claude Code guard layer that gates Production writes, blocks credential reads and keeps an audit log.
02Flagship case study
Replacing a corrupted legacy rewards ledger with a spec-first service and moving about 100 million rows across without a single incident.
About 100.4 million rows across four tables, in four phased runs.
A member's balance depended on the moment-in-time state of their rewards. A debit has to draw from the oldest rewards first, and only unredeemed points can expire, so the migration replayed each member's transactions instead of copying rows.
Illustrative numbers. Each part is allocated first in, first out by issuance.
After cutover, every member's balance was compared with legacy.
735,361 of 736,102 members matched legacy exactly. I traced the other 741 to inconsistencies already present in legacy's own running balances: 397 before the snapshot, 344 after it. Few enough for reviewers to sign off on each one, with justification.
397 before snapshot344 afterA bulk load, then three delta runs to sync live production data. Deterministic ids made every run safe to re-scan. All times UTC, October 2026.
Legacy stopped writing and the new service took over, with no gap in member activity.
Replays the real timestamps at real speed. Gap drawn larger than scale.
One change to the spec regenerates the contract, the API and the clients, and the test suite catches what it breaks.
Time to find, ticket, review, merge and ship a reward fix.
Bars are illustrative. The gain comes from the spec-first design plus AI-assisted workflows.
I closed 17 of them, a third of the team's output in a single sprint.
03Experience
MarketOnce · Community platform · Denver, CO
Inspirato · Denver, CO (hybrid)
Kin + Carta · Contract
BBG Inc. · Contract
04Skills
Grouped by how I have used each one, so you know what to expect.
05Journey
Eighteen years in engineering. I got into software by building tools that made my own controls work faster, then kept going.
Automation control technician, then engineer: PLC programming, C and AutoCAD (certified, 2012).
Systems integration engineer at an instrumentation maker, working in MATLAB, PHP and Python.
Wrote .NET tools that generated XML to replace a macro-driven Excel workflow, and rewrote a Windows data-collection app: more statistics collected, flat files replaced by SQLite for charting.
Moved into full-time application development, and never looked back.
06Selected work
About 100M rows replayed into a four-table ledger over four phased runs, with idempotent ids, delta sync and a permanent run registry.
TypeSpec-generated REST API where a spec change propagates through every layer, backed by 829 automated tests.
Accepted bug fixes to the TypeSpec ASP.NET emitter the team builds on.
github.com/MassiveScale/tsp-aspnetcore-api
Hooks and tests that gate Production writes, protect Azure subscriptions, and block credential reads and container escapes, with a daily audit log.
07Education & credentials
Colorado School of Mines
Microsoft
Cad-1