What’s your WordPress Development Setup?

Coding with Konstantin Obenland in Mumbai

Coding with Konstantin Obenland in Mumbai

With my new retina MacBook just a couple of days away, I’d like to set it up as a lean, mean coding machine.

Right now, I have some bad habits that I’d like to unwind.  I find myself falling out of PHP Storm and into TextMate more often than I’d like, devving on a remote server because my local environment isn’t working properly, I have the same repos in at least 3 spots on my hard drive, etc, etc, etc.

My favorite parts of my workflow:

  1. Alfred, with lots of custom searches so I can quickly search through the Jetpack repo on Github, code, etc.
  2. Unison, which keeps my local files in sync with my development servers
  3. 1Password for my secrets
  4. Authy for my 2fa
  5. I have many custom snippets that I’ve added to TextMate to make me fast there, I need to get that same level of customization into PHP Storm so I can be fast there, too.
Coding (and talking to Rocco) while on vacation in Greece

Coding while on vacation in Greece

So, developers, I’d really like to hear about how you have your environments set up.

What IDE do you use? Do you use VVV or something else? What else do you do to help yourself be as productive as possible?

In exchange, I’ll be eternally grateful and put together a follow up post in a few weeks about how I incorporated your suggestions.  And I’ll probably buy you a drink at a WordCamp sometime..

About the author Sam Hotchkiss

Sam currently leads development on the widely used Jetpack plugin at Automattic, he's started and run multiple successful companies, and enjoys taking photos when he gets the chance. When they're not traveling, Sam and his wife, Becky, live in beautiful New Mexico, where he passes the time by talking about himself in third person.

All posts by Sam Hotchkiss →


  1. My workflow is often criticized for being a little bit funky:

    * Netbeans for my IDE. I estimate that I use it for 90% of the work I do, including commits and pushes. The remaining 10% is CLI or nano for quick hacks.
    * Usually VVV for everyday core development; custom environments were taking too much time to maintain away from core development work
    * 1Password for everything
    * Tricked out .bash_profile for a bunch of odds and ends
    * iTerm2 for anything CLI related
    * Sequel Pro for MySQL anything
    * I generally use Safari as my main browser, and Chrome for mobile development
    * Xcode and iOS simulator for web and native apps
    * I have a 2012 Retina Macbook Pro at my ofiice with a 27″ cinema display rotated portrait on both sides. Netbeans and inspector on the right, browser in the middle, and communication tools on the left. I use two Apple Trackpads and the Apple Bluetooth keyboard, because I usually eat and drink at my desk and like the easy access a left trackpad provides.
    * I switched to Dvorak as my keyboard layout back in 2010. I was about 110 WPM then, and maybe 80 WPN now. I just never really taught myself how to touch-type all speedy in Dvorak the way I did Qwerty. I guess maybe I regret the switch, but it’s my own fault for not really learning and instead just fumbling around until I figured it out enough to do adequate work. One thing this switch did do was force me to slow down and choose my words more carefully – when you can’t rifle off words as easily, you tend to pick them more wisely.
    * I use Moom for window management.
    * I have a 2014 11″ Macbook Air for travel. Love that thing, and sometimes prefer to use it in a comfortable chair than sitting at my desk.
    * I spend a lot of time on and, and am one of the only people who admittedly enjoys using Trac.
    * I have a black NextDesk that I typically sit (rarely stand) at, with a black-on-black Herman Miller Embody thanks to Mark Jaquith’s recommendation years ago.
    * Rode Podcaster microphone for recording audio
    * Black bluetooth Apple Beats for headphones. I know, they aren’t amazing or sophisticated or whatever, but they’re all black and they’re fine enough for everyday usage.

    I’m sure there’s a ton more little tools I use. If I think of any, I’ll drop them in a comment underneath this one.

    Liked by 1 person


  2. Here’s my breakdown:

    Copying JJJ on a few things:
    * 1Password all the way
    * iTerm2
    * Sequel Pro (pro tip: the word pancakes opens the app from alfred!!) for local MySQL fiddling

    And a few things I do differently:

    * PHPStorm for my IDE. JJJ tried to get me to use Netbeans a while back, and almost succeeded but PHPStorm’s implementation of many things that make an IDE worth it, is just a lot better than Netbeans’ (xdebug integration, code navigation are the two biggest iirc). I code 80% of the time in PHPStorm, 10% of the time in Sublime Text (quick edits and whatnot) and 10% in CLI/Vim (quick remote edits).
    * I use unison to sync my various sandboxes locally. For extra paranoid security, I don’t sync any configuration files and I sync to a separately encrypted partition on my hard drive (even though the main partition is also encrypted). I use Knox to manage the encrypted partitions (same makers as 1password)
    * I prefer zsh over bash, specifically because of oh-my-zsh
    * I’ve gone through a few different color schemes over the years, but currently loving spacegray which is a variation of base16
    * If you work offline or with poor connections often then Dash is awesome.
    * I use Divvy for window management.
    * Bartender and iStatsMenu really help keep things tidy in the menu bar

    My hardware is in flux at the moment and I don’t really have a permanent desk because I’m nomadic, but at home in Vancouver I have a custom sit/stand desk and an Embody chair.

    Hope that helps!

    Liked by 1 person


  3. I try to be as minimal as possible so I’ve actually removed just about every app from my computer. That said, on my one and only computer (a retina MBP from 2012 that I even turned down a new machine from 10up to keep) I still keep a few things around…

    * 1Password (because of course)
    * PhpStorm – I’ve tried everything else but keep coming back to it. I pair it with PCP_CodeSniffer for upping my WordPress debugging by another level
    * Vagrant/Virtualbox – I actually role my own VV alternative as I’ve found Apache to be far more conductive to plugin dev and I kinda like what Puppet provides (PRs always accepted
    * Atom as a backup text editor
    * Safari for everything I can but a lot of dev is done, reluctantly, in Chrome as I can’t seem to get around it. The Jetbrains JS debugging extension alone keeps me from doing any serious dev work in other browsers
    * ZSH/oh_my_zsh (once you try it you’ll never be able to use Bash again)
    * Mostly native apps – Terminal, Calendar, Mail, they all do the job and do it well.
    * Navicat for database work as it really is the best I’ve ever found
    * Alfred to run almost all of it

    That’s really about all I have on the machine minus a utility or two. It took me a long time to get past the whole “oohhh shiny” of new apps but now that I have I find myself much more productive with much less.

    Liked by 1 person


  4. My workflow, plenty of apps, but not too crazy:

    * PHPStorm
    * Firefox (Not the dev edition)
    * Backup browser: Chrome
    * Blue’s Yeti Mic
    * iTerm for all my Command line stuff
    * Slack Mac App
    * VVV for all my local development, works pretty well!
    * Dash App to get codex entries fast
    * Macdown for editing Markdown files
    * Evernote/Wunderlist for all my note taking/tasks
    * Filezilla for FTP
    * Cloud app for quick screen recordings

    Other software comes and goes in my workflow, but the list above pretty much describes my day-to-day.

    Liked by 1 person


  5. I wrote about my dev setup here a little while ago: (includes ST add-ons as well). In addition to that I also use 1password, Divvy, Slack and pretty much all the Google apps (Calendar, Keep, Docs, etc.) as well as Trello for Woo projects.

    I try to do as much as I can in my browser (Chrome) instead of using desktop apps, but I not sure why – I think I’m just stubborn like that 🙂

    Liked by 1 person


  6. My setup depends on the project.

    First things first, I primarily work on a 13″ retina MacBook Pro. It’s perfect. I connect to an external monitor only when doing print work or checking 1x images/icons.

    I mostly work full screen. One window per screen with one exception. I find this encourages less checking of my work on every change and makes me a bit more efficient. I have most notifications disabled and often turn them off entirely when I’m in “the zone.”

    Screen Shot

    My primary desktop has maximized Chrome window with WP and FB and a bunch of articles on my to-read list. Desktop 2 has a maximized window with only stuff related to the project and the project itself open. If I’m browser testing, they’ll all be in this window including any VMs. I `command + tab` between them. Desktop 3 is my full screen editor. Desktop 4 is all the chats and Twitter. Desktop 5 is Github full screen. (I find I use chat more than the Github app) Desktop 6 is IRC because I still can’t close it no matter what I do. Simplenote i always my last desktop (it’s on my external currently so it isn’t in the screenshot.

    I add desktops as needed (Sketch, Illustrator, etc). Sometimes when I’m working on more than one project simultaneously I have another three desktops in the same order opened at the same time. Most of the time I just close everything when switching a project.

    My main browser is Chrome. It used to be FF years ago, but I like the Chrome dev tools better. I don’t have any crazy extensions, really. Just a React extension that adds a panel to help debug.

    I use VVV accompanied by the VVV site wizard script so I can quickly(ish) add sites per project.

    My editors are either Atom of ST3 depending on the project. Both have the space gray theme and various package enhancements. If I’m working on a Github project, I use Atom.

    If I want to create, test, or debug some crazy CSS, I usually drop into CodePen and build up a quick demo in ~5 minutes or less.

    I use Charles to create a proxy for local testing. My devices have the proxy settings on my spare network so I don’t have to set them every time. I just switch the network they’re on.

    I have a few really handy aliases. They could probably be dropped into an Alfred workflow. Highlights:
    * `wpvvv` – switches to vagrant folder
    * `edit-alias` – opens bash-profile in nano
    * `edit-hosts` – opens hostfile in nano
    * `horse` – ask me in person
    * `sites` – switches to my misc projects folder
    * `jetpack` – switches to jetpack (used to also start up grunt, but removed that recently)
    * I have aliases to connect to Automattic sandboxes.
    * I have aliases to connect to my hosts.

    ## Github project specifics
    * I use the Github Mac app entirely for diffs and this handy right click menu:
    * I use the command line for everything else (commits, etc)
    * On almost all projects I branch > write some code > PR into main project

    ## WP core setup
    * I use ST3 almost entirely for core at this point
    * Command line for SVN things
    * No aliases or shortcuts for patches or anything. Just command line.

    ## setup
    * Mostly matches Github projects setup at this point, but when working on the older stuff it matches WP core setup
    * I use an alias to edit my hosts file and connect to my sandbox.
    * I use unity (though it recently busted) to sync files.
    * lots of `pt` searches

    Liked by 1 person


  7. […] Sam Hotchkiss just posted this: What’s your WordPress development setup? […]



  8. Thanks for this post, it is fun to see what other developers are using.

    I’ve outlined my setup here,

    Liked by 1 person


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: