E-Scribe : a programmer’s blog

About Me

PBX I'm Paul Bissex. I build web applications using open source software, especially Django. Started my career doing graphic design for newspapers and magazines in the '90s. Then wrote tech commentary and reviews for Wired, Salon, Chicago Tribune, and others you never heard of. Then I built operations software at a photography school. Then I helped big media serve 40 million pages a day. Then I worked on a translation services API doing millions of dollars of business. Now I'm building the core platform of a global startup accelerator. Feel free to email me.


I co-wrote "Python Web Development with Django". It was the first book to cover the long-awaited Django 1.0. Published by Addison-Wesley and still in print!


Built using Django, served with gunicorn and nginx. The database is SQLite. Hosted on a FreeBSD VPS at Johncompanies.com. Comment-spam protection by Akismet.


Pile o'Tags

Stuff I Use

Bitbucket, Debian Linux, Django, Emacs, FreeBSD, Git, jQuery, LaunchBar, macOS, Markdown, Mercurial, Python, S3, SQLite, Sublime Text, xmonad

Spam Report

At least 236562 pieces of comment spam killed since 2008, mostly via Akismet.

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.")

Wednesday, December 7th, 2005
+ + +

Comments are closed for this post. But I welcome questions/comments via email or Twitter.