Desktop Environment Makeover
I recently decided to do a complete makeover of my development environment. Developers get pretty comfortable with their local development environment, which can sometimes mean they live with bad habits because it is a habit.
It had dawned on me that when I was working, I generally had too much crap open. On average, I’d have 2 terminal windows open with a total of 7 tabs. Often it would be 3 windows and 10+ tabs. I was using Sublime Text 3, and overall loved it, but would often get a number of windows open and a plethora of tabs. At times, it felt too scattered. I was wasting time tracking what I had open and where rather than getting shit done.
There was another nagging thing. Some months earlier earlier, I had set up Emacs and was trying to make a move to it. I had tried out Emacs a couple times before, but could never get over the productivity slump with it.
I ended up not succeeding and ended up back in Sublime Text. Sometime later, Derek was at my desk looking over some stuff and I made a comment that I had gone back to Sublime. He jokingly said “yeah, I knew that wasn’t going to work out.” While it was a simple poke, it stuck in my mind as a challenge.
I am not really one for New Years resolutions, but last month I was thinking it may be worth challenging myself… and what better way to break any habits you have by doing a complete makeover at once. Make it hard to fall by doing a complete environment change.
My complete environment change has taken me from running OS X to now using Arch Linux. To help undo the clutter and remain focused, I’ve moved to the tiling window manager AwesomeWM.
Awesome is incredibly customizable. I had tried out Xmonad as well, however I felt more comfortable customizing things in Lua than Haskell, and Awesome felt like it had a clearer path to my optimal setup.
My layout when coding is now one large, centered Emacs window with 4 small terminals flanking the corners. Everything I am working with is right there. No tabs. No other windows.
Other distractions are out of my way, however they’re also quickly accessible when I need them. When hooked up at my desk, my laptop screen is tiled with HipChat there in case I see something pop up, and I’m a keystroke away from grabbing the window, moving it to my main montior, and another keystroke from putting it back where it was.
The move to Emacs has actually gone fairly well. I still have Sublime Text installed, however with also moving to Linux, I couldn’t really fall back to it and be in my comfort zone. All the key changes between OS X and Linux made it so it wasn’t the same feeling as before. I’ve gotten pretty used to how to do things, and with previous attempts to switch I kept getting gradually closer with finding packages/tools for various things.
Overall, moving to Linux has gone fairly smooth. Setting up Arch wasn’t all that difficult. I ran Linux on my desktop several years ago and have used Debian, Ubuntu, Gentoo, Slackware, and even Red Hat (pre-RHEL). It took some tweaking to get everything on my MacBook Pro working, but pretty much all the drivers work. Some kinks remain mostly with the video card (thanks Nvidia). Otherwise still have Chrome, zsh, and have found equivalents for most other needs.
Some side benefits came up too. Generally find things more responsive in Linux. My whole system is setup in Chef. Linux has a lot of config files, but its easier to manage, track, and version them than GUIs that change internal attributes you can’t automate things well.
I’ve been finding Vagrant with NFS mounts for mounting in my code works far better. The NFS server on OS X must suck, since used to constantly get stale mounts where inside the VM, it would see an outdated version of the file.