the keyboard/mouse and “bandwidth”
I want to clarify something of what I wrote in the last post about when the keyboard is more effective than the mouse and how it relates to bandwidth. If you haven’t already read the post on The Productive Programmer and vim, go do so, then come back.
I wish I could find the article about keyboard/mouse and bandwidth, but since I can’t, you’ll have to deal with my crappy summary of the articles summation.
First off, the article isn’t really discussing the keyboard and the mouse - it is a discussion of interaction with a console vs. interaction with a graphical interface. The key message is this:
- The console primarily uses keyboard entry, which is high bandwidth, and textual output, which is low bandwidth
- A GUI primarily uses mouse entry, which is low bandwidth, and graphical output, which is high bandwidth
So I did the article a disservice by saying that using the keyboard means that your output is low bandwidth. In vim, certainly, your output is (mostly) just text, and so why your input experience is very rich, the output experience is still a black box with some colorful text. Not to bash on simple boxes with colorful text, of course, as the simplicity of the interface ends up being one of the things I truly appreciate about vim (and the thing that people like Steve Ballmer will never understand about Google and how seriously they take simplicity).
As an aside, I heard a coworker the other day exclaim that, “The only reason anyone would ever use gmail [over windows live mail] is if they seriously hate Microsoft.” The reason (he later gave)? Because Windows Live Mail gives unlimited storage. Of course, my limited (7GB!) storage on gmail is getting pretty full these days (around 3% used), so I should probably consider upgrading. This relates to the topic at hand, however, since the reason I’ve switched to gmail entirely is that I find myself a metric shit-tonne faster navigating mail in gmail than any other mail application I use (especially Outlook, which I think was designed to make people frustrated).
Back to business.
The problem with my assertion about the mouse and keyboard (and relative benefits) is that it sidesteps a more important question - is there a way to get the best of both worlds?
Here’s what I think:
- GUI widgets are often the most discoverable/obvious of interaction paradigms (the interaction here is the mouse)
- Providing sensible shortcut keys is often the most efficient way of interacting with an application (the fewer times I have to move my hands around, the more efficient I will be)
- GUI widgets often provide the most information for any given amount of visual space (bandwidth) - think of, for example, the ribbon in Office, which provides a large deal of information in a relatively minimal space.
- A well designed set of shortcuts (i.e. keyboard interaction that feels purposeful instead of accidental, such as vim/emacs) allows shortcuts to be easily learned and thus makes the path from using the mouse (for discoverability) to using the keyboard (for efficiency) easier.
Take, for example, debuggers, comparing the Visual Studio debugger to, say, gdb. To a large extent, you can accomplish the same thing in both debuggers, but you’ll find that you’ll be much more efficient with the VS debugger than plain ol’ gdb (although something like DDD will bring you much closer).
The reason for this is that:
- The VS debugger allows discoverable interaction through the mouse - menus, various windows that can be used/rearranged, and interaction with graphical widgets like breakpoints and the currently executing statement arrow
- While the shortcuts aren’t necessarily “sensible” (lots of function keys, no clear rhyme/reason for the various shortcuts) or complete (you can’t do everything with them), there are keyboard shortcuts for doing almost anything with the debugger. Once you learn these, you have to go to the mouse much less.
- The VS debugger, being plugged into a GUI, provides more information over the same amount of screen real-estate and the same amount of interaction than gdb does.
I’m going to cut this short. My mind keeps getting sidetracked on gmail/google reader, so I’m going to go pen a few words there before I lose them all.

Add New Comment
Viewing 3 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment
Trackbacks
(Trackback URL)