• Neovim - I really, really do not get on with IDE's. I've tried PhpStorm and it absolutely drove me up the wall, to the point I wanted to throw my laptop out the window. Furthermore, I really don't need the stuff it provides, given I use Psalm and Codesniffer widely, and I already have solid standalone tools for most of the stuff an IDE gives you. I've been using Neovim for a few years now, having migrated from Vim, and I'm very happy with my choice. It's RSI-friendly, gets out of my way, and is extremely configureable.
  • Coc.nvim - Really great completion engine for Neovim. The Typescript support in particular is excellent.
  • Jellybeans theme - Never found a Vim theme better than this - very easy on the eyes.
  • PHPActor - I swear, this plugin is amazing. It gives Neovim and Vim the sort of powerful completion and refactoring tools that used to be the preserve of full IDE's, and it's incredibly useful for legacy code bases in particular
  • Vim Ale - Extremely fast in-editor linter. Works pretty much out of the box with most linting and static analysis tools. Have used it with ESLint, Flow, Psalm, PHP and CodeSniffer, among others
  • FZF and Ripgrep - I used to just rely on git grep, but I've had to work on a few projects that are still in SVN in the last couple of years, and I needed a good search solution. Found these and they're extremely powerful and fast
  • VSCode - while I don't use graphical editors as my main workhorse, I do find it useful to have one around for certain jobs that terminal Vim/Neovim is less useful for, and while in the past Sublime Text has fulfilled that role, in recent months it's been supplanted by VSCode.


I've worked with a number of different stacks down the years, in Python, PHP and Javascript. Nowadays I usually use the following for greenfield projects:

  • PHP
  • Laravel
  • MariaDB
  • Redis
  • React.js

I actually prefer PostgreSQL over MariaDB, but it can be hard to justify so I usually end up using MariaDB.

I've also used Django professionally for a lot of projects - I used to build Phonegap apps for a living and the combination of a free admin interface and rapid API development with Django REST Framework made it very quick when building mobile app backends.


Until quite recently I hadn't owned a desktop since the 8-bit era. However, in 2022 I had a small windfall from a share buyback by a former employer who had given out shares as a bonus some years ago, and decided to spend it on an M1 Mac Mini. As I'd been working from home throughout the pandemic, and two days a week since, I already had the other kit. Nowadays that's my main development machine for personal projects.

I also have a Dell XPS 13 Developer Edition running the current Ubuntu LTS, though that's now eight years old so a bit past it. I also own an HP Stream 11 running Xubuntu, which, while not a very powerful laptop, is good enough for some light development work and writing blog posts, and is cheap enough that it's not going to be a problem replacing it if I forget it on the train.

At work I use an M1 Macbook Pro.


Honestly, there's not much in the way of applications I depend on. I pretty much live in the terminal. I have a fairly highly customised setup with Hyper as my terminal of choice, but otherwise there's very few graphical applications I need.

Remmina is one tool I'm particularly fond of, though. It's a Linux application for managing remote connections via SSH, RDP and several other supported protocols, and it's the best example of that I've ever seen. Nothing I've seen on Mac or Windows is quite as good.