Senior Software Engineer at Box, in Amsterdam.
A tinkerer. I build developer tools — increasingly in Rust, mostly for the JavaScript ecosystem.
Most of what I build follows the same pattern: take a piece of JavaScript tooling everyone depends on, and find out what it looks like as a native binary. Sometimes the answer is "3x faster and a tenth the bundle size", sometimes it's "not worth it" — both are interesting.
- Browser automation, HTTP mocking, build caching, and CI infrastructure.
- NAPI-RS bindings, embedded JS engines, and protocol clients (CDP, WebDriver BiDi, MCP).
- Games and desktop apps when I want a break from tooling.
Developer infrastructure
| turbo-remote-cache-rs | Self-hosted remote cache server for Turborepo, in Rust |
| ferridriver | Browser automation with a Playwright-compatible API — CDP, WebDriver BiDi and WebKit backends, MCP server, Node/Bun bindings |
| ferrimock | MSW-compatible HTTP mocking with a Rust matching engine, 3-4x faster |
| design-sync | Sync design tokens across platforms |
Libraries
| pointrix | Drag/resize/gesture library — 14 KB gzipped against interact.js's 100 KB, and considerably faster per event |
| barq | Signal-based UI framework |
| clap-ts | Type-safe CLI argument parser for TypeScript, modelled on Rust's clap |
| tanstack-template | Full-stack React starter with TanStack Start and Router |
Applications
| dockside | Native desktop app for Docker and Kubernetes via Colima |
| tuffahi | Cross-platform Apple Music client — Electron, SolidJS, MusicKit JS |
| sweeprs | macOS disk cleanup TUI |
| markdown-clipper | Chrome extension that turns pages into clean markdown |
| saladin | Crusades-era RTS on Bevy, with deterministic-lockstep multiplayer |





