For many years in grad school I had severe RSI (Repetitive Strain
Injury) problems. For a year or so, I was basically unable to type, so
the early versions of Sunrise and my Ph.D. thesis were written almost
entirely using voice recognition. These days I'm mostly symptom-free,
as long as I pay attention to my work habits and use proper
equipment. Nevertheless, it was a huge impact on my life for about 6
years, and I'm indebted to the many people who have made it possible
to write code by voice.
My own main contribution was to work on maintaining and fixing bugs
in
Emacs Voice
Recognition Mode, which interfaces Emacs
with
Dragon
NaturallySpeaking and makes it possible to navigate and select
text by voice. It's not being actively worked on, but as far as I know
it should still work with current versions of NaturallySpeaking.
Some other useful resources are:
- The main resource for information about coding by voice is
the VoiceCoder group
at Yahoo.
- NatLatex,
an English-looking macro language for writing LaTeX documents. The
problem with dictating LaTeX is that all the
\blah
commands are hard to dictate, because you have to say "backslash
blah", and because it doesn't look like English, NaturallySpeaking
doesn't know how to space it correctly. NatLatex is a set of Perl
scripts that translate the dictated document into LaTeX so you can
dictate something like "integral from zero to open-brace two greek
pi close-brace x squared with respect to x" and have it be
translated to \int_0^{2\pi} x^2 \,\mathrm{d}x. Even
though my hands are mostly OK these days, I still use this to
write papers, because it's quite handy.
- NatLink,
a Python interface to NaturallySpeaking. Using this, you can define
Python functions that are called when you speak a command, and you
even have access to the full recognition results if you want. A very
powerful tool, that I've used to program speakable browser
bookmarks, to change the settings of NaturallySpeaking depending on
the window you are interacting with, and to (ahem) write a voice
interface to the game Civilization IV which has an interface that's
mostly in (editable) Python code.
RSI-related
Regarding RSI there is a lot of confusing and conflicting information
(just see
the
Wikipedia
article and in particular
the
discussion
page.) Instead of trying to provide a fair and balanced view, I'm
just going to list the resources, treatments and equipment that has
helped me. Your experience may differ, but if you are suffering from
RSI I strongly encourage you to engage in "bold, persistent
experimentation" to find what works for you. Don't avoid spending
money because you aren't sure something will help, being pain-free is
worth taking chances!
Here are some books I'd recommend:
- The Trigger
Point Therapy Workbook. This is an awesome book!
The techniques described in this book
not only helped my arms and shoulders recover from RSI, they also made a
big difference for the neck and headaches I've been suffering
from since my
motorcycle
accident, and for a recurring achilles tendon problem.
- It's not Carpal Tunnel
Syndrome. This book, written by an RSI sufferer and
his physical therapist, believes that initial root causes cause
changes that then become locked in a self-reinforcing feedback
loop leading to pain and numbness. Thre is a free 5-page handout
on their theory on their page, if you don't want to buy the
book.
As far as ergonomic equipment, I can highly recommend
the
Kinesis
Advantage contoured keyboard. It's expensive, but it's
worth it! I've now had 4 of these, both at
home and at work, and I'm a big fan. You can remap all keys to suit
your needs, and there's an optional footswitch that I use instead of
pressing the Shift and Control keys. Don't be satisfied with the
default keymaps, move keys and combinations you use often to more
easily accessible places!
Kinesis also has the best
adjustable keyboard
tray that I've found. It adjusts easily and has no
protruding parts that bump into your knees.
The
chair is also very important. I'm still
searching for the perfect solution. I think the key is that no
static position will be good, you need to move around. (One of the
unforeseen advantages of voice recognition is that you become
untethered to your keyboard. I used to enjoy standing up and moving
around as I was dictating.) I have an old version of
the
Stokke
Balans kneeling chair (without back rest), which allows you to
rock back and forth and shift your position. This is nice, but
it also tends to make your kneecaps hurt after a while. It's also not
compatible with using the footswitch. Something like
the
Gravity
Balans chair looks very intriguing, but the price is out of
this world. I'm going to experiment with an adjustable sit/stand
desk at work, I think.