Programming

Saturday, September 29, 2007

New user interface rule

Every action on a user interface shall result in a response from the computer in less than 0.25 seconds.

If the operation would take longer than 0.25 seconds to complete, the computer shall clearly indicate that it is processing, and not block the user from performing other tasks while the initial input is being processed.

This shall be guaranteed, no matter how busy the computer is, no matter if DNS or some other network service hasn't responded, no matter how much the disk drive is being thrashed, how little memory is available, whether you are compiling, or some other USB peripheral has decided to take a while to spin up a disk or generally hang.

The reason is because my biggest bug bear is devices not responding. The worst kind of hang is on a slow network. It drives me absolutely nuts that developers can't anticipate that maybe, just maybe, DNS or something else might get knocked out for a few minutes.

Saturday, September 22, 2007

A new filing system

I was recently reorganising some files, and getting quite annoyed with how difficult even simple filing system tasks are. It occurs to me that the current filing systems are really badly designed from a user's perspective. For example
  • Knowing where stuff is is a nightmare
  • Disks get full
  • Data is always on the wrong disk, never where you need it
  • You copy to move it about. The two copies get out of sync.
  • It's not backed up
  • It's not securely stored
  • You need to delete junk occasionally
  • Data get duplicated, sometimes a lot.
Of course there are point solutions to all of these problems, but none I could really explain to my mother. The problem is that files are still presented to the user as they are stored on disk, not how the user uses them.

I think every data (or file, if you must) should have a URL, e.g. my photos would have a URL

file://calumgrant/photos/namibia-2007

Each file, or possibly each folder needs a simple policy, including
  • Lifetime: e.g. 1 week, 1 month, 1 year, permanent
  • Confidentiality: e.g. me only, work, friends and family etc
  • Portability: This machine only, This network, internet, mobile device(s)
If I plug a new hard disk into my computer, I want it to be used automatically. I just want to specify whether it's a permanent hard disk or one I take away (and where). If I specify data as portable, I want the data synced to the right places automatically. If I decide to remove a hard disk, I want the data to be moved off it automatically. If I mark stuff as permanent, I want it backed up silently and automatically, perhaps to an ISP or a backup drive. I want revision control so I (or a virus) cannot trash my data.

I think we may be entering a new age of usability. I really hope that users start getting a better deal soon. Computers should be much more geared towards the way users use data, not how it works underneath.