Blog
Latest news, updates, and insights from the Interlace team.
August 10, 2026
Migrating jaffle_shop: A Real dbt Project, End to End
We migrated dbt's own demo project to Interlace and wrote the whole thing down. Four of five models converted with a two-line regex. The fifth is where the actual work is, and where the interesting difference lives.
Read moreAugust 9, 2026
No Jinja: What Replaces Templating When SQL Is an AST
Jinja does four separate jobs in a dbt project, and they need four different answers — not one templating language. Parsing replaces ref(), Python replaces loops, and canonical SQL means reformatting a model does not rebuild it.
Read moreAugust 8, 2026
Python Models: dbt and Interlace, Side by Side
dbt Python models participate fully in the DAG — that part is often misreported. The real differences are which platforms run them, which materialisations they support, and whether the function is testable on its own. A fair comparison, verified against both sets of docs.
Read moreAugust 7, 2026
Twenty-Five Million Rows in Five Seconds, and How to Check
A 25M-row DAG exercising every strategy, with a Python model in the hot path, built on one machine in 5.1 seconds. Here are the numbers, the machine, and the commands to reproduce all of it yourself.
Read moreAugust 6, 2026
Two Planes: What materialise Means in 2.0
Interlace 2.0 makes materialise the ownership axis and deletes the export block. One key changed meaning, which is why this is a major version. The reasoning, and the migration.
Read moreAugust 5, 2026
200 OK Means Fsynced
The 0.x stream log was an in-memory queue that lost data on restart. The rebuilt one runs synchronous=FULL, so a 200 survives power loss and not merely a process crash. What that costs, and what it buys.
Read moreAugust 4, 2026
A Python Model Is Just a Function
A .py model and a .sql model are the same kind of node. Either can depend on the other, in either direction, and the planner does not care which you wrote. Here is that claim running in the hot path of a 25-million-row DAG.
Read moreAugust 3, 2026
Sandboxes That Cost Nothing
An environment is not a copy of your data, it is a set of views over it. How fingerprinted snapshots make a dev sandbox free, promotion an atomic view swap, and rollback the same operation run backwards.
Read moreAugust 2, 2026
The IR Is a sqlglot AST
Dropping Ibis removed a heavyweight dependency for zero lost capability, because Ibis compiles to sqlglot — which is already our intermediate representation. What the rebuild bet on, and what it refused.
Read moreAugust 1, 2026
Why We Built a Unified Abstraction
A typical data stack runs four tools to do one job, and the failures live in the seams between them. Here is the case for making a model the only abstraction — and where one abstraction is not enough on its own.
Read more