DuckDB extensions

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.

Rusty Conover Rusty Conover · GitHub LinkedIn RSS
36 DuckDB extensions · 2M+ installs · 28 articles

Recent writing

All 28 articles →

Compiling Isn't Running: Functionally Testing DuckDB-WASM Extensions

A 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.

Quack and VGI: Two Approaches to Bringing RPC to DuckDB

Quack — 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.

DuckDB ↔ Arrow Compatibility: A Status Page

A 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.

GeoSilo vs GeoArrow + Byte Stream Split: Two Approaches to Geometry Compression

A 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.

VGI Injector: A Tiny HTTPS Download-and-Execute Binary in Zig

I 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.

TIME Data Type Compatibility Across Databases

A survey of the TIME data type across 14 databases, comparing supported ranges, maximum values, and whether the special value 24:00:00 is accepted.

Telemetry for DuckDB Extensions Without the Pain

I 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.

Releasing vgi-rpc: An RPC Framework Built on Apache Arrow

I built an RPC framework for Python that uses Apache Arrow IPC as the wire format and Python Protocol classes as the interface definition. No .proto files, no codegen — just type annotations.

What I build

36 native DuckDB extensions under Query.Farm, plus VGI — a protocol for writing DuckDB functions in Python, Rust, Go, Java, or TypeScript instead of C++.

Browse all projects →

Speaking

Workshop
DuckDB Developer Meeting #1
Talk
Apache Arrow Summit 2025
Meetup
DuckDB Amsterdam Meetup #3
All events →

Still building. 3,459 commits and 145 pull requests across the last 90 days , mostly in vgi-java, vgi-rust, vgi-rpc-go.

Full activity log →
2026-04-21: 15 commits 2026-04-22: 7 commits 2026-04-23: 2 commits 2026-04-24: 74 commits 2026-04-25: 24 commits 2026-04-26: 20 commits 2026-04-27: 25 commits 2026-04-28: 25 commits 2026-04-29: 3 commits 2026-04-30: 67 commits 2026-05-01: 0 commits 2026-05-02: 12 commits 2026-05-03: 0 commits 2026-05-04: 33 commits 2026-05-05: 34 commits 2026-05-06: 21 commits 2026-05-07: 21 commits 2026-05-08: 4 commits 2026-05-09: 0 commits 2026-05-11: 86 commits 2026-05-12: 18 commits 2026-05-13: 40 commits 2026-05-14: 52 commits 2026-05-15: 15 commits 2026-05-16: 39 commits 2026-05-17: 39 commits 2026-05-18: 80 commits 2026-05-19: 32 commits 2026-05-20: 47 commits 2026-05-21: 99 commits 2026-05-22: 50 commits 2026-05-23: 23 commits 2026-05-24: 29 commits 2026-05-25: 54 commits 2026-05-26: 42 commits 2026-05-27: 29 commits 2026-05-28: 13 commits 2026-05-29: 9 commits 2026-05-30: 42 commits 2026-05-31: 1 commits 2026-06-01: 13 commits 2026-06-02: 13 commits 2026-06-03: 14 commits 2026-06-04: 7 commits 2026-06-05: 29 commits 2026-06-06: 16 commits 2026-06-07: 7 commits 2026-06-08: 16 commits 2026-06-09: 2 commits 2026-06-10: 12 commits 2026-06-11: 33 commits 2026-06-12: 5 commits 2026-06-13: 18 commits 2026-06-14: 8 commits 2026-06-15: 55 commits 2026-06-16: 6 commits 2026-06-17: 30 commits 2026-06-18: 19 commits 2026-06-19: 3 commits 2026-06-22: 38 commits 2026-06-23: 206 commits 2026-06-24: 132 commits 2026-06-25: 66 commits 2026-06-26: 43 commits 2026-06-27: 7 commits 2026-06-28: 31 commits 2026-06-29: 103 commits 2026-06-30: 62 commits 2026-07-01: 47 commits 2026-07-02: 19 commits 2026-07-03: 15 commits 2026-07-04: 71 commits 2026-07-05: 67 commits 2026-07-06: 15 commits 2026-07-07: 52 commits 2026-07-08: 31 commits 2026-07-09: 56 commits 2026-07-10: 43 commits 2026-07-11: 1 commits 2026-07-12: 41 commits 2026-07-13: 41 commits 2026-07-14: 17 commits 2026-07-15: 39 commits 2026-07-16: 54 commits 2026-07-17: 1 commits 2026-07-19: 101 commits 2026-07-20: 117 commits 2026-07-21: 220 commits 2026-07-22: 134 commits 2026-07-23: 57 commits