Outside of work, I love to work on projects, such as:
I spend a lot of time working to manage tendinitis in my arms and hands, a repetitive stress injury (RSI) exacerbated by typing. In 2019, I found that an ErgoDox EZ really helped. That year, I also found Pilates. Working with a knowledgeable instructor has been another cornerstone in my strategy to address RSI, and has had other significant benefits in walking, running, posture, and back pain.
I built a
Rube Goldberg machine carefully engineered system to multiplex input devices like keyboards, mice, and microphones; output devices like the display and headphones; and my various workstations and game PC.
It starts with a simple HDMI KVM. The KVM is attached to a 30” display in the middle of my desk. On the left of the display is a MacBook I use for work; on the right is a MacBook for personal use.
Although the monitor is always connected to the KVM, most of the time the keyboard and mouse are not. Typically they bypass the KVM to connect directly to a Mac Mini (which is not itself connected to the KVM at all). The Mac Mini acts as a Synergy server, allowing me to seamlessly move my mouse from the work MacBook on the left to my personal MacBook on the right.
This works no matter which machine is displaying to the monitor through the KVM at a particular moment. During work hours, I can use the big monitor with my work machine and still mouse over to change the song I’m listening to on my personal machine without an interruption of workflow; after work hours, I can use the big monitor with my personal machine and still babysit any after-hours maintenance I need to do.
I also have a USB switch that controls whether the input devices are connected to the Synergy server as normal, or to the KVM directly to play games or interact with machines during boot.
That leaves audio. I use a system of mixers and splitters to multiplex audio, too. I really like that I have dedicated physical knobs to control both audio from my computers to my headphones and audio from my microphone to my computers. I can attach two pairs of headphones and two microphones with my current setup, which I don’t usually need to do, but can be helpful during video calls with one other person physically present with me, or during testing.
Aside from what’s attached to the KVM, I also have the Mac Mini that works as my Synergy controller and performs a few other duties, Ubiquiti UniFi networking gear, a Synology NAS, a Raspberry Pi 4 (with the PoE HAT) I use as a home server, a PC server I use for Plex, and probably other stuff I have forgotten.
I’ve been testing a TinyPilot for access to server consoles over the local network without needing a real keyboard and monitor attached. The software is pretty alpha at this point, but it’s amazing how well it works.
I prefer macOS, and whenever I’m on another platform I especially miss how easily the command key lets me switch between a desktop environment and a Unix terminal without having to switch mental modes. That said, I have doubts about the future of end-user control on macOS, and I’m testing Linux as a workstation on an old machine as a kind of insurance policy.
VSCodeVim for Visual Studio Code exceeds my expectations. In 2019 I switched from Emacs to Vim to reduce key chording, hoping this would improve my RSI (which it did, happily). After hopping around to various Vim frontend GUIs—and I’m still keeping my eye on how Onivim 2 is progressing—I landed on VSCodeVim. Frankly, based on my experience with squarely mediocre Emacs key mapping extensions, I didn’t expect it to be any good, but it’s excellent—complete, consistent, and of high quality.
I use and highly recommend Fastmail for email service. 1Password is my favorite password manager, supporting end-to-end encrypted sync via local apps, including a beta Linux desktop app. I write notes in Inkdrop, which, while a bit rough around the edges, is the best app I’ve found with end-to-end encrypted sync and comprehensive cross-platform support. I back up macOS with Arq. I journal in Day One, which is probably the app I’ll miss the most if I need to move to Linux. I keep a repository of anything remotely interesting I’ve seen online in Pinboard, but I wish it were a bit more reliable and had better mobile apps. I read a lot of blogs, newsletters, and a few Twitter feeds in Feedbin. I keep up with friends using the usual iMessage, Slack, and Discord, as well as Signal and Matrix (via Element). WireGuard keeps me connected to my home network on any device.
I taught myself React from scratch in 2020 to be able to answer this question :).
I built keymap.click to show my layout, focusing on how it helped me overcome debilitating RSI pain in 2019. You can click around on the site to explore the key mappings on your own, or you can take a guided tour of my layout.
(I know, Oryx can tour keyboard layouts now, too. However, at the time I started the project, that feature hadn’t shipped yet, and I didn’t want to abandon it halfway through.)
The keymap.click website is a very personal project for me. When my RSI got particularly bad in 2019, I wanted to test whether an ErgoDox EZ would help me, but it took a while to convince myself to buy one. I built the site to explain to someone in my shoes exactly how I use it, so they can see not just that the keyboard helped me, but precisely how. For me, the onset of RSI was a very scary experience, because I depend on my ability to type for my job. I felt a spiraling fear that I’d have to leave my career altogether, and I’m intensely grateful today that that hasn’t proven necessary. The ErgoDox EZ I got was a big part of that, and I hope my site can help other people with the same kind of RSI that I have.
One way the ErgoDox EZ helped me is that I can map my Shift key to the thumb cluster and the brackets to the QWERTY Shift key position. Just that one change drastically reduced pinky use and eliminated pinky chording, resulting in significantly less pain when typing for many hours.
I also appreciate some general quality-of-life improvements on the ErgoDox. For instance, when I saw Nikita’s post on arrow keys, I added an arrow key layer to my layout. I have a pretty unremarkable function layer as well, and a mouse layer that can use if my mouse arm is hurting. The source code for my complete layout—including a bunch of experimental things that don’t see daily use— is available on GitHub for the very curious.
My keycaps are mostly stock. I did get a grab bag for some macropad projects, and have added some keys from it for color, but that’s it. I’d love a nice set of custom keycaps, but I haven’t found one that’s actually currently for sale that appeals to me.
At work, my ErgoDox EZ has quiet-ish Cherry MX Red switches, since I don’t want to tempt a violent co-worker revolt and my ultimate execution at the hands of an angry mob. At home, I enjoy loud, clicky Cherry MX White switches, and my home office mate doesn’t even seem to mind the extra noise. I’m grateful for her accommodation—aside from just how nice it feels for my typing to produce a good CLACK, I never accidentally trigger switch activation on the white switches, while resting my fingers on the keyboard with the red switches frequently produces errant input.
An important part of the keyboard is the chair and desk that you and it sit on (respectively, usually). I sit on an Aeron chair provided by my job while I am not going into the office. I had always heard that these were worth the investment, but was skeptical until I used one for this job. When I learned how to adjust it to my body, I experienced less back pain, and I’m grateful to be able to borrow one while working from home.
The keyboard sits on an old motorized standing desk that my work was going to scrap. I’m too lazy to stand without motivation, so I don’t do it every day, but on some days RSI or back pain can be particularly bad, and standing naturally improves my posture to keep me pain free on those days. I also like that it, like many other standing desks, can be moved to be a bit lower than most nonadjustable desks sit, allowing me to keep my elbows at an angle closer to the prescribed ninety degrees for ergonomic correctness.
A laptop with a keyboard as ergonomic as the ErgoDox EZ, so I can work away from my desk without pain. When I see the MNT Reform, I can’t help but imagine designing a replacement keyboard based on the physical ErgoDox key layout. Maybe someday. I’m also keeping my eye on upcoming System76 Linux laptops, which will feature a QWERTY keyboard with programmable firmware.
I keep thinking about an integrated interface device multiplexing system—a single system that combines my audio routing, Synergy, and HDMI KVM. I’d love the audio routing system to be digital, perhaps like Dante, to eliminate analog hiss and EMI from cell phones and power adapters. I’d also like the system to be as integrated as possible in order to reduce the total number of cables on, around, and under my desk. Such a system could allow software control of the KVM as well and combined with host software and QMK, the user could switch KVM inputs from the keyboard.