36Native extensionsCompiled, installable from SQL, shipped under Query.Farm.
01 — Summary
I make DuckDB do things it wasn't built to do.
Query.Farm ships 36 native DuckDB extensions — Kafka topics, Arrow Flight servers, and shell pipes, all queryable from SQL. I write here about what I find in the internals: what breaks, what surprised me, and what I'd do differently.
2M+Installs
134VGI repos
1,770Stars
29Articles
162PRs, 90 d
Recent writing
A DuckDB Release Isn't a DistributionWhen DuckDB ships a new version, every community extension has to be rebuilt against it before anyone can install one. I measured how much of the catalog is actually there when a release lands, how long extension updates take to merge, and why the same builds run 2.5x faster on different CI. The answer to all three is distribution work.DuckDBCompiling Isn't Running: Functionally Testing DuckDB-WASM ExtensionsA DuckDB extension that compiles for WebAssembly has only proven that it compiles. Whether it loads, and whether it actually runs, are separate questions. I built a Node harness to ask them across 124 community extensions. Here's what it found and the fixes that came out of it.DuckDBQuack and VGI: Two Approaches to Bringing RPC to DuckDBQuack — the new client/server protocol extension for DuckDB — was announced today. It's been built since November 2025, almost exactly as long as I've been building VGI. Here's what's interesting, what's surprising, and where the two projects converge and diverge.DuckDBDuckDB ↔ Arrow Compatibility: A Status PageA working status page for the Arrow-related issues and PRs I've filed against duckdb/duckdb — the UNION saga, schema/data disagreements in nested appenders, type fidelity through round-trips, and the bigger question of how defensive the C Data Interface should be.Data EngineeringGeoSilo vs GeoArrow + Byte Stream Split: Two Approaches to Geometry CompressionA detailed comparison of GeoSilo's delta-integer encoding against GeoArrow's columnar float64 layout with Parquet BYTE_STREAM_SPLIT, covering compression ratios, precision tradeoffs, and when each approach wins.Data EngineeringVGI Injector: A Tiny HTTPS Download-and-Execute Binary in ZigI needed a self-contained binary that downloads a program over HTTPS and exec's it — small enough to run in a FROM scratch container with nothing else. Go and Rust couldn't get small enough. Zig could.ProgrammingTIME Data Type Compatibility Across DatabasesA survey of the TIME data type across 14 databases, comparing supported ranges, maximum values, and whether the special value 24:00:00 is accepted.Data EngineeringTelemetry for DuckDB Extensions Without the PainI open-sourced the telemetry client I use across Query.Farm's DuckDB extensions. It's two files, one function call, and it only collects platform and version info.DuckDB1,626Stars, extensionsPlus VGI — a protocol for writing DuckDB functions in Python, Rust, Go, Java or TypeScript instead of C++.All projects →
What I build
| Name | Stars |
|---|---|
| airport | 345 |
| httpserver | 284 |
| shellfs | 95 |
| clickhouse-sql | 91 |
| httpclient | 80 |
| lindel | 66 |
| openprompt | 60 |
| tributary | 57 |
3,472Commits, 90 daysCounted nightly from the GitHub API by a Cloudflare Worker, cached in R2.Full activity log →
The record
Fig. 1 — commits per dayPeak 220 · Total 3,472
Still building. 3,472 commits and 162 pull requests across the last 90 days, mostly in vgi-java, vgi-rust, vgi-rpc-go.
Out loud
DuckDB Extension Development Workshop
Workshop· DuckDB Developer Meeting #1 · Amsterdam, Netherlands·
Building on Flight: Real-World Lessons from the DuckDB Airport Extension
Talk· Apache Arrow Summit 2025 · Paris, France·
Query.Farm: Growing DuckDB Community Extensions
Meetup· DuckDB Amsterdam Meetup #3 · Amsterdam, Netherlands·
DuckDB, Apache Arrow, & the Future of Data Engineering
Podcast· The Hedgineer Podcast (S2E3)·
