Chris Wiegman

My Development Toolbox – 2020

My Development Toolbox - 2020

Once a year I love to go through my devices and take inventory (2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012). I’ve been writing this series since 2012 and, looking back, it always amazes me how things change over the years and this year is no exception.

For many years my focus was solely on developing WordPress plugins and that was reflected in my toolbox. These days that isn’t the case and my toolbox definitely reflects the change. Instead of working solely in the technologies behind WordPress, even while still at a WordPress company, today it isn’t uncommon that, in a single week, I can find myself working in raw SQL, Python, Go, NodeJS, PHP, Ruby, Bash, Go and a host of other tech.

As much as the tech changes, my primary goal is still simplicity. It might be harder to do these days but I like to think I’ve managed to strike as much of a balance as possible between supporting the many technologies I need to do my job while still having a toolbox that is simple enough that it doesn’t manage to suck up my time with it’s own maintenance.

So how do I do it? Here’s my breakdown:

Hardware

Unlike years past, hardware has become a bit more important for me. While I no longer add devices just for the sake of saying I own them (as could be said with devices like the iPad I wasted years trying to make work for me) I still am quite picky on what I use. First, work has given me a 13″ MacBook Pro which is perfectly adequate for my day job while sill being portable. I actually had to fight for this machine as all engineers where I work are normally given 16″ MacBook Pros which, anymore, is simply more than I need. This does code and my development environments just fine and is enough power for 99% of what I need to do on a daily basis.

For the bulk of my code and all my personal work I have two machines, A 2018 System76 Oryx Pro which is my high-power workhorse and an Asus Zenbook 13 which is a bit more powerful than my work Mac yet even smaller in size. It is my writing machine and the first machine I go to for travel due to it’s tiny size.

I spent years trying to get to the point where I had a single computer for everything but that’s no longer possible and I’ve stopped fighting it. The Oryx Pro is more than capable of handling nearly anything I can throw at it and splitting my own work between it and the Zenbook allows me to travel light and to separate different types of work such as writing and dev work. This separation has been great for my focus as it helps prevent me from getting distracted. If I’m on the Asus it is to write or browse the web. For everything else I have the Oryx. The combination works well.

Beyond three computers I still have a Google Pixel 3XL for my mobile. Anymore I do my best to use this only for communications and navigation and it’s worked well for that. It will also, most likely, be the next device I replace although, at least for now, probably with two phones instead of one. I’ve been eyeing the Pinephone for a while which could serve as my daily driver with either a lower-end iPhone or Android for apps that I can’t, yet, run on a Linux phone such as our house lights and a few others. That change will hopefully happen later this month.

Software

For the last two years I’ve been running Linux on both of my own machines. Currently they are both on Pop!_OS 20.04 which has been pretty much the perfect workstation operating system for me. To manage software on them I use a combination of Apt repos, Flatpaks and, for development tools, Homebrew. Together these allow me to script the installation of nearly all my apps making it easy to keep computers in sync and software up to date.

On all my computers I run Firefox as my browser (though some work tasks still make Chrome a hard-requirement to keep around). I sync my browser bookmarks, as well as all my files, contacts, calendar and more through a personal Nextcloud installation my wife and I share. While Firefox is my browser, I’ve also consolidated most of the sites I follow into a FreshRSS instance and I use Wallabag as my read-it-later service for anything I want to keep as a reference. Both are self-hosted.

For code itself, my only editor, currently, is VS Codium which is an opensource implementation of VS Code. This is a switch from the JetBrains products I used to use. JetBrains makes great IDE’s if you’re going deep in a single technology but if you’re switching between tech stacks a lot than the utility of JetBrains’ products meets its limits pretty quickly.

For database work I’ve been using DBeaver Community for a couple of years now which is an excellent database GUI allowing for powerful connections to a host of databases from MySQL to PostgreSQL and many others. I still keep Filezilla around as well for when I just need to quickly move files between servers. I also use Postman for working with APIs.

While I keep various development environments such as PHP, Go and others up to date with Homebrew, I try to do all my work in containers powered by Docker. This ensures that no matter what my environment is or where I’m working I will always be compatible with my team and won’t need to spend a ton of time debugging the environment itself. For WordPress work and other more complex environments I use Lando as a development tool. It is, by far, the most complete and usable stack I’ve found for professional WordPress development and, while I would love to see some improvements in aspects of it, there really isn’t anything else that can hold a candle to it on the market. Last year when I wrote this post I was working with our own DevKit tool for this type of work. When the project was cancelled I decided I was done building my own and found Lando is the first tool in the genre that I could actually make work for advanced dev projects.

For development work these tools are complimented by the default Gnome terminal app in my Linux distro where both Oh My Zsh and tmux make for a powerful combination to bring it all together.

When not working on code I’ve switched to Glimpse for image editing, GnuCash for keep track of my spending, LibreOffice as my office suite, Evolution for my email, Gnome apps for calendar and to-do, Typora for note taking (synced with Nextcloud) and Signal and Slack for pretty much all my communications.

Finally, Spotify and Sonos help me keep focused and on track around the house and my Kindle is my preferred way to unwind when I’m not working.

What I’ve managed to leave behind this past year is a lot of tech by big companies or companies who make surveillance a core component of their business model. Our only remaining Google connection is our phones, we’ve dropped out of Prime and similar programs and we’ve found NextDNS as a great whole-house solution for ad and tracking control. In fact, it’s so good that it blocks about 30% of all outgoing connections across all our devices! If we need to get around it we now self host our own VPN with Algo which does the trick and helps keep our devices safe when we travel.

Unlike previous years, I’m more comfortable and, in fact, look forward to changing more of these tools out going forward. I’ve already mentioned the phone but I’d also like to find a good alternative to my old FitBit which still helps me keep more active. I’d also love to rely less on my Kindle by using our local library more when being in enclosed spaces is safe again (I’ve tried renting Kindle books from them but it’s almost impossible locally). Ideally I’d also like to look at more low-powered tech in general where possible as it is an area I’ve been interested in for a long time.

All the apps currently on my phone.
All the apps currently on my phone.

As for my phone, It’s been stripped down to just the apps I need for travel (Spotify and Magic Earth), a few apps for devices such as our lights, Signal, the native phone app and Duolingo for when I’m bored with it. In an effort to be more mindful of my phone use as, let’s face it, it’s all too easy to mindlessly pick up a phone and browse rather than do literally anything else, all other apps, including the browser, have been removed. It works too. I went from spending 2-3 hours a day on it to 10-15 minutes or less most days. That’s a major win.

If there’s a theme to my toolbox it is two-fold. First, I’ve gone from expensive proprietary tools to what I hope are more sustainable alternatives over wider range of projects. Second, I still strive to keep it all as simple as possible. As the title of this points out, this is my toolbox, not my life. In my line of work it is all too easy to confuse the two and that is a habit I am determined to break.