My Windows Development Environment

As a pretty avid Mac / Linux user, I get stuck in my ways. However, every once in a while I get an itch to do something different, just so I can see how those that I'm teaching are affected by some of the changes that I make. This includes the realm of the Windows PHP Developer. With that said I thought it handy to go about sharing some of the tools that I use to develop with to make my Windows environment more like the environments I'm used to.

Dexpot

The first important thing to me is to get a "Spaces" or "Compiz" style environment with multiple desktops. In windows I use Dexpot to do that. This allows me to not break my normal workflow where I have a browser on one desktop, a command line on another, and my code editor on the other. In addition to providing that very basic functionality, it gives you some other features to help cope:

  • The ability to move windows from one desktop to another
  • The ability to set up rules for specific applications to appear on certain desktops
  • Several plugins and special affects.

Git

Git SCM provides a very handy bash environment and several GNU tools compiled for use in a windows environment. I hear that Git for Windows is a good option too. Using Bash for me is one step closer to getting me back to a familiar environment. My standard practice is to add items to my PATH variable so that I can then run them using command line. This typically involves me also setting up a "bin" folder in my $HOME directory. This allows me to run several of the same scripts that I would would normally run on my Mac without any issue. I also treat my bin folder in git sorta like /usr/bin in my linux environments.

There are a few things that bug me here:

  • backgrounding a task using CTRL Z creates some wierdness. I typically use vim in this fashion for quick edits.
  • I get easily lost in the directory structure because it doesn't mirror the ACTUAL directory structure.
  • Shell Scripts don't open in bash by default causing some fun times.

ConEmu

ConEmu is my alternative for the standard terminal application in Ubuntu, or Iterm2 in Mac. It allows me to expand upon the severely crippled Windows Command Prompt. In addition to that, I have ConEmu automatically start up using Git's copy of Bash, which gives me all the awesome sauce I need. I feel pretty much right at home there with the exception of a few missing keyboard shortcuts.

The huge screenshot below is actually me using the Drupal Composer workflow with Vagrant on my personal WIndows 7 Machine. It is featuring ConEmu using Git Bash

ConEmu Screenshot

FInal Thoughts

It is totally possible to develop pretty much as well as any Mac / Ubuntu user out there using a Windows Machine. The main trouble you will find is when symlinks are involved using shared folders like with Vagrant. Other than that, I've managed to pretty much get everything working with not a whole lot of effort. The next greatest thing, is after I get done with my coding I can switch over to Skyrim running on the other monitor with easy. It may be time to think twice before condemning windows as a development platform. Obviously, it's all about knowing how to use the tools at your disposal.