Sunday, January 5, 2014

Vim London Demo!

Yikes, it's been ages since I wrote on this blog. Many apologies; my day job wound up completely eating my life this fall, and everything else dropped by the wayside. I've got a huge backlog, so I'm going to post about this awesome Plover demo at Vim London on October 29th, and after that I'll post a massive linkdump of all the fantastic stuff that's been happening with Plover over the past few months. I'll do my damnedest not to let things pile up like this from now on.

Okay! Vim London!

The amazing Drew Neil and Emile Swarts were kind enough to show Plover off to the Vim London crowd.

First, Emile's demo:

(Transcript here)

A few comments:

Aren't chorded keys worse for RSI?

This is addressed a bit in Drew's talk, but the simple answer is this: When most people talk about chorded systems, they mean one-chord-per-letter systems such as the Twiddler. Obviously that's going to take more work than one-key-per-letter systems like qwerty. The difference is that steno is a one-chord-per-syllable system, which works out to about one chord per every six letters. Much more efficient. Also, problems like "emacs claw" happen when the hand is twisted into unnatural shapes on a repetitive basis. Steno keeps hands in a relaxed, neutral position by default, and doesn't require them to deviate more than a few millimeters from that home position.

And the way it's been engineered is -- mainly people with disabilities, who really can't type that fast.

That's not actually the case. The steno keyboard was originally designed for professional court reporters (who tend not to have manual disabilities, though there's a proud tradition of blind stenographers). However, I think there is definitely considerable potential in steno for people with various disabilities, which I address in my essay How To Speak With Your Fingers.

Next up, Drew's demo:

(Transcript here)

But you can type all of the alphabet with the right hand.

Drew meant left hand, not right hand. (':

Mirabai Knight, who's demonstrating here, she founded The Plover Project, and she can type at 240 words per minute.

Actually, I just got certified up to 260! Woo!

I absolutely loved watching these two videos. They make me incredibly happy. Many thanks to Drew, Emile, and Vim London! Be sure to check out Drew's Twitter account; he's been posting screenshots of his forays into writing with Plover, and they're all great fun.

For an extra dose of meta, here's a brief video of me using Plover in Amara to caption the videos above. Thanks to Mqrius for reconstructing the audio after the fact. You can see that this video is about 20 seconds off of true realtime, because I rewinded three times to correct errors while transcribing the audio, something that's extremely easy to do when using Plover with Amara; I just set KH-FG to {#Shift(Tab)}. It's great being able to do offline captioning without lugging a foot pedal around, the way I used to!

And here's an even briefer video of me using Plover to caption a lecture in Vim. The video quality is deliberately blurry, because this was actually taken at my day job and I don't own the content. But you can see how quickly the screen fills up when I'm actually writing in realtime.

The one thing that frustrates me when using Plover with Vim is that I can't seem to figure out how to keep it scrolling consistently; when the text gets to the bottom of the screen and I make a new paragraph, Vim wipes the whole thing and then starts the cursor again at the top of the screen. This isn't ideal for realtime captioning, because the client might want to consult the text in previous paragraphs. When I recorded this, I was writing to Eclipse (proprietary steno software) on my big laptop for my client, while simultaneously writing to Plover on my Surface Pro (thanks to my Infinity Ergonomic's dual Bluetooth outputs). I'd love to use Plover and Vim exclusively and retire Eclipse altogether, but unless I can figure out a way to get around that wiping/jumping issue, that might not be possible. Tips on hacking Vim to make it more steno-friendly are definitely welcome!


Unknown said...

About the scrolling issue, you could try setting the scrolloff option. Vim's documentation notes that setting it a very large value, like 999, causes the cursor line to be centred.

Mirabai Knight said...

Thanks, Ajay! I'd tried fiddling around with scrolloff, but it hadn't worked. I'll definitely see what happens when it's set to 999.

Tom said...

As Ajay said, I think :set so 999 will solve your problem.

Also, continuing the theme of keeping the cursor in the centre of the screen, you may find the following .vimrc settings helpful:

:nnoremap n nzz
:nnoremap N Nzz
:nnoremap * *zz
:nnoremap # #zz
:nnoremap g* g*zz
:nnoremap g# g#zz

qwair said...

Vim's default behaviour is to treat all characters between newline characters as a single line, and to scroll them all away together when just the beginning of that line gets off screen.

You can make vim automatically insert a newline between words when the line gets too long (in this example, over 60 characters) by adding the following to your .vimrc:

set textwidth=60
set formatoptions+=t

This would make scrolling consistent, and would make lines shorter and more readable in my opinion. For extra readablility you might also want to add a left margin, like so:

highlight! link FoldColumn normal
set foldcolumn 6

All this can be done in addition to keeping scrolling to the middle line of the screen, like Ajay and Tom suggested.

Mirabai Knight said...

Just wanted to let you both know that these instructions have been incredibly helpful! I've got it working beautifully now, and I couldn't be happier. Thanks so much!