Bringing the Server Home

Saturday, June 23, 2007
send this post to a friend
The web is faster than the applications installed on my local computer. It takes Excel 15 seconds just to open a blank spreadsheet. Yet I can bring up a blank Google spreadsheet in less than a second. Windows Search takes minutes just to search a subfolder on my hard disk, yet Google can search billions of pages in milliseconds. (Google Desktop search has helped to close that gap, thankfully.) I get more done, faster, through web apps than through local apps. They just work faster.

And that's a shame, because here at my fingertips I have $2000 worth of Dell XPS laptop goodness. I have a dual-core CPU, a few gigs of RAM, and a hard disk dedicated to serving me. Yet they serve me worse than sites thousands of miles away who see me as one anonymous visitor among millions. I'm beginning to wonder why I bother spending money on applications and nifty hardware when Firefox and a cheap computer would serve most of my needs.

It seems there's a lost opportunity here for those who make personal computers and software. They've dropped the ball, and Web 2.0 services have recovered it—now they're sprinting for a touchdown. But I don't think it's too late for personal computers to be more than windows to the web. Personal computers are, after all, personal. They are typically dedicated to a single user or a small set of users. They are local—that must be worth something in terms of speed, efficiency, and user-knowledge. Why do they work more slowly than the web?

The hard disk has a lot to do with it. When I ask my computer to open a spreadsheet, it runs a tangled obstacle course of file accesses to give me what I want. It has to find the spreadsheet file, open it, figure out it's a spreadsheet file, and decide what application is meant to open that kind of file. It then has to find the application executable file, open it, find out what other data files and DLLs the file relies on, and open them. It has to create new processes and windows, allocate new memory, load and process bitmaps for buttons and so forth—it has a lot to do.

Every one of these file seeks and accesses takes time. Computer CPUs and RAM have gotten very fast, but hard disks still run on geologic time. So every time I ask my computer to do something new—something that involves new files and applications—I enter the microcomputer equivalent of the long dark night of the soul.

What I've just described is actually the worst-case situation. If Windows has no idea I'm about to open a spreadsheet program, then it has to go through all this file-opening rigamorole. More recent versions of Windows avoid some of the slowness by caching the programs and files that I use frequently. If I open Excel, use it for a while, then close it again, Windows doesn't fully close it, but keeps it near at hand in case I ask for it again. After I've used a program once, I can usually open it much faster the second and third times.

Still, it's rarely fast enough. It may take 5 seconds rather than 15 to open Excel, but 1 second to click a link to an online spreadsheet and open it. How in the world are internet servers still faster than my computer?

Specialization is the keyword here. When I ask Google Docs to give me a new spreadsheet, it says, "You know, it's funny you should ask because I was just thinking about that. I was just thinking about spreadsheets and how I might best serve you with one. Here you go." Google Docs spends all its time thinking about how to give me a spreadsheet, so when I ask, it's ready.

When I ask my computer to give me a new spreadsheet, it says, "Huh? Tetris? What? Oh, you're changing the subject. Wait, what did you say? Spreadsheet? I can't remember what that is... Oh! Yeah, I can give you one of those. I've got one lying around here someplace, somewhere under this pile of documents and applications. Give me a sec'..." My computer is a generalist, not a specialist. It can do for me anything that a computer can do—play a game, write a document, edit pictures, crunch numbers—and that's a useful quality. I tell my computer where to go, it goes there. But not instantly. It has to pack for the journey.

A web site, on the other hand, cannot do anything or go anywhere. A web site, typically, is dedicated to doing one thing, doing it well, doing it en masse, and doing it—hopefully—fast. Lulu makes books. Blogger manages blogs. YouTube serves video. Each of them performs its specialization competitively with other specialists, and that competition quickly makes them skillful, useful, and quick.

If switching between websites took a long time, the web would be much like my computer. I would work on a spreadsheet for a while, then wait while switching to a gaming site. The web is not like that. In fact, with tabbed browsing I can switch instantly between totally distinct specializations. I can go from blogging to reading an article to playing a game in less than a second. Through the web I get the specialization of individual sites coupled with the diversity of the mass of all sites. Even the personal computer's trump card—generality—is outdone by the web.

Personal computer applications do provide some advantages over the web. They can keep working despite network outages. All things remaining equal (like, in the absence of trojans), they offer greater privacy and security. And after all, there is this vast, untapped "X" factor: a personal computer should be able to know its user better than anyone. It can learn which words he tends to misspell and fix them automatically (or coach him, if he asks for it). It can know he tends to log on at 9 AM and browse the news. It can be ready for him to play Counter-Strike next Friday night, just as he usually does. Web sites personalize their services to a certain extent, but that's not their natural advantage. Personal computers should work harder to understand their users and anticipate their needs, because that is their natural advantage. They can dedicate gigabytes and whole CPUs to the problem; websites cannot.

Still, no matter how much my computer studies me and attempts to cater to my every whim (which, by the way, it will never be all that good at, because people are complex, unpredictable, and hard to understand—even by other people, much less a computer), if it can't open a spreadsheet quickly, it is going to lose to the web.

Here's a proposed solution. Why not make personal computers more like the web? If dedicated servers are so effective at serving files and applications quickly, why not make each personal computer like a collection of servers?

Instead of having one large, fast hard disk, put several smaller, perhaps slower ones into each personal computer. Likewise, include multiple, separate banks of RAM, separate buses, and separate cores. (To a certain extent, hardware is already going this direction.) Now, for each commonly-used application, have the OS dedicate a single HD/RAM/CPU sub-computer to that application. In effect, set up a server inside the computer specifically for serving Excel, for instance. Now when I ask to open a spreadsheet, the Excel sub-computer says, "Right away, sir! In fact we've already cached the last forty spreadsheets you opened, the three spreadsheets that arrived in the mail this morning, two new spreadsheets we downloaded from your favorite websites, and all your favorite templates in case you're thinking of making a new spreadsheet." Excel would own a sub-computer, Word another, Counter-Strike another, Firefox another. All the applications you use the most would operate continuously on their own local servers, anticipating your needs, ready to spring to your aid the moment you ask them, positively slavering to pander to your every whim.

What about applications you use less often? Well, they can share sub-computers easily enough. Indeed, the OS can analyze which programs you tend to use together as opposed to those you tend to use separately, and group separate programs onto common sub-computers since they're less likely to be requested simultaneously.

Maybe hardware and OS producers are already planning something like this. I sure hope so. I use tabbed browsing for so much of my work now that I'm thinking of remapping Alt-Tab to toggle between browser tabs instead of applications.

Labels:


Comments

Great.. just great. I'd noticed that google spreadsheets was faster than excel, and I know that the harddrive is the main bottleneck.. but I never put it all together and you have some very valid key point. Kudos!
 
"I use tabbed browsing for so much of my work now that I'm thinking of remapping Alt-Tab to toggle between browser tabs instead of applications."

FYI, You can toggle between Firefox tabs with Ctrl+Tab. Almost as easy as the tried-and-true Alt+Tab.
 




<< Home
©Copyright 2002–2007 Jeff Wofford