The Best Desktop UI, Part 1

One of the center pieces of the age-old Mac vs PC debate has been about UI. Who creates the best UI in the desktop/laptop environment, Microsoft or Apple? Most people who know me would say that I would say Apple, given my self-proclaimed "Apple enthusiast" (not fanboy) status.

If the only choices to the question above are Microsoft and Apple, then I choose Apple in a heartbeat. But if I'm not restricted to a binary response, then I choose Apple + Alfred + BetterTouchTool.

This blog post is the first in a 3-part post. The post will focus on the keyboard, the second on the mouse/trackpad, and the third on the future of UIs. The first 2 posts are an will lay out use cases that demonstrate why the Apple + Alfred  + BetterTouchTool trifecta is the perfect UI in the desktop/laptop environment. The third post will discuss the intermingling of these apps and possibilites for future UI improvements.

You only interact with a PC in 2 fundamental ways

PCs have 2 physical forms of user interface - the keyboard and the mouse/trackpad. Sure, there are ancillary ways to interact like the webcam and microphone, but would you really say that your primary form of interaction with your computer is your webcam? Or microphone? Exactly.

Thus, we're left with 2 forms of physical interaction. The keyboard, and the mouse/trackpad. Alfred and BetterTouchTool are apps for OSX that extend the functionality of the keyboard and mouse tremendously. Each of these apps optimizes its UI mechanism to the point of perfection. This post will focus on Alfred, and my next post on BetterTouchTool.

Alfred: Command line > software UI

Alfred is Spotlight++. It's everything that the built-in search function on modern OSes should be. Both Microsoft's and Apple's built in search functions pale in comparison to Alfred. Even Google's desktop search for Windows is lacking in comparison. This is particularly ironic given that Google is the mother of all search companies.

So let's start with the basics of Alfred. What does it do? How does it function?

At any point in time, you can invoke Alfred by pressing a user-programmable keyboard shortcut. By default, OSX uses CMD+Space to invoke Spotlight. Both of these keys occupy prime real estate on the keyboard, so I disabled Apple's Spotlight search and mapped Alfred to CMD+Space. When you launch Alfred, you get this simple search box.


On screen, the search box is automatically horizontally centered, and a little off-center vertically. You can easily drag-and-drop the floating search box anywhere, and it will remember the position for future searches. Of course, Alfred searches local files on your computer. In the settings, you can use a simple software UI to specify which folders Alfred should index to optimize performance. If your Mac has an SSD, you can index pretty much everything other than system files, and Alfred should run without a hunch.

Of course, as soon as you start typing, Alfred starts searching your computer given the string of characters you've entered. Alfred will show you a list of matching results below the search box, as shown below. You can quickly use the arrow keys or keyboard shortcuts shown on screen to navigate to the file you'd like, and press Enter to open it. Nothing special so far, right?

Alfred Results.JPG

Well, let's say you want to find a file, buried deep in your folders and email it. Just type "find " then the file you're searching for. If you want to open the file in a new Finder Window, press Enter, or if you want to email the file, press the Right Arrow key and you're presented with a few actions you can perform on the file, including email. If you select email, Alfred prompts you for a contact's name, and when you press Enter, Alfred opens a new compose window in your default mail program with the recipient specified, file attached, and subject inserted. Doesn't sound very special, right? Well, maybe it is. In order to find out, lets conduct a an objective comparison between a purely mouse driven approach, and an Alfred driven approach.


1. Open Finder

2. Navigate to file (this may be many clicks)

3. Right click and copy

4. Switch to Mail

5. Compose a new email

6. Specify a recipient

7. Specify a subject

8. Paste file

9. Send email


1. Press CMD+Space

2. Type "find " + file name

3. Press Right Arrow

4. Select email

5. Specify recipient (after this, your mail application opens up with a new compose window with the recipient, file, and subject already set)

6. Press CMD+Enter to send email.

That's a 33% reduction in steps, but probably an 80% reduction in actual time. Given that I type over 100 WPM, I see a 90% time reduction = 1 order of magnitude.

Of course, this quick comparison doesn't even consider how all of the other options that Alfred presents along the way, or all of the other services that Alfred could plug into along the way instead of email - that's right, Alfred is an open platform that other apps can plug into, so you can use Alfred with your favorite services to expedite almost any workflow on your computer.

Ok, so Alfred is great for emailing files. So what? Well, it can do a few other things too.

Last week I was reading Tim Ferris's The 4 Hour Chef, in my Kindle app on my Mac, which I always keep in full-screen mode so I can read without distractions. Ferris suggested that I should buy a probe thermometer. So naturally, I wanted to search Amazon to find a probe thermometer to purchase. Let's conduct another step-by-step comparison, using the Kindle app in full-screen mode as a starting point.


1. Switch to Chrome

2. Open new tab

3. Navigate to

4. Search for probe thermometer


1. Press CMD+Space

2. Type "amazon probe thermometer" and press Enter

After completing step 2, Alfred switches to your default web browser, opens a new tab, and searches Amazon for the product in question. This time around, Alfred reduces the number of steps by 50%, and the time required by 80-90%.

Alfred comes with about 2 dozen predefined web-searches spanning a host of web services. All of these web searches act identically: type in a pre-defined token (ie "amazon ") and your search term. Alfred switches to your default browser, opens a new tab, and generates a URL including your search term. The defaults are quite good. They include: Google, Google Images, Google Maps, Gmail, Google Docs/Drive, Google Reader, Yahoo, Bing, Facebook, Wikipedia, Amazon, LinkedIn, and IMDB, to name a few.

On top of the built-in web-searches, Alfred lets you create your own custom web searches. This tool is extremely powerful.

As it turns out, when you search Google Finance for a stock, the URL for the ticker is formulaic. For Google Finance, the URL for any ticker is always{TICKER}. Alfred lets you take that formulaic URL, and plug in anything into it that you want. You can also define your token so that Alfred knows the right queue to search that specific search engine. I set my Google Finance token to "$ ". So if I want to look up a particular company's financials, I just hit CMD+Space to invoke Alfred, then "$ aapl" and Alfred takes me to Chrome, opens a new tab, and goes straight to Apple's stock page. Awesome.

I have defined custom searches for a suite of other web services I frequently use, including Quora, Google Finance, Bugzilla (bug-tracking system we use at work), RottenTomatoes, torrentz, and IGN, to name a few.

Using Alfred daily

If you couple Alfred with OS-wide text-expansion tools, such as the excellent and free Dash Expander (OSX only; there are many clones available for Windows too), you increase your raw computing productivity substantially. I probably implement text expansion shortcuts 30-40 times/day, many of which feed into Alfred to create awesome workflows.

Although I have only presented 2 use cases, Alfred does quite a bit more. I find that these 2 use cases are the most important and useful, and have really changed how I use my computer, and how I think about the keyboard as a UI mechanism for humans. Alfred also offers an iTunes player, system commands, calculator, dictionary, contacts search (this function is superb), and more without ever leaving your active app or taking your hands off the keyboard. And developers have developed all sorts of plug-ins for various file operations and integration with a number of popular web services. In short, Alfred can do almost anything on your computer with a quick keyboard command. It makes your keyboard the most fast and effective tool to do almost anything on your computer.

I regularly use Alfred 40-50 times/day while at work. I have on some occasions broken 100 uses in a single day = 10 times/hour = once every 6 minutes. Alfred is that good. Alfred even tracks how much you use it. As you can see, I've used Alfred over 4,000 times since I got my 15" Retina Macbook Pro in August 2012. Here's my usage over the last few months. The dips represent weekends and travel.

Alfred Usage.JPG

I hope this post has convinced you that it's worth exploring Alfred, or other free Alfred alternatives such as QuickSilver. Alfred is free on the Mac App Store, and there's a bonus Power Pack available for 15 English Pounds. It's really quite superb. It features an enormous number of features that make your keyboard the ultimate UI tool. And if you ever need any support just tweet to the developer @alfredapp, and he usually responds within an hour. If you find Alfred to be valuable, please purchase the PowerPack from the developer. Developers of this caliber need to be rewarded for their excellent work.

??? > command line > software UI

To wrap things up, I'd like to revisit the assertion that I made in a sub-header earlier in this post: Command line > software UI. Although that's not technically true, once you start using Alfred, you'll find that to be true with regards to your productivity on your PC. It's extremely ironic that today, the general public bemoans anything that resembles the command line interface from the early days of computing. Everyone praised Steve Jobs for transforming computers away from the command line and into a mouse and GUI driven interface. Although the mouse and GUI revolution was outstanding and necessary to bring computing to the masses, the mouse and the GUI are very inefficient for getting things done. If you abstract the traditional command line up to a much higher level language, it becomes an extremely powerful tool. But of course, this begs the question: what happens when Alfred reaches the highest level language, human language?

I'll answer this question in the 3rd and final post of this series.

Long live the command line!