I make
things that
should exist
Developer in Schiedam, just outside Rotterdam. Backend and AI systems by day; compilers, Android apps and stubborn side projects by night — usually because the thing I wanted didn’t exist, or wanted my money.
[ Off duty ] Old cars· Bass & electric· Europa Universalis· Rock + metal
Smoke Free
FreeA quit-smoking tracker that works with the aeroplane mode on. No account, no ads, nothing to buy.
Expo · SQLite · TypeScript
Agentic Compiler
Open sourceA language where an independent checker has to accept the code before it runs. Hallucination becomes a build failure.
C# · LoRA · Qwen‑Coder 7B
Coldstart
LiveFinds B2B leads overnight and drafts the first email. A person approves every one before it sends.
.NET 10 · Postgres · Stripe
Meeting Bingo
FreeReal-time multiplayer bingo. Built for meetings, now mostly used for film nights — 41 word packs, or type your own.
React · Firestore · TWA
DBA Shield
Audits Dutch contractor paperwork for false‑self‑employment risk and builds a tamper‑evident dossier.
.NET 10 · Semantic Kernel · QuestPDF
NIS2 Prospector
Finds companies pulled into the NIS2 supply chain and drafts the outreach for the people who audit them.
.NET 10 · Playwright · Quartz
TenderJet
Drafts public‑tender responses from a company’s own past bids, in their own words and facts.
.NET 10 · pgvector · SignalR
Budgeting Tool
Imports my bank CSVs and forecasts when the money runs out. Runs on my machine and nowhere else.
.NET 10 · React · Recharts
The longer version
By day I’m a developer at Coolblue in Rotterdam, building backend services and AI tooling in .NET and TypeScript. Most of that work isn’t mine to publish — so this site is about everything else.
The everything else is usually something I wanted and couldn’t get. I tried to quit smoking and found that every tracker on the Play Store either cost money or sold the good parts back to me in pieces, so I wrote one that’s free and cannot phone home. I got tired of watching language models write confident, broken code, so I built a language where a separate checker has to accept the program before it runs.
There’s a pattern in the list and I’ve stopped pretending it’s an accident: the software I care most about is the software nobody has to pay for. Some of what’s here is commercial, and that’s fine — it pays for the rest. But the two apps I’d actually defend are the two that are free, and they were built for people having a worse week than I was.
Away from a keyboard: old cars, the kind with carburettors and opinions. A bass and an electric guitar I’m still not good at. Campaigns of Europa Universalis that get badly out of hand. Rock and heavy metal, loud.
Say hello
Happiest talking about architecture that survives contact with reality, small models doing serious work, or why your carburettor is running rich.