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


I have literally never owned a desktop since the 8-bit days - I exclusively use laptops.

My workhorse for personal projects is a Dell XPS 13 Developer Edition running the current Ubuntu LTS. 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 a Macbook Pro.


Honestly, there's not much in the way of applications I depend on. I pretty much live in the terminal, and I rely on Screen and Byobu for my workflow.

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.