A comic version of a white guy with short hair, smiling.

Blog

I built a NAS—In this blog post I describe why and how I set up my personal cloud on a NAS.

2025

Brené Brown on productivity and self-worth—This post quotes from Dare to Lead (Brown, 2018) about the problem of making worthiness a function of productivity.
Reclaiming my attention—This post documents my journey to detach from my smartphone.

2024

My favorite things of 2024—This post is a record of my favorite things in 2024.
Jujutsu in practice—Jujutsu is a version control system, an alternative to Git. This blog post is not a tutorial, but practical examples of how I use it.
We need more zero config tools—Recently, I've become fond of tools that just work, out of the box. This blogpost is an ode to them.
Emacs Config From Scratch, Part 3: LSP & Tree-sitter—In this third part of my Emacs Config From Scratch series, I configure LSP and Tree-sitter.
Writing an SDK in Zig—Part 1 of writing an SDK for Axiom using the Zig programming language.
Thoughts on Zig—I've started writing Zig. These are my thoughts.
DIY Music Streaming with NixOS, Jellyfin and Manet—In this post I describe how I'm hosting my own music streaming service with NixOS and Jellyfin on Hetzner for €6 / month.
I Lived 7 Days without a Smartphone—I left my smart phone at my desk for 7 days and instead used my Apple Watch Ultra 2. This is how it went.

2023

My Favorite Articles of 2023—In this post I collect my favourite articles of the whole year.
Emacs Config From Scratch, Part Two: Projects and Keybindings—In this second post in my Emacs from Scratch series, we’ll set up a way to manage projects, quickly find files, set up custom keybindings, interact with Git and open a terminal inside Emacs.
Yearly Themes 2024—I review my yearly themes for 2023 and set new ones for the coming year.
Emacs Config From Scratch, Part 1: Foundations—The first post of my Emacs from Scratch series is all about the initial setup and defaults.
30 Bits of Advice for 30 Years—This article contains some advice I've collected in my life so far.
We Need to Bring Back Webrings—I built a webring for personal websites.
Archive Your Old Projects—In this post I describe how I wish I had archived all my old projects and my approach going forward.
My App Defaults—The apps I use
Why You Should Write Your Own Static Site Generator—I rewrote my personal website using basic libraries and the flexibility is incredible.
Static OG (Open Graph) Images in Astro—A guide to set up build-time Open Graph images in Astro using Satori, sharp and Astro endpoints.

2022

You’re Using Email Wrong—If you don’t like email, try a different strategy.
Plex on NixOS—In this post I describe how I set up Plex on NixOS, including a virtual file system for Backblaze B2 and Nginx for HTTPS.

2020

I'm Writing an App—A human, interested in software development, automation and sustainability

2019

Automate #2: Checklists with Things—How to use checklists in TaskPaper-Format with Things.
Automate #1: Spotify Podcast Mirror—How I created an Automator application, which records the latest episode of a Spotify podcast, fills out metadata and generates a file for metadata for a podcast client to subscribe to.
Announcing the Automate Series—The start of a series of blog posts, all related to one of my yearly themes: automation.

2018

I18n in Node.js—Node.js uses ICU (International Components for Unicode) for i18n and only includes English data by default.
On Hexagonal Architecture—Why a hexagonal architecture can be better than traditional MVC-style architecture, with a real-world example.

2014

.vim-project—This post explains how to get project-specific Vim settings.

2013

Deploy Octopress, the right way—This post explains how to deploy an Octopress page via Git