Posts
All writing organised for quick scanning, with consistent metadata and accessible article summaries.
2026
Redesigning My Blog, GOV.UK Style
I recently redesigned this blog. The visual direction came from GOV.UK Design System. I checked alphagov/govuk-frontend for implementation details, then asked codex-cli with gpt-5.4 to do most of the coding.
2025
A Finder Resume Copy Issue
I hit a weird Finder copy failure the other day. This was on macOS Sequoia. The copy failed halfway, and Finder said I could resume it. I didn’t really want to trust that.
2024
Mesa EGL Notes
Mesa sits in the middle of most Linux graphics stacks. On a modern desktop it is usually the layer that turns EGL calls into driver operations, talks to DRM/KMS, and connects rendering APIs to the native window system.
Android Photo Export Pitfall
adb pull can mess up file timestamps when exporting photos from Android if you forget -a. adb pull -a /storage/emulated/0/DCIM ./DCIM That flag is easy to miss. It saves a lot of cleanup later.
2023
How KDE Plasma Badge Counts Work
Today I logged into Telegram on KDE Plasma and noticed something hard to ignore: the badge count on the taskbar icon updates really nicely. It’s a small detail, but also very visible, because badge counts are meant to …
Emacs Dired Mimeicon mode
This extension displays file and folder icons in dired mode. It uses mimetype as the displayed logo and follows the icon-theme-spec file naming convention, so you can use icon themes downloaded from the internet in your …
2022
A Notification Design Idea
I recently saw the new front-screen design on the iPhone 14 pro series, which Apple calls “Dynamic island”, and that’s where I got the idea.
Cutefish Menu Bar Chameleon
macOS Big Sur introduced a new top menu bar behavior: the menu bar background color adapts to the desktop wallpaper, so it feels more integrated than before.
2018
C++ PIMPL Pattern
PIMPL means pointer to implementation, or private implementation. It shows up a lot in C++ projects and libraries. The basic idea is simple: keep private data and methods out of the public interface. Put the class …