Monday, May 31, 2010

The Ergonomic Argument

What is Steno Good For?

Part One: How to Speak With Your Fingers
Part Two: Writing and Coding
Part Three: The Ergonomic Argument
Part Four: Mobile and Wearable Computing
Part Five: Raw Speed
Part Six: CART, Court, and Captioning

Part three in my six-part series What is Steno Good For?

In part one I talked about how people who used speech synthesizers to communicate could use steno to speak as quickly and as easily as people who use their voices. In part two I concentrated on the fluency that steno brings to prose composition and programming. In this article I want to talk about the ergonomic benefits of steno, with special emphasis on split screen steno keyboard configurations.

When I first started studying steno, I was a qwerty transcriptionist, working for a television captioning company. Three hours of nonstop typing at breakneck speed in the morning, an hour for lunch, four more hours of frantic typing in the afternoon. By the end of the week, my wrists would be screaming, and I started to worry that my temporary day job was dooming my future career. I tried getting a Microsoft Natural keyboard, which claimed to offer a more ergonomic slope to the wrists, but I didn't stop feeling that Friday ache until I was able to abandon qwerty and start using my steno keyboard at work. I mentioned previously how typing each letter of each word can interfere with the smooth flow of composition, and in a subsequent article I'll get into more detail about the speed differential between qwerty and steno, but the relative potential for long-term physiological damage is just as important to mention.



In courtroom dramas on TV, you'll often see a court reporter sitting next to the bench, hammering away on an old avocado-colored steno machine while their notes stream into the paper tray. (Most steno machines these days use LCD screens instead of paper, but I guess directors find the old-fashioned ones more picturesque.) Sometimes TV shows actually go out of their way to cast real court reporters, but more often they'll just get a likely-looking extra, put her in a beehive and hornrims, and tell her to look stenographical. Do you know how to tell the difference between the real ones and the fakers? It's easy.

Watch their hands. Heck, even easier: Watch their forearms. The fakers will be frantically wriggling their fingers, assuming that the only way to keep up with the cross examination is to twiddle away like Glenn Gould on uppers.



The real ones, on the other hand, will be making one clean, relaxed stroke every half-second or so. Their hands will make small lateral movements across the keyboard, but the force of each stroke will come from their forearms, not their wrists or their fingers.



If an average word is six letters long, a qwerty typist has to move their fingers up and down six times in the space of a second to type 60 words a minute. That requires engaging the entire arm, from fingertip to shoulder, rapidly and without any rest for as long as the typist is typing. As one finger finishes firing, another steps up immediately, and the more quickly someone tries to type, the more violent and uncontrolled their motions become.

In steno, by contrast, you get a 14% bonus right off the bat (again, assuming that 6-letter average word length), because there's no space bar; all spaces are inserted automatically by the software. Then you get the ergonomic advantage of pushing each stroke statically from the forearm, like a pianist playing chords, rather than bearing the full force of each stroke a finger at a time. That cuts down on the overall percussive shock. There's also the crucial rest interval between each stroke, which allows the stenographer to relax, redistribute their fingers, and move back onto the keyboard for the next stroke, rather than forcing them to keep their hands always tense and wiggling, a major cause of cramping and typist's claw. And then, of course, the most obvious advantage is that for every six qwerty strokes you type, you only type one in steno. While you're racing feverishly to keep up at 90 WPM, in steno it gets almost boring if the speed drops below 180.

Now, all this is not to say that stenographers never get repetitive stress injuries. Type 40 hours a week for decades, plus countless hours of transcript editing, and even that 700% efficiency advantage won't necessarily spare your hands and fingers. Most stenographers use fixed keyboards that force them to hold their wrists parallel to the floor, an unnatural and unhealthy angle. I started on one of those myself, and coupled with the qwerty typing in my day job, I found the first part of steno school -- when I was only writing at 140 to 160 words per minute, six hours a week -- a painful and worrying experience. My dad, an infrequent computer user who hunted and pecked at a snail's pace, had recently undergone surgery for carpal tunnel syndrome, and I knew genetics were often a factor in RSIs.



While still a student, I decided to buy the most ergonomic machine on the market. The choice was simple. Only the Neutrino Group line (the Gemini, Gemini2, Piper, Evolution, and Revolution) allowed not only for a more natural wrist angle -- 45 degrees to the ground rather than parallel -- but, crucially, it also allowed for minor adjustments to be made quickly and easily in a wide range of motion. Now when I feel a twinge, I slightly adjust the yaw, pitch, or roll, and I feel a different set of muscles kicking in to take over for the fatigued ones. I'm not a pitchman for the Neutrino Group by any means (though I've given them favorable reviews, I've always made sure to mention both pros and cons), but they have a fair amount of anecdotal data showing that court reporters with severe RSI problems who switched to Gemini machines were able to lessen or eliminate their pain and numbness in a significant number of cases.

I've provided CART at speed over 200 words per minute for more than seven hours at a stretch, and my wrists felt far better afterwards than they would after only an hour or two back in my 100 WPM qwerty days. Steno lets me be less frantic and more efficient. My ergonomic machine keeps me from locking my arms into an uncomfortable position. I realize that Plover is primarily aimed at people who are not going to be shelling out a grand for an ergonomic steno machine, and that the $60 SideWinder keyboard I'm recommending to amateur steno fans does not have all the adjustable advantages of the Neutrino Group machines, but it does have all the other ergonomic benefits I've discussed in this article. Also, part of my long-range plan in releasing this free software is to greatly increase the number of people who use steno, potentially bringing down the prices of the ergonomic machines as their market size increases from "a tiny fraction of the estimated 40,000 professional stenographers in the US, the majority of whom chose to buy Stenograph brand writers for some inexplicable reason" to "a substantial number of people who spend most of their workdays typing on their computers, who have already switched to steno using $60 keyboards but who like it so much they're looking to upgrade".

Maybe it's a pipe dream, but it makes plenty of sense to me. Computers are a huge part of modern daily life, and RSIs are a big problem for many people who use them. Steno offers a possible solution.

Note to stenographic professionals (court reporters, captioners, and CART providers): I know you don't like being called "stenographers" and I know you think I should call the act of using a steno machine "writing" rather than "typing". Go argue with Truman Capote; it's all the same to me.

Friday, May 28, 2010

Download dictionaries.py!

Intrepid reader and tester Abigail just reminded me that I forgot to upload one of Plover's essential files, dictionaries.py, to the GitHub. This has now been remedied, so please be sure to download it before trying to run Plover. Many, many apologies!

Thursday, May 27, 2010

You know my Blogger profile icon?



That's a picture of my dear old Gemini2, which I bought back in 2006, while I was still in steno school. My friend Mel (who I met through my friend Sumana) is here from Boston, and I'm lending her my Gemini2 so that she can figure out whether learning steno might be helpful for her RSI issues. We're having a bit of trouble hammering out the Python2/Python3/pyserial/Tkinter peculiarities on her system, but I hope we'll get the hang of it soon. I'm really excited to have a professional Free/Open Source Software expert in on the project!

Tuesday, May 25, 2010

A Milestone

Embiggen to view detail:



Yep, we've finally gotten over the latest big hurdle. Plover can now receive text from either a steno machine (transmitting in Gemini PR serial protocol) or a $60 qwerty keyboard (e.g., SideWinder X4), and output it to a text file, with proper punctuation, capitalization, prefixes, suffixes -- you name it! Now, it's still pretty rudimentary. It's not yet smart enough to know that if you put an -ed on the end of "hat" you get should get "hatted" rather than hated, or that if you put an -ing on the end of "glaze" you should get "glazing" rather than "glazeing". All that will come eventually. And the next priority, of course, is to put all that cool formatting action on the screen while you're writing, instead of just after the fact in the text file. But for now, bask in the glory that is... The new version of Plover.

Go to the GitHub, download the source, and follow the instructions in the readme.

Please send me any bugs you might find! I wanna squish them as soon as possible, but I won't be able to unless I know about 'em.

(DigitalCAT-style dictionary users, if you want to take advantage of the new formatting awesomeness, I'm afraid you're going to have to send me your dictionaries one more time, so I can convert them again: plover@stenoknight.com. Sorry about that!)

Friday, May 21, 2010

The Good News and the Bad News

The good news is that we got Plover working beautifully on my Python tutor's Ubuntu machine. Both the Sidewinder X4 and the Revolution Grand. Outputting to file and making corrections to the file with the asterisk. It was great. We high-fived. He left.

The bad news is that when I downloaded the files, changed "Tkinter" to "tkinter" (as far as I know the only change that needs to be made between versions besides switching it to my com port, which I also did), and tried to run them on my Windows XP machine... No dice. The Sidewinder version is giving me "IOError: can't do nonzero cur-relative seeks" and the Gemini PR version is giving me "TypeError: sequence item 0: expected str instance, int found". I don't understand! Everything is the same, and it was working so gloriously before. I am baffled and disheartened. But hopefully, if my tutor has the time, we'll be able to figure out what's going on and fix this together on Monday. And my tester has Fedora, so maybe it'll work on her machine even though it's currently b0rked on mine. Sigh.

Thursday, May 20, 2010

Update: No Update! (yet)

We are coming down to the wire. My Python tutor has returned from his travels and I'm trying to get as much done on Plover as possible before one of my prospective testers comes down from Boston in six days and borrows my spare steno machine (a Gemini2), so she can bring it home and attempt to learn steno. She's primarily interested because she's had severe RSI problems in the past and still has to do a lot of typing, so I've sold her on the tremendous ergonomic benefits of steno, and of a Gemini split-keyboard writer in particular. That reminds me that I should write part three of my six-part series, What Is Steno Good For?: The Ergonomic Argument. Look for that in the next day or two. In order for her to get much use out of it, though, we have to finish incorporating the serial steno machine protocol into the currently sidewinder-only GUI base of Plover. Then we have to fix the file output so it makes corrections properly. And then we need to figure out the punctuation/capitalization/adfix issue, though at this point I'm contemplating just writing a script that prettifies the log file after the session's over using regular expressions. It feels like a cheat, but it's a way to get useful text out of Plover in the short term (assuming we can fix the first two problems), so I'm willing to let it lie for the time being. Yesterday my tutor and I had a two-hour session, but we're still not finished solving either problem. We've got another session scheduled for tomorrow, and if it's still not where we want it, we might even meet Monday as well. So thanks for your patience, Plover users. The next big step is coming soon, if you can just hold out a little bit longer.

Sunday, May 9, 2010

Qwerty is to Steno as Tetris is to This Guy



Quick post, because I'm in the middle of a marathon transcription session -- three hours of audio due before tomorrow morning. I keep from going out of my mind with boredom by running playthroughs of video games on my other monitor, so I can watch them out of the corner of my eye during pauses between words, changes in speakers, ums and uhs -- that sort of thing. In putting together my video playlist, I stumbled across this video.

As most of you are probably aware, beginners play Tetris by thinking each move, then doing it: Left, left, up, up, right, down, et cetera. More advanced players hold down the keys until they repeat and then learn to release them at just the right moment. But look at this guy's hands. He's playing chords. Instead of thinking of each discrete move he wants the block to take, he's memorized the chords that deliver a certain block in a certain orientation to a certain section of the screen. He's essentially taken the same step that stenographers take when they go from 60 WPM on the qwerty keyboard to 260 WPM on the steno keyboard. He couples that with complete mastery of his reflexes, perfect recall of the playing field, and an absolute lack of hesitation. Yes, my friends, we have found the Ed Varallo of Tetris.

Friday, May 7, 2010

Yet another dCAT bug squished

If you use a dCAT dictionary, download the stenowinder.py I just uploaded to the Github a minute or so ago. It fixes the bug that was happening when the O- key was pressed either alone or with the asterisk. I'll squish every last one of those dCAT bugs, if it's the last thing I do!

Thursday, May 6, 2010

Collaboration!

So Moss, my awesome programmer friend, came down from Boston and worked with me today on Plover for four glorious hours. The good news is that we made several changes to the structure of the program, arranging things more logically so they could be handled in a less convoluted way and laying the groundwork for the next several things on the agenda, namely:

1. Reconciling the Gemini version of Plover with the Sidewinder version of Plover. (Currently they're in two separate files, and the Gemini version doesn't interact with the GUI part of the program.)

2. Making it so that words deleted by the asterisk key in the GUI are also deleted in the log file. (Currently log.txt just records all translations made during the session, even if they were supposed to have been deleted.)

3. Fixing the bug where, if more than the maximum recognized number of keys is pressed on the Sidewinder at once (which seems to be around 13 and up), the program freezes because the "released keys" list is longer than the "pressed keys" list, and so it can't figure out when to process the stroke, flush it, and move on.

4. Eventually adding special syntax recognition, so that punctuation, capitalization, glue strokes, and adfixes all work properly. This is at the bottom of the list, but it's an important step to get to in terms of Plover's actual usefulness as a method of text entry.

The bad news is that we haven't actually implemented any of those features -- yet. We did add a test file (stenowinder_tests.py) for developers to use in figuring out dCAT versus Eclipse compatibility, and we also made two little helper files to streamline the process of swapping out dictionaries and changing the 'dCAT' or 'Eclipse' flag in stenowinder.py.

* If you have a dCAT dictionary, rename it 'dCATDict.py', then download dcattktest.py, stenowinder.py, and tktest.py. Run dcattktest.py and it should launch the GUI in the proper format.

* If you have an Eclipse dictionary (like ploverbd.py), rename it 'eclipseDict.py', download eclipsetktest.py, stenowinder.py, and tktest.py. Run eclipsetktest.py and it should launch the GUI in the proper format.

I know this seems more convoluted than it used to be, but it keeps people from making mistakes when switching between dictionary formats, like I did last week when I thought I'd fixed the asterisk bug and it turned out I'd just forgotten to switch between 'dCAT' and 'Eclipse' format. The difference between this solution and the alternate files I made (and later discarded, namely dcattest.py and dcatwinder.py) when I first converted the StenoMaster dictionaries is that eclipsetktest.py and dcattktest.py are just tiny little launching programs, not an entirely separate fork of Plover, so I can make as many changes as I want to the main program and they should still work fine. It's better. Trust me. More later!

Tuesday, May 4, 2010

Spoke too soon?

After I gave up in frustration and went to do the dishes, I suddenly got a brainwave between the Chana Masala pan and the teacup and thought that I knew exactly where the problem was. I ran to the computer, made the fix and... Well, it seems to work. I think. As far as I can tell. More testing needed, my intrepid dCAT dictionary users. Please let me know if it's still busted!

Asterisk bug still not fixed

Yes, it's the bane of my existence. The asterisk bug is still giving me hell. Argh. Hopefully I'll be able to whup it in the next day or two, but until then, dCAT dictionary users, I think you're out of luck. Many apologies.

Sunday, May 2, 2010

Another bugfix for dCAT format dictionary users

Hey, Sonja informed me that the asterisk key wasn't working in stenowinder with dCAT turned on. I think I've just fixed that. Get the update at the Github (just download stenowinder.py and switch the setting from Eclipse to dCAT, then run tktest.py as usual) and let me know!