Here is a list of all the technology, tools, and processes
that I use to get the job done.
I often get asked about the technology, tools, and processes I use to build software, work
with people and teams, and stay productive. Perhaps more honestly, the stuff that I buy to
fool myself into thinking I'm being productive when in fact, I'm really just
procrastinating. Here's a list of things that help me procrastinate as well as my favourite
daily driver stuff.
Workstation
14" MacBook Pro, M4 Max, 128GB RAM (2024)
I have been using Macs since the early 00's. As infuriating as Apple products can be from
time to time, they are still — by a substantial margin — the least infuriating pieces of
technology that I deal with on a regular basis. This new Mac is an absolute beast. Every
third generation MacBook is a standout machine. This is one of those standouts.
The UHK 60 v2 is a fully programmable, impeccably built, open-source, split mechanical
keyboard designed for extreme productivity and ergonomics. It is an idiosyncratic beast
with hot-swap sockets, per-key RGB backlighting, double-shot PBT keycaps, USB-C, and
braided cables.
Apple Magic Trackpad
This sits on the left hand side of my keyboard just under the monitor. It's getting on a
bit now, so its main use is to save me if the Apple Magic Mouse ever runs out of charge.
Herman Miller Aeron Chair | Secret Lab Omega 2020 | Cloth-covered Exercise Ball
I spent a lot of time in front of the computer so I might as well be comfortable. I
oscillate between the impeccably constructed Aeron and the rugged Secret Lab depending on
the day. And I use the exercise ball occasionally when I want to convince myself that it
passes as exercise.
Emacs was the first editor I used as an engineer (back in the early 90s). Over the years,
I have tried just about everything, but I have always ended up back in Emacs. These days,
I switch around between Emacs and Obsidian (which has great mobile support) as needed, but
I always seem to find myself back in Emacs.
Obsidian is the closest I have come to switching away from Emacs on a permanent basis. If
only it used Elixir instead of JS for customisation, it would be a no-brainer conversion.
It also has a raft of community plugins that enable everything from mind maps to data
tables.
I change terminals about as often as I change editors, so when I tried out Warp in early
2024 I figured that was it for terminals for a while. As it happened, I ended up switching
pretty soon after that over to iTerm 2 and haven't looked back.
I started out with functional programming (Scheme, Lisp) at Uni, and then moved on to C++
and Java as a professional programmer. I switched mid-career to Ruby and then slowly
drifted away from day-to-day coding. But in 2023, I set myself the goal of getting back
into coding with a couple of hobby side projects, and journeyed into the Elixir ecosystem.
Elixir is a wonderful platform that manages to combine elegance, performance,
sophistication and dare I say it, bring real
joy back to programming.
I use mind maps whenever I have an unstructured or uncertain problem that needs to be
quickly structured and organised into a format that can be easily communicated.
The ability to ignore everything other than the text you are writing is a
powerful self-hack that lets me concentrate on the content and not the format. Using raw
text as the underlying format for documentation means that it can be checked into source
control as if it were software. It is hard to overstate how important that is to
an engineering team.
Divvy is another utterly game-changing addition to macOS UX. The ability to move windows
around on a grid with a couple of keystrokes (and not the mouse) saves me minutes per day
which really starts to add up over time.
Moom allows you save the window locations of apps on your desk top so that they can be
snapped back with a click. Because I move around between two different desks and my laptop
on the go, the ability to quickly get all of my windows back to where they are supposed to
be quickly is functionality that I don't think I can do without.