-
We Are Now On Homebrew
Every public Jorvik app, game and screen saver is now installable from the terminal in one line. Which matters less for the one line than for what it lets you do: put your whole machine in a text file, and rebuild it from scratch without clicking anything.
-
Putting The House In Order
Two weeks of housekeeping on the Jorvik estate. It started with Spotlight launching the wrong version of an app, ended with a 1,100-line refactor of Release Manager, and surfaced about ten gigabytes of accumulated nonsense in between. This is the diary of the fortnight: what the audit found, what `ps` told me about my own apps, and why a clean filesystem is a clean countertop.
-
I Deleted Most Of My Release Manager
My Release Manager was a 1,600-line Swift pipeline that built, signed, notarised, packaged, and shipped every Jorvik app. Today it's a 770-line dispatcher, and the work it used to do happens in shell. This is the story of why I stopped reaching for Swift, and what I learned about treating the right tool as the obvious one even when it isn't the prestigious one.
-
Fine, Apple. You Win
Three months of stubbornness, then an afternoon of capitulation. The follow-up to "The Deploy Problem Nobody Talks About": every Jorvik app now ships a signed .pkg installer alongside the .zip, closing most of the quarantine-and-translocation friction the previous post complained about. Why .dmg would have solved nothing, what macOS Installer actually does on your behalf, and — because no release week is complete without one — the story of a build pipeline that silently shipped one of my apps without its own bug fix.
-
The Deploy Problem Nobody Talks About
You can build, sign, notarise and publish a macOS app in three minutes — and still lose hours getting it to run correctly on someone else's machine. This post unpacks the gap between 'released' and 'correctly installed' that only exists when you distribute outside the Mac App Store.
-
Version Numbers Are a Promise
A version number looks trivial — MAJOR.MINOR.PATCH — but for a single app it lives in five places (plist, GitHub release, config, git tag, installation), and any failed step pulls them silently out of sync. This article walks through how our Notes Editor ended up at four different versions simultaneously, why git describe can lie when tags are close together, and how we reworked our Release Manager pipeline to keep the build, release, tag, config, and installed binary all telling the same story.
-
Notarisation is Not Notarisation
A deceptively simple naming mismatch unravels an entire macOS release pipeline, revealing how fragile even well-engineered systems can be when assumptions leak between build, packaging, and runtime environments. In this deep dive, we trace how differences between PRODUCT_NAME, bundle names, and display names caused subtle but cascading failures across signing, notarisation, auditing, and distribution — despite a meticulously designed 10-stage pipeline.
-
Building Tools That Build Tools
The Release Manager automates the release of apps that were themselves built to automate things. At some point you have to step back and appreciate the recursion.
-
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.
-
My Sincere Apologies
If you downloaded one of our apps and macOS told you it might harm your computer — I'm sorry. Here's what happened, and what I've done about it.
Release
Building, signing, notarising, packaging and shipping Mac apps. 10 notes.