I run a global logistics company's Databricks lakehouse end to end, and I build with AI agents that carry the half of the work that doesn't need me.
My judgment, built into each workflow.
Two systems on different stacks, built the same way. Each number below comes from code, logs or direct measurement.
One platform, one loader per layer, nothing hand‑written
The company's central data platform (a "lakehouse"), where every number comes from, plus the reports built on top of it. A delivery partner stood it up; I built it into what the company runs on today.
Every table loads the same way: one control row per load, one generic loader per layer, nothing hand-written per table. Twelve scheduled jobs run it every day.
900+ active control rows across 8 control tables; about 700 GB a weekday, measured on the live cluster
Azure Databricks · Unity Catalog · Fabric · Power BI · GitLab CI
One daily run reads the rows and fans out
Every load on the platform is a row in a control table, run by one generic loader per layer. The main daily job reads the rows, fans out, and runs them in parallel.
Extraction from the sources over JDBC runs 10 wide; Delta-to-Delta steps run up to 100 wide. Adding a source table is one new row.
900+ active rows across 8 control tables, one per layer plus custom, API, file and SharePoint loads; for-each fan-out with per-group concurrency
Databricks Workflows · for-each tasks · Delta Lake · JDBC · Python
Production bound read‑only to test, no secret in code
Two Databricks workspaces, production and test, each injected into its own virtual network, under one Unity Catalog metastore. The production catalog is bound to production and read-only from test.
Storage is two ADLS Gen2 accounts, production and test, each with a landing and a lake container, reached through external locations and one managed identity via an access connector.
Classic compute is VNet-injected; the corporate firewall allows only the two classic-plane egress addresses, so serverless compute cannot reach the on-prem sources.
Azure Databricks · Unity Catalog · ADLS Gen2 · Entra ID · Key Vault
19 pages, self-hosted end to end
An author's website, rebuilt from the ground up with a booking system behind it.
The old site was an ageing Joomla install. The new one is nineteen light pages with every font, script and image served from his own domain. A content change is one rebuild and one scripted deploy.
19 static pages, self-hosted assets; the only outside call on load is the host's analytics beacon
Astro · Cloudflare Pages · Pages Functions · Resend
The work splits in two. One half runs to the end without me. The other half comes back to me in ordinary words before it ships.
The way I work is the product.
The longest single run went 1 019 steps before it needed me again. 328 unattended runs of 50+ steps, 114 of 100+, 29 of 200+. Counted from every transcript, 2026-07-02 to 2026-09-03.
I split the work into what needs me and what does not, then let it run the second pile to the end without stopping.
New automations run with me watching. After a few clean runs they run alone. Anything touching money, sending to the public, or deleting never runs alone.
Get the rough version working fast, then cut it down until it is small and hard to break.
The same setup does the dull work too. It sorts mail, handles tickets and writes up meetings. One session got into my home router, worked out why the line was bad, and filed the fault with the internet provider.
The gate is plain language. If it cannot be said in ordinary words, it does not ship. 437 of 5 020 typed turns across every transcript asking for it in plain terms, in one sentence, in dummy terms. Counted 2026-07-02 to 2026-09-03.
Before anything gets built, the AI says the plan back to me in plain words. If the plan is wrong it dies there, before any code exists.
I don't trust "deploy succeeded". I open the live site and check the version on screen is the one I just shipped. Never trust a name, a dashboard or a green status. Read the rule back. Assert the deployed commit hash. Hit the live site with a fresh, uncached request.
A check that finds nothing is suspect. One or two small things per run is normal. Five new things every run means the thing being checked is changing under it.
The first time something goes wrong, I note it. The second time, it becomes a written rule, and the tools enforce it so I don't have to remember.
Kosie Roux · Technical Lead Data Engineer · The machine runs what doesn’t need me. I check what does.