Evolving a new keyboard
This is amateur science at its best. Peter Klausler, an aficionado of the Dvorak keyboard layout, decided to see if there were better permutations of keys yet unrealized:
…I constructed a complicated function that measures the amount of “work” needed to touch-type a given text with a given layout.
Very good. But where does the primordial soup of keyboard layouts come from?
…4096 keyboard layouts compete with each other. The layouts in the initial pool are entirely random. In each generation, they all race to “type” a word list, and their per-word times are multiplied by the word frequencies in the input sample. After the race, the fastest half are kept. The pool is then repopulated by generating a single mutation for each survivor.
He ran the simulation, which yielded a victorious layout – which he then spent a couple days testing. It wasn’t so great.
…Too many words required complicated patterns using the fingers of the right hand. The word bottom convinced me that Dvorak was on to something when he designed a keyboard that maximized alternation between the hands.
So he revamped his algorithm accordingly, ran the experiment again, got another layout, and tried that one too. He comments that the new layout:
…looks way more usable to me. But (perhaps not surprisingly), it sure looks a lot like Dvorak, too, and is not quantifiably all that much better, and that advantage is probably less than the level of error in my work estimation function.
So, to improve the whole setup, starting with better data for his evaluation code, he writes a statistical keystroke logger:
I’m tracking each single letter, digraph, and trigraph with timing data and error rates. This will let me construct a map of the keyboard that has a real empirical cost for movement between most keys. Of course, it may well be biased by my use of the Dvorak layout; I have found some QWERTY users willing to collect similar tracking data.
And that’s where it ends, for now. Will Klausler return to Dvorak? Or will we all be using the scientifically proven, genetically engineered “KUYPWLMFC” layout in ten years?
(If all this makes you feel like a bit of an underachiever, don’t look at his resume, which includes little tidbits like “invented technique of incremental global register coloring of SSA code interleaved with instruction scheduling” and “ported the Linux 2.6 kernel to the Cray X1 architecture.”)