Skip to main content

On learning the Colemak keyboard layout

Before learning the Colemak keyboard layout, I managed to write at 70wpm in English on the Slovenian QWERTZ layout. I started learning the new keyboard layout in mid September 2010, about 3 weeks before starting university. I was not interested in maintaining a skill in both layouts as I hoped to completely replace my layout as soon as possible. However it took me about a month before I reached 40wpm on the Colemak layout. This was enough to completely abandon the QWERTZ layout and since, my writing speed has been increasing slowly but steadily.
US Colemak keyboard layout:


Slovenian QWERTZ keyboard layout:


The decision to learn Colemak was not related to writing speed, but to decrease the movement of the wrists while typing. The Colemak website claims that the fingers move 2.2 times more on a QWERY layout and that one can type 35 times more words using only the home row on Colemak. After all, hands are irreplaceable and one should take good care of them. The wrist-ache that I sometimes felt while writing on the QWERTZ is completely gone.
I am currently approaching the 60wpm on Colemak, and my goal is to reach 70 by February next year. This way I would match my previous typing speed and become a faster writer and coder, while keeping the movement of my fingers at minimum.
The disadvantage of learning a keyboard that is not in wide use is the lack of Colemak keyboards on public computers. This proved to be especially annoying last time I tried to type an email on a public computer, because I had almost completely forgotten the key placement on QWERTZ keyboards. What is maybe worse is typing passwords, as it has become a slow action, that could allow stand-byers to peek on the keys I press. If I have to use a public computer for more than a mere email check, I would switch the layout to Colemak.
In windows I do this by running a portable application that I either carry on a USB stick or download from the Colemak website. In linux I simply have to type setxkbmap us -variant colemak in the Terminal and the Colemak layout is ready for use.
Another problem is typing the characters š, č and ž from the Slovenian alphabet that are not included on the Colemak layout I use. That's why in informal writing in Slovene I simply replace those characters with s, c and z.
The location of special characters such as the square [] and curly {} brackets, the backslash \, @... is much better on the Colemak layout. For example, on the QWERTZ I had to press a combination of keys such as Alt Gr+F to get the [ character. Now it's just a keystroke away. For a programmer this is very significant as brackets and punctuation are much more frequent than in texts.
I still need a lot of practice to master the new layout. The letter G slows me down, as well as the apostrophe. Not that they are located worse than in the QWERTZ layout, but that I have not yet familiarized myself with their new position. From now on I will put more time into practicing my weaknesses.



Popular posts from this blog

Basic cell counting and segmentation in Matlab

Counting cells manually is a tedious error prone process for humans. Given a large data set of microscopy images this task can be achieved much faster by means of basic computer vision techniques. In this tutorial we will segment cells from an image following a method similar to the one presented by Yongming Chen in 1999. The method uses basic morphological operations and the watershed algorithm to segment the cells. Nowadays better methods for cell segmentation exist. This method was chosen for its simplicity and ease of implementation.

We start with an image of cell-like structures by Anna-Katerina Hadjantonakis and Virginia E Papaioannou.

A = imread('cells.jpg');
We convert the image to grayscale:
I = rgb2gray(A);

To be able to extract the dimmer cells, it is necessary to perform some local contrast adjustments
I = adapthisteq(I);

Objects on the borders can be caused by noise and other artifacts. We can eliminate objects on the borders of the image like this:
I = imclearborder(…

Project planning in a text file

Whenever you work on a project it is important to be able to plan it ahead of time. This holds true for small and big project, from planning a trip to the spa to building a spaceship. The small project plans can be maintained in you thoughts while bigger ones require tools to help you see the big-picture of the project and manage task at a lower level. There are projects which start with a fully prepared plan and projects which pivot overnight, thus invalidating any original plan. For the latter flexibility is very important, and tools like Trello offer a great solution because they can be adjusted to fit your project.

However, it may happen sometimes that the project starts adjusting to the tool or that you still want to maintain a bigger picture of the main points of the project. You may also need to produce a rough development schedule to serve as a long term road-map.

I have prototyped a tool (and defined a workflow) which allows you to plan such projects.

To better understand how…

Selenium testing in Jenkins with an in-memory X server

This articles explains how to setup integration testing of web applications (that require a browser instance) on a Jenkins server. The article assumes you are able to understand the title. If you need a reminder follow the links below.

What is Selenium? Read here.
What is Jenkins? Read here.
What is an X server? Read here.

If you are still puzzled, this article is not for you.

Integration testing of web application is more complicated than unit testing, because they require a browser instance to be running. In order to run a browser (such as Firefox) you need and X server. The testing server usually doesn't have one.

One solution to this is to run the browser instance on another machine through VNC. This has the advantage of not using the same resources as the testing server. However it requires setting up a new machine, and configuring the integration tests to run a browser in it.

Another solution is to use Xvfb, a display server that implements the X11 protocol, but does not re…