DEV Community

Jonathan Bossenger
Jonathan Bossenger

Posted on

My 2020 web development setup

Last year I wrote about my web development setup. I don't tend to write on my dev.to account very often, mostly because I already have my own blog where I share whatever thoughts I feel I need to put down in writing. But today someone tweeted that post and I thought, "Maybe this would be a good time for an update post?"

Well, here we are!

Due to a laptop upgrade I made in late 2019, I've been using Ubuntu 19.10 (Eoan Ermine) 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.

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.

Browsers

  1. Firefox - 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.
  2. Chrome - 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.

Development environment

  1. LAMP - Digital Ocean has become a great resource for Linux based set up tutorials, and I still use the same tutorial to install my LAMP setup.
  2. I've started trying to automate a lot of the manual tasks I still do, so I've created this sitesetup script which helps me provision a new LAMP based site on my workstation.
  3. I have not used Virtualbox, Vagrant, or Homestead in over a year, I think they may drop off the list in 2020.

Editors

  1. PHPStorm - Still the best PHP (and general web dev) IDE out there.
  2. Notepadqq - Notepadqq is a Linux version of Notepad++, which I used as a Notepad replacement on Windows.

Development Tools (IDE Extensions)

  1. PHP Inspections - 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 EA Ultimate paid version.

Development Tools (GUI)

  1. PHPMyAdmin - I've been using PHPMyAdmin since my first days of PHP development. It's the quickest way to make small database changes
  2. MySQL Workbench - for when a more robust database modelling tool
  3. MailHog - catches all mail sent via the local web server. I found a great Ubuntu set up article that still works 5 years later.

Development Tools (CLI)

  1. Git - I have a GitHub account for public projects and a GitLab account for private ones.
  2. Subversion - because WordPress.org.
  3. Composer - package manager for PHP.
  4. PHPUnit - Testing framework for PHP.
  5. Xdebug - 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.
  6. PHP CodeSniffer - I've become dogmatic about making sure my code conforms to a coding standard. I use the WordPress Coding Standards for WordPress development and PSR-1 for other PHP projects.
  7. WP-CLI - the command line interface for WordPress. I recently discovered wp-cli-psysh by Alain Schlesser, which makes the wp shell command a joy to behold.
  8. YuiCompressor - 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.
  9. NodeJS - to install YuiCompressor (mostly)
  10. mkcert - great CLI app for generating locally trusted SSL certs. Installed via...
  11. Homebrew - purely to install mkcert
  12. Pipe Viewer - a tool for monitoring the progress of data through a pipeline. I use it to view the progress of mysqldump commands.

API Tools

  1. Postman - Useful for testing API requests
  2. SOAP UI - The first time I had to work with a SOAP API I used SOAP UI, and I've stuck with it ever since

Communication

  1. Slack - the Castos team, WPSouthAfrica and Making WordPress communities, and Codeable experts communities all chat via Slack.

Productivity/Tracking

  1. WakaTime - logs time spent writing code. Useful when I forget when I was working on what
  2. Toggl - Time tracking tool. I've definitely gotten better at time tracking using this tool, which is vital if you charge by the hour.

Multimedia

  1. SimpleScreenRecorder - I've not found a better app on Ubuntu to record short screencasts
  2. OBS Studio - 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.
  3. Audacity - audio editor, mostly used to edit WPHackerCast episodes.
  4. VLC - I don't think I've used another video player in over 10 years
  5. AwesomeScreenshot - Chrome browser extension for quickly taking browser screenshots.

Password Management

  1. LastPass - 3 years later and I still use the same password manager, because it does just what I need.

Top comments (9)

Collapse
 
jpchateau profile image
Jean-Philippe Chateau

Thant you for sharing your setup!

I just set up wakatime to give it a try, it sounds fun!

As a PHP and JS developer, here are the tools I use everyday:
PHPStorm of course, but it works well for JS and nodejs too. Licence is paid by my company. Secondary editor is vim.

I mainly use Firefox as browser, and Chrome when I need a specific add-on, but it becomes rare nowadays.

About the stack: LAMP, LEMP mainly. I also use Mongo and/or Elasticsearch, depending of my customer.
I use MySQL Workbench and I am running Ubuntu (always the latest version).

In terms of deployment tools, I use Jenkins and Gitlab CI on the projects I work, and I use Github / Travis for OSS.

Jira / Confluence are the main tools used for project management.
Trello for my personal projects.

PHP QA: phpcs, phpmd, phpmetrics, phpstan (<3), phpunit, codeception (I dislike this last one).
JS QA: eslint, codeclimate. Mocha for testing. Webpack for bundling.

APM: New Relic (if the customer has money $_$), and/or Kibana.
Chat: Slack
Webperf: GTmetrix, Yellow lab tools, and web page test of course.

Other tools: mindmeister for mind mapping and moqups for wireframes!

Collapse
 
ritik_raj_eb4e6e986982918 profile image
Ritik Raj

Thank you for sharing your setup! It’s remarkable how similar our workflows are, and I resonate deeply with the challenges you mentioned.

I faced similar issues while setting up my environment, especially around managing a LAMP/LEMP stack and streamlining deployment pipelines. This guide has been incredibly insightful in helping me optimize my setup. For example, I had struggled with SSL certificates for local environments, and this guide on SSL setup was a game-changer—it made generating locally trusted certs with mkcert effortless.

When it came to managing MySQL, I discovered the Vultr guide on MySQL installation on Ubuntu 24.04, which provided a step-by-step solution for configuring MySQL Workbench alongside my stack. It saved me hours of troubleshooting!

For deployment, I was able to refine my approach by learning from the GitLab CI integration insights. Combined with tools like Jenkins, my deployment process is now far more efficient and reliable.

This guide solved problems and elevated my entire workflow. Thank you for pointing me in the right direction!"

Collapse
 
fpmedia profile image
Henry Shepherdson

This is great as well, thanks for the details. There is still so much to learn!

Collapse
 
defman profile image
Sergey Kislyakov

I did not know about MailHog. Thanks for sharing!

You may try to give OBS a chance, it can be used to record screencasts. Though it's being used for streaming in most cases, it can output to files.

Collapse
 
jonathanbossenger profile image
Jonathan Bossenger

MailHog is amazing. I'm glad this post is helping to share it's usefulness.

I actually do use OBS for when I'm recording longer tutorial type videos, but for quick 30 second clips, I find Simple Screen Recorder to be, well, simpler. ;-) I should probably update the post to include OBS

Collapse
 
jonathanbossenger profile image
Jonathan Bossenger

Post updated, thanks for the reminder. I tend to forget tools I don't use every day.

Collapse
 
annalinneajohansson profile image
Anna

WakaTime sounds like exactly what I need. Thank you for sharing!

Collapse
 
innprogress profile image
Arnold A.

Why aren't you using github also for private projects?

Collapse
 
jonathanbossenger profile image
Jonathan Bossenger

Mostly because at the time of choosing a private repository hosting service, GitHub didn't offer free private repos. I used to host all my private projects with Bitbucket, but I like the GitLab interface.