I go by jvf or fvj online. I live in Berlin and speak German and English.
I write software for a living. Before going independent, I spent almost two years at Stripe and a bit over two at Klarna. Before all of that, I was studying pure mathematics—I still love it and I'm slowly finishing my degree when life allows.
Day to day, I reach for Rust, Python, TypeScript, and whatever else makes sense. I don't have strong allegiances. I've done a lot of web work over the years, but lately I've been happiest closer to the metal: systems programming, operating systems, that kind of thing. I particularly enjoy working on high-performance, low-latency distributed systems.
I like working with people who think and communicate clearly and I try to do the same. Pair programming, whiteboard sessions, talking through a problem and then going with the best solution—that's what I enjoy most. I believe in writing things down, keeping code obvious, and building software that does one thing well instead of trying to be everything to everyone. Perfect later almost always loses to good enough now; optimal is not ideal.
I'm at the Recurse Center until early April, working on a pre-emptive work-stealing userspace virtual threads runtime in C. It originated from my original project: a (distributed) load testing tool written in C, supporting different scenario drivers (~adapters), eg. ICMP Echo, HTTP, Websockets; the load testing tool is also still in development, but focus has switched to the runtime to make the load testing tool fast enough. Neither are ready yet, but I really enjoy the process.
I won't be available for work until I'm done, but I always like meeting people—whether there's a project attached or not. If you want to say hello, drop me an email.
I use LLMs in my work—for learning, for bouncing ideas around, and for writing simple, routine code. They're good at putting words on the screen quickly. They're not good at checking whether what they wrote is correct. That still is my job.
Mission-critical code, I believe, must still be written by hand.
For experienced engineers, I think these tools can make you more effective. For people still learning, it's more complicated—I think there's a difference between using AI to understand something and using it to skip understanding. The line I draw for myself: if I couldn't write it given enough time, I shouldn't be generating it.
What worries me is the quiet degradation of code quality and generated code creeping into places where it doesn't belong, for example: any system working with PII, any system with outputs to physical systems, such as motors, filters, etc.
I like understanding how things work—not just software, but systems in general. I ride motorcycles, lift weights, grow plants, love to read (mostly about philosophy and classical literature), and make things with my hands (sewing, knitting). I like taking my time with things, building an intuition and using resources responsibly.