MNU is a tool I use every time I work on my computer. It’s a menu bar utility that allows me to trigger command line scripts and tools with a couple of mouse clicks. Despite its utility to me, I haven’t given it any love for some time, so I recently remedied that with a spring clean of the code. I also added a new feature: custom keyboard shortcuts.
Continue readingCategory Archives: Mac
Meet Depot, an RP2040-based multi-bus adaptor for Macs and Linux PCs
I’d like to introduce you to Depot, the new name for an expanded version of the Raspberry Pi RP2040-based adaptor I launched last year as cli2c. Why the name change? In addition to I²C, the firmware and the client-side code that interacts with it, now supports 1-Wire, and more buses will be supported soon.
How to get macOS file previews for non-standard text files
macOS has a built-in preview generator for .txt and .text files, but it’s not able to handle text files that have no file extension, like Makefiles. It will also ignore textual files with other file extensions, such as subtitle files and .nfo files. This was bugging me, so I wrote an addition to my PreviewApps range to tackle these files. It’s called PreviewText and it’s available now, free of charge, from the Mac App Store.
Preview JSON files with macOS’ QuickLook and PreviewJson
I’m pleased to announce the latest in my PreviewApps series: PreviewJson. It taps into macOS’ QuickLook feature to provide at-a-tap previews of JSON files and generates Finder icon thumbnails for them too. There are some updates out too.

How to manage multiple serial devices on a Mac
I connect to my Mac many USB devices that communicate over a serial (UART) bus to send debug information to the host or to receive data and code. You know, Raspberry Pi Picos, Adafruit Feathers, FTDI cables — that kind of thing. Often I have more than one connected. Is there an easy way to see what’s connected without listing /dev every time and to remember connected devices’ paths?

Notarise macOS command line apps more quickly
It’s June once more, and time for Apple’s Worldwide Developers’ Conference (WWDC). This is a chance to learn about new functionality and, yes, discover initiatives announced at previous WWDCs that you completely missed the first time around. A case in point: Apple’s revamp of how apps are notarised at the command line, which was revealed at WWDC 21 but I only encountered this week.
Continue readingHow to write Unix man pages for macOS command line apps
Over the last few years I’ve released a number of command line utilities for macOS. I’ve always included online help within them, triggered with the --help switch, but I recently wondered how I might provide Unix Manual pages too. It would allow users to call up help with the CLI command man as well as a command switch. Belts and braces, perhaps, but I’m a completist and, more to the point, didn’t know how it was done and wanted to learn.
How to do DNS over HTTPS with macOS
My last post detailed how you set up DNS over HTTPS (DoH) for a client Raspberry Pi. I mentioned that I tried this out first on a Mac, and so I’ve been asked to show how running DoH on macOS works. Here goes.
Continue readingPreviewCode 1.2.0 released to support user-requested programming data file types
PreviewCode, my macOS Finder source code and data file preview app, has had a major update to support a bunch of developer-oriented file types requested by users. The new version, 1.2.0, is available now from the macOS App Store.
Continue readingTackle async signal safety in Swift
How do you safely interrupt a command-line program written in Swift? This question was posed to me this week by a reader who got in touch to point out that boilerplate code included in my How to write macOS command line tools in Swift post might not be totally safe: it could leave a program and system in an undefined state, which is never a good thing. So I took a closer look.








