Hands-Free Coding (2020)
joshwcomeau.com
joshwcomeau.com
I now use copilot almost exclusively when writing code. I've learned how to give it prompts so that writes code the way I would've written code. Occasionally it surprises me but when I dig into the solution, I realize that's a good one and start using it intentionally.
That said, navigation still a pain (sometimes literally). I mostly use the arrow keys and page up/page down to get to where I want to go. It is usually not worth the hassle to build special macros for editor specific navigation. I believe having meat macros like I developed with Emacs is no longer a win. Maybe if I had abstract syntax tree driven navigation, it would be worthwhile.
I find orthobullets.com to be a very useful source of information on orthopedic conditions. Give it a look and see if your symptoms really do align... https://www.orthobullets.com/hand/6021/cubital-tunnel-syndro...
I've also lost fine motor control and can no longer do things like write. One of the drugs they put me on gave me tremors that have not gone away so now I can no longer write or use a soldering iron. Sometimes tremors are bad enough typing is literally hit or miss. I miss juggling and cartooning.
For the first 10 years I chased doctor after doctor hand surgeon orthopedic surgeon etc. looking for a cure. Nobody gave me consistent diagnosis and even some of the recommended surgical interventions for some of my symptoms were not recommended because I didn't present in a way that indicated the surgery would be successful.
I've tried numerous things acupuncture, physical therapy, trigger point massage, and drugs like gabapentin and tricyclic antidepressants. The only thing that gave me any relief whatsoever was lidocaine injections in trigger points around my shoulders. The release lasted only 48 hours but it was so wonderful.
I've given up that there's any medical intervention that will help and I just have to live with it the rest of my life.
Obviously, no where near as bad as your case, but there nonetheless, for years. MD after MD told me there was nothing wrong with my hand, so nothing they could do.
Finally, after no longer being able to trust my right hand at all, because it would just randomly let go of whatever I was holding, no matter what size object, I finally went to a DO who takes a wholistic approach. After a few sessions of soft tissue therapy, involving massage, scraping and cupping, combined with stretching and strength training exercises, I'm pretty much back to normal. He worked from my neck down, to get the nerves to "floss" correctly through my system, down to my hand.
I've now moved past the treatment part, but as long as I maintain the daily stretches and strength training, both hands are pretty much back to normal. I do have minimal pain in the right hand if I have a particularly grueling work week, but I'm back to using normal keyboards and even laptop keyboards. And I can mouse and use my phone with my right hand again. I can even trust my right hand to not drop things anymore.
Of course, YMMV, but traditional doctors couldn't get the job done for me. I'm so grateful it didn't discourage me after a years long journey, and I'm grateful for the wholistic approach that worked.
Editing to add: I have dealt with RSI as a software developer myself. It started during a months long flare up of new digestive problems (which I didn't connect it to until later). I had to quit programming for years after being unsuccessful at finding long term relief, fortunately if I wasn't doing things that exacerbated it too much I would mostly feel fine and every once in awhile I would test things out to see if I had recovered. Close to ten years later, I found that I could begin working on the computer again and after some accidental experiments I realized that what was keeping the rsi under control was taking probiotics that I had begun taking for other reasons (and had kept taking because of the notably positive effect they had on my mood). When I stopped taking the probiotics for a few days the nerve and joint pain would start up again and recede when I re-started them. Eventually I had an antibiotic (which was not the first time in that time period I had taken antibiotics) and afterward don't seem to need the probiotic anymore <shrug>.
After reading about chronic pain and psychosomatic disorders I think it’s ridiculous how many providers don’t know much about that or are afraid to even mention it. Even after little talks discussing psychological causes of chronic pain with providers I experienced pain relief for days.
Talking about the chronic pain in therapy or not, reminds me of how I got injured and how I was treated by my former employer. The more I talk about these feelings and these events, it triggers significant rage some 30 years later. The only way I found to deal with it is by practicing nonattachment. The easiest way to explain is that it's not that I don't feel the anger but it's an attenuated emotion. It passes by without sticking (much) and with some breathing, fades into nothingness till the next time.
Why not? Wouldn't macros be more useful to customize your editing experience now that you use speech recognition, given that it's pretty unusual? In general, I'd expect customizations to have more value for people who use tools/languages in an abnormal way, not less.
Creating macros is a way someone can take control back from the disability. If I write some macros to do some of my work, I've taken back some of what I've lost. I used to be very critical of all these not fully useful solutions that disabled developers can come up with and I've become much kinder about it because it's more about the process of learning how to live with a disability and take back some of your agency that it is about creating any sort of accessibility tool.
It's hard to convey just how different the user experience is in your hands don't work and you try new speech recognition. One way to think of the relationship between the disabled person and UI customization tools is that customization tools are my agent or proxy for my hands. The macro solution send you down the path of having to memorize context specific commands and say a whole lot of words to get a small effect. A good adaptation looks inside the application context both in terms of what can be done and what data has to be operated on and then interprets natural language to generate what the system thinks is the desired result. That's the beauty of things like chatGPT. It's interpretation was right is usually pretty damn close.
With coding, this is why I like copilot. It takes my natural language and context of the code generated and generates code that is pretty darn close to correct. I speak a little bit and get a big result. I'll never have a force multiplier like chatGPT or copilot with macros.
btw, small pushback. The way we use tools and programs is not abnormal. Your comment shows just how much judgment people have when a user violates a designers UI vision or perceived physical norms. They think that speech interface is mediated by some form of artificial stupid should be the normalize standard but, whom I to judge. :-)
If a user can't make use of the UI provided, it's not the users fault, that belong squarely on the UI developer.
The macros that I'm talking about are exactly the opposite - you say a small number of words to produce a large effect (or, however much effect you programmed into them), e.g. when you define an Emacs function. What macros are you talking about?
> btw, small pushback. The way we use tools and programs is not abnormal.
The vast majority of people do not use speech interfaces to tools and programs, so this use is abnormal by definition - abnormal means "outside of the norm" and this is very much outside of the norm.
> Your comment shows just how much judgment people have when a user violates a designers UI vision or perceived physical norms.
No, it does not. "Abnormal" is not a judgement or a negative term - it literally just means "several standard deviations from the mean" (for some value of "several") - you can describe someone having "abnormal intelligence" (and the connotation with that phrase is almost universally positive). Don't read negative meaning into other peoples' comments where it doesn't exist.
> If a user can't make use of the UI provided, it's not the users fault, that belong squarely on the UI developer.
I'm not assigning fault to the user. You're assuming things here also.
Pity there's no Jetbrains support.
YouTube channel https://www.youtube.com/@PokeyRuleJams/videos
To that end, I'd like to try to build a maximally ergonomic setup (for the back and neck in addition to the hands) that doesn't necessarily have to conform to the standard chair+desk setup (e.g. a custom setup where one lies on their back with their monitor suspended above their face and their hands lying to their sides with a split keyboard).
In order to do that, I need the principles of ergonomics for the hands/wrists/arms, neck, and back - something that's been very challenging to find on the internet, as most of my search results are either trivial knowledge, blogspam, or just regurgitate the standard advice about various joints being at right angles without revealing the principles that drive that advice.
Where can I find those principles?
There are definitely different ways to use your body with different effects, but I think the problem is over use of any specific form.
What specific type of RSI are you talking about – in the wrists, back problems, neck, something else? RSI isn't just one thing. Where do you think it's going to hit you hardest?
My advice would be speak to a physio, take a break for 5 minutes every half an hour or more often, and above all get a voice recognition system if you're worried about your wrists/fingers being damaged from typing. Also, don't spend a ton of your life in front of the computer.
Link to Plover to save you (potentially) painful typing: https://www.openstenoproject.org/
Did you have any trouble using it for coding? It feels largely geared towards natural langauge and seems like there could be challenges using it for code. Though I haven't practiced enough to try yet.
And honestly, with the custom python scripts support, this seems like a perfect use case for some GPT enabled programming. Something like "command: gpt add react button component".
(Alan Perlis)
;-)
AlexNet [3] was just 10 years, 9 months and 17 days ago, September 2012. The same time from now it would be the year 2034, February. Can anyone really dare to say we won't have the JUST language by 2034? I'll raise you even one further: in 30-40, hopefully 20, years we will have a JUST anatomical compiler and we will say programatically to the cells of various bodies: just build an eye here [4].
[1] https://en.wikipedia.org/wiki/Alan_Perlis
[2] The lolliquote is from 1982, Epigrams on Programming, epigram 93, http://www.cs.yale.edu/homes/perlis-alan/quotes.html
[3] https://en.wikipedia.org/wiki/AlexNet some prior work was 2011, Dan C. Cireșan et al., "High-Performance Neural Networks for Visual Object Classification", also quoted in the AlexNet paper. Both papers relied on "Convolutional Neural Networks designs introduced by Yann LeCun et al. (1989)". Curious if Mr. Perlis knew about Mr. LeCun's work. Here is Jürgen Schmidhuber giving a talk about the paper in October 2011, https://www.youtube.com/watch?v=rkCNbi26Hds The 10-year-old YouTube comment "I was still under the impression neural networks were rarely used any longer." is particularly funny.
[4] "The Collective Intelligence of Cells During Morphogenesis with Dr. Michael Levin", https://youtu.be/p4Fm7jLNrpg?t=3898 from 1:04:58 to 1:07:30, but the entire presentation is showing the future that is to come, in biology, in programming, in bio-programming.
Lot's of successful companies started of just by someone trying to solve his own, or some colleague/friend/relatives specific problem
I have noticed split keyboard users in my office have better posture throughout the day whereas those tiny mechanical keyboard users droop their shoulders close and end up sliding down the chair putting their spine in a very awkward position promoting more severe medical conditions.
It could be just that split keyboard users care more about their posture but from my observation it seems everyone starts with a good posture in the morning but tiny keyboard users end up with a very bad posture within a few hours.
Would be interesting to know what others are seeing
I would guess that the author has relapsed by now, unless he made a lifestyle change not mentioned in the article (e.g. more ergonomic desktop, or started regularly exercising and stretching).
I will add too that I have yet to find a study that supports the notion that Carpal Tunnel Syndrome is caused by computer use. Vibrating tools are the main culprit, along with genetics.
It is easy to find subjects who did nothing else but the suspected activity develop RSI, so it is a weird claim to suspect it might not exist. For computers in particular, the "emacs pinky" is common knowledge, unless you'd think people suffer from collective hallucination (maybe a side-effect of emacs?).
It is definitely a condition that improves with rest, even if not totally and over a long period (months rather than days). There is also some level of evidence that suggest that psychological factors have an influence (there are a few obvious potential links that would explain it, but I'm not familiar enough with the research).
I really like the name, considering emacs as "Escame Meta Alt Control Shift" abbreviation. All of that keys typically pressed by pinky.
"RSI" isn't a thing. It refers to an umbrella of conditions and therefore doesn't have a single "cure".
I was working on a large library with a verbose coding style and a clear plan. It was a year long sprint typing more than ever before. Started feeling pain down the side of my forearm and random needle stabs in my hand. Doc said I required surgery.
Instead I took a many-pronged approach to ergonomics:
1. 2 keyboards and 2 mice. Switched to a Microsoft ergonomic on my desk and a flat keyboard on my lap. A mouse on the desk and another on the other side on a pedestal by my chair. Switched between them all frequently.
2. Stretches and massage before/during/after typing. Many times per day. https://m.youtube.com/watch?v=TSrfB7JIzxY was a good help.
3. Held my wrists straight and fingers completely loose when typing. Imagine the classic zombie pose with their arms straight out and hands loose. That was me. Moved my whole arms to type rather than move my wrist or fingers at all. Same with the mice.
4. Stopped wearing any rings or a wristwatch.
Took months of this for the pain to go away. And, had to continue it through the project. But, since then I’ve never needed to type nearly that much and the random pain never came back. If I get on another typing bender I can feel a reminder that my hands don’t like it. And, if I ignored that I’d probably get right back into trouble. But, for the past couple decades I’ve been staring at code for 100x more time than I spend actually typing.
I don't want to shut them off completely, but I want to reduce them as much as possible.
e.g. I am actively shutting down my monitor and using screenreaders for any long-form articles.
- "Computer, run unit tests on this codebase."
<processing noises>
- "Unable to comply."