The Good, the Bad and the Dvorak
About 3 years ago I decided to start using Dvorak after see a friend using it. I was experiencing mild wrist pain from typing all day at my internship and for my undergrad CS homework. I'm glad I made the decision to learn Dvorak, it has since greatly improved my wrist health and my ability to type for long periods of time. I have encountered a few pitfalls along the way that I hope to share in order to aid anyone else in making a decision like this.
I didn't want to rely on an ergonomic keyboard because I knew that I might have to pair program or use a different computer to demo my work. Considering what my keyboard looks like now, I'd rather be able to use a normal staggered layout than have to bring my eccentric keyboard everywhere.
I needed a layout that was more ergonomic than QWERTY, and would work both on Windows, Linux, and MacOS. At the time I was evaluating this decision I was using Windows at work, Linux for personal programming projects, and MacOS for schoolwork. It came down to three options:
Colemak seemed like a good idea at the time because it retains the position(s) of common keyboard shortcuts. It is supported on Linux and MacOS but it was not supported on Windows at the time. (Circa A.D. 2022) It has since been added to Windows as an option for English keyboard layouts. If it had been available on windows at the time I likely would have gone with that instead of Dvorak. I considered Workman but it had the same problems as Colemak at the time. (It wasn't supported on Windows.) I ended up going with Dvorak because it satisfied my criteria.
On all of my computers (including my work machine) I bind SUPER+SPACE to toggle my keyboard layout, so if someone should need to type on my computer I can toggle the layout and hand the keyboard to them. It's out of the way of my normal typing pattern so it doesn't get accidentally triggered.
Switching layouts requires re-learning some Vim bindings. There are a few ways around this, but I have not used any of them because I'd rather not use any solution that relies on something being configured in my ~/.vimrc. One of the great things about Vim is how ubiquitous it is. You can find it on nearly every single UNIX/Linux machine. Requiring a pre-configured ~/.vimrc for even basic Vim usage removes a lot of the benefits of using Vim. I don't want to copy over my ~/.vimrc just to debug an issue with a webserver deployed to a Linux VM.