I help teams design and build maintainable web software, migrate away from fragile tooling, and improve code quality and developer experience. My focus is on Python, Django, and modern TypeScript.
I’ve been working as a freelance developer under the name Loopwerk since 2016, fixing and finishing projects for international clients such as Last.fm, Sentry, WeTransfer, and Unilever.
On this site you’ll find my technical writing, open-source work, and information about working with me.
As I prepare Saga 3, I keep running into fundamental limitations in Swift Package Manager that make maintaining a plugin ecosystem unnecessarily painful.
Normally I just stick to my once-yearly "year in review" articles, but the first three months of this year have been so productive that a Q1 update seems warranted.
I've created a brand new documentation website for Saga, built with Saga itself. It features full API reference docs, works without JavaScript, and looks pretty great.
I've created a Swift package that wraps the Tailwind CSS standalone CLI, removing the need for Node.js or npm in your build pipeline.
A collection of reusable utilities for Saga, extracted from this very website: composable HTML transformations and useful String extensions.