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.
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.
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.