Blog
Ramblings about software development, privacy, and whatever happens to strike my fancy.
2025
· 8 min · 239 reads · 中文 / Chinese
Five Years of Design
· 5 min · 229 reads
A Corepack by Any Other Name
· 6 min · 755 reads
Ephemeral Permissions Considered Beneficial
· 5 min · 272 reads
Where Did My Colorful Home Manager Logs Go? Debugging Ghostty and Sudo
· 4 min · 1,343 reads
Performance Tales, Part 2: A Robust Web Font Loading Strategy
· 4 min · 653 reads
Performance Tales, Part 1: Why So Performant?
· 4 min · 314 reads
A Long Way to Nix
· 5 min · 766 reads
Setting Up My VPS with Docker Compose and Traefik
· 8 min · 7,087 reads
How I Deleted a Production Database Cluster
· 5 min · 537 reads
Tracking Subscriptions with Notion
· 3 min · 1,009 reads
How I Follow the News with RSS
· 3 min · 1,276 reads
Why I Use Eleventy
· 4 min · 1,952 reads
Redesign & Optimizations on v5
· 3 min · 426 reads
Reflections on Qt
· 3 min · 344 reads
Inside a Minecraft Launcher
· 8 min · 4,564 reads
Building a Unsplash Downloader with Deno
· 3 min · 481 reads
The Web Renaissance
· 4 min · 178 reads
Notion in Web Development
· 2 min · 252 reads
A Complete Guide to Rewrites on the Web
· 3 min · 1,167 reads
What is IIFE?
· 2 min · 181 reads
Responsive Images with Eleventy & Sharp
· 5 min · 713 reads
Vercel as a Framework
· 7 min · 889 reads
Data Fetching with Next.js
· 6 min · 1,588 reads