Back

Protips for Speed (And Reducing RSI) for Programmers or Mac Users

I’ve been wanting to write this post for a while — here I’ll describe all the excellent customizations that I’ve accrued over several years of optimizing my Mac for speed and alleviating repetitive stress injury (RSI). If you’re a Mac power user, or if you make a living at a keyboard, you want to read this.

Preventing or reducing RSI

If you’ve never experienced RSI, I’m jealous. Programming for just a few years has given me mild to excruciating amounts of wrist pain, finger pain, and elbow pain, and I’m still just a student! The small investment in an ergonomic setup could save you a lot of trouble later. Here are some things that help:

Gel wrist rest

My first ergonomic venture was a 3M gel wrist rest off of Amazon. It’s lasted two years so far and has been great to keep the sharp edge of my Macbook from digging into my wrists. It also elevates your hands above the keyboard so that typing is more comfortable. I’m now inseparable from my wrist rest, and it’s also gotten me some extra screening from airport security…

Compression gloves

If you have finger joint soreness, compression gloves are a must. I’ve tried many different pairs (comparing price and compression level), and I think IMAK has pretty good ones. They’re quite delicate and can tear after extended use, but they provide much better compression and fit than cheaper, thicker gloves. Even if you don’t have any pain, I recommend getting a pair. They make typing much more pleasurable, especially in cold weather.

Ergonomic mouse and trackpad

I also tried a few ergo mice before settling on the J-Tech mouse. It has both Bluetooth and wired versions, and it works great on a Mac. You can see in the photo the wonderful detachable platform on which you rest the bottom of your palm, keeping it off the table. There’s also two thumb-side buttons that you can customize, as I’ll mention later. Much less finger pain than using a trackpad or a conventional mouse.

Get a trackpad with a wrist rest (either foam or gel, your pick), while you’re at it.

Standing desk

A full standing desk is definitely too pricey, but there are cheaper solutions out there. One that serves its purpose for only $35 is this guy. It’s good to alternate standing and sitting, and this portable one is light as air and easy to set aside, but still sturdy. Adjusting it is a pain, though.

Ergonomic keyboards

I’ve recently started using the Microsoft Natural 4000 at work, and it puts less strain on the fingers than the default Mac keyboard. The built-in wrist rest and sloping contours are comfortable, though it’s quite a large keyboard and my small hands stretch to reach some keys.

For the power user, justaperson will testify that the Ergodox-EZ, at $300, is not cheap, but certainly worth it. It comes in two pieces so that you can arrange your hands at shoulder width, which is the optimal position for ergonomics. There’s software to program the keys however you want, and you can get versions with or without printed keycaps. And if you’re a fan of mechanical keys, you can choose your preferred type.

Note that it takes some getting used to, as justaperson can tell you, but he now uses it all the time.

Mac Customizations

My Mac environment has layers of speedups, shortcuts, and tricks, some of which are so superb that I don’t know how anyone works without them. Here goes:

BetterTouchTool

I’ve been using BetterTouchTool for years, and it’s absolutely incredible. The sheer number of features that now exist, including its mouse, trackpad, touchbar, keyboard integrations, allow any shortcut imaginable. When people ask me, “how the hell are you doing _______ on your Mac??”, my answer is probably BetterTouchTool!

Here are my best customizations that Mac users will salivate over:

  • Window resizing by holding option and dragging mouse anywhere in the window
  • Window moving by holding ⌘ and dragging mouse anywhere in the window
  • ⌘+E opens the amazing BetterTouchTool Window Switcher. Miles better than ⌘+Tab
  • Opt+Ctrl+T to open a Finder window from anywhere
  • I’ve mapped a ton of Opt+letter or arrow keys to snap a window to a corner, half, or third of the screen.

BetterTouchTool Window Switcher

Now that I use the J-Tech mouse, I’ve mapped the two extra buttons to the Window Switcher as well. MAGIC!!

The best part is that it’s pay-what-you-want (with a measly minimum of $6), while its functionality feels like it’s worth as much as the Mac itself.

Karabiner

This nifty, free keyboard customizer can do key modifications ranging from simple to mind-boggling, per-keyboard profiles, and more.

I don’t have many shortcuts, but I appreciate being able to map Return to Ctrl, so I put less strain on my left pinky, which often occurs when using tmux, vim or emacs (look up emacs pinky!). If I press Return alone, it enters a line break, but if I hold it and press another key, I get Ctrl functionality. Neat!

I also sometimes remap Microsoft keyboards to make the left-corner keys more like a Mac’s Ctrl, Option, and ⌘.

For MacOS Sierra, you’ll need Karabiner-Elements, a beta version which provides much the same functionality.

Copy’Em Paste

STOP SWITCHING WINDOWS TO PASTE MULTIPLE THINGS! Everyone needs a good clipboard manager, no matter what platform you’re on. Copy’Em Paste is everything you’ll ever need from one. I love that it has a customizable hotkey, favorites, search, image clipping, and option to paste richtext or plaintext.

It’s well worth the $15 price tag, though I won’t say where I got mine…

Multiple Desktops

Many Mac users may already know about Multiple Desktops, but here’s a nice hack: Each desktop is associated with a specific task, and you can use Ctrl+number hotkeys to quickly switch to what you need. For instance, you can put music in Desktop 8, a terminal in Desktop 7, email in Desktop 9, and navigating to each becomes muscle memory.

I learned this trick from firescar a few years ago. He was doing this on Linux, and I discovered that Multiple Desktops give the same effect on Macs.

iTerm2

iTerm is strictly better than Mac’s built-in Terminal. If you don’t have it, make the switch right now. Its endless customizations and even a black-magic tmux integration mode are a boon for programmers who use their terminal more than their browsers. I also switched from bash to zsh for the awesome plugins that make the terminal 1000x better.

Here’s the best zsh plugins I use:

  • fasd — Never cd to a full pathname again! This plugin remembers your previous working directories, so you can simply type part of a directory name and it will automatically go to the most recent/most used folder that matches fuzzy search
  • osx — Simple shortcuts like ofd to open the present working directory in a Finder window. Pretty cool, right?
  • history-substring-search — Instead of Ctrl+R for a shitty back-search, simply type a partial command and press the Up arrow to get a fuzzy search to recent matches. Running previous commands has never been easier…
  • git — Dozens of aliases for git. Enough said.

You’re welcome!