Uses
Editor
- 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.
- Kickstart.nvim - I recently rebuilt my Neovim config from scratch with this, and it's very helpful. It's well organised, provides the basics I needed to get started on a new config, and is easy to extend with additional plugins. It's far less opinionated than some of the Neovim presets out there, which I found too opinionated for my needs.
- 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
- 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.
Stack
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
- MySQL
- Redis
- React.js
I actually prefer PostgreSQL over MariaDB, but it can be hard to justify when most of my peers are more familiar with MySQL, so I usually end up using MySQL.
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.
Recently I also started working with Drupal, and have become an Acquia Certified Site Builder - Drupal 10. I've also built a couple of sites with Gatsby.js and Next.js.
Desktop
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.
Applications
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.