Why a blog
I've been building things quietly for a while — voting libraries, Berlin subway animations, ESLint plugins. This is the place where I write about the interesting problems I run into along the way.
No particular schedule. No particular audience. Just a place to think in public.
What you'll find here
Mostly software. Some of it practical:
- How I set up a specific tool
- A problem I spent too long solving
- A pattern I keep reaching for
Some of it more speculative — ideas about how systems should work, or why they don't.
This site
The site itself is built with Remix running on Bun, styled with Tailwind v4, and deployed to a Hetzner VPS via GitHub Actions. Posts are MDX files in the repo.
// The whole stack in a few lines
export const auth = betterAuth({
plugins: [anonymous(), username()],
database: drizzleAdapter(db, { provider: 'pg' }),
})More on the stack in a future post.