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.
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.
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.
Apple iMac M4
Crazy. I never thought I would find myself using or buying
any Apple hardware yet here we are. I was finally forced to
choose between macOS and Windows by an employer (which was
a very easy choice to make) and found macOS
fine. This unlocked an interesting new option for
hardware, I had been considering a MacBook Pro as that is
what I had been using (without a monitor), however the
Apple Silicon chips are fast enough in a base configuration
that I could go to an iMac, which has all the built in
goodies of the MBP but with a bigger (although strictly
worse) screen. The pleasant green colour matches my office
nicely and given I never actually take a work laptop out
of the house this seemed like a no-brainer to me.
We shall see how this extended Apple experiment plays out
but I am unlikely to expand my iDevices much beyond this,
the included keyboard is awful, the trackpad is acceptable
but I still prefer a trackball. I wish it had a marginally
better, hell even smaller, screen, and touchID on the back
(although I am "holding it wrong" by not using the included
keyboard I guess).
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.
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.
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.
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.
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.
With the recent addition of several UK banks I can now
use it to make contactless payments too. If I were to
upgrade I would possibly look at the even larger models
for a slightly bigger display for maps, but they are
a little unwieldy on the wrist (maybe I just need to
work out more).
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 many 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.