The fact is, that civilization requires slaves. The Greeks were quite right there. Unless there are slaves to do the ugly, horrible, uninteresting work, culture and contemplation become almost impossible. Human slavery is wrong, insecure, and demoralizing. On mechanical slavery, on the slavery of the machine, the future of the world depends. – Oscar Wilde
Now there’s a man who saw the computer revolution coming…
Yesterday, a customer noted that he couldn’t follow what I was doing to his computer, and that they’re really not that user-friendly, despite all the advances in technology. This is of course correct, because advances in technology aren’t making things user-friendlier, they’re just getting faster at being unintuitive.
As happens every time this comes up, I spent some daydreaming time trying to work out what _is_ the best user interface. There’s not a single true answer to this, so I’m limiting myself to what would work best for _me_.
The first and most defining aspect of my workflow is I tend to switch between focussed single-tasking and frantic multi-tasking. So I need a system which lets me run multiple single-tasking areas and switch between them quite quickly. I’m of course visualising a projected 3D space via goggles, where I look around to change workspaces, and the longer I’m focussed in a single space, the further other spaces move away from my direct field of view, while when I flick quickly from space to space the ones I’m moving between will hang around the center of my vision to be switched to.
This I think highlights a very very important general principle, that a workflow must be adaptive. You must be able to deal with each task in a way that is most appropriate, and the system must adjust to what you’re doing at the time, removing extraneous things where possible without hiding things that should be at the fingertips.
When I work with papers on my desk, they’re either in two states. An entire document or set of documents spread out so I can see all parts without moving things, or stacked up into a single pile, only the relevant pages, which I can flick back and forth as needed. I daresay these are relevant models for my workspaces. As I focus on a workspace, it expands across my field of vision, giving me more room to array objects in a manner most pleasing. My most extreme behaviour in this way is when I need to think big, and drag a whiteboard out. What I do on a whiteboard could easily be done on an A4 sheet of paper. The point is that I can fill my field of vision with it, and that focusses me marvelously. Also the whole standing up thing gets the blood pumping. ^_^
I guess I also expect a keyboard at my fingertips. I mean, I was prolly the only 8-year old in my primary school to ask to submit printed assignments rather than handwritten. I never did earn my pen-license, so it’s not all good news. ^_^
Rather than have my fingers leave the keyboard, I guess within a workspace I’d like where I’m looking to be the target window for windowing operations, but keyboard focus to remain until I press the keyboard-to-current-window key. There’d also be a bring-window-to-top key and a push-window-to-bottom key. Those three windowing operations are sufficient on the keyboard, and support the various modes I work in, where I’m either just typing into a box, typing into a box based on something in a different box (which I’d obviously be looking at) or in fact flicking my eyes all over the place as I type stuff into a box I might not even be able to see.
Thank goodness for touchtyping lessons from a typewriter-era guide. I suspect modern keyboardists (ie. anyone younger than me) who learnt to type from computer-based tutor programs has probably missed out on the practice in typing without visual feedback. Although most commonly hit when transcribing a document from the document holder that was once a prominant attachment to any respectable secretary’s monitor, it’s also useful (with the right window focus model) when you only need to type with 95% accuracy but need the maximum possible viewable area for whatever is causing you to type.
Anyway, I’d also expect to be able to manipulate documents in the workspace spatially with my finger or fingers. Moving, flipping pages, expanding and contracting, etc. Generally, I’d lay out my workspace, and then return to the keyboard. So full functionality for zooming, pageupping and pagedowning is probably also important for windowing operations. So that makes six.
By zooming I mean full-screening (or full field of viewing). Visualising to the exlusion of all else. See the bit above about whiteboards. ^_^
Although I’m talking about a 3D sphere or something here, I don’t know yet how depth/distance would fit in. Although I stack things now, that’s mainly due to a lack of space (or a tendancy for things to fall off my desk). I guess I would have to try it, or at least think about it some more.
So how is this relevant to now? Well, frankly, a lot of what I’m looking for is available via wmii. I’m on the wmii-2 release, and I use it in Maximised mode (which is not the author’s recommendation by a long shot) mainly because I’m too lazy to poke around harder. The default mode (tiled) is actually quite clever, but I deal with too many apps that don’t handle resizing too well (xterm, specificially. It doesn’t unwrap text when the text area grows, but does when the area shrinks. Or at least that’s the default, maybe I can change that.) I can switch windows and spaces with the keyboard quite quickly, to the point where I don’t mind that I can’t see a list of open windows, I just go switch-switch-switch until I get the one I want.
Many people would find my workflow suboptimal. Many people would be able to point out ways _I_ could work more efficiently. But I like my workflow, and it does work for me. Until I can put on a pair of augmented glasses and be projected into a virtual world of my own imagination, there’s always going to be something that could be done better.
As always, I’m open to suggetsions but reserve the right to initially reject them obstiantly without good reason. I will come ’round eventually. Heck, I even eventually conceded that there are times when handwriting is better than a laptop. It did take over 10 years, but I couldn’t even begin to imagine trying to take lecture notes on a laptop. ^_^
As far as user-friendliness goes, I’m fond of telling people that computers won’t be user-friendly until they are as easy as toasters. On more careful consideration, that’s not true. Toasters are not user-friendly. If you do it wrong, your toast burns. Look away or do anything more catastrophic, burning toast sets off the fire sprinkler. Combine burning toast with another accident involving a kitchen paper roll falling over, and your kitchen’s on fire. That’s not user-friendly. It’s downright user-dangerous. But the point is that it’s a simple device, that does one thing (apply heat to bread) and only a few knobs to adjust (how long to do so, and a button if you want it sooner).
Can computers be like toasters? Sure. They used to be just as dangerous, but with hundreds of vacuum tubes to twiddle and adjust. OK, can they be simple like toasters. Single-tasked and low-button-count? Sure. Of course, you have to balance that computers are very versatile. They have to be able to do multiple single-tasks (that sounds familiar… ^_^), or there’s a whole lot of wasted silicon going on. Sure, you can get some efficiencies by moving away from the desktop PC model to having a site-based computing cluster, providing CPU and memory resources to whichever thin terminal (which may be running on a desktop PC, but which may not have all of that PC’s resources dedicated to it at that moment) is being used. Network-transparent filesystems, operating systems and the like let us do this sort of thing without a lot of bother.
Then it comes down to the applications. It’s widely held folklore that the overwhelming majority of computer users only use a tiny minority of the functionality in a program. And not only that, the ones I’ve watched generally don’t multitask. When Quickbooks is open, the computer’s a bookkeeping thing. When it’s not a bookkeeping thing, Quickbooks is closed or iconised. You don’t end up with half a screen of Quickbooks, and half a screen of MS Word with letters to customers describing new products. Well, you might. I don’t and the users I’ve watched don’t either. And if you _do_ do it, I bet you do it because you think you’re being more efficient. I doubt you actually are more efficient, but only a stopwatch and a professor of efficiencology would know for sure. And two professors of efficincology would mean we’d never know for sure. ^_^
So try it for a day. Run everything full-screened. If you’re a Microsoft Windows user, hold down Alt and hit tab repeatedly to change between programs. You’ll save a _lot_ of time running for the mouse. On the other hand, it’s not optimal. Because you do often work in multiple documents. As I mentioned above, I often type into a different place than I’m reading. Everyone does. Well, authors of fiction maybe not so much, but try writing a budget report looking only at the program you’re typing it into, rather than looking at the actual budget you’re reporting on.
So we come back to workspaces. X11 window managers generally implement workspaces. Apple finally got on board with expose in Mac OS X. nVidia windows drivers provide the same thing on Microsoft Windows. I imagine ATI’s drivers do too. But having them isn’t enough, you have to be able to use them efficiently. Remember, they must be sensible for operation that’s staying long periods in a single window. So hitting the edge of the screen with your mouse is too sensitive a reason to change workspaces. Much time has been spent demonstrating that people’s mouse cursors hit the edges of the screen more often than just coming close to the edge. On the other hand, unless you’ve an excellent recall, or like to go hunting through spaces, or just _always_ lay things out the same way (I’m one of these ones), you need some kind of visual representation of what’s in what page, so you can go to it efficiently. One of the neatest pagers I’ve read about is the Live Updating Workspace Switcher from Luminocity (Video of it in action here) which takes advantage of modern graphic card features to provide a little, real-time view of your entire work area, so you know where you are, and where the task you’re about to switch to is. It also means you could leave a task processing something, and be able to see visually when it’s done. Seriously, this is _good_. Granted, in my job I do a few tasks (compiling, downloading) where I’d like to see them complete without having them clutter up my current display, but surely there’s other things people’d like this sort of feature for? Of course, in my 3D worksphere, it’s unneccessary. I can just look over and see what my apps are doing, without having to do things like reach for the mouse, stop typing and start meta-keying, or whatever else. It’d become like checking your blind spot when driving. Sure, your eyes are off the road for a moment, but you don’t automatically slam on the brakes when you do it.
Yes, some people slam on the brakes when they headcheck. Seriously, I barely got my driver’s license, how can I not be the worst driver on the road?
Maybe driving a car is a better metaphor for computing than making toast? It’s not great, still, so I’ll keep looking for the perfect metaphor for how computers _should_ be able to be used.
For the mentioned customer, and anyone else who feels that computers are running our lives, you’re probably right. _I_ expect that, that’s what I do, it’s both my job and my passion.
To put it in perspective, I wouldn’t feel it was right to have to help bump-start an aeroplane any time I flew anywhere, but many people accept similarly onerous demands from their computers. Somewhere along the line, instead of enslaving our machines, we became slaves of the computers.
Would you believe all this came from me visiting a quotes website, and seeing the search-by-author box, decided Oscar Wilde was a good candiate… I nearly put Groucho Marx in instead, in which case this post would have been rather different, I expect. ^_^
You might notice the complete lack of speech discussion here. This might seem weird from me as a linguist. But a computer you can instruct in natural human language is (a) a long way off, further than my projected worksphere I think… It’s a hard hard challenge, and has nothing to do with user interfaces or user friendliness, or even workflows, but instead obsoletes an enormous part of that; and (b) a robot, of the Asimov mold. (The books, not the dang movie.) Seriously, once you have a computer you can converse with and instruct in a meaningful way, articulating some joints onto it and hooking up some blinking lights for eyes is relatively trivial. Although that might just be because the only robotocists I know happen to be grade-A geniuses. ^_^
(Edit: “Time flies like an arrow. Fruit flies like a banana.” turns out to be attributed to Groucho Marx. Wow. ^_^)