Recently, I worked with a cantankerous but brilliant web developer who would always amaze me with how fast he did things on his computer. After several months of watching in awe, I demanded a full day productivity training, and he was kind enough to comply. These are the things I’ve learned and how I adapted them to better suit me.
For productivity and speed, the rule of thumb is: mouse/cursor is slow, keyboard is fast.
I tend to add that gestures are even faster. So, this is the set up I have to be super fast on my computer.
The first thing my trainer introduced me to was Alfred. Much has been written about it, so I won’t go into great detail, but I don’t think of Alfred as a launcher; Alfred is my interface, my meta-GUI. Using Alfred means I don’t have to know where anything is on my computer. Anything. I don’t need to know how to interact with different websites and services, I can teach it to Alfred one time (workflow it), and then interact only with Alfred in the manner I have defined. In that sense, I deliberately make myself as dumb as possible about the location and functionality of individual applications and files. I don’t want to store that information in my brain, I want to abstract it out and delegate that responsibility to Alfred.
Before Alfred, I used OS X “Spaces” to group my open applications logically, then switched between the Spaces for different tasks. But, that meant an extra mental step of, “I want iTunes –> where is iTunes? –> it’s a personal app, so I keep it in my 4th space”. So in a sense, I’ve forced myself to perform logic every time I want to retrieve iTunes. With Alfred, Instead I can abstract that out to, “I want iTunes –> Alfred, give me iTunes,” which is less taxing on my brain and allows me to focus on other things. Over time, this has become an even shorter mental step for me of, “I want something…”, because as soon as my brain has the realization that I want something to materialize on my computer, I know that Alfred will give it to me. When I’m done with an application for the moment, I hide it
command + h instead of switching spaces. I don’t care where it is if I’m not using it.
Also, pro-tip, you can store your Alfred preferences in Dropbox so it automatically syncs to all your computers. This is great for keeping work/home settings sync’d up.
Divvy is a window manager; it resizes your application windows to predefined shapes and locations. You can choose your own custom hotkeys to control Divvy, I prefer:
ctrl + option + command + d
This brings up the Divvy interface for me, and I can manage my settings. Divvy allows you to define your own window shapes, choose your own shortcut keys, and set whether the command is application specific or global to all apps.
I want all my computer interactions to be stupid-simple, so I start all my Divvy commands with:
ctrl + option + command
The keys are right next to each other and it makes my commands unlikely to conflict with other applications. So, each Divvy command for me is my Divvy shortcut plus an option. I’m terrible with left and right, so I call left and right windows with my left and right arrow keys. Same for top and bottom. The rest are just letters I chose:
m for middle,
c for center,
f for fullscreen, etc.
I stole my hotkey schema from my trainer, but his window configurations were arranged more around responsive web design, which I imagine Divvy would be an excellent tool for.
BetterTouchTool is my dark horse candidate for favorite productivity app. The keyboard can be very fast, but there are some things that I do so often, that even punching two keys is taxing to my gentle sensibilities. I have become completely reliant on my BTT 3-finger-swipe system for managing my most used applications.
BTT allows you to define exhaustive, custom, and very specific gestures on your trackpad. I don’t do anything wildly complex with mine, really just four things I find key:
3 finger swipe down = close a tab
3 finger swipe up = open a tab
3 finger swipe left/right = move to the right/left tab (natural scrolling style)
3 finger double tap = hide an app
Sounds simple, un-earth-shattering, but when I’m in the midst of busy daily activities, the ability to close an unwanted window with such ease and simplicity is priceless to me. I use BTT heavily while interacting with Chrome, Sublime Text, and iTerm (my Terminal app). It makes it lightning fast to interact with tabs, even dare I say, fun. I don’t mind pop-ups at all anymore, they’re like whack-a-mole!
With Chrome, you have
command + shift + t to restore an accidentally closed tab. And with Sublime, you’ll be prompted to save an unsaved file. With Terminal, on the other hand, it’s a little bit dangerous to use 3 finger swipe down, but I maintain my sessions with tmux, so I don’t have to worry about losing my place in what I’m working on.
TextExpander is great for things you have to type over and over again and don’t want to store in your brain. It’s like variables for everything on your computer. So, you set a variable (“snippet”) in your TextExpander preferences, and then any time you type that string in any GUI application, TextExpander will expand that text into the value of your snippet.
The one catch is, you have to give the application access to everything you type on your computer.
I don’t use it all that much, but I know if I type ddate anywhere on my computer, it will expand to a formatted date for the current day. In fact, I had to disable it just to write this blog post. “ddate” is one of the default strings that is enabled for TextExpander.
In my last job, I used TextExpander for storing employee numbers because I needed to refer to them frequently, but couldn’t possibly remember them and didn’t want to have to manually look them up every day. I can see it being useful for frequently used blocks of code in Sublime.