2025 in review

Recapping my open source development this year

  1. 2025: A Year of Dewarping, Inferring, and Unmixing

Looking back at 2025

I took some time over the holidays to pause the interminable urge to ship and instead reflect a bit, and write up what I did this year.

At the final tally I made 30 Python packages and 30 Rust crates (the first of which was only in March which feels insane). A lot of this was solo, notable exceptions being with Amos on facet and Jo on prek, challenger projects taking on the well-established pre-commit and serde respectively which is the energy we're keeping in 2026.

I wrote up three of my solo projects this year in the accompanying post: page-dewarp which finally got proper gradients via JAX after some false starts, polars-genson for JSON schema inference with Map type detection battle tested on all of Wikidata, and polars-fastembed for embeddings as a DataFrame op with onboard topic modelling.

Looking back I like how these are all inverse problems in different registers: recovering page geometry from camera projection, recovering schema structure from observed JSON values, recovering semantic dimensions from embedding vectors.

LLMs (mainly Claude) helped me push through a lot of this, ONNX Runtime, JAX, optimisation theory, schema engineering, having the vocabulary and a bit of nudging in the right direction at the right times took me to some really rewarding new ground.