Reimagining the PC, Part 2: The Gooey Filling

A lot of the current research and development work on computer usability focuses on software: making it more intuitive, more contextually aware, and more powerful. I contend that this work should be secondary to making hardware support usability. The best-designed piece of software in the world is useless if the hardware it’s running on isn’t designed to keep it usable.

What does this mean? It means that hardware should be designed so that the user can totally ignore it and spend all their time thinking about their goals. The computer is a tool, and just like any tool, it works best when the user barely has to think about it. A hammer acts as an extension to a person’s natural arm motions; they hardly ever worry about the hammer itself, but rather about the nail they’re trying to hit.

Unfortunately, current computer hardware requires the user to think about it fairly often. Computers are great when things are running the way we expect them to, but as soon as something goes wrong–a power outage, a drive failure–the problems with the hardware totally overshadow any usability concerns with the software. Unless we solve the hardware usability issues, all the well-designed software in the world won’t make our lives truly easier.

Points of failure

I have identified six points of failure–that is, areas where current hardware falls short and can be drastically improved, thus making the hardware more usable and better able to support the user’s goals.

Power failure

If you’re using a traditional desktop computer system and you don’t have it plugged into a UPS, as soon as the power blinks or goes out entirely, say goodbye to whatever you’re working on. Software usability doesn’t matter one bit if you can lose your data and potentially corrupt your system in an instant when the power goes out. If computer power supply units included a strong surge suppressor and incorporated a small battery pack, data corruption could be stemmed and unexpected hard shutdowns could be avoided. The battery pack doesn’t need to be very powerful–just enough power to provide time for a clean save-and-shutdown is really necessary. Personally, I replaced our desktop systems with laptops a year ago and haven’t looked back since. Even in our current house in rural New Hampshire, where the power blinks every few days, we have no problems.

Power consumption

As power costs continue to rise and worries about global climate change become more widespread, concerns about power usage in the home are growing. All computers should be designed to be as frugal with power as possible. This means designing parts that put themselves in a low-power sleep mode when not needed and not including high-level power-hungry components like cutting-edge video cards on systems that don’t need them.

Additionally, it may be wise to investigate technologies to allow the system to generate its own power. Paneling exposed surfaces with solar panels may be prohibitively expensive now, but might not be in the future. Adding kinetic power generators to all keyboard keys (as detailed in this New York Times article and this patent) would convert the energy of the user’s keypresses into power for the system. Even if this only generates a few watts per day, Forrester Research estimates there will be 1.3 billion computers in use worldwide by 2010. That’s a lot of power saved.

Natural failure

Despite our best efforts, we just can’t seem to make computer parts that are infinitely stable and last forever. Surprise, surprise. At some point, anyone who uses a computer regularly has undoubtedly encountered some sort of hardware failure, whether it’s corrupted RAM, a dead hard disk, or a video card on the fritz. While companies will undoubtedly do their best to eliminate these problems, they’ll never completely go away. So what can we do to alleviate the problems?

Well, think about the concept of a RAID. The idea is that by using multiple hard disks, if one of them fails, your data is still safe, and your computer doesn’t totally flip out. Why not apply this concept to other areas of hardware? I propose the development of a hardware architecture that allows any system to have at least two of each type of major hardware subsystem: two video cards, two sets of RAM, two CPUs, etc. Included in this architecture should be the capacity for a smooth failover, i.e. as soon as a component fails, the system switches to the secondary component. While this isn’t entirely practical for some parts–you can’t really have a secondary motherboard, for instance–for many common points of failure it could, potentially, alleviate the problem.

Hardware RAID should also be a standard feature in every system. Any computer built should have at least two hard drives, one a straightforward backup of the other. Drive failure will become less and less catastrophic as more and more of our productive work moves online, but hard drives won’t ever really go away.

Diagnostics

Right now, computers are largely non-self-aware. When something goes wrong, the system continues blithely on, generally unable to even detect that something’s not right, much less figure out what it is. My theoretical new architecture must include, along with smooth failover to redundant hardware components, a thorough diagnostics and reporting system that can detect a problem, figure out what the problem is and how to fix it. hardware testing modules should be abundant and take cues from the software; checks can be triggered if there is a sudden unexplained change in the computer’s usage or memory load, or if a particular instruction or procedure fails unexpectedly.

Beyond merely detecting and identifying problems, the system should have a basic idea of how they can be fixed. If a hardware component fails, after the failover occurs the user should be alerted, and the specific details of the hardware that needs to be replaced should be noted. Ideally, the data provided should be enough that the user could simply print out the notification, take it to their local Best Buy, and walk out in five minutes with a compatible replacement part. Software could even detect these alerts and allow the user to automatically order replacements to be shipped to them. For less tech-savvy users, the computer could be set up to immediately notify a local computer repair center of the user’s needs, and the center could then call the user to schedule a time for the repair to take place.

Startup speed

Computers are starting more and more quickly, but it’s still a few minutes between turning on your system and actually being able to use it. Windows Vista has made some strides in the right direction here with their ReadyDrive technology: placing commonly-used but infrequently-changed core system files on a high-speed Flash NAND memory chip so that they can be read and executed more quickly. I’d propose taking this a step further, however, and connecting the NAND chip directly to the motherboard instead of on the SATA bus. Much like other parts, this NAND chip should have at least one redundant backup–here it’s even more important, since NAND chips are proven to have a finite lifespan, and failure is assured after some number of read/write cycles.

Security

As we become more and more connected in our daily lives, security in turn grows in importance in our lives. Today’s computers are largely insecure; even if a hacker can’t get in via typical attack routes, the various LEDs and electromagnetic radiations from the system are highly vulnerable to forms of Van Eck phreaking. I propose using shielded cables and components wherever possible, making sure that LEDs don’t flicker in ways that expose data (see this paper on “Optical TEMPEST” (PDF link), and scrambling video signals. While this all may sound paranoid, the countermeasures would be fairly simple to put in place and would help protect users against some possible attack routes. Even if scammers and identity thieves can be foiled in their remote work, that doesn’t mean they wouldn’t adopt local attack methods eventually as well.

Many laptops are already incorporating fingerprint scanners into their security systems. I think these should become standard, and a fingerprint scan should be requested anytime a sensitive operation is being performed or personal data is exposed.

Other hardware optimizations

When you open up a computer case, you’re presented with a bewildering tangle of cables and cords, all stretching this way and that, and parts plugged into each other willy-nilly. Even if your system has told you it needs its video card replaced, unless you’re already pretty savvy, it’s not easy to tell what the video card is. I suggest creating a standardized color-coding system, so that different standard computer parts use different colored plastic mounts. Instead of trying to slide a skinny circuit board into a narrow slot, why not design it to fit together more like a Lego brick, with an easily-accessible lock-lever to make sure it’s in place? And if a particular part needs a particular cable, the cable should also be color-coded to match the part. In addition to colors, all parts should have their role printed on them in large block letters (VIDEO, AUDIO, MEMORY, etc.), as well as a standardized symbol representing the role.

All cables should be rounded. Ribbon cables are incredibly difficult to work with. Additionally, the internal layout of a computer should be standardized to decrease cable-tangles: if we position the SATA connectors on the motherboard as close as possible to where the hard drives will go, we don’t need to worry about whether the cables will reach.

The end result

If all of these suggestions can be fully and robustly implemented, the resulting computer system will address all of the above issues. When the system is powered on, the time between the user pressing the power button and being able to use their software will be minimal, like turning on any appliance. If the power is cut, the system will continue running from its battery as long as possible, and then shut down cleanly. Battery life will be increased, and energy bills reduced, by using low-power components that incorporate energy-saving logic. The system itself will deny access to malicious hackers from a hardware standpoint, providing as much security as it can. If a part fails, the entire system won’t become unpredictable or useless; instead, it will smoothly recover by switching to its standby part. The system will notice the failure, explain it to the user, and suggest a course of action to remedy it. If the user needs to open the computer up to implement a suggested remedy, the physical hardware of the computer will be easy to understand and work with. This is stable, usable, simple hardware.

In the next entry, I’ll discuss how the computer’s hardware interface–that is, the parts that the user sees, touches, and interacts with–can be improved to support my usability goals.

(This post is the second part of my five-part post series “Reimagining the PC.” You might like to start back at the beginning.)

One Response to “Reimagining the PC, Part 2: The Gooey Filling”

  1. ryan.freebern.org » Blog Archive » Reimagining the PC, Part 1: What’s All This, Then? Says:

    [...] « Tune in tomorrow… Reimagining the PC, Part 2: The Gooey Filling [...]

Leave a Reply