Search this site


Metadata

Articles

Projects

Presentations

Efficient Computer Usage - Smarter use of your time

Preface

This article covers tools and tricks to help make your daily work easier. It will hopefully enlighten you as to how to make your computer environment faster to access, allowing you to get work done faster and with less effort. Specifically, it covers my work environment and efforts I have made to make working easier.

Principle of Least Effort

I'll be the first to admit I try to put minimal effort into most things. However, do not confuse "minimal effort" with a lack of caring, or laziness to achieve a goal. It is a desire to do the least amount of work and have the most amount of useful work produced.

For those who have taken calculus, you might recall the "maximization and minimization" types of problem sets. You know, Farmer Bob has 1500 feet of fence and wants to make the largest area with it. Well, forget about calculus and Farmer Bob, here. The idea still remains though, you have resources and demands. That brings me to economics, the science of choice.

Economics studies choice. You, as a worker, have finite resources (time, energy, patience, budgets) and potentially infinite demands. You may have the time and energy to work on something, but it just isn't working out so you run out of patience. Whenever you run out of a resource it becomes worthwhile to step back and analyze why you ran out of said resource, hopefully to come to a conclusion that, in future situations, will conserve your resources without hindering output.

Part 1: Interfaces

Interfaces, of any kind, are almost always a topic of heated discussion among geeks and nerds alike. You'll find there are many different kinds of computer nerds out there. Some are called "power users" and stick to more, so-called "raw" computing environments. Some folks like full desktop environments such as Windows, KDE, GNOME, or OS X. Others are in between. There are also many kinds of mice, keyboards, and other input devices.

The Mouse

Everyone uses mice, right? What it really comes down to is how much do you use your mouse? Some fanatics may even wonder why you need a mouse when wonderful things like keyboard shortcuts exist. So let's lay it out like it is: The mouse is a pointing device. You use it to indicate where you want actions to occur, usually with a click of some sort. How do you know what the consequences of your click are going to be? Certainly you can't use a mouse with no eyes, right? How much can you do with a mouse while your eyes are closed?

If you are in a Desktop Environment (Windows, KDE, OSX, etc), try this exercise using only your mouse (read this through once first):
  1. Open a new browser window (not a tab)
  2. Move your mouse to the bottom left-hand corner of the screen
  3. Close your eyes
  4. Try to close that new browser window
  5. Go back to the the other (this) browser window
  6. View the page source
Were you able to do it? Chances are if you were in Windows and your new browser opened up full-screen, then you should be able to do atleast the first step, but what about OSX? or KDE? In case you failed, here's how it can be done in Windows:
  • If the new browser window opened up maximized, then you are in luck! Windows has a GREAT feature that you can click at the far, top-right corner of a maximized window and it will close it. If you've never noticed this, this allows you to close windows by aiming for an easy target, the top-right corner of the screen, and clicking. Kudos to Windows for this feature.
  • Assuming you got that far, the next trick is to figure out how to view the page source. With the mouse, there's two options. The first is through the main menus (View->Page Source in Firefox). The other is by accessing the context menu for the page. The page is a large area you can probably hit blind. Right click, now what? Aim down and hope for the best. Right?
The problem with mice is that it requires precise hand-eye coordination, or you end up orbiting your intended target until you slowly zero-in on the location you intend on pointing at. UGH! My favorite example is the Windows calculator (or xcalc for X11). These calculators have a similar look-and-feel to normal calculators. If you try and "type" numbers using the mouse and the button-based number pad, you're doomed to slowness and inefficiency. Use the damn keyboard.

What mouse-usage comes down to is finding a mouse that suits your style of use. There are many kinds of mice: trackballs, touchpads, trackpoint (nipple), standard mouse, etc. Try as many as you can, figure out which one feels right for you to get the job done best.

The Keyboard

Don't get me wrong, I love my mouse. I does a great job of pointing at things. However, muscle memory is infinitely superior to that of hand-eye coordinated efforts. Why? If you can touch type, it's because you have trained yourself such that your fingers "know" where the keys are based on where your fingers are. The keyboard requires no hand-eye coordination if you can do this. The mouse almost always requires hand-eye coordination in most environments.

Notice I said the keyboard requires no hand-eye coordination. That's right. zero. You may not have noticed, but most (all?) keyboards will have raised indicators on the positions of the keyboard where you should place your left and right index fingers. If haven't noticed this, lift up your hands and look at the 'F' and 'J' keys on a standard US keyboard. The bottom of the keys should have little nubs. This helps you find the home row without looking, simply brilliant.

Keyboards have been pretty much the same since QWERTY came around. You'll find small differences between manufacturers: Sun keyboards have control/caps switched, backspace shifted down one row, tilde elsewhere, escape where tilde used to be. Apple makes some keyboards with keys half-height keys you almost have to look for before attempting to strike them (Requires hand-eye coordination, UGH!). Rarer keyboards may vary wildly, but most you'll find are similar.

There are also two kinds of keyboard "keys" you'll find. There's the common, big keys found on standard desktop keyboards. There's also laptop-style keyboards with keys that use "shallow scissor" keys, which are much shorter have much less travel required to press than standard keyboards. Some keyboards you'll find have "hotkeys" on them that do magical things such as tweak sound volume levels, open your mail client, etc.

Graphical Environment

You have a mouse, you have a keyboard, what now? Graphical User Interfaces have existed for almost 25 years, and still nobody agrees on which is the best. The graphical environment provides you wonderful toys such as a mouse cursor, and colored icons in your file manager. Most graphical environments have fun little widgets like buttons, checkboxes, textfields, windows, icons, etc.

Your graphical environment probably provides you with a blended interface relying on both keyboard and mouse interaction. Unfortunately, many things can only be done with the keyboard and others can only be done with the mouse. Good graphical interfaces will provide both keyboard shortcuts and fast mouse interfaces to let you, the user, decide which you want to use.

Many graphical environments that use the X window server have some neat innovations Apple OSX and Windows lack:
  • Grab-and-splat: Applications will have a grab-and-splat style of mouse-oriented copy-and-paste. First, you "grab" text by selecting it with the mouse. This activity almost always copies the selected text to the clipboard, so forget needing to hit Control+C or fumble around looking for a "copy" option. The "splat" part refers pasting by using a mouse click to indicate a paste action. It's always been the middle mouse button in my experience.. This lets me copy and paste using only a few clicks and no keyboard interaction.
  • Easy window movement: Most window managers I've used allow you to "grab" a window ANYWHERE simply by holding the ALT key and dragging a window with the left mouse button. OSX and Windows make you hunt for the title bar to drag it. This is my favorite feature, ever.
  • Easy window resizing: Again, many window managers allow you to again "grab" the window anywhere. This time, if you use the right-mouse button (or middle mouse in GNOME) while holding ALT you can drag the window in any direction and it will resize the window. Simple and fast.
  • Mouse-focus: focus-follows-mouse is another of my favorite innovations not found easily OSX or Windows. This means that whatever menu your mouse is hovering over gets focused, meaning you can type in it. This doesn't mean the window gets moved on top of others, just that the keyboard events go to it. This is so useful.
  • Bring Forward/Send Back: Windows are in layers. You can put a window on top of this browser window, right? Many window managers in X allow you to send a window to the bottom layer by using alt+rightclick. You can bring a clipped window forward by using alt+leftclick
Nothing quite makes me angry like having to hunt down the title bar or the tiny "drag me to resize" widget you find at the bottom-right of many OSX applications. No one should have to be that precise with the mouse to do simple actions such as resizing or moving a window. I wonder why nobody at these big companies has discovered how useful these features are. Think about it, what does alt+rightclick+drag do in a window in OSX? Nothing, right? Why not make use of it? I should mention, however, that Windows XP appears to support mouse focus, or sloppy focus, (older versions may too) by flipping some options in the registry. TweakUI should be able to enable this for you.

Part 2: Tricks

Prepare for Irritation

I mentioned patience being a resource earlier in this article. Patience is how much irritation you are willing to put up with in your computing environment before taking a baseball bat to your monitor. Your mileage may vary, but personally, patience is the first thing I lose, and it's the first reason that causes me to find less irritating activities. This becomes a huge problem when the activity that is wearing on my patience is one that has an impending deadline! When a deadline is bearing down on you, you cannot afford to be detered by a lack of patience for the computing environment you need to be using to complate said activity.

Bringing back the Principle of Least Effort, I am wholely willing to spend resources (time) when I have nothing better to do. This is called boredom. I love learning new things, discovering new tricks, etc, so when I have some free time to kill, I often kill it learning new tricks or enhancing my personal computing environment. This make any required future tasks consume less of my patience, allowing me to work better and longer on tasks I need to get done.

There are many questions you should ask yourself: How much do you know about your preferred computing environment? What can you do quickly? What can't you do quickly? Have you configured said environment to your preference? If not, why not? The list goes on and on, but the point is, you need to evaluate how you interact with your computer and decide if you find it efficient. If it is not efficient, find better means by which to interact. This means experimenting with software tools, learning keyboard shortcuts, tweaking interface options, and more.

Keyboard Shortcuts

Seeing as how muscle memory is faster than hand-eye coordination, you should do your best to learn all the keyboard shortcuts you can. This means reading documentation, taking mental notes of keyboard shortcuts when using the popup and main menu systems, and even making your own keyboard shortcuts if the program allows. Using Control+V to paste is always more efficient than fumbling around with your mouse to find the paste button or invoking a context menu and finding the paste option.

Mouse Gestures

Mouse gestures are fantastic if your hand is glued to your mouse most of the time. This is especially useful when you are using a mouse-driven piece of software, such as a graphical file browser or a web browser (such as Opera). I equate mouse gestures to the rodent-version of keyboard shortcuts. They're efficient and can quickly become muscle-memory reactions. Unfortunately, many programs do not support them. Opera is an ad-supported web browser that supports mouse gestures by default. Firefox has extensions you can install to add mouse gesture support.

Mouse gestures are just that, gestures you make with your mouse pointer. A short horizontal movement to the left while holding the right mouse button may indicate that you want to go Back in your web browser, for example. Mouse gestures are great, and can often be combined with keyboard combinations; for instance, holding shift while holding the left button and dragging the mouse upward. The only problem with mouse gestures is that they are not easily discovered, that means that you'll probably have to read the documentation to figure out what the available mouse gestures are and what they do. Fortunately, many programs that do support gestures support configurability of those gestures. This means you can make things like "copy text" and other common tasks execute when you perform certain gestures. Fantastic!

There's problems with mouse gestures, however. They only seem to be truely useful with standard mice, for myself anyway. I use a trackpoint (nipple) mouse, so directional precision is somewhat difficult to maintain when moving quickly. That means my attempt to "click-drag right" may end up turning into "click-drag down-right" depending on how error I make. Your mileage may vary.

Pie Menus

Pie menus, also known as radial menus, are extremely useful elements of mouse-driven software. I consider them to be graphical relatives of mouse gestures. While mouse gestures are simply mouse movements, radial menus have important graphical hints which make learning them very quick. These types of menus are circular instead of your normal rectangular, list-style, menuing systems. You are presented with a circular menu with a few choices, if the item you chose has a submenu, then selecting that submenu will bring another circle out so you can choose elements from that submenu. The cool thing is most implementations I've seen of this allow you to indicate submenu selection by simply mousing in the direction of the submenu. Fast and easy to learn? I like it.

Keyboard Mapping

What's a keyboard map? It's a table that your Operating System uses to determine what key you pressed. Your keyboard sends a numeric identifier for whatever key you pressed. This numeric identifier is looked up the keyboard map table and is translated into a key press that applications can recognize. This is a critical point to understand. This map can be altered to make different keys act however you please. One common alteration is to make the Caps Lock key act like a Control key. Who uses Caps Lock these days anyway?

Part 3: Tools

Your tool/accessory options are limited to the kind of computing you do. Certain software tools are available for X that aren't available in Windows or OSX. The alternates are also true. This boils down to the fact that if you want to make yourself more productive on a computer, you're going to need to find the tools which give you a productive edge.

Windows

I know of only two utilities that help you modify useful parts of the Windows interface, they are below. If you know of more, please let me know. You can probably find more by googling for "windows tweaks" or somesuch. I don't use Windows anymore, so you're on your own :)

Apple OS X

I hate Macs, therefore this is a very thin section. Perhaps you should email me with software/tool suggestions and descriptions?

X-Windows

  • xkeycaps - a fantastic program that lets you remap keys on the fly in X11 and save the changes.
  • apwal - launcher application that puts icons near your cursor when executed. Choosing an icon executes it's program. Fully configurable, I like this idea

Part 4: My Environment

Again, I'll mention muscle memory is fast. So I tend towards environments that lend themselves to activities that can be learned in muscle meory. What do I use? Anything that's mostly driven by the keyboard.

Right, so let's get down to it. What do I use in my environment?

  1. The first thing I usually do when configuring an environment to my preferences is changing the Caps Lock key to act like a Control key. Caps Lock is useless! Other keymap changes may also occur: sometimes I map F1 to escape, for example. Or right-alt to windows key.
  2. The next thing I do is get familiar software and configure it. If you don't configure software you use commonly to suit your needs, then you probably aren't using it as efficiently as you could. The first thing when I login to a new system is copy my rc files (zshrc, vimrc, etc) over.
Once those two tasks are done, I'm pretty much set to be comfortable and efficient. However, you might ask what particular software and configurations do I use? I'll start with vi.

editor: vi

  • Comes standard in some flavor on almost every unix-like os
  • Extremely muscle-memory friendly
  • Very configurable (depends on flavor)
I've been using vi since I started using anything unix-like. This was about 4 years ago. For those out of the loop, vi is a keyboard-oriented text editor that comes in many flavors. The principle behind vi is it's two-mode style of interface. In insert mode, you can type into your document as you would any other editor. However, if you hit Escape while in insert mode, it puts you in command mode. Command mode presents the user with many different kinds of editing and movement commands with single keystrokes. This gives you a rediculously powerful editing system that is also very fast to use. The only caveat is that there is a steep learning curve, becuase the interface is far from intuitive.

If you spend the time to learn any vi commands you can, you'll begin editing text faster and faster. The more commands you know, the more effectively you can use the editor. The more often you use these commands, the faster they are learned in muscle memory.

vi comes in many flavors. The most popular open source ones being nvi and vim. Both are very configurable and allow you to change most behavioral aspects of the editor. Vim has far more features than can be described here along with very extensive documentation.

A nice benefit to knowing vi commands by heart is that many unix shells sport vi-compatibility modes. Bash, zsh, tcsh, and ksh all have vi-style input modes which let you line-edit with vi commands. This is quite sexy and makes line editing in the shell faster.

window manager: ion

Over the past 4 years of my unix experience, I've used many different window managers. I started using WindowMaker then moved to BlackBox and others. All of those window managers were very mouse oriented and made much more efficient use of the mouse than Windows ever has.

Enter ion. Ion is designed to be used primarily with the keyboard. It's original implementation was based around "tiling" workspaces and tabbed frames. Workspaces are split into frames that client windows (xterm, etc) can be launched into. Frames can contain multiple clients, discernable by tabbed title bars. Ion does what I believe a window manager should do: manage windows. With the normal framed workspace layouts, I never have to worry about where windows are goign to show up. I never have to move windows around myself to make them fit on the screen better, etc. Most of the effort required in using a graphical windowing environment is handled automatically by the window manager.

Ion has grown over the years and now supports things like floating workspaces (they act like normal workspaces you're used to using) among many other features. It's greatest benefit is that most of the window manager's features are accessible through it's scripting engine, Lua. It supports neat things like winprop kludges so you can tell ion what it should do with certain kinds of programs and windows.

Just about everything can be configured, from themes to keybindings. The default settings are reasonably sane and learning how to use it is fairly simple as there's a lot of documentation online. If you browse through the keybinding config files that come with it, you can quickly learn how to use this window manager.

Utilities, tools, and bears?! Oh My!

Ok, so maybe I exagerated a bit when I said bears. At any rate, Making effective use of your time depends wholely on the tools you have available. There's a saying: "When all you have is a hammer, everything looks like a nail." This is a very unfortunate truth.

Most of us just want to get the jobs done and move on with our lives. The problem is, that this attitude is a hinderance. You need to acquire the proper tools to get a job done to satisfaction. If you are lacking in the proper tools, find them or make your own. You'll enjoy free time later when you didn't half-ass something only to have it not quite fit.

Many friends have pointed out that I "obviously" hate graphical interfaces the only programs I use are console-based (with one exception, Firefox). Whether I do or not is out of the scope of this article. The point is, I use primarily console based applications becuase the tasks I need to perform are most easily suited to my use of these applications which happen to be console based.

There's ultimately a chicken and egg problem here. You don't know what tools you need until there's a job to be done. Hopefully, your OS comes with a standard set of useful tools. Unfortunately, many of the fanboy fad Linux distros lack almost all useful tools by default. I'm sorry if you're running one of them.

Part 5: Conclusions

Learn the tools you need to use, and learn them well. This follows no matter what hat you are wearing: student, full time employee, open source developer, etc. The better you understand and can use the tools you need to interact with, the more efficiently you are able to work. Working more efficiently lets you work faster and smarter. This has great benefits to yourself, your peers and your employer(s).