Josh Wulf

Josh Wulf

Open Source Developer Advocate

In Search of the Ultimate Keyboard Layout

How I halved my typing speed in one day with this one simple hack.

Josh Wulf

12 minutes read

In July of 2018, after 35 years of typing on QWERTY layout - 24 of those years touch-typing as a professional software developer and author, I switched to the Dvorak keyboard layout.

I couldn’t tell you why I did it. I just did. At the time I was training for a physique competition (that will be another blog post). But I don’t know if that had anything to do with it (maybe it was a low-carb moment…).

Anyway, I had never questioned the QWERTY layout. I never had any RSI, and I could type as fast as I could think, with no effort. Code flowed from my mind to the screen, automatically.

Somehow I started reading about alternate layouts, while researching mechanical keyboards.

I think the thing that tipped me over the edge was reading blogs where people were experimenting with different layouts, and getting a sense that they had a meta-skill - an ability not just to type on a different layout, but a fluidity in their relationship to typing. Especially Xahlee’s website, where he says things like:

i discovered that it’s because i was twisting my left wrist and use index finger to press keys like {1, 2, Tab, Escape, `},

I don’t think any efficiency gain in the layout can deliver an improvement when it is compared with QWERTY with 24 years of movement memory - and especially when it is competing with it. This guy did Dvorak for 10 years, and he agrees.

However, developing this meta-skill could unlock something. And that was tantalising.

So I went all in.

And I mean all in - I switched my iPhone to Dvorak, and all my computers (Ubuntu and Mac).

Initial experience on Dvorak

My typing speed immediately went through the floor. It was painful, and exhausting.

If I did not consciously think about my fingers, gibberish would appear on the screen as my brain switched back to its QWERTY pattern.

I lived and worked in Peru for three years, and spoke Spanish. It was like that. I went from effortlessly communicating in English to struggling to express myself, and becoming exhausted quickly. It was worth it - I became fluent in Spanish, and it changed how I think.

In this case, it destroyed my QWERTY typing ability. At one point I considered going back, but at that point discovered that I could no longer type any faster in QWERTY. So I figured I might as well go forward into the unknown, and see if I could unlock this meta-ability.

At first I used some stickers on my keyboard:

Then I found the DVZine website, which has a cool comic, and a printable sheet of keys. I printed those and stuck them on my keyboard.

Then I ordered a keyboard cover for my Macbook:

Thoughts on the Dvorak layout

I used the Dvorak layout exclusively for one year to the day, so that’s my sample size.

The Dvorak core idea is that most English words alternate vowels and consonants, so by putting all the vowels under one hand (the left home row) you end up alternating hands.

This means that you don’t have to do vertical travel with one finger - except when you do: like when you have to type ls. And take a look where that is - pinky finger. Brutal.

Also, Dvorak was invented in 1936, before coding. So colons, semi-colons, and braces are not optimized. And worse - keyboard shortcuts were developed way later, and totes optimized for QWERTY - so Cmd/Ctrl-C/V/X are not optimized for one-handed operation. And let’s be honest, that’s most of what I’m doing (Refactoring, I mean!).

I got good at using the mouse to cut/copy/paste, and using the autocomplete suggestions in VS Code - which were more energy to parse than to type previously. I also started thinking a lot more before typing, because it was so expensive an activity.

There are some modified Dvorak layouts for programming, but those move the numbers, and I was not down for that!

There are some things I really liked about it - the placement of the quote symbol and the hyphen are two bindings that I haved added to my layout using Karabiner and a meta key.

The day I quit Dvorak

I competed in a Hackathon in Paris in July of 2019 (we built a Minecraft game for kids with Cystic Fibrosis). The hackathon was all in French. I did a couple of years of French in high school, but it seems to have been stored in the same place that I put Spanish, because now I lapse into Spanish when I try to “think” in French. Anyway, it started to come back, and we won a prize.

Then I flew to Germany, joined a meeting at the airport via Zoom, then flew to Brisbane, Australia, and went straight from the airport to a two-day Haskell Functional Programming workshop.

I was an exhausted, hot mess. I made it through the first day, but lost it on the second day when we were (inevitably) writing a parser.

It wasn’t just that I couldn’t express what I wanted to with the keyboard. I couldn’t type fast enough to test my assumptions and experiment with what I was doing. It was incredibly frustrating.

At that moment I was seriously questioning my life choices.

I opened up Instagram on my phone, and scrolled back to my post where I started on Dvorak - and saw that it was exactly one year to the day.

So I peeled off my Dvorak keyboard cover, and posted a shot of my computer announcing that the experiment was done.


And found myself staring at a weird layout that was completely arbitrary and equally (maybe even more) impossible to type on.

I had trashed my ability to type.

When I was in my early 20s and living in a share house in New Zealand, one night while drinking I visited the neighbours. They were boiling up the flowers from a Datura plant in the courtyard.

I’d tried Datura once before, in a very low dose. This night, after a few drinks I’m like: “Oh yeah, let me show you how this is done”, and I down a cup of it.

The last thing I remember is sitting on a chair, and turning to a friend and saying: “I’ve taken too much”, then pitching forward to the floor.

The next thing I know, it’s the next day, and I’m in my bed on the second floor. My eyes are dry AF, and my mouth as well.

There is a book next to my bed (I read a lot). I pick it up, and read it, but can’t understand it. I say the words out loud, but they mean nothing. My brain can convert the symbols into sounds, but the sound does not create meaning.

I freak out - I mean, I’m glad to be alive, but I’ve destroyed my ability to read!

It came back gradually over the next week. But yeah, I’ve really destroyed my ability to type on QWERTY. It looks weird! Why are the keys laid out like that? Who came up with this madness?

Side note

Later, I read the book “The Teachings of Don Juan: A Yaqui Way of Knowledge”, which has a description of how Don Juan guides Carlos Casteneda in taking Datura. As Wikipedia says:

In traditional cultures, users needed to have a great deal of experience and detailed plant knowledge so that no harm resulted from using it.

Basically, we did everything not to do with it that night. I’ll do another blog post about the whole micro-dosing thing. Let’s stay on the keyboards here.

One thing that is relevant though, is that Don Juan tells Carlos that you have to start with the root of the plant, and gradually work up to taking the flowers.


I was in too deep now. I had to keep going. I was after the meta-ability. I had already paid for it with my typing ability.

When people asked me whether Dvorak was better than QWERTY, I joked: “Oh yeah, it makes me feel 37% superior to other developers.”

That’s a joke because of claims that Dvorak is 37% more efficient than QWERTY. My personal experience? The Dvorak layout ruined my life. Jokes! This is the mid-point.

In my research I had established this hierarchy:

The last one is for fully enlightened beings. BEAKL stands for “Balanced Effortless Keyboard Layout”. It isn’t even a layout - it’s:

a radical evolving theory and observations that strives to find the optimal efficient, ergonomic layout. The result is a series of progressively improved layouts as new discoveries and models are updated into the theory.

The meta-ability!

But I have a day job maintaining open source software and communicating on Slack, in Forums, and email. I have to continue to be productive while I develop this meta-ability.

So I’ve got to work up from the roots to the flower. Although, the way that all keys are under the fingers in BEAKL through meta-keys and layer switching is something that I have started to evolve as an intuition.

So I choose Colemak next. Here are the four factors that influence this choice:

  1. There is a layout for it on the Mac.
  2. You can buy a keyboard cover online.
  3. There is an iPhone software keyboard for it.
  4. Matt Mullenweg financially incentivizes devs at Automattic to use it.

I mean, come on! If Dvorak is all that, then how come no-one is putting their money where their mouth is?

That’s right. They’re not.

So I go Colemak.

The switch. Dvorak above, Colemak below.

Colemak has sixteen keys different from QWERTY. You can recognise the layout from the middle row: ARST.

Thoughts on Colemak

I think some of my QWERTY ability came back with this. Certainly the Ctrl-C/V/X movement memory.

But there were some things that I liked from Dvorak, and I was now thinking critically about my fingers and typing.

So I created this repo with my customized layout using Karabiner to modify Colemak with what I consider to be the best of Dvorak.

It was faster to get up to speed with Colemak than it was with Dvorak.

Enter Halmak

I had planned to use Colemak for one year, but three months into it, I saw a post on Halmak on Hacker News.

The name is a portmanteau of Colemak and HAL 9000 - the AI from 2001: A Space Odyssey. It was a project by Nikolay Nemshilov, a dev in Sydney.

I mean - a layout devised by an AI using a genetic algorithm over nine months?

We can argue about layouts all day - but all those other layouts were designed by humans. This one was discovered by an AI in an exhaustive search. Y’all can join Lee Sedol in retirement.

I was sold.

Here is the Halmak layout:

The Halmak layout.

One of the things I could see straight away was that the move of the punctuation into the center removes the side-ways motion of fingers that is particularly problematic, and something that BEAKL takes to the logical extreme.

I constructed an iPhone keyboard for it:

The Halmak iPhone layout.

This differs from the standard layout, because the iPhone keyboard is predicated on the location of punctuation in QWERTY and the resultant number of alpha keys per row.

Halmak’s layout differs from QWERTY, Dvorak, and Colemak in that respect.

I found that I could remember very easily where the keys are on Halmak - and I think this is an artifact of mapping them under the fingers, and eliminating the center.

I got up to a usable speed quickly with Halmak. I’m still not where I was with QWERTY when I started, but the ramp-up is much faster than it was with Dvorak or Colemak.

Now I am not sure if that is due to Halmak’s layout, or if I am developing the meta-ability…

Thoughts on Halmak

Putting the alpha keys under the fingers is right. It makes it easier to learn because of the physical mapping, and reduces sideways travel.

It is similar to typing on Dvorak in that it is alternate - the vowels are grouped, only on the right-hand, compared to the left with Dvorak.

One thing that is a struggle is that on QWERTY, Dvorak, and Colemak, the ‘a’ is the left pinky. That one key has not moved for me, and now it has.

The Halmak layout that Nikolay put together for the Mac preserves the QWERTY mappings for keyboard shortcuts - except when it doesn’t. Electron apps (meaning VS Code) use the Halmak mapping. This is an issue, because if you cut and paste code from the Internet for a living, like I do, then the shortcut changes between Chrome and VS Code (it reverses, because Halmak reverses C and V wrt QWERTY).

That’s too much complexity for me to manage, so I forked the layout and modified it so that shortcuts are consistently Halmak. That means that Cmd-X is awkward like Dvorak again. I bet that the AI wasn’t requested to optimize for that. I may address it with a remapping in the layout, plus a custom keybinding in VS Code, if it needs it.

The Halmak layout is not easy for me to use on the phone. There I use Colemak or QWERTY. The alternating pattern does not translate well to the thumb-typing on the phone, I think.

I will be staying with Halmak for the next year.


Remember that I said that I had no RSI previously. Well, somewhere along the way, I started to wake up in the morning with pain in my right shoulder.

I did a couple of things to address this. One is I got a Koolertron split keyboard with blank keys. The split configuration allows me to externally rotate my shoulders when typing, and the blank keys force me to touch-type.

The second thing is that I started rehabilitation training at the gym. Last year, my wife convinced me to compete in a physique competition with her. I ended up competing four times, and got to the State level, where I got second place in Classic Physique. You may have noticed from this post that I am OCD AF. So I got fully immersed in that.

The other day, a friend texted me about competing in Vegas:

So I joined a gym near my house, and started training, which necessitates rehab training for my shoulder. I also modified my sleeping position. I’ll do another post about that, because it’s as involved as this all on its own.

Suffice it to say that it is working, and my shoulder mobility has improved already, and the pain has decreased.

Recent posts

See more