More hands welcome

GUIs are a bad thing, and this applies
on many levels. As I write this opinion piece I need two hands on the keyboard
to touch type and a third hand on the mouse to navigate through the document.
Problem is I only have two hands! The move to and fro between keyboard and
mouse is a real hassle. No better system has really emerged, even though WIMP
(Windows, icons, and mouse pointer) has been popular for over twenty years. The
trackpoint does solve some problems but this is not ideal either.

Of course, this is not the only issue.
Another grudge I have, still from a user point of view, is this whole desktop
metaphor. Don't get me wrong, I am all in favour of metaphors. Recently reading
Metaphors we live by (Lakoff and Johnson, ISBN 0-226-46801-1) was a real
eye opener. But the desktop metaphor as used in GUIs doesn't work very well at
all. It has too many mismatches with real desktops. I can, and I do, have my
desk in a real clutter, but I can nearly always find any paper in just a few
seconds. I can't say the same thing about finding a document on my computer.
And no, I definitely do not leave my wastebasket on top of my desk.

One amusing point is that it seems
that Doug Englebart, the inventor of both mice and GUIs, is also dissatisfied
with their current use. When he invented the mouse, he devised at the same time
a one-hand operated chording device: one hand on the mouse and the other on the
chording device. More natural for us two handed humans. (You could always use
your feet; a Ctrl-Alt-Del foot pedal was recently advertised on the Web!) On
Englebart's appreciation of today's GUIs, here's a quote taken from
Technology Review: 'Here's the language they're proposing: you point to
something and grunt.'

Diabolical as they are, graphical
interfaces do make controlling a computer easier (and prettier) than from the
command line, but so far this has happened with some power taken away from
users. For anything a bit complex, grunting a double-click just won't do. The
next best thing is going through screens of parameters/configurations in what
are usually called preferences or options. To help in this maze of tick boxes,
there are the ever helpful ToolTips and contextual help, except that more than
half the time they're not fully implemented or out of date; and the help system
is just slow enough to dissuade you from using it in the first place.

Back some fifteen years or so, a
friend working in a training company explained to me how easier it was training
people to use DOS than the Mac. In one case they had recipes to type for each
goal they were trying to achieve. True, they didn't always understand the
deeper meaning of the incantations they were typing but it did work. On the
Mac, the users had to understand the full desktop metaphor and then all its
flaws before they were able to do the simplest operation. In other words, the
learning curve was steeper for GUIs. How counter-intuitive.

Yet, I haven't touched on my main
beef. In the good ol' days of Unix, most command outputs could be used as the
input of other commands, and there was a cracking good shell. Okay, this is
still available today in GNU/Linux and all other Unixes, but it is mostly
lacking in the standard Windows platform (you can always add so many add-ons to
give it a Unix feel).

Extending the power of simple commands
by combining them together is something that Unix users (including many
developers and most system administrators) miss terribly when moving to a GUI
environment. With the relatively simple concepts of pipes and filters, Unix has
achieved a consistent framework to extend even the most basic command. Instead
of having to include everything possible in one application, just in case
someone might need a specific feature, developers can focus on one task at a
time knowing that users will be able to combine their programs with any other
present on the system. The power is in the (two) hands of the users.

Enter the world of the regular
expression, the back quote, and the pipe character. All this potential power is
fantastic but not everyone dares unleash it. Even if simple conceptually, it is
a rather complex and unforgiving world. Make a typo in your .procmailrc and all
your mail might go ashtray. Dumbing down the interface does offer protection
against many errors and safety for the fools.

Xerox was where the first computer
with a graphical user interface was invented. For the past thirty years we've
essentially been using the same technology. Some say the Alto was even better
as a computer than today's offerings (within the limitations of the time). The
pipe and filter metaphors have continued their own life in a quite separate
way. Either you get a CLI system, and get the power and accept being bitten
sometimes, or go for a GUI and accept its many limitations.

Except that it doesn't have to be this
way. Graphical interface designers and system programmers should work together
to make the best of both worlds. One possible scheme would be to have a core
system based on the pipe and filter metaphors with most if not all programs
written to take advantage of them, and on top of it a GUI with a real visual
development system where you could draw lines from the output of a program to
the input of another and annotate the links with some constructions describing
any kind of regexp. Pre- and post-conditions perhaps. This should work in such
a way that these two representations are functionally equivalent. One could use
either one or go from one to the other and back. That would be a better way to
edit programs... and documents. But that's enough about this suggestion; I
should let others offer even better schemes...