I write Rust and hunt silent failures: the kind where a program returns a plausible answer and nothing tells you it's wrong.
41 merged pull requests upstream, in 10 projects. vivacity: 21 stars, 2003 downloads on crates.io. One of my projects ships inside someone else's product.
- ocs-rs
— exact, matrix-free solver for optimum contribution selection in breeding programs. Same optimum as optiSel, the field's exact tool, and 12–132× faster given the relationship matrix; without it, it runs at population sizes where that matrix can't be built. Validated on wheat, pig and mouse genomic panels, with a manuscript (PDF, version française) and a one-command reproduction.
- vivacity
—
composer installandcomposer update, reimplemented in Rust. Samecomposer.jsonin, samevendor/and lock file out as Composer, byte for byte, with no PHP.- Adopted by ePHPm, which embeds it as
ephpm composer(ephpm#523), keeps a fork under its org, and runs a daily CI job that bumps the pin whenever a new vivacity lands on crates.io. - Checked against the real thing, not assumed: on a corpus of 106 real PHP projects, 76 install natively and byte-identical down to file modes; the rest are handed to Composer before any write. No diff on any of them.
- 25 releases, published on crates.io as six crates (
vivacity,-core,-resolver,-autoload,-pcre2,-pcre2-sys), installable via script,cargo binstallor a GitHub Action. - Fed back upstream. vivacity's differential harness uncovered a security advisory handling bug in Composer. The fix was merged upstream (#13075), prompting a Composer 3.0 follow-up (#13150) to clarify the advisory-loading API.
- Adopted by ePHPm, which embeds it as
- vector-router — gRPC middleware that rejects NaN, Inf and wrong-dimension vectors before they reach Qdrant or pgvector, with per-producer Prometheus metrics. Checked under miri.
- moment-scale-law — paper and code: How fine a change can moments see? A scale law for detecting distribution shift, with a kernel calibration rule. Preprint arXiv:2608.01268 (PDF), code archived at doi:10.5281/zenodo.21649324. Every number in it maps to the script that produces it.
- opengatellm-rs
— Rust client for OpenGateLLM, the French government's (DINUM / Etalab) open-source LLM gateway.
Most of my time goes into other people's code. The bugs I keep finding fall into four buckets:
- Numbers that are quietly wrong. Five bugs fixed in rust-bio's pair HMMs: gap extensions that emitted no base, stale cells left outside the band, gaps opened with the other sequence's probability, column ends summed twice, hop states that could not return to every match state. All merged and released in rust-bio 4.1.0 and 4.2.1. In Pyronear's wildfire detection API, a plume-wide box went to the first overlapping sequence rather than the best match, so one fire's detections followed another's.
- Data dropped without an error. conda leaving half-created environments on disk (merged), OpenFisca losing memberless group entities on
restore_simulation(merged), Pyronear's camera-siting analysis losing candidate sites once a scenario was frozen (merged), Vector's file source on stale checkpoints, mem0 on partial embedding failures, one bad span discarding a whole ingestion batch in future-agi. - Corrupt state accepted as valid. In rostam: checkpoints published without a directory fsync, no fail-closed latch after a failed fsync, trailing bytes accepted by the log decoder; all fixed, plus fuzzing of the network and WAL-recovery decoders (8 PRs merged). NaN vectors accepted by Weaviate.
- Tools that drift from their spec or reference. varlociraptor scenarios with overlapping events (now checked at compile time, merged), dna-seq-varlociraptor declaring config keys it didn't read (merged),
freebayes-paralleldisagreeing with a single run at region boundaries, OpenFisca simulation clones sharing state with the original. A wrongchannelIddocstring in the x402 spec, reported with byte-exact vectors and fixed upstream.
Merged in rust-bio (14), rostam (8), varlociraptor (4), conda (3), dna-seq-varlociraptor (3), snakemake (3), hgvs-rs (2), Pyronear (2), Composer, OpenFisca. Welcomed as a first-time contributor in conda's July 2026 release notes.
Open in DeepTrack2, mem0, freebayes, microlp, PolicyEngine, Vector, ClickHouse, future-agi, ollama, Weaviate.
Reproduce first. Every issue I open ships with a standalone reproduction, every fix with a test that fails without it.
Mostly bioinformatics these days: pair HMM correctness and speed in rust-bio and varlociraptor (a linear-space forward algorithm is in review in both), freebayes, and the dna-seq-varlociraptor workflow that ties them together. On the side, wildfire detection with Pyronear: sequence matching in the alert API and camera-siting coverage analysis.


