Home | Shorter Path | About Me
Home
About Me
RSS Feed

Planners (you know you want it)

Archive

2004

01

02

03

04

05

06

07

08

09

10

11

12

 

2005

01

02

03

04

05

06

07

08

09

10

11

12

 

2006

01

02

03

04

05

06

07

08

09

10

11

12


Blogroll
 
Borland
Allen Bauer
Anders Ohlsson
Chris Bensen
Malcolm Groves
Michael Swindell
Steve Trefethen
Borland Blogs
TeamB
TeamB Blog Server
Nick Hodges
Other
Algorithms for the Masses
Brad Abrams
Chris Brumme
Chris Pratley
Dan Miser
Don Box
Falafel Flogs
iunknown.com
Joel on Software
Matt Pietrek
Suzanne Cook
The Daily WTF
The New Old Thing
Wintellog

Waiting for Computers

Saturday, April 03, 2004 11:03 AM

I spend a great deal of my life waiting for computers. You probably do, too.

In fact, considering Moore's law, it's pretty amazing that we spend so much time waiting for the computer to finish a task, return a result, or sometimes even respond.

I'm not talking about simple sluggishness, like the fact that scrolling text in a Word document on a 2.0GHz Pentium 4 with 1GB of RAM is still slower than scrolling character mode text on an old x86 machine running DOS. High-resolution graphics, True Type fonts, formatting, GUI - these take their toll. I'm talking about full minutes and hours of waiting, without being able to do anything productive.

I still remember the hype about OS/2's multi-tasking (followed by similar hype about multitasking in other operating systems). "No more coffee breaks waiting for the computer to finish it's task," the tech magazines said - "simply switch to another task." Yeah, right. That one's right up there with "paperless office." The problem is that multi-tasking isn't very useful, because major tasks tend to be serial, rather than parallel.

The most extreme examples of this are installations. Setting up a computer just to be able to perform a single task involves a long chain of installations, which almost always have to be performed serially. I'm in a middle of such a chain as I'm writing this: a customer of mine has ordered a fairly simple custom report to be integrated with their main application, running on a Windows server and connected to an Oracle 8i database. So, before I could start working on the report, I had to setup a new VMware virtual machine, install Windows (including service packs and patches), Oracle, Crystal Reports (and application server), and the application itself (I started typing the actual steps I had to take, but gave up at 25). This takes about 10-12 hours. I'm not even counting the time I had to spend fighting with Oracle, which has one of the least-friendly installations in computer history, and keeps helping me by converting all characters in the database to question marks.

Now, although certain parts of the process can go on unattended, most steps require some user participation. The various setups pop up a dialog box every five minutes or so, and you have to answer that. They may require restarting the computer before moving on to the next step. Some components (mostly Oracle's) require a bit of registry and configuration file tweaking before they can do what they're supposed to do out of the box. And almost every component depends on previous components being installed, so you have to wait until each step is complete before moving on to the next step. Multi-tasking, it seems, doesn't help here at all.

But, you might say, installations aren't a typical end-user operation. Most users write documents, send e-mail, balance their checkbook, or spend an awful lot of time on the Internet looking for Britney Spears, naked people, or both. And you'd be right, too. The problem here is that most of these tasks can't be performed concurrently either. This isn't a technical issue - it's just the way the human brain works. Writing (technical, code, prose), for example, requires concentration. You can't just switch between tasks if even one of them requires your full attention. It's the same "flow" problem Peopleware takes so seriously.

There's very little we can do about the human factor, but there's a lot we can do about the responsiveness and performance of our programs. One of the things I like about .NET is how easy it is to install software. Since almost everything a software package needs can simply be copied to the target directory, deployment is not only easy, but quick. For example, it took me about 2 minutes to install Delphi 8. Of course, you have to install the framework itself (and, in Delphi's case, the SDK), but that's also fairly painless and would become even easier in the future - the framework is already included in Windows Server 2003, and comes preinstalled on some new machines.

I'm not saying it's easy - performance requires a lot of work. Writing quick installation programs that can also handle the infinite number of software and hardware combinations is extremely difficult, and the benefits are not always obvious, but most people expect computers to save time rather than waste it.

Anyway, I'm off to get another cup of coffee.

|

Copyright 2004 Yorai Aminov