Renewed Keyboard Joy: Dvorak

Typing: you do it every day nearly unconsciously. You think of what you want to appear on the screen. This is followed by some rattling sound and the next instant it is there. The blinking cursor stares at you as to encourage you to keep going. Handwriting feels mostly like a thing of the past since typing is so much faster for you, likely up to two or three times. So, what would it be like if you were stripped from this ‘magical’ ability to type?

If you are like me, you probably learned how to type all by yourself. I never took a touch typing class, since it seemed like a waste of time. After all: I could already type, so why take a course to learn something I could already do?

Many self-learned typist adopt a hunt and peck style, meaning they need to look at the keyboard to find the keys. Usually this is done with only two fingers, since using more fingers obscures the view on the keyboard making it harder to ‘hunt’. I did not adopt this style, but rather used the three-finger approach: both hands hover over the keyboard and type using the three strongest fingers: the thumb, index finger and middle finger. Occasionally I used the ring finger as well, though not consistently. Observing my typing style, I noticed that my hands positioned themselves in anticipation of the next key to strike. This all went seamlessly, achieving speeds of about eighty-five to a hundred words per minute, which is not bad at all.

Though my self-learned typing style worked for me, I did try to switch to touch typing several times. Particularly because my hands would feel strained after intense typing sessions. However, switching never worked out. I would intensely concentrate for one day, keeping my fingers on the QWERTY home row of ‘ASDF-JKL;’, touch typing as one should. Nevertheless, the next day the years of acquired muscle memory would take over: I would be thrown back to my ‘own’ style. My hands seemed to have no incentive to touch type, even though I really wanted to consciously. Had I only taken that typing class when I had the chance, then I would be better off today, or … perhaps not?

The famous QWERTY layout, referring to the six top left keys on most standard keyboards, is not the only way to arrange the keys. Firstly, there are many small variations such as AZERTY, common in Belgium, and QWERTZ, common in Germany. Secondly, there are alternative keyboard layouts such as Colemak, Workman and Dvorak. Of these alternatives, Dvorak has been around the longest, since the 1930’s, and is also an official ANSI standard. The story behind both QWERTY and Dvorak, both developed for typewriters, is interesting in its own right and explained very well in the Dvorak zine.

The standardized simplified Dvorak layout is much less random than the QWERTY layout, it notably places the vowels on the left side of the keyboard and often used consonants on the right:

2015-07-Simplified_Dvorak

The simplified Dvorak layout

Several years ago I tried switching to Dvorak cold turkey. I relabeled all my keys and forced myself to type using the Dvorak layout. It was a disaster. I would constantly hit the wrong keys, my typing slowed to near a grinding halt. I would spent fifteen minutes typing an e-mail that previously I could write in under a minute. Frustrated, I stopped after three days.

Fast forward to several months ago. I caught a bit of a summer flu and although I was recovering I could not really think straight. Since learning a new keyboard layout is rather mechanical and repetitious in nature, I figured the timing would be right to have another stab at this. My main motivation was to increase typing comfort and reduce hand fatigue. Secondary motivations included load balancing better suited for my hands, reducing the amount of typing errors and being able to reach a higher sustained typing speed. Finally, I also picked this up as a challenge: it is good to force your brain to rewire things every once in a while. I wanted to switch layouts for these reasons for quite a while and this time I decided I would go about it the ‘right’ way.

Firstly, I had to choose a layout. Hence, I determined the following criteria:

  1. Since my left hand is a bit weaker I should opt for a right hand dominant layout, meaning one that utilizes the right hand to control more keys than the left in terms of both count and striking frequency.
  2. The layout should differ sufficiently from QWERTY, as to prevent me from relapsing into my ‘own’ typing style.
  3. As I do a fair bit of software development, the layout should be programming friendly.

Based on these criteria I chose the Programmer Dvorak layout. This layout is similar to simplified Dvorak, but has a different number row. It looks like this:

2015-07-Programmers_Dvorak

Programmer Dvorak

The main difference between this Dvorak layout and the simplified layout shown previously is that the number row is entirely different. Instead of numbers, the keys on the number row contain many characters that are often used in source code, such as parentheses and curly braces. To enter numbers the shift key needs to be pressed. This sounds cumbersome, but it makes sense if you count how many times you actually enter numbers using the number row. The numeric pad on the keyboard is much better suited to batch entry of numbers.

Awkwardly the numbers are not laid out in a linear progression. Rather the odd numbers appear on the left side and the even number on the right. This can be quite confusing at first, but interestingly it was also how the numbers were arranged on the original, non simplified, version of Dvorak. So there is some statistical basis for doing so.

If you are considering alternative keyboard layouts you should know that Dvorak and Colemak are the two most popular ones. Dvorak is said to ‘alternate’ as the left and right hand mostly alternate when pressing keys, whereas Colemak is said to ‘roll’ because adjacent fingers mostly strike keys in succession. One of the main reasons that Colemak is preferred by some is that it does not radically change the location of most keys with respect to QWERTY and, as a result, keeps several common keyboard shortcuts, particularly those for copy, cut and paste, in the same positions. This means that those shortcuts can be operated with one hand. As I am an Emacs user, used to typing three or four key chords to do comparatively trivial things – more on that later – this was not really an argument for me. I also read that the way in which you more easily roll your fingers can help with making the choice between Dvorak and Colemak. I think this was conjecture and I have no good rational explanation for it, but perhaps it helps you: tap your fingers in sequence on a flat surface. First from outwards in, striking the surface with your pinky first and then rolling off to ending with your thumb. After this do it from inwards out, striking with your thumb first and rolling back to your pinky. If the inwards roll feels more natural then Dvorak is likely a better choice for you, whereas if the outward roll feels better, Colemak may be the better choice. Again this is conjecture, interpret it as you wish.

Whichever alternative layout you choose: anything other than QWERTY, or a close variant thereof, will generally be an improvement in terms of typing effort. Dvorak cuts effort by about a third with respect to QWERTY. This means that entering hundred characters using QWERTY feels the same as entering about sixty-six characters in Dvorak in terms of the strain on your hands. If your job requires typing all day, that difference is huge. Even more so if you factor in that the number of typing errors is usually halved when you use an alternative layouts, due the more sensible and less error prone arrangement of the keys. Most alternative layouts are as good as Dvorak or better, depending on the characteristics of the text that you type. Different layouts can be easily compared here.

Now that I had chosen a layout, it was time to practice, so I set some simple rules:

  1. Practice the new layout daily for at least half an hour using on-line training tools.
  2. Do not switch layouts completely, rather keep using QWERTY as primary layout until you are confident you can switch effectively.
  3. Train on all three different keyboards that you regularly use. Do not buy any new physical keyboard, do not relabel keys, but simply switch between layouts in software.
  4. Focus on accuracy and not on speed.

Before starting I measured my raw QWERTY typing speed, which hovered around ninety words per minute sustained and about a hundred words per minute as top speed. Unfortunately, raw typing speed is a bit of a deceptive measure, as it does not factor in errors. Hitting backspace and then retyping what you intended to type contributes to your overall speed, yet it does not contribute at all to your effectiveness. So it is the effective typing speed which is of interest: how fast you type what you actually intended to type. Effective typing speed is a reasonable proxy for typing proficiency. My effective QWERTY typing speed was a bit lower than the raw speed, by about five to ten percent. This gives a sustained speed of eighty to eighty-five words per minute and a top speed of around ninety-five words per minute.

As I started with my daily Dvorak training sessions, I also started seeing a decrease in my effective QWERTY typing speed. My fingers started tripping up over simple words and key combinations, even though I still used my ‘own’ typing style for QWERTY, and touch typed only in Dvorak. The effect was subtle, but noticeable, lowering my effective QWERTY speed with about ten to fifteen percent. I deemed this acceptable, so I persevered, but it does show that using two keyboard layouts definitely messes up muscle memory. I think this effect can be mitigated to some extent by using specific layouts on specific keyboards, but I did not test this, as I would be breaking my own rules.

The first sessions in Dvorak were slow, with effective speeds of about five to ten words per minute. In fact the first days were highly demotivating, it felt like learning to walk or ride a bike from scratch again. I started out with my fingers on the home row and consciously moved my fingers into position. That process took a lot of concentration, you can think of it as talking by spelling out each word. Furthermore, every time I hit a wrong key, my muscle memory would stare me in the face full of tears and proclaim it had triggered the right motion. It did … just not for this new layout I was learning.

So, what did I use to train? I started out using a site called 10fastfingers, but I found it a bit cumbersome and it did not have a lot of variance. In the end, I can really recommend only two sites, namely learn.dvorak.nl and keybr.com. The latter has the nice property that it adapts the lessons to your proficiency level and is quite effective for improving weak keys. /r/dvorak is also good for inspiration and tips.

Some basic other tips: start typing e-mails and chats with your new layout before making a complete switch, as it will give you some training in thinking and typing, rather than just copying text. Furthermore, switching the keyboard layout of your smartphone may help as well, not for efficiency, as Dvorak is really a two-handed layout, but for memorization. Dvorak is not really designed for phones, other layouts may be better, I have not looked deeply into this, as I generally dislike using phones for entering text, it does not seem worth the trouble of optimization. I do not recommend switching the keys on your computer keyboard, or relabeling them, as doing so will tempt you to look at the keyboard as you type, which will slow you down. It is better to type ‘blind’.

It took some discipline to keep at it the first few days, but after about a week or two I was able to type at an average speed of about twenty-five words per minute. Still not even a third of my original QWERTY speed, but there was definitely improvement. After this there was a bit of a plateau. I spent more time on the combinations and key sequences that were problematic, which helped. Six weeks in I was able to type with an average speed of around forty words per minute. Since this was half of my QWERTY speed, I deemed it was time to switch to Programmer Dvorak completely.

In contrast with my previous attempt several years ago, this time the switch was not a frustrating experience. The rate of learning increased as my muscle memory no longer had to deal with two layouts. Typing became increasingly unconscious. The only things that remained difficult were special characters and numbers, for the sole reason that these do not appear often and thus learning them is slower.

Currently I am about ten weeks in. I did not use the same training tools during that entire time, but I do have data from the last eight weeks. Let us first take a look at the average typing speed:

2015-07-Typing_Speed_Smooth

Average smoothed typing speed

The graph shows two lines spanning a time of eight weeks, a green one which shows the raw speed and a purple one that shows the effective speed. You can see that both speeds go up over time and the lines are converging, which implies the error rate is going down. My average speed is currently around seventy words per minute, which is close to my original QWERTY speed.

We can also look at the non-smoothed data, which gives a feeling for the top speed. In the second graph, shown below, we see that the top speed is about hundred words per minute which is actually about the same as my QWERTY top speed.

2015-07-Typing_Speed_Raw

Raw typing speed

There is still quite a bit of variation, as is to be expected: not every character sequence can be entered at a high speed and some keys have a higher error rate than others. Most errors are mechanical in nature, which means: simply hitting the wrong key. This is particularly prevalent when the same fingers needs to move to press a subsequent key, for example for the word ‘pike’ one finger needs to move thrice to hit the first three letters. More generally, my slowest keys are the Q, J and Z and the keys with the highest error rate are the K, X and Z. Luckily these are not high frequency keys, and they are also underrepresented during training, so over time the errors will likely decrease and the speed will increase for these keys.

With respect to my original goals: firstly, I can say that typing in Dvorak is more comfortable than QWERTY, particularly at higher speeds my fingers feel much less jumbled up. The hand alternation is very pleasant, though it took some time for my hands to get synchronized. Secondly, in terms of speed: after about ten weeks I am very close to my QWERTY speed, which is great. It shows that switching layouts is possible, even though it takes effort and discipline to do so. It was frustrating at first, but I feel that it was a good opportunity to purge many bad typing habits that had accumulated over the years.

There are also some downsides, the main one is that typing QWERTY is slow for me now, and that will likely continue to deteriorate. I do not see this as a major issue, as I do about ninety-nine percent of typing on my own machines. For the other one percent, it is possible to switch layouts on each and every computer out there. Some people may dislike the moving of keyboard shortcuts, and that can really be an issue, but for the most part it is just a matter of getting used to it. As an Emacs user, I took the opportunity to switch to the ergomacs layout, which I can recommend. It significantly reduces the number and length of chords: keys that need to be pressed in succession, and is also more compatible with more broadly adapted shortcuts.

Do I recommend that you switch to Dvorak, or an other alternative layout? That really depends on how frequently you type. If you type rarely, switching may not be worth the effort. However, if you have to type a lot every day then I think it is worth it purely for the increase in typing comfort. The only argument against this is if you often need to switch computers and you can not easily change the keyboard layout on those machines.

Dvorak definitely feels a lot more natural than QWERTY, and so will most other more optimal layouts. I am relieved I never took a touch typing course. It would have taken much more effort to unlearn touch typing QWERTY if I had. Thanks to not doing that I have been able to learn and become proficient using a layout suited for my hands in just ten weeks. So, if you type frequently, are willing to make the jump and have enough discipline to get through the initially steep learning curve, then I can definitely recommend it. Even just for the challenge.

What is Linux?

Apple and Microsoft are the two household operating system creators known by the majority of consumers. However, they are not the only ones. While Microsoft’s Windows and Apple’s Mac OS are commonly viewed as the two dominant desktop titans, there is a third often overlooked player: Linux.

Linux is not an operating system by itself though, it is only the kernel of an operating system. The kernel of all modern versions of Windows is “Windows NT”, while the one of Mac OS X is “XNU”. I won’t go into too much technical detail, but roughly the kernel is a middleman between the programs that run on your computer and the underlying physical hardware. So, if you open a text document residing on a disk, the text editor would ask the kernel to do this, and in turn the kernel would ask the disk. The details of accessing the disk are hidden from the text editor, which is nice since it doesn’t need to know the myriad of different media that your text document could be stored on: a harddrive, USB stick, CD, DVD, Blu-Ray Disc or network drive.

When the Linux kernel is combined with a set of applications it actually becomes possible to operate the machine it is installed on using those applications, hence it really becomes an operating system. In the Linux world such a combination of the kernel and applications is referred to as a distribution. A distribution commonly includes a set of core applications created by the GNU Project. There are many different distributions, some target a broad audience that want an easy-to-use desktop, like Fedora Core, Ubuntu and SuSE. These usually offer an intuitive graphical user interface like GNOME or KDE. Besides this there are distributions that are specialized to make it easy to, for example, run a media center or a web server.

If you’re still with me, you may be convinced you’ve never ever used Linux, and perhaps you’d even like to try it. However, if you have used an Android telephone or browsed the web than you have most definitely used Linux. Google’s Android actually uses the Linux kernel. That’s right: many smartphones, and tablets, are running Linux nowadays! Additionally, most of Google’s application actually run on Linux even if you access them via your browser. Besides this the majority of web sites use the Apache web server which is also often run on Linux systems.

Since Linux is prolific nowadays, you may wonder: is there some big company behind it? Windows has Microsoft, MacOS is backed by Apple. However, Linux is non-profit and open source. You can find out how that works and what it means here. The foundations of what we know as Linux today were created by Linus Torvalds twenty years ago. However, many people have contributed to it over the years, both volunteers and paid developers. Indeed, large companies, like Intel, IBM and even Microsoft, have contributed code to the Linux kernel. Besides this there are several companies that have become famous for their continuous involvement in Linux: Red Hat, Canonical and Novell. These make money primarily through support and services, targeted primarily at the enterprise.

Is Linux usable as a desktop operating system for your day-to-day activities? This was the big goal a decade ago: to get the Linux desktop, notably GNOME and KDE, to the same level as graphical user interfaces of other operating systems. Whether the developers have succeeded in this depends largely on how you use your desktop in your day-to-day life. The best way to find out is to actually try it. If you are a newcomer to Linux I usually recommend Ubuntu, which you can download here, as its one of the easiest user-friendly distributions around. However, feel free to take a look around to see if there is an other distribution that appeals to you.

What is Free Software and Open Source?

2011-07-08-Free-Software-Button

There are many people that are unaware of what free software is and what open source software is, and why it matters. In this post I’ll try to shed some light on this.

When people hear `free software’ they usually think of software that does not cost anything in terms of money, which is not the right definition. The word `free’ in free software is free as in speech, not free as in beer. So, what does this actually mean in terms of computer software? To understand this we first need a basic understanding of what a computer program actually is. A computer processor can be operated via an instruction set which allows performing many low-level operations such as adding two numbers together. These instructions are numeric codes, which are very hard to understand for a human: imagine that you would have to type a text and instead of using a – z you had to use the numbers 1 – 26 for each letter. That would be terribly difficult to read and write! So, most computer programs are written in readable text which contains statements such as “x = 3 + 5” instead of something like “1001 1100 1010”. This written text is called the source code, which is like a blueprint of the program, and can not be interpreted by a machine directly. Source code first has to be translated into a binary machine representation: the numeric codes I spoke of before. This translation process is called either compiling or interpreting1. After this step we can actually run the program and interact with it. So, we have a distinction between the source code and the binary.

Many companies that make computer software only distribute the binary to their customers and keep the source code locked away. These companies see the source code as their intellectual property which they must protect. Let’s go back to free software again and consider what makes a particular piece of software free as in speech: four main points. Firstly, the freedom to run the software for any purpose. This means that, for example, you can not distribute a video editor with the restriction that you can not use it to produce a commercial. Secondly, the freedom to study how the program works and to change it to suit your own needs. For this having the source code is a necessity. Thirdly, the freedom to distribute copies of the original program so you can share it with your friends. And finally: the freedom to distribute the modifications you make to the program to others. So, now you understand that besides the binary you also need the source code in order for something to be free software.

Undoubtedly these definitions will give you a lot to think about. Most people assume that you can not make money when you make free software. However, this is untrue as there are many successful companies out there that create and share free software. These companies realize that the real value of computer software is not in the source code, but in the people with the expertise about how the software works. Just like it takes time and practice for a musician to learn to play a musical instrument, it also takes time for a programmer to familiarize himself with a piece of software. Contrary to popular belief making computer programs is primarily a creative endeavor with a significant social component as well. Everyone who has ever written a report or paper knows the value of other people reviewing your work. The same is true for computer software: if more people read it, give feedback and fix errors, the quality of the software improves. And when the source code is available: it is much easier for people to participate in this process.

Now, this still leaves us with the question: what is open source? Is it exactly the same? Well, most open source software is also free software, which may be somewhat confusing. The main difference between the two is philosophical. The free software movement considers non-free software to be undesirable, and is social in nature: its emphasis is on changing people’s behaviour so that they create, use and share free software instead of alternatives. In contrast, the open source movement originated in the nineties as a pragmatic, liberal view on free software. Therefore it is slightly more permissive: some things that are not free software are open source. The difference is also emphasized in the concepts themselves: free software with “free as in speech” as the main issue, and open source software with an emphasis on the pragmatic advantages of having the source code openly available. Since there is a relatively large overlap between the programs these two concepts cover, people commonly use the term Free and Open Source Software (FOSS) to refer to both.

So, have you used free and open source software? It is quite likely that you have! Are you running Mozilla Firefox or Google Chrome as your Internet browser? Both are free software. Many websites you visits are powered by the Apache web server, which is open source. Are you perhaps using an Android telephone? The operating system kernel these phones use is Linux, which is free software. You are probably using many more pieces of free and open source software than you realise. Notice that many of these software products have been created by successful companies and not by individuals programming in their basements2. Here is a 2008 video with Stephen Fry giving a quick explanation and his view on free software:

Whether or not free and open source software matters to you personally is entirely up to you. But at least the next time anyone asks you what free or open source software is: now you know the answer.

Find out more:

 

Notes:
1) For this text the distinction does not matter, but if you clicked this footnote you probably want to know a bit more. A compiler takes as input a file with source code and then writes an output file which can be executed directly. An interpreter also takes a source file as input, but translates it to machine instructions on the fly, so no intermediate executable is produced. Generally interpreters are slower, since they can’t read the entire source code file, but instead process it line-by-line. This makes it more difficult to optimise the generated instructions for execution speed. When distributing a program you also need to distribute the interpreter itself with it which is not the case for a compiled program. Nevertheless, they do have advantages as well, such as that they can more easily be tested.
2) Although, there is nothing fundamentally wrong with that 🙂