It is the ultimate and the inexorable pancake. If you had a sack of it or even the half-full of a small matchbox of it, you could do anything and even do what could not be described by that name.

— Policeman MacCruiskeen
The Third Policeman: Flann O'Brien

I’ve been a software engineer for longer than seems sensible to me or anyone else, and I’ve spent my career trying to cause as little harm as possible with technology.

Whilst much of my experience has been gained in object-oriented and imperative languages, I increasingly favour the simplicity, expressivity and robustness afforded by functional languages and immutable data structures. Thus far, Clojure has probably changed the way I think about problem solving more than any other language. It’s been a revelatory experience which has ruined most other languages for me, causing me to look back on my career and think "I’ve been doing it wrong all these years". I haven’t won many (if any) converts to the cause, which I’m sure speaks more to my powers of persuasion than to the qualities of the language and ecosystem. It’s "a better tool for thinking", with a transformative workflow.

I also enjoy using Rust, which is quite dissimilar to Clojure in its focus and intent. At present, I mostly use it for system-level tinkering with Raspberry Pi (cross-compiling it for the Arm7 architecture) and for excursions into WebAssembly.

I’ve spent about 11 years working with enterprise Java and 7-8 years with C#/.Net. These languages represent the bulk of my experience, and I’m still perfectly capable of programming in them - but just prefer not to do so. I now find them verbose and inelegant, with poor built-in support for state management. I certainly don’t despise them, as people with more innate talent than me have achieved great things with them - I just feel that there are better options for my own work.

The things on which I most enjoy working are probably API and library design. I love making a comprehensible interface to a complex problem domain - there’s something very cathartic about gradually winnowing away the chaff of incidental complexity to reveal the kernel of the problem. I’m also keen on process automation, to the greatest feasible extent.

The work-related things that I most enjoy (in no particular order):

  • Collaborating with colleagues in arriving at a solution.

  • Mentoring and knowledge sharing - I usually learn at least as much as I teach, and it’s always good to hear that I’ve helped someone along.

  • Knowing that my work has solved a problem for someone.

  • Learning - both theoretical and practical skills.

  • Tea. Loose-leaf Assam, brewed in a pot. Semi-skimmed milk in first. Thank you.

This site was created with Hugo, using Roberto Jordaney’s lovely hugo-refresh theme (which I tweaked in various ways to allow me to use asciidoctor for body content and KaTeX for \(\LaTeX\) content).