Mastering your development environment: Part 1

Ah, the development environment, the starting point for all your development work. The development workflow is essential for your productivity and differs so immensely from person to person. Everyone has an opinion but not everyone enjoys fine tuning their work environment as much as I do.

I remember when I first started working on websites, I was doing everything on my good ol’ HP laptop. I remember barely getting Rails up on this Windows environment. I remember my first editor, Notepad++ and fumbling around with Xampp. I remember manually backing up files and dating them. In essence, this was my workflow from the tail end of 2013 until almost mid 2014. I had no idea what I was doing.

Near the tail end of project Malaysia, I got a MacBook Air and while I had less problems with Rails, I didn’t fully understand the power behind it. Since then I have moved exclusively to a Mac development environment like most developers. I’ve continuously learned more about tooling and I’ve setup 3 Macs over the last year alone. I’ve learned a bit more about what I’m doing every time I’ve gone through the process. I’m not sure if my next dev computer will be a Mac but either way, I have set up a list of must haves for my development environment. These can easily be adjusted to a linux environment if they don’t exist outside OSX. Most seasoned developers will be familiar with these tools.

First, we need our essentials to get started. These are mine. Download and install…

  • FireFox browser (primary cause Chrome is too much of a memory hog)
  • Chrome browser (secondary when I need some of chrome’s better dev tools)
  • Sublime/Atom (backup editor for when people need to edit code on my computer :P)
  • Dropbox
  • GitHub Desktop (I rarely use this, but I should explore more of its functionality)
  • Hipchat (unfortunately we use at work)
  • Iterm2
  • Slack
  • Skype
  • OpenOffice (no Microsoft Office for me)
  • Postman
  • Sequel Pro (really useful for DB stuff)
  • Todoist
  • Tunnelback (we use for VPN connections at work)
  • Xcode
  • Menu meters (not as good as iStat but it’s free, allows me to quickly scan to see CPU, memory and network stats)
  • Karabiner (used to allow natural scrolling on trackpad and “normal” scrolling on mouse)
  • Spectacle (b/c 10 iterations of OSX still barely gives us snapping windows)
  • Battery monitor
  • Fluid (use to simulate a native app on OSX, I use for Asana)
  • Bonus: Gzip, Self-control (for no distractions)

While those are going, I will also go ahead and update the following

  • Adobe Flash
  • OSX security updates

And finally while all that is going, I would likely start some of my terminal setup as well. My terminal to editor workflow includes the following…

  • Install homebrew
  • Install RVM or RBENV
  • Install relevant Ruby versions
  • Install relevant Rails versions
  • Install NodeJS
  • Install Cmake
  • Install Redis
  • Install Tmux
  • Update Git
  • Update VIM
  • Install git autocomplete
  • Clone my dotfiles and symlink everything
  • Clone my work scripts (only Tmux at the moment)
  • Download colours to adjust Iterm and VIM colours

Must configures

  • Remap my CAPSLOCK to Control key (Saves me from stretching to the control key for many shortcuts)
  • Turn off default Mac Fn keys (I have some mappings to the F keys in VIM so it’s more functional than the standard use)
  • Change to fastest repeating keys

At this point, I should be pretty close to a workable dev environment. In part 2, I’ll cover a bit more of the main pieces of my dev environment and workflow. I’ll also raise thoughts on areas I think still need more improvement.

If you have any tips or must have tools for your workflow, feel free to mention them in a comment.


Don’t miss a post by following on the right hand side of the blog or via Twitter @chestertus