Tools of a Developer

Wesley Bland bio photo By Wesley Bland

One thing I’m always on the lookout for when someone opens up their laptop in front of me is what are the tools they use. This could be anything from their mail client to their terminal emulator. I check their operating system version. I look at all the icons on their screen and the windows that are open. I don’t do this to be a creep. I do it because I want to know the latest and greatest tools people use and see if it’s better than what I’m using at that moment.

So in that vain, here’s what I’m using at the moment. This is likely to change (frequently) because of what I just said above, but I think it’s always a useful snapshot to keep track of these things. I’ll probably write more detailed posts about a lot of them later.

Hardware

  • Early 2015 MacBook Pro 13” Retina
    • I’ve been using a Mac since I started grad school and I’ve never looked back. When I was an undergrad with nothing but time, I had a Linux box as my main development workstation, but at some point I got tired of doing more system administration than software development and gave a Mac a try. Ever since, Apple has done a great job of making new hardware (albeit sometimes pricy) and I’ll keep buying it as far out as I can see. Windows has never been an option for me as I can’t develop most of the software I work on directly on the machine so I’d always either have to be in a VM or an SSH session.
  • Code Keyboard
    • After reading for years about how great mechanical keyboards are, I finally gave this keyboard a shot. I won’t say that it’s changing my life. I didn’t get the one with the super clacky keys so my co-workers wouldn’t throw things at me, but I can’t really tell a massive difference between this and a regular old rubber dome keyboard. I’d still like to try out the new Apple keyboards with the butterfly springs, but it’s hard to justify buying another new one.
  • Magic Trackpad 2
    • I love thing thing. It’s got lots of nice gesture shortcuts that work well with the Mac (for things like starting Expose or Mission Control or whatever it’s called now). 3-finger dragging is a must for quick selection. It also doesn’t cramp up your hand the way a mouse can. I won’t be doing any gaming on this thing, but I have a real mouse for that at home.
  • Fellowes Memory Foam Wrist Rest
    • If you’re going to use a keyboard, you need a place to put your wrists. I picked this one up on Amazon because it was the right size and it was cheap. No complaints.
  • BenQ GW2765 27” Monitor
    • I didn’t really get to pick my monitor at work. I had the option of two low-res Dell monitors or this higher resolution one. I picked this one because I’ve never really gotten my workflow to do well with two monitors. I have the one big monitor in the center of my desk and the laptop to the side for extra windows that I can push over there (documentation, etc.).
  • Laptop holder from bathroom stall as laptop stand
    • This was literally a curved piece of metal sitting in a closet somewhere. Turns out it’s hung on the back of bathroom stalls for people to put their laptops in while using the bathroom. Here’s hoping this one wasn’t in there long.
  • Plantronics Backbeat PRO Bluetooth Headphones
    • I don’t have great things to say about these. I love the fact that they’re bluetooth so I stop accidentally pulling the wires out of the headphones and/or the computer. However, there’s an awful lot of interference that results in a clicking/skipping sound when listening to music. At some point, I might try using some Bose QC 35’s to see if they have the same problem.
  • Pen and notebook
    • I take notes. This is where they go. I’ve tried lots of digital note-taking apps, but on the iPad, the writing fidelity is horrible. When typing, I often can’t keep up with what’s going on or I get distracted. The downside is that I have to carry a physical thing around though.
  • Fellowes Monitor Stand
    • I’m pretty tall so having something to get my monitor up to the right height is important. They had a bunch of these sitting around at work and it does the job. To be fair though, if these weren’t around, I would have just used a stack of books or something.

Communication

  • Mail
    • Mail.app
      • I’ve gone back and forth with just about every mail client for Mac. In the end, the reason I keep ending up back with the stock app is mostly the fault of where I work. It’s hard for me to use the non-stock mail app on my phone which means I lose a lot of the benefit of the kinds of apps that let you “snooze” emails. I’d love to have that ability, but until I can get it everywhere, it’s not as useful.
    • Outlook for Mac
      • From time to time, I have to fire up Outlook for work. Usually because I want to schedule a meeting and need to be able to best integrate with the Exchange server. I don’t use this as a daily driver.
  • Calendar
    • Calendar.app
      • I’ve tried a few different alternatives here too, but end up going back to the default calendar app because I keep using the default mail app. It’s very nice to have a mail and calendar app that work together well.
  • Instant Messaging
    • Slack
      • Depending on who I need to talk to, I have to use different chat clients/servers. In the end though, this is my favorite. It’s available everywhere. The clients do a good job of exposing features. Notifications are good. Lots of integrations. It pretty much does it all.
    • Rocket.Chat
      • Rocket.Chat isn’t too bad. It’s a poor man’s Slack. The reason I use it is because we need to have a self-hosted chat client for work and this is pretty much all there is. Our install is somewhat crippled due to firewall restrictions or I might like it better.
    • Messages.app
      • This is pretty much just used for texting. If you use iMessages, you use this.
    • Skype for Business
      • This is my least favorite. I have to use it because of work, but I get out of it as much as possible. It is still not feature complete (compared to the Lync client that it replaced) even after a 1.0 release. It drops connections from time to time. It’s a huge battery hog. It has terrible syncing between the desktop and mobile clients. This is a last resort.

Music

  • Spotify (Paid)
    • I’ve tried Amazon Music and Apple Music and I keep coming back to Spotify. For me, the differentiator is the curated playlist selection. I like to listen to music while at work and I don’t want to spend a bunch of time picking the next song. Apple and Amazon’s playlists are too short and I have to pick a new playlist every hour or two. Pandora requires that I know more about what I want to listen to before I start (need to “seed” my playlists well). I like that Spotify has lots of ambient lists that I can trust to not get in my way while I’m trying to work.

Browser

  • Chrome
    • I recently built a Windows PC at home so I decided to switch back to Chrome to have a cross-platform browser. I like that Safari is more integrated with the OS, but I’ve also found that Chrome tends to work with more websites, especially those that are said to be “IE-only” at work.

Command Line

  • Neovim
    • I’m a Vim diehard. Mostly because I never learned Emacs. It’s not that I have a good argument why Vim is better. I’m just lazy. That being said, I did switch over hardcore to Neovim. The big winner here over regular Vim is asynchronous background threads for plugins. I use tons of plugins (probably discuss that in a different post) and some of them, like linters are pretty painful if they block the main thread. Imagine typing and your linter kicks in for 2 seconds. You can’t get any response from the UI until it’s done compiling. That’s not ok. Don’t be that guy. Use Neovim.
  • iTerm2
    • This is a big improvement over the default Terminal app in MacOS. I’ll admit that it’s been a long time since I”ve use the default app, but at least when I switched, iTerm2 had much better handling of splits and windows. Since then, the killer feature has been built-in support for remote tmux sessions. I can now create and manipulate my splits and windows seamlessly. It’s awesome.
  • tmux
    • In my last job, I was able to use mosh. It was awesome. I loved it. My sessions just never died. I’d lose a connection. Go home. Get on a plane. Doesn’t matter. The ssh connection was always there. Fast forward to my new job and mosh is no longer an option. Next best thing, I use tmux. Sessions always stay alive even when I go home for the day. Combined with the integration with iTerm2, this makes working much easier. I no longer fear putting my laptop to sleep.
  • bash
    • I’ve tried a few different shells. In the end, I’ve found them all to be pretty similar. Fish was pretty cool, but not really supported everywhere (as in, not installed by default) which meant I had to maintain two different versions of my environment setup depending on the shell. I gave up on that and decided to go with the old standby so I wouldn’t have to worry about where I was.

Utilities

  • Alfred 3 (w/ Powerpack)
    • This is a great shortcut tool. I use it to search for files on my computer, launch applications, open ssh connections, remember passwords, do quick calculations, put my computer to sleep, open system preferences, and probably a bunch more.
  • KeepingYouAwake
    • This is a handy little tool to keep your computer from going to sleep. It’s really nice when presenting or sitting in a meeting where you’re doing something (like Powerpoint) that wouldn’t otherwise force your computer to stay awake.
  • Parallels
    • I haven’t tried that many virtualization options on the Mac because I’ve usually had access to Parallels through work and it’s always been a pretty good solution for me. I work in here very sparingly so I don’t have a lot to say either way about it.
  • Reeder
    • I subscribe to a lot of different RSS feeds and Reeder (synced via Feedly) is a great way to track and read all of them. It works with lots of different services (I use Instapaper for things I don’t read immediately) and has a pretty good way of displaying articles by default and a good browser fallback when necessary.
  • LastPass
    • This is a must have at this point as I have way too many passwords to remember. At one point, we could all just use that one password for everything but now a combination of security and password requirements make it hard to continue that model. LastPass does a great job of both creating new passwords and remembering all of them for you. It will even do an analysis and tell you where you have a bunch of duplicated passwords and change (many) of them for you automatically. I also have an Alfred plugin so I can access these things in any application.