Home Alisdair MacLeod's Personal Site

About Me

I am a programmer, or maybe a "software engineer" although I never really liked that term having known enough chartered engineers. I am a member of the BCS, so perhaps that lends some credence to the "engineer" title. I've worked on lots of different projects and in lots of different languages, enough to know that everything is crap built on top of more crap, all the way down the stack. That doesn't mean we can't strive to not churn out a load of garbage code, it just means that you have to balance trying to make perfect code with delivering something of value to a customer, most of whom don't care if the code is perfect or not. This is also probably the reason I refuse to do any frontend work anymore, anything beyond command line flags is just going to end up in a world of making sure the hue of your secondary colour is just right, or trying to make input box alignment pixel perfect.

I have a learned wariness of other programmers, we're an egotistical bunch and I often find myself fighting with people who like to try to show off how smart they are. That is why I currently like Go, it pretty much shuts down any ability to be too clever and seems to have chased off all the people who like to brag about how clever their most recent piece of unmaintainable, unreadable code is.

In my personal life I try to get away from all the garbage technology as much as possible, I love to cycle but keep all those electronic wireless drivetrains away from me, I rarely even take my phone with me when I go cycling. I also enjoy other non-technological pursuits, like walking in the countryside or climbing. I used to sail but boat ownership is quite expensive and I don't live anywhere particularly near a good venue to justify the costs.

Around this site

I used to have a blog, but I'm not much of a writer, so I decided to remove it. There might be something in the Internet Archive if you're lucky.

If you want to hire me here's my CV.

And here's some of my code/configs.

Stuff

This is a thing people do right? Catalogue all the stuff they use? I do find them fairly entertaining to read from time to time so here is mine.

iKoolcore R2 Max
The heart of my operation. I have run my own router, firewall, server, switch, type device for a while now. There are a couple of things I look for: 3-4 Ethernet ports, 2+ drive bays, HDMI output, and a couple of USB ports. The R2 Max does all of this and throws in 10G speeds, USB-C PD power, and fanless cooling.

Before this I have had a Fitlet3, MS-01, APU 6b4 and 4d4 and some custom mITX builds. This is by far the best hardware package for what I want to do with it out of everything I have used so far.
GPD Win Max 2
I've moved away from desktops because I ended up with a laptop as well anyway so now its just laptops only for me, I'm not super happy about that though because all laptops are compromised in some way and seem to be gradually moving to have more and more soldered parts which is very disappointing.

The Win Max 2 is pretty close to an ideal laptop for me. All AMD so plenty of cores and a decent GPU (on Linux), 32GB of RAM, 4TB SSD, 10 inch 16:10 2k display, built-in controller. It's a great blend of portability, power, and an excellent gaming experience. My only real issues with it is that the firmwares are a little locked down and the RAM is soldered on.
Reproduction Model F 4707 62 Key
It wouldn't be a programmer list of stuff without a keyboard. Something about buckling springs just really takes me back to my childhood (no idea why because I was brought up on scratchy BBC Micro and Acorn Archimedes keyboards) and I find it much more comfortable and satisfying than any modern mechanical keyboard. I previously used a Kinesis Advantage which remains one of my favourite layouts, however did cause me to almost entirely lose the ability to type on a normal keyboard which was...not ideal. The current layout is the HHKB layout which I feel is the best standard keyboard layout I have used, however as good as Topre is, I don't find it as entertaining to type on as the Model F. Before that there was a Filco, Ergodox, GH60, and an Atreus.
pixelart keyboard
Kensington Slimblade Pro
That's right, a trackball. I think my first trackball was a LogiTech TrackMan Marble FX, from there I've been through a gamut of LogiTech trackballs and a CST L-Trac before coming to my current Slimblade. The only gripe here is that the buttons are a bit crap compared to other mice I've had and of course the Kensington software is absolute garbage, non-existent on Linux, non-functional on macOS, barely passable on Windows.
Kensington Pro Fit Ergo
This is my "on the go" trackball. I used to daily drive a thumb ball, but I found it was making my thumb joint sore after longer sessions so moving to a finger operated trackball for daily use was better for my hand health. This is only sticking around because of the bluetooth ability and device switching. Previously I had a Logitech MX Ergo but switched to get a USB-C charge port so that the mouse and laptop can share a cable for charging.
Bose QC-45
These were a free replacement after my QC-35s suffered a random turning on issue. That is good enough for me to keep using them until they die. USB-C charging is nice and the noise-cancellation is great for travelling. I use it for work meetings, and they're very comfortable for long periods of time other than a fully stacked day during the summer where I get sweaty ears.
Shokz OpenRun
A neat solution to hot ears during days of back-to-back meetings (as my job seems to mostly be now), with the added advantage of staying on (rather than in) my ears for exercise, allows me to hear traffic whilst cycling or running. Battery life is so-so, but they get through a work day so not bad enough to cause me too many issues as long as I remember to charge them every day. Proprietary charger sucks too but at least it's a simple magnetic one so the lifespan should be fairly long, and you could likely rig one up in a pinch. Switching devices is not seamless and requires re-pairing to the new device.
Garmin epix Pro
If I'm going to have a smart(ish) watch then it has to be able to keep up with my poor charging regimen. I can get a full walking weekend of GPS usage without a charge or about a month of normal watch usage before needing a charge, come at me with your fancy "Ultra" watch Apple. The proprietary charger is a hassle, so it's probably a good thing it doesn't need charging very often. The fitness tracking and training coaching is great. As is the OLED display enabling having proper maps for GPS. If there was a downside here it would be Garmin Pay being practically unsupported by any banks here in the UK.
Amazon Kindle Paperwhite
I've always been a "physical books only" kind of chap, but there was that ever present niggle that I might really enjoy a Kindle. When the USB-C version of the Paperwhite came out I finally bit the bullet and ordered one. I must say it is pretty great for reading in all situations, better even than a physical book thanks to the backlight. What I hate about it is that, like so much technology these days, it is all locked into a single platform. I guess lets hope Amazon never remove any of the books I have purchased from my library, like they seem to do for TV/Films.
Google Pixel 8 Pro
Ah yes, the smartphone. I wish I could never use it. I think my ideal device would be a smartwatch with the ability to link to a car to use Android Auto/CarPlay (because car manufacturers are objectively terrible at software), link to bluetooth headphones, stream music/podcasts over 4/5G, all with the same battery life I get from the Garmin. That way I could ditch the smartphone with its time sapping YouTube and Browser. I've trimmed the apps down to a bare minimum, but you can never escape having a browser available to waste your time with.
Analogue Pocket
I'm about the right age for Game Boy, I remember friends at school having the OG and Pocket, my first was a Color. I had to wait quite a while for this to come in but the wait was worth it. It is pretty much a combination of all the modifications you would want to make to a Game Boy (USB-C rechargable, bright backlit IPS display, flash cartridge) all rolled into one really neat package. The screen and speakers are great and I love being able to play all the games from my childhood, no internet connection required.
OpenBSD
For my server this was the only choice. Such a minimalist system, it's great. I make use of httpd, smtpd, dhcpd, unwind, unbound, acme-client, pf, fingerd, sshd. I only have to install a very minimal set of software on top to do other things like IMAP email access with dovecot.
JetBrains Intellij IDEA Ultimate
Lets see: started out with notepad++, moved to vim, spent about 5 years using just vim, moved to VSCode (thanks JavaScript), tried emacs, used acme for 3 years, tried emacs again, started using Goland on a massive Go codebase, bought an IDEA Ultimate licence, now it has been 3 years of using a full-blown IDE. It gives me everything I want in one place, which was always the appeal of emacs for me, and what I managed to achieve in acme, and never got to in vim. To be honest I would still be using acme if it was possible to run it without needing to compile all the other plan9 tools at the same time and not have them live as part of your normal OS install.