Writer A checks epoch 1 against base A, the transaction is rebased onto base B, and the premise the check established is lost before the commit lands

I tried to put data quality inside the commit. One pub(crate) stopped it.

A falsification experiment with a written kill list and a negative result. Delta has a purpose-built idempotent commit; iceberg-rust rebases a transaction onto a base the caller never checked, so an external writer cannot make a commit conditional. The green concurrency test was a false pass — 0 of 40 rounds ever raced — and only a failpoint showed the duplicate.

September 4, 2026 · 16 min · 3319 words · Andrea Bozzo
Two friends preparing their Fantacalcio auction together during a summer holiday

I Built a Model for Fantacalcio. The Useful Part Is When It Says No.

I started with Milan in Championship Manager 03/04, went through an almost perfect auction and a season shaped by injuries, then built Fantabuddy on holiday: a system that turns player lists, history and APIs into an auditable auction report.

August 20, 2026 · 9 min · 1820 words · Andrea Bozzo
dbt Core v2: 77 Rust crates, 18 Python files, no Python runtime

dbt rewrote itself in Rust. The speed is the boring part.

I opened a bug report against dbt and found a codebase nobody had told me about: 77 Rust crates where the Python used to be. This is what the rewrite is actually for, why the marketing undersells it, and what I broke loose while poking at it — two fixes, both for bugs that never printed an error.

August 4, 2026 · 16 min · 3408 words · Andrea Bozzo
Zerobus Ingest, Rust producer, Unity Catalog sink

Zerobus Ingest: when Unity Catalog becomes the sink

In the dlt+dbt post the contract was a Unity Catalog schema. With Zerobus Ingest I moved the same question to the producer edge: when the sink is already a governed Delta table, do you really need a bus in the middle?

July 5, 2026 · 12 min · 2374 words · Andrea Bozzo
dlt + dbt on one Unity Catalog

dlt + dbt on One Unity Catalog (and Why It's Not 'Two DLTs')

Python-native ingestion with dlt (dlthub), SQL transformation with dbt, and a single Unity Catalog schema as the contract between them. Notes from wiring them together on a real Databricks workspace — including the naming collision that bit me in actual code.

June 22, 2026 · 9 min · 1740 words · Andrea Bozzo
FinOps for AI Data Platforms 2026

FinOps for AI Data Platforms in 2026: Databricks vs AWS-Native vs DIY Iceberg on Top of Your Warehouse

Three lakehouse stacks for adding AI/ML and streaming on top of an existing warehouse, compared through a FinOps lens: DBUs, DPUs, TB-scanned, S3 GB-month, and egress, walked through real workload patterns with 2026 prices.

May 7, 2026 · 19 min · 3954 words · Andrea Bozzo
Lance Format and LanceDB

Lance Format and LanceDB: Columnar Storage for the Embedding Age

Lance is a columnar storage format built for machine learning workloads — fast random access, native vector indexing, and zero-copy Arrow integration. This article walks through the format itself, how LanceDB builds on top of it, and how I wired it into a live NATS stream to build a simple semantic search layer over real-time events.

April 7, 2026 · 8 min · 1525 words · Andrea Bozzo

Guardrails for Tabular ML: A Data Engineer's Take on Data Leakage, Poisoning, and Brittle Pipelines

Most ML pipeline failures are not exotic model bugs — they are data issues that nobody encoded as checks. This article walks through building guardrails using pandas, Apache DataFusion, data contracts, and the Arrow C Data Interface.

March 23, 2026 · 13 min · 2649 words · Andrea Bozzo
Harvesting vs Scraping

Harvesting vs Scraping: Building Both Sides in Rust with Ares and Ceres

Two Rust projects, one conceptual divide. Ares fetches arbitrary web pages and uses LLMs to extract structured data; Ceres harvests metadata from CKAN portals and indexes it semantically. Together they show what it looks like to move from scraping scripts to production data pipelines.

February 20, 2026 · 14 min · 2907 words · Andrea Bozzo
Mosaico Logo

Mosaico: The Data Platform for Robotics and Physical AI Written in Rust

A deep dive into Mosaico, the robotics data platform written in Rust: client-server architecture, semantic ontologies, data-oriented debugging, my journey within it, and the integration with Data Contract Engine.

January 6, 2026 · 18 min · 3726 words · Andrea Bozzo