My 2020 web development setup
Tags: webdev, linux
Published: 2020-02-05 08:38:04

---
title: My 2020 web development setup
published: true
description: 
tags: #webdev, #linux
---
<p>Last year I wrote about my <a href="https://dev.to/jonathanbossenger/my-2019-web-development-setup-4bb7">web development setup.</a> I don't tend to write on my dev.to account very often, mostly because I already have my own <a href="https://jonathanbossenger.com/">blog</a> where I share whatever thoughts I feel I need to put down in writing. But today someone <a href="https://twitter.com/saahmadnejad/status/1224960361079738368"> tweeted that post</a> and I thought, "Maybe this would be a good time for an update post?"</p>

<p>Well, here we are!</p>

<p>Due to a laptop upgrade I made in late 2019, I've been using <a href="http://releases.ubuntu.com/19.10/">Ubuntu 19.10 (Eoan Ermine)</a> as my primary OS on both laptop and workstation. I've been pleasantly surprised by the newest Ubuntu OS, it definitely seems faster and more responsive than previous versions, with very few issues that I can see.</p>

<p><em>Authors note, as with last year, this list only includes software I have to install over and above the base Ubuntu system, or cloud based services I use regularly. If you want to know what I use to play music, view images or edit spreadsheets, I'm going to be using whatever comes installed with Ubuntu.</em></p>

<h3>Browsers</h3>

<ol><li><a href="https://www.mozilla.org/en-US/firefox/">Firefox</a> - probably the most important switch of 2019, around midway last year I switched from using Chrome to using Firefox as my main browser. I switched to Chrome originally from Firefox due to the superior dev tools, but Firefox has definitely come a long way, and I've not looked back since switching.</li>
<li><a href="https://www.google.com/chrome/">Chrome</a> - I still have Chrome installed, but only because a) I'm too lazy to configure my Laravel Dusk to use Firefox and b) sometimes I need to debug specific client issues in Chrome.</li></ol>

<h3>Development environment</h3>

<ol><li><a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)">LAMP</a> - Digital Ocean has become a great resource for Linux based set up tutorials, and I still use the same <a href="https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04">tutorial</a> to install my LAMP setup.</li>
<li>I've started trying to automate a lot of the manual tasks I still do, so I've created <a href="https://gist.github.com/jonathanbossenger/2dc5d5a00e20d63bd84844af89b1bbb4">this sitesetup script</a> which helps me provision a new LAMP based site on my workstation.</li>
<li>I have not used <a href="https://www.virtualbox.org/">Virtualbox</a>, <a href="https://www.vagrantup.com/">Vagrant</a>, or <a href="https://laravel.com/docs/5.8/homestead">Homestead</a> in over a year, I think they may drop off the list in 2020.</li></ol>

<h3>Editors</h3>

<ol><li><a href="https://www.jetbrains.com/phpstorm/">PHPStorm</a> - Still the best PHP (and general web dev) IDE out there.</li><li><a href="https://notepadqq.com/s/">Notepadqq</a> - Notepadqq is a Linux version of Notepad++, which I used as a Notepad replacement on Windows.</li></ol>

<p>Development Tools (IDE Extensions)</p>
<ol><li>
<a href="https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended-">PHP Inspections</a> - this plugin is an open-source Static Code Analyzer for PHPStorm, and it has improved my code quality in numerous ways. I even learn new ways to do the same thing, based on it's suggestions. I highly recommend getting the <a href="https://plugins.jetbrains.com/plugin/10215-php-inspections-ea-ultimate-">EA Ultimate</a> paid version.</li></ol>

<p>Development Tools (GUI)</p>

<ol><li><a href="https://www.phpmyadmin.net/">PHPMyAdmin</a> - I've been using PHPMyAdmin since my first days of PHP development. It's the quickest way to make small database changes<br></li><li><a href="https://www.mysql.com/products/workbench/">MySQL Workbench</a> - for when a more robust database modelling tool</li><li><a href="https://github.com/mailhog/MailHog">MailHog</a> - catches all mail sent via the local web server. I found a great <a href="https://www.lullabot.com/articles/installing-mailhog-for-ubuntu-1604">Ubuntu set up article</a> that still works 5 years later.</li></ol>

<p>Development Tools (CLI)</p>

<ol>
<li><a href="https://git-scm.com/">Git</a> - I have a <a href="https://github.com/">GitHub</a> account for public projects and a <a href="https://gitlab.com/">GitLab</a> account for private ones.</li>

<li><a href="https://subversion.apache.org/">Subversion</a> - because WordPress.org.</li>

<li><a href="https://getcomposer.org/">Composer</a> - package manager for PHP.</li>

<li><a href="https://phpunit.de/">PHPUnit</a> - Testing framework for 
PHP.</li>

<li><a href="https://phpunit.de/">Xdebug</a> - Debugging tool for PHP. I had some issues getting this to work 100%, which was due to my weird folder structure and symlinks. I've since figured this out, and it's become an important item in my toolkit.</li>

<li><a href="https://github.com/squizlabs/PHP_CodeSniffer">PHP CodeSniffer</a> - I've become dogmatic about making sure my code conforms to a coding standard. I use the <a href="https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards">WordPress Coding Standards</a> for WordPress development and <a href="https://www.php-fig.org/psr/psr-1/">PSR-1</a> for other PHP projects.</li>

<li><a href="https://wp-cli.org/">WP-CLI</a> - the command line interface for WordPress. I recently discovered wp-cli-psysh by <a href="https://github.com/schlessera">Alain Schlesser</a>, which makes the wp shell command a joy to behold.</li>

<li><a href="https://yui.github.io/yuicompressor/">YuiCompressor</a> - I don't tend to use task runners for minifying JavaScript and/or CSS (I know, I know), and PHPStorm has built in support for doing this via YuiCompressor.</li><li><a href="https://nodejs.org/en/">NodeJS</a> - to install YuiCompressor (mostly)</li>

<li><a href="https://github.com/FiloSottile/mkcert">mkcert</a> - great CLI app for generating locally trusted SSL certs. Installed via...</li><li><a href="https://docs.brew.sh/Homebrew-on-Linux">Homebrew</a> - purely to install mkcert</li>

<li><a href="http://www.ivarch.com/programs/pv.shtml">Pipe Viewer</a> - a tool for monitoring the progress of data through a pipeline. I use it to view the progress of mysqldump commands.<br><br></li></ol>

<h3>API Tools</h3>

<ol><li><a href="https://www.getpostman.com/">Postman</a> - Useful for testing API requests</li><li><a href="https://www.soapui.org/downloads/soapui.html">SOAP UI</a> - The first time I had to work with a SOAP API I used SOAP UI, and I've stuck with it ever since</li></ol>

<h3>Communication</h3>

<ol><li><a href="https://slack.com/">Slack</a> - the <a href="https://castos.com/">Castos</a> team, <a href="http://wpsouthafrica.org/">WPSouthAfrica</a> and Making WordPress communities, and <a href="https://codeable.io/">Codeable</a> experts communities all chat via Slack.</li></ol>

<h3>Productivity/Tracking</h3>

<ol><li><a href="https://wakatime.com/">WakaTime</a> - logs time spent writing code. Useful when I forget when I was working on what</li><li><a href="https://toggl.com/">Toggl</a> - Time tracking tool. I've definitely gotten better at time tracking using this tool, which is vital if you charge by the hour.</li></ol>

<h3>Multimedia</h3>

<ol>
<li><a href="https://www.maartenbaert.be/simplescreenrecorder/">SimpleScreenRecorder</a> - I've not found a better app on Ubuntu to record short screencasts</li>

<li><a href="https://obsproject.com/download">OBS Studio</a> - Used mostly by streamers, I use this when I'm recording longer tutorial type videos, when I want to have my face on screen, picture in picture style.</li>

<li><a href="https://www.audacityteam.org/">Audacity</a> - audio editor, mostly used to edit WPHackerCast episodes.</li>
<li><a href="https://www.videolan.org/index.html">VLC</a> - I don't think I've used another video player in over 10 years</li>
<li><a href="https://www.awesomescreenshot.com/">AwesomeScreenshot</a> - Chrome browser extension for quickly taking browser screenshots.</li></ol>

<h3>Password Management</h3>

<ol><li><a href="https://www.lastpass.com/">LastPass</a> - 3 years later and I still use the same password manager, because it does just what I need.</li></ol>