Beyond Dvorak via Genetic Algorithm
ColonelPanic writes: "I switched my computer keyboard to the
Dvorak layout
about a year ago. But now I've gone and done
something really outlandish. I tried to discover the most efficient layout possible with a genetic
algorithm. It's weird-looking, but I am typing
with it now. I put the
gory details up on the Web."
http://www.visi.com/~pmk/evolved.tar.gz
That web page has some messed up links going to it's own filesystem:
The code: http://www.visi.com/~pmk/evolved.tar.gz
:)
pdf: http://www.visi.com/~pmk/evolved.pdf
the experiment run: http://www.visi.com/~pmk/evolved.output
strangely the keyboard map is correct...
It is a good thing to remember that genetic algorithms are not garanteed to converge (generate the best layout). Also, the author doesn't seem to make the best layouts reproduce; it seems to me that this is one of the key features of genetic algorithms, so he may be missing some good layouts out there.
For those interested in genetic programming, OpenBeagle, a very good genetic programming program is available at http://www.gel.ulaval.ca/~beagle/ It's made in C++ and it's LGPLed.
IBM did this in 2k1 for PalmOS PDA's, and called it ATOMIK (Alphabetically Tuned and Optimized Mobile Interface Keyboard). It's from our Alphaworks, and is designed so that it has:
e yboard.htm and scroll down for a list of very good research papers.
1. Higher movement efficiency than any other existing touch keyboard.
2. Alphabetically-tuned layout: Generally, letters from A to Z run from the upper left corner to the lower right corner of the keyboard. This layout helps novice users find letters that are not yet memorized.
3. Letter connectivity of common words: Many common words or comment fragments of words, such as "the" and "ing" are totally connected.
You might want to take a look at http://www.almaden.ibm.com/u/zhai/topics/virtualk
Michael C. Hollinger
It could be done pretty easily with a small hardware mod, which could be installed inside the keyboard. For example, a microcontroller like the PIC or 68HC11 could be connected to the keyboard cable output, to read it and translate each value, and send the desired value on to the PC. This would mainly be a programming project, it doesn't require much electronics knowledge since the circuits are very simple and can be copied from similar devices. Here's some info about keyboard interfacing - there's plenty more if you search.
The link to the code on the provided web page is broken.
The proper address to the location of the tar.gz file is:
http://www.visi.com/~pmk/evolved.tar.gz
--R
The current QWERTY keyboard design came about in the early 20th century, because typewriters which had efficent keyboard layouts were jamming, and there was no anti-jamming mechanism except to slow the typist down. However, once there was an anti-jamming mechanism, the amount of money lost from the industry created to basically teach people how to type quickly was so ingrained that nobody wanted to get rid of it, even though they could get to a better alternative. Humans are actually capable of going much quicker, but the current QWERTY layout was designed for intentional inefficency.
Qwerty wasn't designed to slow people down... that's a myth.
Research on keyboard stuff found here:
http://web.mit.edu/jcb/www/Dvorak/
http://www.independent.org/tii/news/liebowitz_econ omist.html
Liebowitz's article does not debunk anything. It merely gives evidence that some studies were flawed, puts forward its own flawed and ambiguous studies, and entirely ignores the compelling non-empirical arguments for Dvorak's superiority. (Do you not believe anything that has not been established by studies?) Let's not even mention the fact that Liebowitz has a strong prejudice about market efficiency to support (oops, mentioned it!).
Marcus Brooks has a longer rebuttal. I actually do not find it totally satisfactory either, but it should certainly make clear that Liebowitz has little credibility.
The evaluation of an action as 'practical' . . . depends on what it is that one wishes to practice.
The algorithm in the article is actually a cousin of GAs called an evolutionary algorithm. Typically, GAs have crossover (sex) where genetic material from multiple parents is combined. This would be easy to do with the keyboard layout problem, and would probably produce better results.
Often, EAs work better with smaller populations (~100-500) and GAs work better for larger populations, but that's more anecdotal than rigorously shown.
Buy a Dvortyboard. It's about 90 dollars, but can switch from QWERTY to Dvorak with a button; it changes the mapping of the keys so the computer still thinks it's using QWERTY even if you're using Dvorak. The good thing about it is that if you're playing a game that uses a certain arrangement of keys for actions (eg. vi keys in Nethack or xconq) you can switch back to QWERTY.
In a way. Qwerty was designed to keep mechanical typewriters from jamming, which meant physically separating the keys for common digraphs. This requirement is somewhat incompatible with the requirement that common digraphs be quickly typeable, hence some slowndown.
If Sholes and Densmore had just had computers to run evolutionary algorithms on, they presumably could have designed a better layout for mechanical typewriters... :-)
This idea was invented by Shampoo.