A few weeks ago someone on Twitter linked an article Pitfalls of Being a WordPress Developer by Josh Cunningham that hit a nerve with me. In short, Josh says, intense focus on one thing over a sustained period – specialization – comes with missing out on a lot of other things. And he lays out a few things WordPress specialists tend to forgo.

For going on 10 years, I’ve specialized in WordPress. And for the last 2, at least, I’ve begun to feel many of the deficits he mentions more acutely. As I’ve become more aware of this, I’ve begun expanding my horizons beyond WordPress: Composer, the joys of PHP 7+, Object Oriented programming and design patterns, SOLID principles, unit testing. (Yes, I know you can do all of these things within a WordPress context. But WordPress doesn’t make it easy.)

As I’ve delved into these things, I’ve become increasingly less enchanted with quite a few things about WordPress. A year ago I started looking into other platforms. I started a personal “letters from home” blog using the October CMS – built on Laravel Framework. I’m not going to stop using and working with WordPress any time soon, but for a while I have had a back-burner resolve to expand into other things, even other languages.

After Josh’s article, I found some new ambition to start some non-WordPress activity. I started learning about Docker. Which got me using the command line way more than I’ve done since MS-DOS and the MASM assembler.

I started with the tutorial in Docker’s getting started documentation. That involved a little Python app, working with images, containers, services, machines, and swarms.

From there, I decided that it would be great to work with the latest stuff on a PHP project. So I worked through Chris Fadao’s Servers for Hackers series on setting up PHP and Nginx, and another one for getting Xdebug to work with PHP Storm in a Docker container. I highly recommend these.

By the end of that, I had a working setup ready to go with Laravel. But I wanted to give it a try on my own – as a kind of self-test to see if I really got it. So I started again from scratch and built out my own setup: PHP 7.2, Nginx latest, and Redis. I’ve been using it to play with some other new things:

  • Nginx and Redis;
  • Setting up PHP CodeSniffer with PSR–2 and a few other customizations;
  • Trying out PHPUnit 7 (I could never get it working with the WordPress Unit Tests – they use version 5 with some shims for version 6, but no support for version 7 that I’ve been able to find.)

These things haven’t been easy. I’ve spent, probably, a whole day with the initial Docker tutorial, another 3 days on the Chris Fadao series, and another 3 or 4 on my self-test Docker build. I’ve been thorough. I’ve gotten stuck several (or more) times. I spent a lot of time on Duck-Duck-Go looking things up. There are still significant gaps in my understanding.

But I understand enough not to just copy and paste. I know what everything in my Docker setup is, why it’s there, and what (more or less) it does. I have some ideas for adding to it and making it better. It’s the satisfaction of having learned enough to be fumblingly conversant with it that makes it worth the effort.

(Here’s the Docker setup on Github.)