Over the past year, especially the last 6 months, I have rapidly lost the ability to use my hands for precise, repetitive actions. Using a keyboard and mouse has become especially difficult. I've had minor pain for several years, but a standing desk, wrist braces, or a vertical mouse would fix the issue for a while. Finally learning how to type on a Colemak keyboard layout helped a bit more, but it wasn't enough.
It started to become a serious conundrum seeing as how typing on a keyboard is my livelihood. Even beyond work, programming is my favorite hobby. The physical act of typing was a big part of that. The keyboard was my instrument.
I needed a way to continue programming so I could keep working at the very least. A more ergonomic keyboard was the first idea, but I knew it would be a temporary fix at best. While searching for alternative input methods I somehow stumbled upon a talk called Perl Out Loud. The speaker, Emily Shea, did a fantastic job demonstrating how powerful voice controls could be. Thanks to her guide to voice driven development I was able to quickly get started.
Overcoming the Loss
The software I had found is called Talon. It comes with a robust voice detection model and total freedom in how you use it. It's not open source but the stable version is free for anyone to use, and the developer works on it full-time. Because it doesn't come with any commands out of the box, though, it requires some diving in to the Talon community. The Slack group is full of friendly and helpful folk so any issue you run into is quickly overcome. There's always someone sharing new ideas and tricks to help make using a computer easier. Even though Talon itself isn't open source, there are tons of additional tools, scripts, wikis, and setups that the community actively maintains as open source projects. Finding a community full of people, where a lot of them are going through the same thing as me or otherwise have difficulty in using a keyboard or mouse, has been crucial in not giving up because of the pain.
Thankfully, the initial learning curve was such that I started using Talon for work within a week. I wasn't nearly as fast as when I used a keyboard, but without any pain I could get into a better flow state for longer periods of time; so it evened out quickly. While I wasn't worried that I'd have to leave my job anymore, I still wasn't enjoying my new setup. I had to completely remove the keyboard from my desk so that I'd stop using it to make a small correction or press a keyboard shortcut that I hadn't bound to a voice command yet. It was depressing enough that I gave up any non-work related programming despite how much I had enjoyed it a few months earlier.
Finding the Joy
After two months or so I was getting pretty frustrated. Going back to using the keyboard was out of the question, so I pressed on, but not happily. I needed to look for some more advanced tooling to improve my productivity and reduce voice strain. The Talon community came to the rescue with a fantastically innovative VS Code plugin: Cursorless. Instead of moving a cursor around with vim-like bindings, I could use short identifiers to target very specific bits of code and manipulate them quickly.
After using it for a few weeks my productivity had skyrocketed, and with it my enthusiasm for programming again. It brought back a feeling of mastery that I had lost when I set aside my keyboard.
I've pulled the keyboard back out for things like video calls so that people don't think I'm trying to talk if I need to type a little bit during the meeting, but I make sure not to use it when I can use Talon instead. I'm still trying to kick my habit of using the mouse; unfortunately there's nothing quite as seamless as Cursorless for the mouse yet. My hands still hurt some days but now I can continue enjoying programming, and some days are even good enough that I can hold a video game controller without pain afterwards.
The Future
When I first started using Talon it was supposed to be a temporary thing. I'll use it for a while, let my hands heal, and then go back to the keyboard. It was always a pipe dream if I'm being honest. I'm not sure exactly what happened to my hands 6 months ago to cause so much more pain than usual, but I do know this disability is unlikely to go away enough to use a keyboard and mouse full-time again.
The one thing that I regret from before all this happened is not being more conscious of really learning how to make accessible websites. I'd watch for the easy wins like making sure colors had contrast and that elements were semantic, but it doesn't take long to learn how hard your projects are to use once you start needing accessibility tools yourself. I've since started learning as much as I can about building accessible websites, hopefully one of these days I understand it better.
So for now I'm enjoying this new form of programming. I joke that I don't need a rubber duck anymore because I'm talking through my code constantly. The ability to put my code up on the TV and pace the room or sit on the couch and code has been a great alternative to being stuck at my desk all day.
Cheers to many more days of coding!
Let me know in the comments if you'd be interested in a series of posts discussing the more technical aspects of how I use Talon and Cursorless.
Top comments (0)