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.
Saga 3 brings much faster builds and a more flexible pipeline, while Parsley 1.2 adds powerful Markdown attribute support.
Nine months after adopting Alpine AJAX with Django, I've gone through template partials, Jinja2, and landed on an approach that's both fast and clean.
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.