This is a post that serves mostly to try and seed Google with an answer to a question I had, that I couldn't find an existing answer to. I was working on some macOS Swift code that needed to care about UNIX device nodes (ie block/character devices), which are …
Swift 6 is great, but the strict concurrency checking can make interactions with older Apple APIs be... not fun. Furthermore, older Apple APIs can be less aware of Swift's async features, which becomes particularly relevant if you have adopted actor objects, since access to those is always async.. I recently …
All of my smart home stuff is running in Home Assistant, and I'm using their OS on a Mini PC. One of the things I'm running on that OS is the Scrypted Add-On to bridge my generic RTSP cameras into HomeKit, and to use Scrypted's NVR. By default, Scrypted will …
I run most of my home services in Docker, and I decided it was time to migrate Tailscale from the host into Docker too. This turned out to be an interesting journey, but I figured I'd talk about it here for anyone else hitting the same issues. Here is my …
Introduction Hammerspoon now has per-commit development builds generated automatically by a GitHub Actions workflow . This was a surprisingly slow and painful process to set up, so here are some things I learned along the way. I prefer scripts to actions There are tons of third party GitHub Actions available in …
(If you don't want to read this whole thing, skip to the end of the post for a tl;dr version) I was lucky enough to get a Labists X1 3D printer for Christmas a few weeks ago, and it's the first 3D printer I've had or really even interacted …
Previously I wrote about how I'd tried to create an app, but ultimately failed because I wasn't getting the results I wanted out of the macOS CoreAudio APIs. Thanks to some excellent input from David Lublin I refactored the code to be able to switch easily between different backend audio …
I recently had the need to migrate someone in my family off an old ISP email account, onto a more modern email account, without simply shutting down the old account. The old address has been given out to people/companies for at least a decade, so it's simply not practical …
I've just published https://github.com/cmsj/HotMic/ which contains a very good amount of a macOS app I had hoped to complete and sell for a couple of bucks on the Mac App Store. However, I failed to get it working, primarily because I don't know enough of CoreAudio …
I'm sure many of us receive regular emails from the same source - by which I mean things like a daily status email from a backup system, or a weekly newsletter from a blogger/journalist we like, etc. These are a great way of getting notified or kept up to date …
As part of our general effort to try and raise the quality of Hammerspoon, I've been working with @latenitefilms to track down some memory leaks, which can be very easy if you use the Leaks profile in Xcode's "Instruments" tool. I tried this various ways, but I kept running into …
So this is a fun one, some marvellous hackers, including Zoltan Balaton and Sebastien Mauer have been working on Qemu to add support for the Sam460ex motherboard , a PowerPC system from 2010. Of particular interest to me is that this was a board which received an official port of Amiga …
Back in this post I described having switched from a Mac Mini + DAS setup, to a Synology and an Intel NUC setup, for my file storage and server needs. For a time it was good, but I found myself wanting to run more server daemons, and the NUC wasn't really …
Homebridge is a great way to expose arbitrary devices to Apple's HomeKit platform. It has helped bridge the Google Nest and Netgear Arlo devices I have in my home, into my iOS devices, since neither of those manufacturers appear to be interested in becoming officially HomeKit compatible. London has been …
Trello have a Mac app, which I use for work and it struck me this morning that several recurring calendar events I have, which exist to remind me to review a particular board, would be much more pleasant if they contained a link that would open the board directly. That …
Homebridge is a great way of connecting loads of devices that don't support Apple's HomeKit , to your iOS devices. It consists of a daemon that understands the HomeKit Accessory Protocol and many plugins that talk to other devices/services. My home server is running Ubuntu, so installing Homebridge is fairly …
Systemd includes journald , a fancy replacement for the venerable syslog daemon (and its descendents, syslog-ng and rsyslog ). One interesting, but frustrating, decision by journald 's maintainers is that it does not speak the syslog network protocol, so it's unable to receive remote syslog events. Remote syslog is a tremendously useful …
Hammerspoon is heavily dependent on Lua - it's the true core of the application, so it's unavoidable that we have to interact with Lua's C API in a lot of places. If you've never used it before, Lua's C API is designed to be very simple to integrate with other code …
A recent feature request for Hammerspoon requested that we add support for reading battery information about AirPods ( UK US ). Unfortunately because their battery status is quite complex (two earbuds and the case), this information is not reported via the normal IOKit APIs, but with a bit of poking around in …
Today marks 10 years since the very first public release of Terminator , a multiplexing terminal emulator project. I started working on Terminator as a simple way to get 4 terminals to not overlap on my laptop screen. In the following years it grew many features and attracted a userbase I …
Intentionally inflammatory title there, but there are some valid reasons to be annoyed at USB Type C. Firstly, I have discovered (the hard way) that although there are many cables on sale, the majority of Type C cables do not support even USB 3.0 speeds (so 5Gb/s) let …
Introduction This is part one in a series of posts about some hardware I recommend (or otherwise!) for people who want to bring some semi-professional flair to their home network. The first topic is storage - specifically, Network Attached Storage. Background For the last few years, I was running a Mac …
Over the last few years, various people have used Karabiner to remap Caps Lock to cmd+shift+opt+ctrl, which is such an unusual combination of modifier keys, that it effectively makes Caps behave as a completely new modifier (which we have collectively called "Hyper", in reference to old UNIX …
Bye bye Blogger, hello GitHub Pages. This means no more comments, and probably a bunch of posts have terrible formatting at the moment, but at least my blog is now just static Markdown files I can edit nicely 😁 (Also the domain has changed, cmsj.net is the new tenshu.net …
It's been 15 years and my GPG key is now looking hilariously out of date - 1024bit DSA key. Yuck. So, time to start over. Below is a statement about the change, with details of my new and old keys, signed by both keys. Since it will almost certainly not paste …
The premise of this project is simple - my family lives in London, there's a bus route that runs along our road, and we use it a lot to take the kids places. The reality of using the bus is a little more complex - getting three kids ready to go out …
I was searching around for ways to automate sending iMessages, so I could write a plugin for Hammerspoon . I found various scripts lurking around the place for sending iMessages, but I also found one that can send SMS if you have SMS Relay enabled (which means you need OS X …
Comparing the Moto X to the Nexus 4 is interesting in one particular respect - the price. The Nexus 4 (made by LG, sold by Google) had very respectable specs when it was launched, but its price was surprisingly low ($300 off contract). We were told this was because it was …
Anyone who's been following Terminator knows this post has been a long time coming and should not be surprised by it. As of a few days ago, I have handed over the reigns of the project to the very capable Stephen J Boddy (a name that will be no stranger …
I've started using Keyboard Maestro recently and it is one impressive piece of software. Here are a couple of the macros I've written that aren't completely tied to my system: Type current Safari URL - This will type the URL of the frontmost Safari tab/window into your current application. Handy …
This is pretty simple really - unless Apple wants to launch a new Mac Pro and have it be out of date almost immediately, they need to wait until Intel has released Ivy Bridge Xeons, which won't be until next month at the earliest (and given the delays with Haswell, July …
There have been some rumours recently that the next iteration of the Mac Pro is going to be modular, but we have had very little information about how this modularity might be expressed. In some ways the current Mac Pro is already quite modular - at least compared to every other …
The toweringly awesome Alfred 2 app for OS X has a great clipboard history browser. This is how I suggest you configure and use it: Map a hotkey to the viewer (I suggest making it something involving the letter V, since Cmd-V is a normal Paste. I use Cmd-Shift-Option-Ctrl V …
The present: It's been a very long road since Terminator 0.96 back in September 2011, but I'm very happy to announce that Terminator 0.97 was released over breakfast this morning. There's a reasonable amount of change, but almost all of it is bug fixes and translations. Here is …
I keep finding super handy little things to do with Alfred 2 and so I thought I'd post some more: Alleyoop - updates installed plugins (if the workflow author supports it, which many currently do not). I hope this will be a temporary workaround until a centralised workflow repository is created …
Since I started using OS X as my primary desktop, I've loved Spotlight for launching apps and finding files. I resisted trying any of the replacement apps, for fear of the bottomless pit of customisation that they seemed to offer. With the very recent release of Alfred 2, I was …
If you saw my recent post on some preparatory work I'd been doing for the arrival of an LCD status panel for my HP Microserver, it's probably no surprise that there is now a post talking about its arrival :) Rather than just waste the 5.25" bay behind the LCD …
I've got an LCD on the way, to put in my fileserver and show some status/health info. Rather than wait for the thing to arrive I've gone ahead and started making the config I want with lcd4linux. Since the LCD I'm getting is only 20 characters wide and 4 …
Introduction This is going to be quite a long post, but hopefully interesting to a particular crowd of people. I'm going to tell you all about how I have designed and built a paperless workflow for myself. Background This came about some months ago when I needed to find several …
Introduction Since I'm writing about workflows today, I thought I'd also quickly chuck in a guide to how I get the photos and movies that I've taken with my iPhone, onto my laptop and specifically, imported into Aperture. The Mechanics This requires a few moving parts to produce a final …
My take on more advanced SSH usage I've seen a few articles recently on sites like HackerNews which claimed to cover some advanced SSH techniques/tricks. They were good articles, but for me (as a systems administrator) didn't get into the really powerful guts of OpenSSH. So, I figured that …
Jono Lange was committing acts of great evil in Bash earlier today. I gave him a few pointers and we agreed that it was sufficiently evil that it deserved a blog post. So, if you find yourself wishing you could get pretty desktop notifications when long-running shell commands complete, see …
I've only had the Remote Access card installed in my HP Microserver for a few hours and already I am bored of accessing it by first logging into the web UI, then navigating to the right bit of the UI, then clicking a button to download a .jnlp file and …
I've been using an HP ProLiant Microserver (N36L) as my fileserver at home, for about a year and it's been a really reliable little workhorse. Today I gave it a bit of a spruce up with 8GB of RAM and the Remote Access Card option. Since it came with virtually …
I'm sure we've all been there - you buy something on eBay or from a third party on Amazon, and what you get is either rubbish or not what you asked for. The correct thing to do is to talk to the seller first to try and resolve your problem, and …
I just woke up here in London and saw the news about Steve Jobs. It's early and, as usual for this time of day, my seven month old son is playing next to me. He has no concept of what my iPhone is, but it holds his fascination like none …
I've just pushed up the release tarball and PPA uploads for Terminator 0.96. It's mainly a bug fix release, but it does include a few new features. Many thanks to the various community folks who have contributed fixes, patches, bugs, translations and branches to this release. The changelog is …