Journal entries

One year of using the web with web fonts disabled
Breaking the dependency treadmill
Status update 2025-01
Simple optional dependencies via meta-packages
Why I don't use TikTok
Soju failing with "too many open files"
URLs and percent encoding
Exporting photos from an iPhone
Pimsync status update 2024-12
Injecting project versions into builds
Vdirsyncer status update 2024-11: renaming to pimsync
Snooze: a simpler cron
Vdirsyncer status update 2024-10: security audit
Vdirsyncer status update 2024-09
Transcribing audio with whisper.cpp
Writing an emoji input method, part 1
Dark mode is not about aesthetics
Status update 2024-08
Unix domain socket support for vdirsyncer
Quickly render the Clipboard as a QR code
Typing non-English characters
Introducing wlhc: wayland hot corners
Editing filenames and directories in Vim
Status update 2024-06
IRC is great for public spaces
Notes on saving coredumps
SSH as a sudo replacement
Status update, May 2024
Growing my root partition to the left
Darkman portal configuration
Vdirsyncer status update, March 2024
Notes on s6
My 'lock-and-sleep' script
vdirsyncer: rewriting status management
Nine months of Xendmail
Setting up an IRC bouncer (soju) on OpenBSD
Extended usages of the primary selection
vdirsyncer: preparing for alpha version
Specification and development status for valarmd
vdirsyncer status update, November 2023
Measuring test coverage in Rust
Setting a battery charge threshold
Setting up an Alpine Linux workstation
vdirsyncer status update, October 2023
A configuration format for vdirsyncer v2
Debugging a non-functional pylsp
vdirsyncer status update, August 2023
Building and running sway-master
vdirsyncer status update, July 2023
Extending an expired GPG key
senpai: a modern IRC terminal client
vdirsyncer status update, June 2023
Understanding the XDG access portal
vdirsyncer status update, May 2023
Introducing davcli
DNS-based discovery for CalDav and CardDav
libdav live test results
Tracking dotfiles
Installing postmarketOS on a OnePlus 6 with an encrypted filesystem
Thoughts on sendmail in 2023
vdirsyncer status update 2023-03
AI-assisted computer interfaces of the future
Notes on Podman
Using a Yubikey for both GPG and TOTP
In praise of Alpine and apk
OpenWrt with KPN fibre optics
vdirsyncer: looking for hosted Dav servers
icalendar bug at NS International
Setting up IRC redirects
Notes on ruff
Notes on pre-commit
Selection / clipboard cheatsheet
Copying with Super+C
Systemd, locking and sleeping
How the clipboard works
Shotman 0.2 development update part 2
Shotman 0.2 development update part 1
My packaging policy
Please verify it's you
Meson for Python applications
Announcing caffeine-ng v4.0.0
Using a Yubikey for GPG
Quick and simple VMs with qemu
Status update, May 2022
How I secure my setup with a YubiKey
Open source platforms for open source software
A vdirsyncer rewrite
Introducing darkman v1.0.0
I like that Signal is looking for sponsors
Running Eve-Online on Linux/Wayland
The issue with flatpak's permissions model
How disk encryption works
My desktop-wide microphone mute toggle
A simple boot setup with SecureBoot
Zoom screen sharing on ArchLinux
What is git?
Spotify review
Using FreeOTP with Battle.net
Using letsencrypt with HKPK
I'm giving up on IM
Start small, then grow
Introducing Todoman
Open source your website
Opensmtpd and dovecot with a shared SQL database
Performing backups the right way