A recent post by SQL*Kitten has reminded me of an issue I've been talking
about with Adam lately, so I think I'll rant about that for a while. Computers
are user-unfriendly. This is pretty obvious. It doesn't matter if you're a
programmer or a grandmother (or both!), they still have flaws. I'm going to
discuss one of those flaws (intentionally; I'll probably ramble on into other
The flaw that irks me the most is UIs. I use computers as a tool, as a means
to an end, not an end itself. Sure, when I get a new 'toy', I play with it
like a toy, but after that's done, it's all business. Mostly. But the problem
I have is when the computer gets in my way, and interferes with my ability
to do whatrever it is I'm trying to do.
Open up Outlook 2003 (and probably 2000) when you use an IMAP mail server,
but are not connected to the internet, and you'll have an unpleasant experience.
Outlook will try to contact the mail server. Specifically, it will send a message
to the mail server, which will not get there, and then it will wait for a reply.
You cannot stop this process. Once it starts (and it starts once you launch
the program), it continues until Outlook gives up, which takes enough time
to be frustrating. Ugh. Horrible.
Launch Thunderbird, the latest snapshots of the new Mozilla mail client. On
the P3/933 I tested it on, with the 512 megs of ram (a decent machine by any
standards), it took about three minutes for the window to come up. Once it
did, it was pretty much completely unresponsive for another two minutes, at
which point all hell broke loose. Turns out I'd accidentally launched two copies
(since you don't know if it launched unless you check the process list or the
window opens, and I'd thought the first double-click didn't take). Ugh, bad.
Worst part is though, the spam filtering. It requires you to download the messages.
All the messages. Then it has to process them. That's fine, except for the
several multi-megabyte messages I have in my inbox from when I was on broadband,
which I am leaving there until to broadband I return. But it wanted to download
them anyway, even though they're probably not spam since they were sent to
me in March and have been sitting there, read, ever since. I don't usually
archive spam, especially multi-megabyte spam.
So both copies of Thunderbird were trying to download several megs of e-mail,
and there was no easy way to stop them, except to force kill the process. This
is very similar to Outlook, in that it does the same thing when it starts up,
minus the spam filtering. Compare this, as well, to Phoenix/Firebird/Whatever,
which, when it's doing a DNS query, refuses to do anything else. If you drag
a window in front of it, you can 'paint' it - erase the contents of the Firebird
window with whatever dialog you happen to grab. This is a great source of amusement
for me when I'm bored, and I'm often bored when running any of these programs,
because they insist on doing nothing for such large amounts of time, and for
such poor reasons, and they do it so often.
At least they're consistant.
I've never noticed this on OS X, or even the old MacOS for that matter. The
interface was always there. You couldn't paint it away, because it would redraw
as soon as it was exposed. Nice.
SQL*Kitten had a good bitch about Mozilla. IE users will probably understand
his complaints too. It's not known to many computer users, but the technical
use of 'stop' in computer user-interface jargon means 'continue doing whatever
is wasting CPU cycles, memory, or time, until you're pretty much done, then
notice that you were told to stop and throw all that hard work out the window'.
It's true. I don't know why it's not in the Jargon file though. I blame ESR.
In Mozilla, when you click stop, nothing happens. It keeps loading the page,
or DNSing the server, or whatever the hell else it's doing, UNTIL such a point
as any reasonable person would say 'well, it's almost done anyway, may as well
let it finish', at which point it will completely throw out the DNS resolution,
the page loading, close connections, or whatever, not only having wasted your
time, but having wasted it pointlessly. It's as if it flaunts the fact that
you have no control, waving your UI (user ineptitude) in front of your face,
before robbing you of your dignity and dropping it in the garbage disposal
of digital torment. IE does this as well, but unlike Mozilla, whose UI is unresponsive
until the very end, in IE the toolbars respond fine, and everything works,
except the stop button. Click it all you like, but nothing happens. Ever. I
have a colleague at Microsoft who secretly showed me the source code to Internet
Explorer, and I verified this myself. There is no actual code attached to the
stop button in IE. It's not supposed to do anything. Amazing
Somewhere, something horrible has gone wrong. Back in the 70's, you see, computers
were not for people to use. In fact, computers were purchased with the same
rationale as trucks. Just like how middle-class city-dwelling husbands will
insist on buying
the biggest, noisiest, fuel-chugging truck possible, despite the fact that
it will only hold two of the five people in their household, is absolutely
for hauling groceries since it always rains, and will only ever be drive by
the man because the wife is terrified to death of the 12.9 litre 8000 Horsepower
V63 engine with the 19 speed transmission, and rightly so. Likewise, the first
computers were large, ugly, stupid things that took a lot of space, used a
of power, gave a lot of heat, and made the CS department heads think they had
bigger, uh, 'units of measure'.
These creations were like beautiful paintings, they argued. They are not there
to make life better, or to solve problems. Mona Lisa never lifted a finger
to help liberate Paris from the Germans! It's not the point! They exist for
the point of existing, so that people may admire them without understanding
what it is that makes them great!
A noble cause, and appropriate for the time. Meanwhile, Steve Jobs and Steve
Wozniak got unforgivably rich by making something that people could use to
do neat things. But I digress.
This attitude has descended down, through the creation of the first IBM PC
('it doesn't need to be usable, it's cheap!'), to Windows ('It doesn't need
to be usable, it's got solitare.'), and even Linux ('It doesn't need to be
usable, you need to RTFM you moron, then recompile your kernel with CONFIG_USELESSFOO,
which as everyone knows is needed to run, but you'll have to add another
#define on line 523 of arch/sparc/header.h even though you're running on x86,
because that's just the way it is').
You see, this is the sort of situation which you would describe by saying
'somewhere along the line, x happened', except that the problem is that x didn't
happen. People didn't realize that computers could be useful, and when they
did realize this, they tried their best to keep other users away from their
precious thing. Unfortunately, they failed, and now we have AOL, and they can
never be forgiven, but what's passed has passed and we have to look at
here and now.
Computers need to be designed for the users. Linux is built from the bottom
up. The kernel was written, then the userspace utilities were added. Then someone
said 'wouldn't it be neat if it were usable by everyone!'. That person was
lynched, and their head was placed on a pike as a message to others. Then someone
else said, more cautiously, 'wouldn't it be a challenge to code a graphical
user interface that made sense?', and of course people agreed, but that wasn't
enough. The sensible thing to do, they said, was to hack up an old protocol
(X11), written by two men who knew full well that they didn't know what they
were doing, add extensions to it that no one else would ever support, and then
proceed to write the most preposterous graphical toolkit ever concieved by
man. They called it the Graphically Torrid Kludge, or 'GTK'. In order to prevent
anyone writing anything useful using this, and to prevent anyone from writing
patches to make this new software usable by making sensible dialogs and menus,
they made sure the documentation was mediocre, the implementation was slow
and pathetic, and the code was incomprehensible unless you already knew what
it all meant anyway.
A noble goal, shared by all. Meanwhile, Trolltech amassed a huge following
by writing an object-oriented toolkit that was simple to program with, was
more responsive, and looked nicer in its default setting. But I digress.
Microsoft had a different design strategy, and that was 'oh shit, we have
to release this next week, what the fuck are we going to do?' This resulted
in an operating system that was written from the hardware up (DOS), a hacked-on
shell that was written from DOS up (Windows) and Windows 95, which I won't
get into detail about. Somehow, this philosophy of 'we don't know what this
does, but we'll charge $200 for it' made them scads of money. On an unrelated
note, Adam Smith is spinning in his grave.
Apple has a different design philosophy, which is quite clearly apparant.
I call this the user-down approach. If you use a mac for any amount of time
(without preconceptions of how things 'should' work based on other, crappier
OSes), you will notice this effect. When you see something, you can figure
out what it does by thinking about what you think it probably does, and you'll
probably be right. I know people who program on the Mac with Apple's toolkit,
and they have said, repeatedly, that they don't need to look up functions,
they just figure out what they're probably called, and figure out what information
they probably need, and they're almost always right. I've seen people write
entire applescripts for programs they've never used before, just by writing
what would make sense. In the words of Douglas Adams, 'This is, of course,
impossible.' It should be noted, too, that Douglas Adams was an avid mac user.
Apple's user-oriented design has allowed them to become friendly with people
who don't honestly care about their computer, except as a tool. For the people
who want to sit down, do something, then go have a life doing something more
interesting, the Mac is a well designed tool. Now, I'm not advocating rabid
mac-use (in this paragraph), but merely trying to point something out. Why
can programmers not realize that the user's input is the most important thing
the computer could ever hope to be involved with. I don't care if I'm processing
the cure for cancer, if I have some reason to stop it, then for god's sake,
stop the fucking process. If I'm loading a website, or running a Photoshop
filter, or printing a document, or sorting a directory by name, I should be
able to cancel, pause, or continue any of these actions.
Say it with me now: The user is the point of the computer's existance. I
am not there for the computer's edification, it is there for my use. So why
can't it be usable?