-
Changelog: 26 September to 12 October
72 releases across 23 apps. Jorvik Daily News gets keyboard navigation, on-device translation and Boss Mode. WindowPin can crop a pin to part of a window. ActiveSpace can name spaces. Nomen is new. In every app, the About and Settings windows now open on the current space. MenuTidy users must check for updates manually once.
-
Announcing Nomen: AI Screenshot Renamer
Every screenshot on my Mac was called Screenshot, followed by a timestamp. Nomen renames a screenshot by what it shows, a few seconds after I take it, using the model Apple now ships inside macOS, so nothing leaves the Mac.
-
Changelog: Giving Way
Two hundred and twenty-six releases across twenty-five apps since the last changelog, and most of them are about macOS 27. Several of my cleverest tricks stopped working on the day it shipped, and the fix, more often than not, was to stop being clever and let macOS do the job itself. Plus a newspaper that no longer needs a browser to show you an article, three screensavers that were arguing with themselves, and one thing you may need to do by hand.
-
Not Invented Here
I built SpaceMan because nothing else remembered my window arrangement the way I wanted. Somebody else has since built a better version of it, so SpaceMan is retired and I am contributing to the app that beat it. The price of admission is the one idea in SpaceMan I was actually proud of.
-
Changelog: Browsers, Rainbows, and an Honest Token
Six releases across four apps since the last changelog — a note that writes its own first line, a thread pool quietly starving in the background, five browsers a README had been promising for months, a rainbow that learned to ride the menu bar, and an error panel that stopped blaming your credentials for the weather.
-
Announcing Kairos: launchd Without the XML
macOS already ships an excellent scheduler. It survives reboots, handles missed runs, and needs no third-party daemon squatting in your menu bar — and the price of admission is hand-authored XML and a manual page that thinks Sunday is both 0 and 7. Kairos is the front end launchd never got.
-
Changelog: one fix, twenty-one apps
If you use more than one or two of these apps, your Mac has spent the week updating them. Most of it is a single fix to the shared settings pane, which for as long as it has existed opened at a fixed size with a scroll bar however much room the display had. Plus permission rows that stopped lying, a band of about twenty points beside the notch that macOS does not admit exists, and real features in Lookout, QuitProtect and ASCII Saver.
-
Changelog: Lookout 1.1.0
Lookout watches GitHub so I don’t have to. It sat silent for three days while three pull requests waited on one of my own repositories — not because it was broken, but because of one word in a search query. It also had a countdown that had displayed ‘in 0 sec’ since the day it shipped.
-
Changelog: QuitProtect 2.0.9, 2.1.0 and 2.2.0
Three releases in a day, prompted by the first substantial contribution anyone has ever sent me. QuitProtect now speaks Simplified Chinese, has an optional overlay telling you what to do next, and no longer claims to be protecting you when it isn’t. That last one was mine, and I only found it because I was reading someone else’s code.
-
Changelog: RainbowApple 2.0.11 and 2.0.12
Two releases in twenty minutes, for two bugs that had been sitting in plain sight. The rainbow logo was vanishing whenever certain apps took focus — not a drawing bug but a measuring one. And the six colours had been in the wrong places since the very first build, because I’d striped the wrong rectangle.
-
Changelog: MenuTidy and ActiveSpace
A clutch of small, careful updates to two of my menu-bar tools. MenuTidy learned to tidy itself and made its peace with macOS Tahoe; ActiveSpace's space-aware app switcher finally makes it obvious which app you're about to land on.
-
The Volume Knob Was Winning
I’ve spent thirty years building a music library — pub bands, street buskers, support-act CDs that never reached a single streaming service, an almost-complete collection of a band who deleted themselves from history. All of it recorded at wildly different volumes, all of it a chore to actually listen to, because one hand was forever on the dial. So I built a small app that learns how loud each track really is and quietly evens them out — no audio driver, nothing to install. This is also the project the dancer was hiding in.
-
Nobody Dances Like That
A little app I’ve been building sprouted a music visualiser, and I decided it needed a dancer in the spotlight. So I drew one — head, arms, a swirling skirt — and she looked wrong in a way I couldn’t explain. Here’s how a black blob, a smoke machine, and a hard lesson about the human form taught me to make something feel alive by refusing to say what it is.
-
The Shortcut I Never Meant to Press
There is a key combination on every Mac that toggles display mirroring, it sits one slip away from shortcuts you use all day, and I kept hitting it by accident at exactly the wrong moment. So I built a tiny app to swallow it. The build had a twist: the key I was trying to block turned out not to be the key I thought it was.
-
The Column I Couldn't Copy
Last week I needed to copy a single column out of an HTML table in an email, and discovered that the boring solution — copy the whole table, paste it somewhere, trim it back — is a fifteen-second tax on a one-second intention. So I built CopyLens. Draw a rectangle anywhere on screen; if there's text inside, it lands on the clipboard as text. If not, the cropped image does. Same gesture, two outcomes. Plus a full-disclosure note about how the OCR engine actually got built, which wasn't by me.
-
The Icons Behind The Notch
MenuTidy was the app I'd quietly filed away as 'done' — collapses your menu bar, cleans up clutter, ships. Today I added a feature I'd been trying to ignore for months: a way to actually click the status icons that the notch on MacBook Pros has politely hidden behind itself. I also fixed a position-memory bug that had been quietly lying to users for months.
-
Default ON Was The Wrong Default
I changed the rendering format of the standard “background pill” option of our menu-bar apps. I set the default to “on”, propagated deployment across eleven apps in a sweep, and then realised it was silently changing settings for upgraders who'd never touched the toggle. The pill that came shipping with everyone's next update was a small surprise nobody asked for. A short lesson in `UserDefaults.register`, the difference between “fresh install” and “user with no preference set”, and why reversing a convention across eleven repos in one go is sometimes the only honest move.
-
The App I Needed At 1am
“I've lost my mouse pointer” demanded a tiny one-shot utility — and taught me a lesson in why “give the user a Terminal command” is a poor recovery flow when she doesn't have a mouse pointer. Building MouseCatcher, bundling it with ActiveSpace, and the install-permissions detour that nearly derailed it.
-
When the Stars Align (Final Cut)(Maybe)
The latest version of ActiveSpace is shipped. Third and final post in the stars-align saga: the 640×480 virtual display from the Redux turned out to be a perfectly valid second monitor as far as macOS was concerned, with the Dock and cursor both happily wandering onto it. A drift reposition, a cursor fence, and the satisfying deletion of a self-restart mechanism the data showed wasn't needed.
-
When the Stars Align (Redux)
The instant space switching technique that worked on two monitors and broke on one. The twelve-hour debugging odyssey that followed. And the absurd, brilliant fix that saved it.
-
When the Stars Align
How two open-source projects, a handful of undocumented APIs, and a Thursday morning conspired to make macOS space switching instant.
-
Building ClipMan
A clipboard manager sounds simple — watch the pasteboard, store what changes, let the user paste it back. The interesting parts are everything that happens in between.
-
Browser Commander: Because Backspace Should Go Back
A macOS menu bar app that brings keyboard-driven navigation to every browser — back, forward, and a searchable link navigator, all via the Accessibility API.
-
Browser Notes: The App That Nearly Injected JavaScript Into Your Web Pages
How a browser annotation tool went from injecting JavaScript into web pages to reading a single text field via the Accessibility API — and why deleting the clever code was the best decision.
-
Why I Built My Own Website Editor
macOS Shortcuts couldn't reliably catch a hotkey. So I built a menu bar app. Then a website editor. The argument for building exactly what you need.
-
The Hyper Key Changed Everything
How turning Caps Lock into a single key that sends control, option, shift and command gave me an entire new keyboard layer — and why I finally built my own app to do it.
-
Four Apps in a Day
HyperCaps, QuitProtect, ScreenLock, and a full website editor — all built in a single session. The power of reusable components and a solid release pipeline.
-
The Great Consistency Update
Every Jorvik utility has been rebuilt with a standardised settings panel, auto-update support, universal binaries, and a shared design language. Here's what changed and what you need to do.
-
When the Code Was Right All Along
I suggested two improvements to WindowPin in my last post. I investigated both. Neither was an improvement.
-
Building WindowPin: Picture-in-Picture for Everything
How I built a macOS utility that pins any window as a floating overlay — and the surprisingly deep rabbit hole of window management on macOS.
Utilities
The small macOS menu-bar and productivity apps. 30 notes.