6 ms·
How she envisions stenography would be used for programming: http://stenoknight.com/WritingCoding.html http://stenoknight.com/WritingCoding.html Programming i
by naner 15y ago
How she envisions stenography would be used for programming:
http://stenoknight.com/WritingCoding.html http://stenoknight.com/WritingCoding.html
Programming is especially suited for steno, because there's so much boilerplate to write again and again, even in an eloquent language like Python. If I want to define a function, I have to type:
def someFunction(arg): stuff.
That's eight strokes just to get started, plus 20 more strokes to write "someFunction", "arg", and "stuff". In steno, on the other hand, you could write something like DFD in a single stroke, and it would put in the def, the space, the parentheses, the colon and the carriage return automatically, then jump you up to the space after the def to write your function name and arguments, then then drop you back down to the body of the function, all in four strokes. Best of all, once you defined that function name in your steno dictionary, you wouldn't need to worry about remembering to write out the name in camel case each time. Just use a single stroke like SPHUPBGS (pronounced "smunction"), for instance, and start thinking of it as just another word, instead of two words mashed together in a lexically unnatural way.
I love the way Vim has mapped a useful command to each key of the qwerty keyboard. It's immensely powerful once you get used to it. But it's only got 26 keys to choose from, and it takes a long time to learn which key does what, since the correlation between "move one word forward" and the "w" key is pretty abstract and arbitrary. In steno, you could certainly keep using just the w key, if it's what you're used to, but you could also, say, map the "move one word forward" command to a single stroke like "WOFRD" (pronounced "woffered"). That's mnemonically much more useful than just "w", and an even bigger advantage is that the number of possible one-stroke commands is almost infinite. Instead of one stroke equalling one letter, steno lets one stroke equal one syllable, which is about five times more efficient quantitatively. As a qualitative improvement, the advantage is inestimable.
- Jach 15y agoAn interesting take, though I thought most IDEs have most of those features already? (I personally dislike features that auto-jump me around apart from auto-indent.) It's funny she brought up vim since vim can be made to do those things as well; it's not limited to 26 characters since you can have multicharacter commands in any mode just fine. I still don't really "get" the syllable perspective but it seems like it's just a mapping of one stroke (I think my confusion is what constitutes a "stroke") on specialized hardware to several on a qwerty board? So I guess you're limited to the number of keys on a qwerty board for single-point-of-entry commands with vim, but you could always use the specialty keyboard and map the output of those as multi-character vim commands... It seems the main benefit is having those mappings done for you and available system-wide.
- naner 15y agoI still don't really "get" the syllable perspective but it seems like it's just a mapping of one stroke (I think my confusion is what constitutes a "stroke") on specialized hardware to several on a qwerty board? As far as I can tell, steno works by mapping a "stroke" (a combination of keys pressed at once -- like a chord on a musical instrument) to a "syllable" which appears to be a chunk of a word for prose but apparently can be any chunk of text for things like programming. I think this is why she recommends a 45$ "gamer's keyboard", most regular keyboards have a limit to the number of simultaneous key presses that will be registered. Also it appears that when using a keyboard for steno you still only use a limited number of keys. From the video it looks like she barely strayed from the home position.
- sliverstorm 15y agoIsn't the standard keyboard simultaneous keypress limit already something like 9 keys though?
- tomku 15y agoKeyboard ghosting: https://www.microsoft.com/appliedsciences/AntiGhostingExplained.mspx https://www.microsoft.com/appliedsciences/AntiGhostingExplai... Gaming on a keyboard with severe ghosting problems is infuriating, and I'd imagine that steno would be just as painful.
- ken 15y agoAnother description which I found easier to understand: http://www.dribin.org/dave/keyboard/one_html/ http://www.dribin.org/dave/keyboard/one_html/
- honza 15y agoDas Keyboard has unlimited n-key roll-over. Press all keys at once, all register.
- loup-vaillant 15y ago
- sliverstorm 15y agoNot a programmer here, but would you say your productivity is impaired by boilerplate? I always got the impression the thing that ate up time was compiling, debugging and thinking. Not typing.
- wahnfrieden 15y agoThinking and debugging take up a lot of time, but typing time is still nontrivial and worth optimizing. Especially in debugging where moving around the file quickly is important, vim's movement commands make this quicker.
- conradev 15y agoI do agree that being able to navigate an editor like vim quickly is the determining factor in code writing, however, I do not think WPM is directly related to one's ability to do this. Even though I don't type insanely fast, I can hit a 1-5 key combination in an instant.
- FuzzyDunlop 15y agoCorrect me if I'm taking this the wrong way, but I don't think WPM even applies to programming. To audio typers, secretaries, etc. it's a good measure of how well you can keep up. To a programmer, you can only go so fast when you're not even dealing with human language that has no natural flow, and the quirks of the editor of your choice. Especially on, say, a Mac, where you could be typing a '#' far more times than you ever would in any other situation, or a backtick or pipe. It's probably telling that we're favouring languages that reduce the syntactic complexity of coding, like CoffeeScript in favour of Javascript, Ruby, maybe Python, Clojure, and the functional languages like Haskell and Erlang. Not just because it's easier to read, but because it's easier to type. I might just be talking rubbish, of course. But I wouldn't use typing speed as a performance metric for a programmer.
- jiggy2011 15y agoIt's not much of a performance metric , but I don't really enjoy typing very much in situations where I have decided what I'm going to do and then have to type it out. I can't generally think and type very well at the same time. This means for me that trying a random idea I have quickly is much more enjoyable in say python that it is in Java. Sometimes I want to just try something random in Java but I really can't be bothered to type all the code required to create a new class, handle exceptions and then also do the compile and run. If I had super fast typing skills or a more concise language I would find much less friction is doing that, this would make my programming time much more educational and make me better in the long run.
- agumonkey 15y agoSomeone introduce her to APL.
- jerf 15y agoAll of that either already exists as described, or keystroke-count equivalents exist, in every programmer editor. If people aren't using it in existing editors they sure aren't going to pick up a radically different keyboard layout to use it. (Said the guy who types in an increasingly-heavily-modified Dvorak layout. I recently mapped Backspace to "change window" (i.e., ALT-Tab in most WMs), since I long since moved Backspace to Caps Lock. You can't be much more willing to fiddle with your keyboard layout than I am.)
- Vivtek 15y agoI'm incredibly excited about Plover - but only for English typing, not coding. I guess for typing strings in code, maybe. But coding? No. The ratio of typing to thought in coding is vanishingly small.
- roryokane 15y agoVim already has the capability to allow pressing a key chord to perform a custom function. Just use the plugin vim-arpeggio at https://github.com/kana/vim-arpeggio https://github.com/kana/vim-arpeggio. And you can already do something like “DFD” expanding to “def someFunction(arg): stuff” by using the vim-snipmate plugin at https://github.com/garbas/vim-snipmate https://github.com/garbas/vim-snipmate. That “snippets” functionality is based on TextMate’s snippets feature, and I know Eclipse supports snippets too. Thus, steno is not necessary for either of the advantages mentioned. However, it still might be good to have the mindset of using tools like vim-arpeggio more, and steno still might make typing variable names slightly faster.
- DennisP 15y agoHmm...seems like it might be possible to use vim-arpeggio to implement steno on vim. Then whenever you're writing prose, turn steno on and type 200wpm in insert mode, while still having all the vim editing features available. Edit: "Part of the frustration was that, try as I might, I was never able to make my steno software work effectively with Vim, my favorite text editor." http://plover.stenoknight.com/2010/04/writing-and-coding-with-steno.html http://plover.stenoknight.com/2010/04/writing-and-coding-wit... I wonder why.
- ploversteno 15y agoBecause all proprietary steno software builds in a 1.5-second buffer between when the stenographer enters the stroke and when the stroke is transmitted to an external program. Imagine having to wait 1.5 seconds for each command to execute. It's infuriating. Plover is the only steno software that uses a length-based stroke buffer rather than a timing-based one, so it sends commands immediately, making it work beautifully with Vim and every other external program I've tried it with. The difference in usability is startling.
- DennisP 15y agoAh, ok. I was actually thinking of something different: implementing steno chords in vim itself, instead of hooking it to an external program like plover. Since vim-arpeggio already handles simultaneous keystrokes, it seems it'd mainly be a matter of importing all the chords into vim-arpeggio. But I didn't know anything about steno before today so I'm probably over-simplifying. And it's pretty interesting that plover can work with vim...I'd love to see a blog post or screencast showing how that works.