Most apps are "almost done". Mine ship.
No handovers between teams, no surprises at the deadline.
For ten years I built for places where almost-done isn't an option. CoronaMelder, millions of users. The NOS app, more than a million people every single day. The Dutch Parliament, Rabobank. Also the Ministry of Economic Affairs, national transport (HTM, RET, GVB) and a dozen others.
My own Sweather and changemonitor.io run on both platforms, both native and built by me.
Solo or in your team, on-site or remote. An app is done when it does what it should on a user's device. Not before.
For CTOs, product owners and agencies who need an app that actually ships.
Available now for new projects.
Email me your projectYou send one email. I reply within one business day. No sales funnel, no bots.
Not hiring today? Connect on LinkedIn for when a project lands.
CoronaMelder had to work from day one, with the whole country and the press watching. Rob wrote most of the background code: the invisible task that quietly wakes the app to fetch new exposure keys and check for contacts. If it stops, the app stops warning people and no one notices, so it had to keep running on millions of phones, old and new. It shipped and kept working. That is what "almost-done isn't an option" looks like in practice.
Pragmatic, not perfectionist. Code that ships on day one and is still readable to the next developer on day 365.
My own products, not just client work. Sweather, a weather app for athletes that calculates real-time scores across 47 sports (iOS and Android). changemonitor.io for website monitoring (iOS and Android). radiospotify.nl, a Spotify version of popular Dutch radio stations. All built end-to-end, from app to Python backend. And AutoQuit, a native macOS menu bar app, built and released single-handedly as open source. I know what it's like to own a product, not just ship one.
Open source as proof. Contributions to Signal, Lottie and Firefox. Not lurking, but code that gets merged and runs in production for millions. See the list.
Best when we own it together. We fit when you want a partner on the outcome, not just hands on a ticket. AI helps me type faster: it does not pick the architecture, and I never ship code I cannot explain. If the cheapest way to close tickets is the goal, another developer suits you better.
Available now. Reply within a business day, not weeks of silence.
Specialisations. iOS and Android from one pair of hands, SwiftUI, CarPlay and watchOS.
My own products. Sweather, changemonitor.io and radiospotify.nl — built end-to-end, from app to Python backend. And AutoQuit, a native macOS menu bar app, written entirely by me in Swift and SwiftUI.
Every developer calls themselves senior. I'd rather show my code. I contribute to some of the largest iOS open source projects in the world. Not lurking, but pull requests that get merged and run in production for millions of users. It keeps me sharp, and it's the hardest proof that I find my way around an unfamiliar codebase straight away.
Privacy-first messenger, millions of users worldwide. I work on the iOS side, where security and reliability basically are the product.
The animation library the iOS industry has standardized on. Thousands of apps use it to render After Effects animations natively.
The official Firefox for iOS. A big Swift codebase, millions of users.
Website change detection and monitoring. My own changemonitor.io runs on top of it.
The rest is on GitHub.
I contribute to Whoop's bug bounty program on HackerOne, for the iOS app. An app that works is one thing. An app that doesn't leak data is the same job. I'd rather find the holes myself, before someone else does.
I'm based in Zwolle, in the Netherlands, working across the country and remote. Outside work I run Ultras, do Adventure Racing and Cross Triathlons, and look for mountains to hike. Not as a CV footnote. It's the same discipline that carries into the workday: keep going when it gets messy, stay focused on what needs to ship, and clients never have to chase me down.