Image of the glider from the Game of Life by John Conway
Skip to content

{ dvorak“” } Search Results

Why Dvorak? Comfort

One of the big advantages of typing in the Dvorak layout is the comfort that comes with it. It is estimated that you spend nearly 70% of your time typing on the home row, with only 30% of your time stretching for letters off of the home row. If that's the case, then I should be able to type a great deal of words on the home row itself. Let's see if that's the case. Counting the number of words that I have on my Debian system, I get the following:

aaron@kratos:~$ wc -l /usr/share/dict/words
98569

Out of those 98,569 words, how many can be typed with the home row on QWERTY? I need to search through that file using regular expressions. For that, I have the powerful grep and egrep utilities. I am using the egrep tool, passing -c to keep a count for me, and -i to ignore case sensitivity. Let's take a look:

aaron@kratos:~$ egrep -ci ^[asdfghjkl\;\']+$ /usr/share/dict/words
233

Out of 98-thousand words, I can only type 233 using just the home row on QWERTY?!? That blows! Let's see how that would compare to the Dvorak layout:

aaron@kratos:~$ egrep -ci ^[aoeuidhtns-]+$ /usr/share/dict/words
1968

That's a lot better! Nearly 10x the amount of words are available typing on just the home row using Dvorak than with QWERTY! I can already see how much more enjoyable my typing class in school would have been.

August Dvorak Simplified Typewriter Videos

I saw these really cool videos over at DVZine and I had to share. These two videos (flash required) are promotional motion pictures written and filmed by August Dvorak, inventor of the Dvorak Simpilifed Keyboard. I'm guessing that these two videos were filmed in the 1940's. There is no sound.

For those who still prefer the QWERTY Standard Keyboard layout for their typing should take a look at these two videos. If you're curious about switching to the Dvorak Simplified layout, I would highly recommend it. After typing on the Dvorak Simplified Layout, my speed has increased from about 70 words per minute to over 100 words per minute. Also, my accuracy on typing has increased by about 15%, accourding to gtypist. At any event, I hope you enjoy these two videos from YouTube found here.

Dvorak-QWERTY Irssi Script

In #utah on Freenode, there has been some active discussion lately about Dvorak vs. Qwerty. As such, ibot, a channel bot, has the ability to display text when someone enters a channel. Some of the chatters, including myself, have a join that is "encrypted". Well, not really, per se, but rather, just Dvorak text that was typed using the QWERTY layout. One such join is as follows:

>>> vontrapp
Dr, co yd. Ekrpat jrmcbiZ

Not exactly intuitive as to what is trying to be said. The only way to figure it out, is set your keyboard layout to Dvorak, and type the letters as they would appear on a QWERTY keyboard. Doing so would produce:

>>> vontrapp
How is the Dvorak coming?

As we began discussing in the channel, we thought that it would be great if we could have ibot do the decoding for us. Well, I'm not familiar with blootbot or it's scripting capabilities, so I wrote a script for Irssi that can convert any "Dvorak text" to QWERTY and vice versa. The commands to run are '/dv some text here' and '/qw some text here'. When ran, it just puts the the result in the channel in a single line, as to not flood or annoy the channel. The script does not utilize color, but that could be added easily to help identify the difference between the input and output text.

Here is the code below (no syntax highligting. Sorry). Save it as 'dvoark-qwerty.pl' in your ~/irssi/scripts/ directory, and run "/script load dvorak-qwerty.pl" in Irssi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# dvorak-qwerty.pl
# Aaron Toponce (aaron .toponce@gmail.com)
# Decodes dvorak to qwerty and qwerty to dvorak
#
# qwerty layout (from left to right, top to bottom): _+QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?-=qwertyuiop[]asdfghjkl;'zxcvbnm,./
# dvorak layout  (from left to right, top to bottom): {}\"<>PYFGCRL?+AOEUIDHTNS_:QJKXBMWVZ[]',.pyfgcrl/=aoeuidhtns-;qjkxbmwvz

use Irssi;
use strict;
use vars qw($VERSION %IRSSI);

$VERSION = "0.1";
%IRSSI = (
        authors     =>  "Aaron Toponce",
        contact     =>  "aaron.toponce\@gmail.com",
        name        =>  "dvorak-qwerty",
        decscription    =>  "Decodes dvorak-to-qwerty and reverse",
        license     =>  "GPLv2",
        changed     =>  "$VERSION",
        commands    =>  "dvorak qwerty"
);

sub qwerty2dvorak($)
{
        my ($text) = @_;
        $text =~ y/\_\+QWERTYUIOP\{\}ASDFGHJKL\:\"ZXCVBNM\<\>\?\-\=qwertyuiop\[\]asdfghjkl\;\'zxcvbnm\,\.\//\{\}\"\<\>PYFGCRL\?\+AOEUIDHTNS\_\:QJKXBMWVZ\[\]\'\,\.pyfgcrl\/\=aoeuidhtns\-\;qjkxbmwvz/; # "
        return "'@_' to dvorak: " . $text;
}

sub dvorak2qwerty($)
{
        my ($text) = @_;
        $text =~ y/\{\}\"\<\>PYFGCRL\?\+AOEUIDHTNS\_\:QJKXBMWVZ\[\]\'\,\.pyfgcrl\/\=aoeuidhtns\-\;qjkxbmwvz/\_\+QWERTYUIOP\{\}ASDFGHJKL\:\"ZXCVBNM\<\>\?\-\=qwertyuiop\[\]asdfghjkl\;\'zxcvbnm\,\.\//; # "
        return "'@_' to qwerty: " . $text;
}

sub dvorak_decode(</span><span class=$)
{
my ($server, $target, $text) = @_;
return;
my $witem = $server->window_item_find($target);
return;
$witem->print(dvorak2qwerty($1), MSGLEVEL_CLIENTCRAP);
}

sub cmd_dvorak(" />
$)
{
        my ($arg, $server, $witem) = @_;

        if($witem && ($witem->{type} eq 'CHANNEL' || $witem->{type} eq 'QUERY'))
        {
                $witem->command('MSG ' . $witem->{name} . ' ' . qwerty2dvorak($arg));
        }
        else
        {
                print qwerty2dvorak($arg);
        }
}

sub cmd_qwerty($$$)
{
        my ($arg, $server, $witem) = @_;

        if($witem && ($witem->{type} eq 'CHANNEL' || $witem->{type} eq 'QUERY'))
        {
                $witem->command('MSG ' . $witem->{name} . ' ' . dvorak2qwerty($arg));
        }
        else
        {
                print dvorak2qwerty($arg);
        }
}

Irssi::command_bind('dv',\&cmd_dvorak);
Irssi::command_bind('qw',\&cmd_qwerty);
Irssi::signal_add('message public', sub {dvorak_decode($_[0], $_[4], $_[1]);} );
Irssi::signal_add('message own_public', sub {dvorak_decode($_[0], $_[2], $_[1]);} );
print "%B>>%n " . $IRSSI{name} . " " . $VERSION . " loaded";

Final Dvorak Update

It's been almost a year since I decided to begin learning the Dvorak layout, and just over six months since switching entirely. I thought I would post one last update about my progress and observations on typing with the Dvorak layout.

First, the speed. I am just a tad slower than I was when typing under the QWERTY layout. In QWERTY, I could type around 65-70 WPM on average, with peaks around 90 WPM. Using the Dvorak layout, I sit around 50-55 WPM peaking around 80 WPM. So while I am still no up to par with where I was on QWERTY, the speed is bearable, and really, I don't even notice that it feels slower.

Next, the accuracy. My accuracy has increased about 10% since the switch. On QWERTY, my average accuracy was around 80-82%. On Dvorak, I sit roughly around 88-91%. The funny thing, is I feel that my accuracy has gone down. However, when I sit and look at it, it's not the accuracy of the letters that is bad, but the inability for my brain to process complete logical sentances BEFORE typing. When I sit at a typing tutor or type text that is already before me, my accuracy is around 98%. It's when the words are in my mind that the accuracy slips.

Finally, the comfort. This was the #1 reason why I switched in the first place. I spend my entire day in front of a computer typing away. On QWERTY, I could feel the fatigue of my hands and wrists, and on occasion, pain. Since switching, I no longer feel that fatigue or pain. However, with that said, right after the initial switch, I was typing ~5-10 WPM. It was so slow, that I found myself stiffening my wrists while I typed. It was much more painful. However, I stuck through it, and my wrists have since relaxed, no longer giving me discomfort. Overall, I feel better while typing in Dvorak.

So, those are my observations since switching. Of course, I would be ignorant if I didn't talk about some of the drawbacks to Dvorak since switching. Not everything has been peaches and cream.

The number one problem that I face is when I sit at another computer. The world is using QWERTY. I accept that, although I may not like it. What is frustrating is doing the two-finger peck dance when sitting at that computer. For someone observing me type, this can't look good knowing that I am a computer scientist and programmer. But, after sitting at the keyboard for a few minutes, the QWERTY keys come back, and I can type sub-marginally. Being a Dvorak typist in a QWERTY world is frustrating. Also, when someone sits at my computer, for whatever reason, I have to switch the layout back to QWERTY to accommodate their needs, or type for them. This can be a hassle.

The second problem that I have noticed, is Dvorak favors people who are right-handed. This is intentional. When August Dvorak created the layout, he wanted to favor those who are right-handed as the majority of people use their right hands over their left. However, I have seen some lefties come to the layout, and sense frustration with the layout preferring the right hand. I am not a leftie, so I can't empathize, but apparently, left-handed users experience some frustration.

A note about switching to Dvorak: it really isn't that difficult. If you play more than one music instrument, then you are probably familiar with learning a new staff, notes, rules, etc. that come with learning that instrument. However, it probably came fairly easily to learn. The same rules apply with Dvorak. Think of it as learning a new instrument. It takes a little time, and brain power, but once you sit down, and get into "Dvorak mode", it really comes easy. As with learning a new instrument though, the key is practice, practice, practice. I would say, that if you practiced 30 minutes a day for 2 - 3 weeks, you could be at a decent typing sped where you wouldn't need to fall back to QWERTY.

All-in-all, I'm glad I made the switch. It's always a fun conversation piece. People don't realize that there could possibly be another keyboard layout. Everyone must type in QWERTY. Even those who speak different languages. Right? Heh. Most people don't even know that the layout they use is referred to as "QWERTY". So telling them that I use a layout that has the keys in different locations gets some crazy looks. :)

Dvorak, Dvorak, Dvorak

Seeing as though May 19th (Open Discussion Day) is coming up rather quickly, I won't have anything to countdown to once that passes.  As such, I made another goal for myself.

For the faithful readers, you are already aware that I have been typing using the Dvorak language for some time.  Well, it hasn't been 100%.  Because of the pressing deadlines at work, unfortunately, I am forced to use QWERTY because of my speed.  However, I realize that this is only holding me back, so starting on my birthday, June 9th, QWERTY will no longer be in my typing.

Why?  Why Dvorak?  Well, I have seen the reports and the numbers of Dvorak vs. QWERTY.  Needless to say, I am curious.  I am interested in increasing my typing speed, improving my accuracy and reducing the chances of RSI.  Because I sit at a keyboard all day long, reducing the risk of RSI is very important to me.

So, how do you make the switch?  Well, for me, when at home, I only type in Dvorak.  When at work, I spend a minimum of 30 minutes every day practicing.  I already know the entire layout, including characters, and I can type around 15-20 words per minite.  That's nothing to my 75-80 on QWERTY, but hopefully, I'll be there, or close to, by my birthday.

If your interested in giving Dvorak a try, it is installed on all the major operating systems, including Linux, Mac and Windows.  So, for me, going from one computer or operating system to another, won't be that big of an issue.

By the way, this post was typed in Dvorak, as have been the previous 15 or 20 posts.

Learning Dvorak

Two-handed Dvorak keyboard layout

I have devoted all of my time learning the two handed Dvorak keyboard layout. Why? Definitely after my post just a couple of days ago about the convenience of the QWERTY layout with respect to PHP and navigating a non-Windows machine?!? Because I sit at a keyboard all day long (as most of us programmers do), and I have been suffering from RSI (repetitive stress injury). Being a piano player, I know all about carpal tunnel and proper technique when sitting at the keyboard, and typing is no different.

The benefits of Dvorak are amazing. Speed can be increased to over 75% faster versus QWERTY, RSI is significantly reduced (although it isn't a cure-all), accuracy can been increased ten-fold and it is much more comfortable to type with as it has been adapted to the English language better than QWERTY.

The layout is very different. In fact, there are 3 main layouts of Dvorak: two-handed, right handed and left handed. Of course, there are minor variations in each of the 3 layouts as with QWERTY, but they are only with punctuation as numbers and letters are the same. The idea behind the Dvorak layout is ths:

  • Each hand alternates when typing. This was a common idea behind QWERTY, but with QWERTY the idea was to keep the keys that were adjacent to another on a typewriter from getting stuck. The idea behind Dvorak is increase the comfort level of the typist.
  • All the vowels are placed on the home row under the left hand, the the most commonly used consonants on the home row under the right hand. With this home row combination, thousands upon thousands of English words can be typed just on the home row. I have a list of over 5,000 words that can be typed on the home row alone, if you're interested. This means in typing class you could've easily been typing real English words on the home row rather than the "jjj kkk fff ddd" nonsense.
  • Your fingers move up a row more easily then down a row, so the next most common used letters and punctuation are found on the row above home with the highest frequency of letters hit with the index and middle fingers.
  • Finally, the least used letters and punctuation found in the English language are sitting on the bottom row out of the way. Less than 5% of your typing will require you to type keys below the home row. Dvorak really had comfort in mind when he disigned this layout.

If you are interested in the history behind Dvorak or further details, including great tutorials and typing software, there are a number of good sites if you just Google it.

Unfortuantely, because of the lack of popularity, Dvorak keyboards just are not manufactured on a large scale. This provides no hiccup however, as there are a number of different options availalble. First, your operating system. Linux, Mac and Windows all support typing with the Dvorak layout. Check your OS for instructions on how you would do this. Next, you can move the keys around or purchase overlays for looking at what you are typing. I just printed off a layout, and taped it to my monitor to help me.
I have been typing Dvorak now for a couple of days, and already I have seen the improvements. Give me another week or two, and I should be up to par with my typical QWERTY speed. Hopefully, in a month or so, I will have surpassed my QWERTY skills.

Two Weeks With The Yubikey

It's now been a full two weeks since I purchased my Yubikey and have been using it. The goal was to have a security token that I could use as a form of two-factor authentication for most if not all of my accounts. After two weeks of use, I figured I would write about it, and let you know my impressions.

First off, as mentioned in my previous post about the Yubikey, it sends physical keypresses to the host computer, rather than static characters. As a result, for those of us that type in the Simplified Dvorak layout, this turns out to be problematic for Yubikey authentication servers, as the server software expects certain characters from the modhex. This can be modified in the server software to account for the Dvorak layout, but it's not default.

Second is the ability to keep the key with you at all times. This actually has turned out to be a bit of a chore, as is to be expected. In the early morning, while still waking up, I might get on the computer, and check my mail, or login to a site or two. If the cookie is saved, and I'm already logged in, then no big deal. If not, and I need to login, then this means chasing down my key. Same can be said when at work, or at a friends/parents house etc. It actually has become a bit of a pain to make sure that they key is always on my person, and that there is a convenient USB port to plug the key into.

Third, and this is the most frustrating of all, is that many authentication forms on sites have limitations on their password lengths or valid characters. My bank, for example, has a limit of 12 characters max. This is too short for the Yubikey, even for static passwords. Yet, Google does not have an upper limit. So, while my BANK PASSWORD IS 12 CHARACTERS, my Google password is 82. FUrther, Google supports two factor authentication with my phone, while my bank does not. Is it just me, or is it a tad silly that my Google account is more secure than my bank? It should be the other way around, IMO. And this isn't just unique with my bank. My mobile service provider, the university, and many other sites.

As a result, because every site is different on what they will allow for passwords, not only do I need to remember the location of the password on my passord card, but I also need to remember whether or not I can use my Yubikey static password, and which one to use (I've programmed both slots differently). It's all over the place, and it is REALLY frustrating. I've begun sending emails to webmasters to let them know why the limitations they are imposing on their login forms is not doing anything for security.

Obviously, the easy way out is to have the same password for all my accounts, and not use any physical authentication tokens. Just keep it in my head, never change it, and everything will be grand. That's the lazy way of handling passwords. The way I am managing my passwords is a lot of work. I won't lie. I frequently forget which password is for what account, so I've begun keeping them in an encrypted database with KeePass. I copy and paste out of that more often than not. It's a chore always pulling out my Yubikey when needed, and it's usually a chore finding an acceptable USB slot to stick it into that is within reach to easily touch it.

Would I recommend it? Absolutely. I would just put in a word of warning that you're in for a bit of work managing your passwords.

The Yubikey

I'm absolutely pedantic about password security with every one of my accounts. A couple of years ago, I watched as friends and family members seemed to have their Google, Twitter, Facebook or other accounts compromised. In every case, it was because they were using a weak password, and they knew it. I resolved to make sure every online account I had, used a different random password and that the passwords contained at least 80 bits of entropy. When Google released their two-factor authentication, I immediately enabled it. After discovering the Password Card, I've been using it religiously to select the passwords for all of my accounts. Just in case I forget a password, I've kept them stored in KeePassX. This system has been working very well for me, and I couldn't imagine improving it anytime soon. That is, until I learned about the Yubikey.

Actually, I heard about the Yubikey a few years ago, it seems. I remember stumbling upon it on some web site, and not thinking much about it. That is, until I was browsing Silk Road on Tor, and saw that they were selling Yubikeys for Bitcoin. My interest peaked, so I found the Yubico website, and read up about Yubikeys. Within the hour, I ordered one. Two days later (!!!) it was delivered, and in my hands to play with. Since playing with it, I figured I'd write up a quick review.

The Yubikey is a hardware password generator that presents itself as a keyboard to the computer. As such, there is no special software or hardware drivers to interact with the Yubikey. Even when the computer is not booted into an operating system, it can still accept input from the key. This could be useful for entering administrator passwords at the BIOS or providing the encryption passphrase when booting.

There are four types of password generation that firmware version 2.2 (which is Free Software) of the key supports:

  1. Yubikey OTP- Default behavior shipped with the key. A symmetric AES key is used to create one-time encrypted passwords using the TOTP protocol (similar to the RSA SecureID). This encrypted key is sent to the Yubico servers to authenticate the session.
  2. Open Authentication (OATH)- The Yubikey can be configured to generate 6- or 8-digit one-type passwords that work with the VeriSign OATH standard.
  3. Static Password- Rather than dynamic passwords at every authentication session, static passwords can be configured. Anything between 16- to 64-character passwords can be set.
  4. Challenge-Response- Client applications can take advantage of the Yubikey API, which supports both Yubikey OTP and HMAC-SHA1.

The key came shipped with two configuration slots. In the first slot, it was pre-programmed to support Yubikey OTP with their servers. When ordering my key, I had every intention of running my own Yubikey server (which is Free Software), and authenticating that way instead of trusting Yubico. However, I ran into a snag. When generating a new AES key, and uploading it to the server, authentication was always failing with "OTP prefix mismatch". I couldn't tell if there was something wrong with my server, or my client, or my key, or what. I tried over, and over, and over to get it right. Finally, in a bit of desperation, I sent an email to support to ask for help. Turns out, because I'm a Dvorak typist, and because the Yubikey is sending keycode presses, not actual characters, the OTP key was "in Dvorak" rather than "in QWERTY" as the server is expecting. I did stumble across http://wiki.yubico.com/wiki/index.php/YubiKeyIdeas#Dvorak_support as a way to integrate Dvorak into the authentication, but the more I thought about it, the more I didn't like it.

So, I eventually decided to program both slots with static passwords. This allows me to remain completely "offline" without the need to authenticate against a server. Further, because I'll likely be typing my usernames and passwords in Dvorak in the authentication form already, having the key give a "Dvorak" password is no big deal. In fact, you could think of this as a bit of obscurity. If an attacker knows my password, and gets the key, using the key in QWERTY will result in a different password than in Dvorak.

At any event, in the first slot, I configured it for the shortest static password of 16 characters. This is to appease silly developers who think it's funny to limit the length of passwords in their form fields. In the second slot, I configure it for the longest static password of 64 characters. And, rather than use the client (which is Free Software) PRNG to generate the password for me, I pulled the data out of /dev/random on my local machine, to ensure high quality randomness. I then stored all the details in my KeePassX database.

So, how does this work? Well, I generate the first part of the password using the password card. Suppose it's "8%FtaKbb*3EmCZwT". I then use the Yubikey to fill in the rest. If the password form has limits on password length, I'll press the Yubikey button for one second, and will get a string like: "15KBjnducnkhnebc". So, the password for the account would then be "8%FtaKbb*3EmCZwT15KBjnducnkhnebc" for a total password length of 33 characters, with an entropy of 210 bits. The great thing about this setup, is it creates a pseudo-two-factor authentication. The password "8%FtaKbb*3EmCZwT" is something you know, and the Yubikey is something you have. So for every account, you can have this simple two-factor authentication without much headache. And, unless you spend time memorizing the Yubikey password, you can say with 100% honesty that you do not know the password to the account to law enforcement or bad guys.

Aside from web accounts, this setup is fairly flexible: SSH keys, OpenPGP keys, SSL certificates, local machine accounts, encrypted filesystem passphrases, BIOS admin accounts, etc. Even better, Yubico produces and ships RFID and NFC Yubikeys for wireless authentication as well. And because all of the firmware and software is Free and Open Source Software, you have full platform support for Windows, Mac OS X and GNU/Linux. You can have your cake, and eat it too.

Now the only thing left to do, is update all my passwords to use both the password card and the Yubikey. :)

25 Random Things About Me

I hate Facebook Application requests, and I think more and more of my family and friends are coming to agreeance. To put it bluntly, I'm not interested in taking the "What kind of [insert random noun here] are you?" quiz. I'm not interested in playing YoVille (although my wife seems to enjoy it). I'm not interested in discovering which of my friends are my relatives (I know that already). So, it's no surprise then that I got ignored bing "tagged" in "25 Random Things About Me" about seven times so far.

Fine. I'll give in. :)

Well, on my previous blog that used to run under my family name, I blogged 101 things about me. Well, seeing as though that blog is no longer, I'm willing to put them back up here, except just using the top 25 instead of all 101. Also, I'm not going to "tag" anyone on Facebook, because I won't read them anyway, and I find the application requests annoying. However, my blog syndicates to Facebook notes, so if you're interested, you'll see this post under my profile and read it there.

With that, here we go:

  1. I suffer from obsessive compulsion disorder in Mathematics and Geometry. For example, I count tiles in the floor as I walk. I won't step on right angles, or even imaginary lines that form from a phsyical right angle. A stack of cards has to form a perfect rectangle. I calculate Pi in my head in different number bases. And so forth.
  2. I count in binary on my fingers, not in base 10. This means you'll probably be offended when I'm on the number 4 or 5.
  3. I type in the Dvorak Simplified Keyboard layout, not the standard "QWERTY" layout that is seen on all keyboards.
  4. I also type on a Das Keyboard Ultimate, the greatest keyboard manufactured to date.
  5. I have played the viola, cello, string bass, bass guitar, standard guitar, drums and saxaphone. I still play the piano.
  6. My political views place me slightly left on the communism to neo-liberalism scale , which means I'm more left than the standard US Democratic party. I lean towards the anarchist side of libertarian to authoritarian scale, rather than fascist. This puts me in roughly the same political views as that of Ralph Nader and Dennis Kucinich. Take your test here: http://www.politicalcompass.org/test.
  7. I'm so allergic to cats, that while serving a mission for the LDS church, I was in an apartment where a lady had 5 cats, and no ventilation. In 15 minutes, my throat had nearly closed shut, I had broken out in hives and my eyes were swollen shut. My companion had to lead me home, where I downed allergy medicine like it was going out of style. I was approaching Death's door.
  8. Oh yeah, I'm Mormon.
  9. I also served my LDS mission in the Greater Toronto Area, in Ontario, Canada. Initially, I was called to serve in Montreal, Canada, but they switched me to the Toronto East mission 2 months into my training area. I didn't know why until the next point below.
  10. I met Keri, my lovely wife, while serving my mission in Toronto. She was a sister missionary in the same mission as I was. Her mom set us up when we got home, and 5 months later, we were married.
  11. I have one child, a daughter, who was adopted. She's currently 15 months old, and a bundle of joy.
  12. I am anti-proprietary software. Most readers of my blog recognize this. This means that I don't run Windows, I don't play MP3s, I don't use Microsoft Office, and I don't even run Mac OS X (my wife does though). Yes, there is a world outside of Microsoft and Apple.
  13. I have visited 26 of the 50 states, dipped my toes in both the Atlantic and Pacific oceans, and have visited two other countries (Canada and Germany) and one other continent (Europe).
  14. I currently own 6 computers, all which are operational and serve at least one function. Because of their power consumption, I take an aggressive stance to preserving power as much as possible (turning the monitors off after 10 min of inactivity, hibernation after 20 minutes of inactivity, etc.).
  15. Every bulb in my house is a compact fluorescent. I'm saving 80% of the electricity in light bulbs compared to the previous home owner.
  16. I am the organist for my church. I love it, and hope I don't get another responsibility.
  17. By profession, I am a Red Hat Enterprise Linux, Solaris and HP-UX system administrator. By hobby, I am a Debian and Ubuntu system administrator and Python programmer.
  18. I find women who use Unix-like operating systems sexy, just like other guys who find women driving motorcycles or trucks sexy. Guess what? My wife uses a Unix-based operating system. My wife is sexy.
  19. I believe in ghosts (not in the traditional sense of poltergeists or what the movies think they are), UFOs (although I don't believe they've visited us yet, despite all the "sightings" and Area 51) and dinosaurs (although I have a different view of their existence).
  20. I am stubborn as a mule, and I come across frank, blunt and slightly offensive when my stubbornness comes out. It's not intentional, it just happens.
  21. I believe what a person says first through logical thinking and argument, then through authority and ethics, and lastly through emotion.
  22. I studied Latin while serving my LDS mission, and I am studying a language called Lojban- the logical language.
  23. I have a deep personal insecurity that people are talking about me behind my back and criticizing my every move, even if they don't know me. It plagues my mind in the grocery store, restaurant, school, work, home and everywhere.
  24. I'm usually stuck in second gear, which means I get things done at my own pace. There's no fire, no emergency to my life. I'm fairly care-free and I stop to enjoy the little things along the way.
  25. I pace when I talk. Whether it's on the phone, in person or even when talking to myself. Something about pacing and talking- I can't separate the two as hard as I try, which makes it interesting for public speaking engagements, even in church.

Das Keyboard 3

I've blogged about the Das Keyboard 2 before. I loved it. Unfortunately, however, my daughter stepped on it while in the floor (she was playing with it) and broke the space bar fairly bad. I tried my best to get it repaired, but nothing succeeded. So, for several months, I was without my glorious Das Keyboard, and was stuck with those crappy, squishy, HP multimedia keyboards.

Until now.

Thanks to my generous wife, she went on eBay, and purchased a used Das Keyboard Ultimate. As with version 2, the Ultimate has blank keys, and also brings a couple other features to the table, that make this keyboard tough to beat. Here are features of the Das Keyboard Ultimate:

  • Gold plated German manufactured mechanical key switches.
  • Individually weighted keys.
  • Two USB 2.0 ports on the right side of the keyboard.
  • 100% blank keys.
  • N-Key rollover, allowing up to 12 simultaneous key presses for fast typists.
  • Glossy black finish.
  • Blue LED NUM, CAPS & SCROLL LOCK lights.

Aside from the features listed above, the keyboard has some extra weight that version 2 did not have. It seems to have a more solid feel to the keyboard, rather than the light plastic feel of its predecessors. It still has the same clickety-clack that I have grown to love from the IBM Model M and version 2. The noise drives my wife nuts at times, however. It's also slightly smaller than version 2, making it a bit more attractive.

I haven't put the time into this keyboard that I have put into the other one, but so far, I love it. My fingers just enjoy the tactile feedback that the keys bring. I love the sound of the keys as I'm typing away, including typing this post. Version 2 had an expected lifespan of 50 million key strokes. If that's the case with this keyboard, I suspect I won't be needing a new one any time soon.

This keyboard just brings back the joy in typing. I would highly recommend it to anyone seriously looking for a good keyboard. Combine that with the Dvorak layout, and you will find yourself in typing heaven.

MAN I LOVE THIS KEYBOARD!

Pimp My Irssi

Warning: This post could be very long in many RSS readers and planets. Thus, going against how I feel about chopped RSS, I think it would be wise to do so here. At the bottom of the post, there is a "Continue Reading" link. If you're curious, please click through.

Per John Anderson's post about pimping his Irssi, I thought I would share my pimped Irssi. Here are a couple listings in my ~/.irssi/ directory.

[Sun 08/01/06 07:39 MST][pts/5][i686/linux-gnu/2.6.15-28-386][4.2.5]
<aaron@achilles:~/.irssi>
zsh 13 % ls -l *.theme        
-rw-r----- 1 aaron aaron 8472 2008-01-05 19:18 default.theme
-rw-r--r-- 1 aaron aaron 2690 2008-01-05 19:18 oscar.theme
[Sun 08/01/06 07:39 MST][pts/5][i686/linux-gnu/2.6.15-28-386][4.2.5]
<aaron@achilles:~/.irssi>
zsh 14 % ls -l scripts        
total 104
-rw-r--r-- 1 aaron aaron 70493 2007-10-03 16:43 adv_windowlist.pl
-rw-r--r-- 1 aaron aaron  1665 2007-10-03 16:26 autorejoin.pl
drwxr-xr-x 2 aaron aaron  4096 2008-01-05 19:01 autorun
-rw-r--r-- 1 aaron aaron  2191 2007-10-03 16:33 fnotify.pl
-rw-r--r-- 1 aaron aaron  7720 2007-10-03 16:28 screen_away.pl
-rw-r--r-- 1 aaron aaron  7730 2008-01-05 19:00 trackbar.pl
[Sun 08/01/06 07:39 MST][pts/5][i686/linux-gnu/2.6.15-28-386][4.2.5]
<aaron@achilles:~/.irssi>
zsh 15 % ls -l scripts/autorun
total 0
lrwxrwxrwx 1 aaron aaron 16 2007-10-03 16:26 autorejoin.pl -> ../autorejoin.pl
lrwxrwxrwx 1 aaron aaron 13 2007-12-18 10:56 fnotify.pl -> ../fnotify.pl
lrwxrwxrwx 1 aaron aaron 17 2007-10-03 16:29 screen_away.pl -> ../screen_away.pl
lrwxrwxrwx 1 aaron aaron 14 2008-01-05 19:01 trackbar.pl -> ../trackbar.pl

First off, I just found the oscar theme last night, and I love it. I visited the main Irssi site to see if there were any new themes added. To my surprise, there were quite a few. After spending some time analyzing screenshots, and testing a few out, I decided on oscar. Clean theme with green highlights and accents. There is an error when you load the theme, however, that you will notice in your status window. Not sure where the error is coming from.

Continue reading ›

Irssi Windows 1 Throuh 80

It gets a bit overwhelming when you're in more channels than you have default key bindings to change windows for in Irssi- which is only 19. So what happens when you create key bindings on your keyboard for windows 20 through 40, and you now have a window 41? That was exactly the problem I ran into today, and I came up with a couple of solutions.

If you were to make key bindiings for windows 20 through 40 following the default method, you would continue to use the meta key bound with letters p for 20, a through ; for 21 through 30 and z through / for 31 through 40 (using the QWERTY layout). The only thing that you need to be aware of, is there are some default key bindings that you would be overwriting, that you may not want to. They are as follows:

meta-a active_window 
meta-b backward_word 
meta-d delete_next_word 
meta-f forward_word 
meta-k erase_completion 
meta-n scroll_forward 
meta-p scroll_backward 

If you don't mind overwriting these defaults, then you can easily create short key bindings for windows 1 through 40. But how do you create key bindings for windows 41 through 80? I thought of two solutions to this problem, one if which I think is superior.

The advantage of the meta key bindings is the ESC key can be used as well as ALT. This means it only takes 2 keystrokes to change windows: the ESC or ALT key and the key binding. I never need to hit the enter key. But how to I keep this same efficiency for windows 41 through 80? My first attempt was using the /alias command, creating /41, /42, /43, etc aliases to switch windows. While there is no limit to the number of aliases I could create with this method, it doesn't meet my efficiency need. In fact, it takes twice the amount of keystrokes (/-4-1-ENTER), thus, decreasing my efficiency by 50%. So, it doesn't meet my short key binding need.

The next solution is to use the SHIFT key in combination with the meta key to change windows, and keep the same efficiency. The idea is this: rather than ESC 1 to change to window 1, ESC SHIFT-1 to change to window 41. While a new keypress is introduced, I am still keeping the number of keystrokes to 2, keeping my efficiency in changing windows. So, if you're interested, I have keybindings, depending on if you're a QWERTY typist or a Dvorak typist which you can copy and paste into Irssi.

For QWERTY typists:

/bind meta-1 change_window 1
/bind meta-2 change_window 2
/bind meta-3 change_window 3
/bind meta-4 change_window 4
/bind meta-5 change_window 5
/bind meta-6 change_window 6
/bind meta-7 change_window 7
/bind meta-8 change_window 8
/bind meta-9 change_window 9
/bind meta-0 change_window 10
/bind meta-q change_window 11
/bind meta-w change_window 12
/bind meta-e change_window 13
/bind meta-r change_window 14
/bind meta-t change_window 15
/bind meta-y change_window 16
/bind meta-u change_window 17
/bind meta-i change_window 18
/bind meta-o change_window 19
/bind meta-p change_window 20
/bind meta-a change_window 21
/bind meta-s change_window 22
/bind meta-d change_window 23
/bind meta-f change_window 24
/bind meta-g change_window 25
/bind meta-h change_window 26
/bind meta-j change_window 27
/bind meta-k change_window 28
/bind meta-l change_window 29
/bind meta-\; change_window 30
/bind meta-z change_window 31
/bind meta-x change_window 32
/bind meta-c change_window 33
/bind meta-v change_window 34
/bind meta-b change_window 35
/bind meta-n change_window 36
/bind meta-m change_window 37
/bind meta-, change_window 38
/bind meta-. change_window 39
/bind meta-/ change_window 40
/bind meta-! change_window 41
/bind meta-@ change_window 42
/bind meta-# change_window 43
/bind meta-\$ change_window 44
/bind meta-% change_window 45
/bind meta-^ change_window 46
/bind meta-& change_window 47
/bind meta-* change_window 48
/bind meta-( change_window 49
/bind meta-) change_window 50
/bind meta-Q change_window 51
/bind meta-W change_window 52
/bind meta-E change_window 53
/bind meta-R change_window 54
/bind meta-T change_window 55
/bind meta-Y change_window 56
/bind meta-U change_window 57
/bind meta-I change_window 58
/bind meta-O change_window 59
/bind meta-P change_window 60
/bind meta-A change_window 61
/bind meta-S change_window 62
/bind meta-D change_window 63
/bind meta-F change_window 64
/bind meta-G change_window 65
/bind meta-H change_window 66
/bind meta-J change_window 67
/bind meta-K change_window 68
/bind meta-L change_window 69
/bind meta-: change_window 70
/bind meta-Z change_window 71
/bind meta-X change_window 72
/bind meta-C change_window 73
/bind meta-V change_window 74
/bind meta-B change_window 75
/bind meta-N change_window 76
/bind meta-M change_window 77
/bind meta-< change_window 78
/bind meta-> change_window 79
/bind meta-? change_window 80

For Dvorak typists:

/bind meta-1 change_window 1
/bind meta-2 change_window 2
/bind meta-3 change_window 3
/bind meta-4 change_window 4
/bind meta-5 change_window 5
/bind meta-6 change_window 6
/bind meta-7 change_window 7
/bind meta-8 change_window 8
/bind meta-9 change_window 9
/bind meta-0 change_window 10
/bind meta-' change_window 11
/bind meta-, change_window 12
/bind meta-. change_window 13
/bind meta-p change_window 14
/bind meta-y change_window 15
/bind meta-f change_window 16
/bind meta-g change_window 17
/bind meta-c change_window 18
/bind meta-r change_window 19
/bind meta-l change_window 20
/bind meta-a change_window 21
/bind meta-o change_window 22
/bind meta-e change_window 23
/bind meta-u change_window 24
/bind meta-i change_window 25
/bind meta-d change_window 26
/bind meta-h change_window 27
/bind meta-t change_window 28
/bind meta-n change_window 29
/bind meta-s change_window 30
/bind meta-\; change_window 31
/bind meta-q change_window 32
/bind meta-j change_window 33
/bind meta-k change_window 34
/bind meta-x change_window 35
/bind meta-b change_window 36
/bind meta-m change_window 37
/bind meta-w change_window 38
/bind meta-v change_window 39
/bind meta-z change_window 40
/bind meta-! change_window 41
/bind meta-@ change_window 42
/bind meta-# change_window 43
/bind meta-\$ change_window 44
/bind meta-% change_window 45
/bind meta-^ change_window 46
/bind meta-& change_window 47
/bind meta-* change_window 48
/bind meta-( change_window 49
/bind meta-) change_window 50
/bind meta-" change_window 51
/bind meta-< change_window 52
/bind meta-> change_window 53
/bind meta-P change_window 54
/bind meta-Y change_window 55
/bind meta-F change_window 56
/bind meta-G change_window 57
/bind meta-C change_window 58
/bind meta-R change_window 59
/bind meta-L change_window 60
/bind meta-A change_window 61
/bind meta-O change_window 62
/bind meta-E change_window 63
/bind meta-U change_window 64
/bind meta-I change_window 65
/bind meta-D change_window 66
/bind meta-H change_window 67
/bind meta-T change_window 68
/bind meta-N change_window 69
/bind meta-S change_window 70
/bind meta-: change_window 71
/bind meta-Q change_window 72
/bind meta-J change_window 73
/bind meta-K change_window 74
/bind meta-X change_window 75
/bind meta-B change_window 76
/bind meta-M change_window 77
/bind meta-W change_window 78
/bind meta-V change_window 79
/bind meta-Z change_window 80

Hopefully, this will be of use for IRC staff who are in tons of busy channels to keep an eye out for moderation, or for the general lurker, such as myself, that likes to help offer support when needed, has lots of questions, or needs room for private messages. Of course, if you have need for windows 81-120 and 121-160, then I think it's about time that you get out more. :)

Enjoy!

Switching Caps Lock and Backspace

The Caps Lock is a completely redundant key. Think about it for a second. It does what holding down the shift key does on your keyboard. And, given todays technology, there is absolutely no reason why you can't have the shift key perform the function of the caps lock key. For example, pressing the shift key twice would invoke an ALL CAPS BEHAVIOR then pressing the key again would take you out of that behavior.

Think of it. We would have an empty key location on the keyboard that could be used for a much more functional key, such as a second enter or a meta-key. In other words, a key that would get much more use, than just uppercasing your characters. Simple. And yet, due to the stubborn nature of the uneducated, we continue to have the caps lock on our keyboards. Not only do we have it on the keyboard, it is not in an optimized location. Well, I went out to change that.

The caps lock key, by default is only one key distance a way from the left little finger. Looking at the keyboard, there is a key that I use far more heavily, although I shouldn't be, that is a much further distance (3 key distances): the backspace. To me, and I'm sure others, it makes much more sense, as August Dvorak discovered with the keyboard, to put the more commonly used keys close together, and the least commonly used keys further away. So, switching the backspace and caps lock key make sense. So, I set out to do just that, and it was easy.

Thankfully, there is this great little utility in X called 'xmodmap'. xmodmap gives you the ability to modify your keyboard layout to your leisure. So, I put in a config file the keys that I wanted to swap. By default, the keycode for the backspace key is 0x16 and the code for the caps lock key is 0x42. So, we just need to make the switch. Easy as pie:

remove Lock    = Caps_Lock
keycode 0x16 =  Caps_Lock
keycode 0x42 =  BackSpace
add    Lock    = Caps_Lock

This should be saved as '.xmodmap' in your home directory. To execute it, just 'xmodmap ~/.xmodmap' at the terminal prompt.

Now, you may have noticed that the repeating didn't follow the switch. Pressing and holding what used to be the backspace key, but is now the caps lock, flickers the caps light, as repeat is set on that key. Pressing and holding the new backspace key does nothing as you would expect it to. So, we need to get the repeat off of our new caps lock and on the new backspace, where it belongs. Fortunately, this is just as easy:

First, I need the keycodes for caps and backspace:

aaron@poseidon:~$ xmodmap -pk | grep -i caps
     22         0xffe5 (Caps_Lock)
aaron@poseidon:~$ xmodmap -pk | grep -i backspace
     66         0xff08 (BackSpace)

Perfect. 22 for caps and 66 for backspace. Let's fix the repeat now:

aaron@poseidon:~$ xset -r 22
aaron@poseidon:~$ xset r 66

Done. The only caveat to this, is if X is restarted, you will need to reset the repeats. The keys should already be modified.

Now that I have my keys swapped, and the behavior of the repeat works as expected, I can optimize my typing by limiting my finger stretches across the keyboard. This fits perfect with the Dvorak layout that I am already using, and will be even nicer when I get my Das Keyboard II in the mail, as nothing is printed on the keys.

Das Keyboard

Picture of Das KeyboardMy wife is going to kill me. Seriously. Don't tell her that I bought this, or I'm a dead man! Who am I kidding? She reads my blog, so she'll find out in her own due time.

I just dropped 90 squid on keyboard!!! Not any keyboard, however, Das Keyboard. The great thing about this keyboard, is it is 100% blank. No writing on the keys whatsoever. Check out the image to the right. Blank, just like a piano, or the look on my wife's face when she finds out I bought it.

The great thing about this keyboard, besides the fact that I type in Dvorak, and need something for my index fingers to rest on that isn't J and F, is the mechanical superiority. This keyboard, as claimed on the website, is supposed to surpass the IBM Model M. I've typed on that keyboard, and if the claim is true, then I'm sold. The IBM Model M keyboard is a revolutionary piece of hardware. Check out the pressure requirements under each key. Not unique to keyboards, but very nice.

das-keyboard-3.jpg

At any rate, here are a few of the features of the keyboard, and ultimately, the reasons that I purchased it:

  • 100% blank.
  • Mechanical gold-plated switches, surpassing the IBM Model M
  • Scooped F and J keys
  • USB (compatible with all operating systems)

Change Window Shortcuts in Irssi

I love Irssi in combination with screen. It is a beautiful thing. For those of you who don't use it, try it. You'll never go back.

Getting the hang of windows in Irssi can be somewhat tricky when first using it, because everything is command line. So, changing windows is done using the keyboard. Pressing 'Esc' then a number (0-9) will take you to that window (0 = 10), as will 'Alt (0-9)' and 'Ctrl+(N,P)'. But, if you are a power user, you probably have more than 10 windows open at any given time. How do you get to those windows? 'Ctrl N' will take you to the next window and 'Ctrl P' will take you to the previous, but they are all in succession. How do you jump from window 11 to window 15 for example. You could type '/window 15' to take you there and '/window 11' to get you back, but that is too much work.

Irssi is set up with QWERTY users in mind, as it should be. As such, if you are using the QWERTY layout, then 'Esc q' (or 'Alt q') will take you to window 11, 'Esc w' will take you to 12, 'Esc e' to 13 and so on for the entire top row of letters. That takes care of the first 20 windows. But, if you are a Dvorak user as I am, the top row of letters in QWERTY are scattered about the keys, and it doesn't make logical sense for which window shortcut is where. So, how to change this?

In step the '/alias' command in Irssi. Without going into detail, the '/alias' command gives you the ability to create your own aliases. With it, you can change keyboard bindings as you please. As such, we should be able to create an alias that will allow us to use the Dvorak layout when switching windows and another alias for QWERTY. In fact, that is exactly what we can do.

In the alias, we will need to delete the current key bindings, then assign the new ones to the appropriate keys. "bind -delete meta-q" will delete the assinment to the 'q' key, and "bind meta-' change_window 11" will change the key assignment to the tick (') to go to window 11. Seperate each bind with a semicolon and we're set. Check it out:

/alias dvorak

/alias dvorak bind -delete meta-q;bind -delete meta-w;bind -delete meta-e;bind -delete meta-r;bind -delete meta-t;bind -delete meta-y;bind -delete meta-u;bind -delete meta-i;bind -delete meta-o;bind -delete meta-p;bind -delete meta-f;bind meta-' change_window 11;bind meta-, change_window 12;bind meta-. change_window 13;bind meta-p change_window 14;bind meta-y change_window 15;bind meta-f change_window 16;bind meta-g change_window 17;bind meta-c change_window 18;bind meta-r change_window 19;bind meta-l change_window 20

/alias qwerty

/alias qwerty bind -delete meta-';bind -delete meta-,;bind -delete meta-.;bind -delete meta-p;bind -delete meta-y;bind -delete meta-f;bind -delete meta-g;bind -delete meta-c;bind -delete meta-r;bind -delete meta-l;bind meta-q change_window 11;bind meta-w change_window 12;bind meta-e change_window 13;bind meta-r change_window 14;bind meta-t change_window 15;bind meta-y change_window 16;bind meta-u change_window 17;bind meta-i change_window 18;bind meta-o change_window 19;bind meta-p change_window 20

Now, when in Irssi, I just type '/dvorak' and I have the entire top row of my keyboard, using the Dvorak layout, devoted to changing windows 11 through 20, using either the 'Esc' or 'Alt' keys. Type '/qwerty', and it is set back to the QWERTY layout for those shortcuts.

Cool.

Switch to our mobile site