9 ms·
Ask HN: Has anyone tried adapting a court reporter keyboard for writing code?
- deleted 2y ago[deleted]
- elness 2y agoIANACR, but I would think it's not practical, in that the stenotype keyboard (the official term for the keyboard used by court reporters) is used to record the phonetic _sounds_ of what is being spoken, rather than the actual words. These phonetic codes do not resemble anything approximating the actual words they represent. Also, computer source code (whatever the language) typically contains variable names which often are (a) typically case-sensitive, and (b) abbreviated or even single characters. And even the basic syntax of the chosen language may not be easily capturable via phonetic sounds, what with open and closing parentheses, curly braces, square brackets, etc., and compound reserved words with prefixes (such as #foreach in Velocity template language). Again, IANACR, but I don't see how it could possibly work...
- massung 2y agoI seem to remember reading once that what is typed by a stenographer is also only meaningful to them. And therefore must be transcribed into English later by the same stenographer. Can anyone here confirm that?
- hoppyhoppy2 2y agoThat used to be true but it's much more automatic now that the process involves a computer translating into English in real-time (it's no longer a stenographer translating from their notes by hand).
- robodan 2y agoWhat stenographers capture is phonetic. These days a computer program translates that back into written language in real time. It uses knowledge of the language to pull this off. So it's a bit like autocorrect on you phone.
- mbirth 2y agoThere’s a great video from Matt Gray about this: https://www.youtube.com/watch?v=thdwajzqRFQ https://www.youtube.com/watch?v=thdwajzqRFQ
- bee_rider 2y agoI wonder how far programming-specific chorded keyboards could get. Like you usually only have a handful of variables in a function or method. I bet, at least, all the extra context provided by object oriented languages could be used to help the keyboard provide us meaningful suggestions.
- gf3 2y agoThis doesn’t really answer your question but I was on Jury Duty recently and was disappointed to learn that the stenographer was using a normal QWERTY keyboard and boring Dell computer. It seems that they used special software however that was connected to an audio feed with some recall ability. That being said there is some [support for stenography in the QMK programmable keyboard firmware](https://docs.qmk.fm/features/stenography https://docs.qmk.fm/features/stenography). I’m not sure how widespread its use is.
- deleted 2y ago[deleted]
- valbaca 2y agoThe special phrase you want is "chord" A stenographer's keyboard is a special kind of chord keyboard for spoken English. There are other kinds of chord keyboards, but look into those. For example: - https://www.charachorder.com/ https://www.charachorder.com/ - https://github.com/davidphilipbarr/Sweep https://github.com/davidphilipbarr/Sweep Related: https://news.ycombinator.com/item?id=30515912 https://news.ycombinator.com/item?id=30515912
- sanderjd 2y agoSomewhat hilariously, having perused your first two links, and followed the link from Sweep to Ferris, I still find myself having no idea how any of this works. (But I know a lot about how the firmware and PCB layout is designed!).
- deleted 2y ago[deleted]
- iepathos 2y agoI have a charachorder. It's similar to music theory where you can hit individual notes to make up a chord. With chording you hit multiple keys usually that are part of a larger word and it outputs the associated word. This means instead of having to hit every individual key in sequence to type out a phrase one character at a time, you hit multiple keys at once to output words at a time. In the time it takes to output a single character on a keyboard someone on a charachorder did the entire word already. The longer the word the more speed is gained from this. It takes a lot of time to learn though, like a solid month of practice just to get near speeds I have with normal keyboard. Significantly helps with hand strain from typing all day due to requiring far less hand movement.
- ano-ther 2y agoIs that language specific then? I would imagine that programming languages need another vocabulary and you will also need to deal with LongVariableNames, delimiters, tabs etc.
- mchannon 2y agoI can already type on a QWERTY keyboard way faster than I can think. That's one reason I haven't adopted a Dvorak habit. Most court reporters use software nowadays that renders their special stenotype skills obsolete.
- kadoban 2y agoDvorak is much more comfortable than qwerty, in my opinion. I never actually cared about speed, it just feels better.
- scns 2y agoThis. Using QUERTY immediately feels uncomfortable when i have to use it. Learned NEO2 which has layers accessed with modifier keys. Having a numpad under your hand is one of its' many advantages.
- Clubber 2y agoDvorak keyboard's fatal flaw is when you have to type on someone else's keyboard. Standardization has its benefits, even if less than ideal. Trackballs have a similar issue.
- deleted 2y ago[deleted]
- rgoulter 2y agoTo an extent, Vim and Emacs have a similar issue, especially if you spend time customising these. Often, the benefits from using an improved tool outweigh the costs of it being non-standard.
- MiddleEndian 2y agoI've exclusively used Kensington trackballs at home and work (along with trackpads on laptops I guess) since I was around seven years old, Dvorak since I was around fourteen. I really don't use other people's computers that often, but mice aren't that hard to use (just uncomfortable) and I can still type in QWERTY at about 25WPM but I'd have to look at the keyboard a bit. Trackballs and Dvorak are both more comfortable than their alternatives, but the real benefit is the reactions I get when other people try to use MY devices when they're not prepared lol
- rhelz 2y agoFor programming, querty-typing speed is not really a bottleneck for me. I already don't think as fast as I type. I would like to be able to take notes as fast as people are talking, though, and for that you do need a chording keyboard.
- kazinator 2y agoI don't think that's true. You've probably had moments when you had the entire design of a program in your head, and it required typing out hundreds of lines, or even thousands, all of them mostly conforming to the original idea. Sometimes, and more so in certain languages and the way they are used, massive amounts of boiler plate are required. Programmers use copy and paste techniques to do this, which are basically devices for massively amplifying typing speed and accuracy. When you copy 50 lines, and then change five places in the copy, that's faster than typing them from scratch. The editing commands are a kind of shorthand, which gets expanded in the editing buffer.
- Pet_Ant 2y agoI would argue that for writing code sure, but that programming also includes communicating with other people and writing documentation. In those cases being able to type faster really is an asset. I've worked with multiple older programmers whose typing speed is not up to snuff and they turn anything more than a trivial question into a Teams call just not to type things out. ...but yeah, for actually writing code IntelliSense or whatever just makes it fast enough that if you can touch type at any speed you are not gonna be bottlenecked.
- tdeck 2y agoHere is a great video on how the stenotype keyboard works and how words and sentences are represented: https://m.youtube.com/watch?v=OPZW8prlEYE https://m.youtube.com/watch?v=OPZW8prlEYE It's not a general purpose character entry method, but it's very interesting.
- SnooSux 2y agoThis guy on YouTube talks about his experience using a steno keyboard and Plover for writing code. https://youtube.com/@aericksteno https://youtube.com/@aericksteno
- wittjeff 2y agoand https://www.youtube.com/watch?v=jRFKZGWrmrM https://www.youtube.com/watch?v=jRFKZGWrmrM
- eigenblake 2y agoAbsolutely yes, but not me personally. The keywords to search for are Plover, Stenotype https://youtu.be/jRFKZGWrmrM https://youtu.be/jRFKZGWrmrM
- ivanjermakov 2y agoDepends on your goal. Chording technique is superior when typing words contained in the dictionary. Meaning that typing some rarely used word required typing it multiple times to "confirm". Writing code does not suite well for this, since coding with completion contains much more punctuation than plain text. Instead, check out ergonomic mechanical keyboards: low-profile, split, with columnar stagger, preferrably with 36 or less keys. Uncommon keys are behind a modifier key that acts as a normal key when pressed, but as a layer when held (called modtap). Also you can experiment with non-qwerty layouts, but IME it gives much less benefit than having a layered layout of physical keys. More info here: https://www.reddit.com/r/ErgoMechKeyboards/ https://www.reddit.com/r/ErgoMechKeyboards/
- op00to 2y agoCouldn’t you just create new chords that represent the most commonly typed code components?
- fn-mote 2y agoYes, but people who use an IDE will already have support for “code snippets” and completions, so you need to look for a different advantage to create.
- op00to 2y agoGood point - I bet completions are much quicker in practice than a chord for commonly used snippets. At least the number of chords a normal human can remember!
- moomin 2y agoNon-qwerty seems to me to be one of the biggest wastes of time we’ve come up with in search of productivity. The time spent learning it could be spent learning vi, learning Haskell, learning to shoot hoops or learning the guitar. Pretty much all of those would benefit you more.
- 2y ago
- mcint 2y agoMentioned by others, but I like project pages or home git repositories. https://github.com/openstenoproject/plover https://github.com/openstenoproject/plover https://www.openstenoproject.org/plover/ https://www.openstenoproject.org/plover/ An in-browser demo, https://www.openstenoproject.org/demo/ https://www.openstenoproject.org/demo/ Suggested, loved extensions, https://github.com/openstenoproject/awesome-plover https://github.com/openstenoproject/awesome-plover Chorded keyboard input methods, more generally, are worth looking into.
- egypturnash 2y agoA lot of the people customizing layouts for the Twiddler chording keyboard (https://www.tekgear.com/keyboards.html https://www.tekgear.com/keyboards.html) are programmers, and are building custom layouts that reflect this.
- casey2 2y agoThe ideal amount of code you should write to solve a problem is none, but I'm sure it's been tried to antisocial results.
- krapp 2y agoYes, I doubt the people paying you to write code will find that argument very convincing...
- intelVISA 2y ago...are people actually paid to write code? It's a means not an end!
- krapp 2y agoYes. For instance, when I was freelancing, I would be hired by people to write code for their websites, in Javascript and PHP. Telling my employers that I wrote the ideal amount of code (none) would not be satisfying to them. They would not be willing to pay me for the code I didn't write. Outside of the SV bubble, that kind of thing doesn't fly.
- fuzztester 2y agoNot me. I gave it a trial, but couldn't do justice to it. The key jurors got bored of the case. So I couldn't write a sentence.
- fuzztester 2y agoDownvoted for a good pun! The HNHEF (HN Humor Eradication Force), like the oft-mentioned-on-HN RESF (Rust Evangelism Strike Force), strikes again! Foo(l)ray!
- do_not_redeem 2y agoHumor on HN is generally accepted if it's clever or makes you think in some way. But "haha some words have multiple meanings!" doesn't quite meet that bar.
- fuzztester 2y ago>Humor on HN is generally accepted if it's clever or makes you think in some way. generally, eh? faa--aa--aa--aa--ukk. I don't know whether to laugh or cry at the ridiculousness of that statement. overall, to laugh, I think, makes more sense. because, according to you, majority wins? see https://simple.m.wikipedia.org/wiki/Majority_rule https://simple.m.wikipedia.org/wiki/Majority_rule and the downsides mentioned there. that means minorities should not have any voice? their voices should be suppressed by downvoting or criticizing them for not toeing the "generally" (sheesh!) accepted line? then how is this different from any other form of discrimination, such as racism, sexism or ageism? can we call it old-boys-club-ism? you miserably fail to convince, right at your first sentence above, bro. but that's par for the course for the many HNers of the hive mind / echo chamber kind, who think that everyone else needs to think like them, or else they are considered the wrong type of people, and try to brain wash them into thinking differently from what they already do, as you just tried to do above, or by knee-jerk reflex action, downvote them. I have seen that pattern often on this site. and it's not just me, others have commented about it too. because, you know, generally, it is considered that people should be tolerant of others' opinions, unless they are dangerous or something like that. and how is making a few innocuous puns, even if they are not "clever", dangerous? I bet you don't agree with that statement. but, and this is my key point, by the way, did you see what I did there with my use of the word generally? I used it in the same discriminatory way as you did. still editing, to make any wording changes and check for typos.
- lifeisstillgood 2y agoA while back in PyCon UK I met some of the people behind http://www.openstenoproject.org/plover/ http://www.openstenoproject.org/plover/ It’s awesome just how fast and accurate they can be, and most devs were of my mindset “wow can I learn to type like that - it woukd solve this problem and that” Till we found out just how much work is needed to get good. It’s a true skill, and sadly undervalued but something that just has too little pro for the cons - in my opinion as a developer. I already type at faster than I can code, and slightly slower than I can write English. A better keyboard, or the same keyboard at different workstations and laptops, or some typing tutorials woukd help me - but full on 100wpm is not going to help me debug Kerberos failures
- ChrisMarshallNY 2y agoI was never trained as a touch-typist. I still have to look at the keyboard as I type, and have never become a master CLI maven. But it hasn’t prevented me from writing thousands of pages of prose, and millions of lines of code. I think it has probably also saved me from RSI. I have a friend that is a master engineer, that has to change their career, because their arms are all screwed up (multiple surgeries didn’t fix it).
- seabass-labrax 2y agoIf one can get RSI in the wrists as a touch typist, why couldn't one get RSI in the shoulders or elbows as a 'hunt and peck' typist?
- ChrisMarshallNY 2y agoBecause we don't move in a repeatable fashion. I'm not in one position, all the time. My whole arm moves in fairly random fashion. The RSI is not because of movement, per se, it's because of repetition of the same moves (Thus, the "R" in "RSI"). Trained touch-typists keep their back straight, their arms at the same level, and basically only move their hands and wrists; always alternating between the exact same positions. I suspect that "extra-clicky" keyboards, which require a bit of force to actuate, don't help. It's highly efficient, and I have always been in awe of really good touch-typists. Most don't get RSI, and I'm not sure what the difference is, with the ones that do.
- deleted 2y ago[deleted]
- uberman 2y agoIn my experience, typing speed is never the issue. I've worked with truly 10x and better programmers in my life and the road block for even them is thinking not typing.
- zozbot234 2y agoThe real argument for using stenotype keyboards for coding is not typing speed, it's avoiding RSI. On a stenotype keyboard you "type" chords by pushing down with your arms, not your fingers - it's a bit like playing an organ, or a synth keyboard. You don't hear about many organists getting RSI (though some piano players do). The fingers also just move a lot less, much of the "moving" to different keys is also done with the arm muscles. I agree w/ others in this thread about the underlying challenges for using a steno keyboard for coding. You basically need to pick a custom chord for every program identifier, keyword or symbol, and somehow make those chords memorable. Perhaps a custom IDE featureset can help, leveraging the LSP or tree-sitter parsers?
- Swizec 2y ago> In my experience, typing speed is never the issue. I've worked with truly 10x and better programmers in my life and the road block for even them is thinking not typing. Thinking is a lot easier when your output is seamless and reliable though. Nothing sucks more than debugging typos. The code should work, but it doesn’t. You know you did everything right, but it just won’t work. 20min later … oh wait it’s a typo. Fix was perfect just mangled between brain and keyboard. Double bad when for whatever reason you can only debug on a remote environment and every iteration takes several minutes. Learn to type fast and reliably. It’s easily one of the highest ROI things I ever did.
- roland35 2y agoIronically writing less code is probably better!
- ChrisMarshallNY 2y agoThis is true. I always say that the best code I write, is the code I don’t write.
- lol768 2y agoI wish Plover supported Wayland.. it looks like a lot of work from lots of different people went into different workarounds but nothing that managed to end up in a mergeable state as yet
- zozbot234 2y agoDoesn't Wayland support custom input methods? How are you expected to type CJK text? Presumably, a steno typing program can rely on these same facilities.
- b5n 2y agoYou might consider using a templating system similar to `yasnippet` to expand abbreviations. https://github.com/joaotavora/yasnippet https://github.com/joaotavora/yasnippet
- shrubble 2y agoI have one that I bought, it is mechanical and has a 3 or 4 inch wide paper tape, but, it ALSO has a 9 pin serial port and can be driven by Plover (mentioned elsewhere on this thread) I believe. Haven't yet wired it up yet as it is in storage.
- bear8642 2y agoFeel it would be interesting trying a chording keyboard with a glyph based language - thinking APL, BQN and the like… There you could match the chords to glyphs rather than require the auto complete functionality others have suggested.
- Clubber 2y agoFrom what I understand, stenography adopts a keyboard to a language allowing a person to type multiple keys at the same time to write a "code" that can be translated to English. Programming languages don't have such constraints because the language can be fluid to adopt to the keyboard. A good example is C compared to the much less terse Delphi.
- Froedlich 2y agoCharles Moore, creator of the FORTH programming language, also created a one-hand "puck" keyboard that worked by chording. Supposedly, he used it to write programs in FORTH while driving to work. As far as the story goes, he programmed input-only, having no visual or audible way to review what he wrote. "...and back in the day, we had to chip the edges of zeroes to make ones..."
- larsiusprime 2y agoYes: https://www.fortressofdoors.com/stenography-for-programming/amp/ https://www.fortressofdoors.com/stenography-for-programming/... It was interesting and fun but I didn’t have enough time/patience to get really good at it. To get good requires both a lot of practice and building up a personal dictionary. Also steno itself is more adapted for transcribing speech than code, which uses symbols and special characters a lot.
- habitue 2y agoPreordered https://forgekeyboard.com/ https://forgekeyboard.com/ We'll see if I can actually use it!
- andrewflnr 2y agoAh, that's neat, close to what I've been imagining. :D
- brokenmachine 2y agoThat looks really hard to use.
- _jsdp 2y agoIf someone's really interested in doing this, I think the Moonlander (https://www.zsa.io/moonlander https://www.zsa.io/moonlander) keyboard has a stenography mode It always looks so fascinating to see someone type at like 350 WPM but that's not me.
- skibz 2y agoI don't think I have the skill to learn a stenographer's keyboard, but I would love to have a small chorded keyboard just for macros. I always liked the look of Doug Engelbart's one in the Mother of All Demos. It's very basic, but I'd be quite satisfied with something like that today. He demonstrates it at about 1:40: https://www.youtube.com/watch?v=B6rKUf9DWRI https://www.youtube.com/watch?v=B6rKUf9DWRI
- fragmede 2y agoThere are a bunch of macropads with open source firmware so you just need to find one you like and program in the macro/chording you want.
- SKWR-PLS 2y agoI have been using plover for about three years now for the majority of my time spent on the computer. I don't think I type more than 50 words a month using a regular keyboard. I still use (half) a keyboard for games, and there are some programs on Windows plover does not work with. There is an embedded steno engine (javelin-steno) so you don't have to use plover, but I have not set it up yet and just stick to using plover. I write all my code using plover, but I am not a professional programmer. I use emacs most of the time. I use this dictionary for my symbols https://sammdot.ca/steno/emily-symbols.png https://sammdot.ca/steno/emily-symbols.png, this one for typing almost any shortcut combination with my left-hand https://github.com/Abkwreu/plover-left-hand-modifiers/blob/main/README.md https://github.com/Abkwreu/plover-left-hand-modifiers/blob/m..., as well as this http://www.openstenoproject.org/stenodict/dictionaries/cross_platform_movement.html http://www.openstenoproject.org/stenodict/dictionaries/cross... for moving the cursor around and selecting text. The emily-symbol dictionary is fairly popular, and most users will have some set of dictionaries for shortcuts and movement. Its worth noting you can type single letters, so if you don't know a word or don't care to learn it, you can still type the word out. You don't have to memorize every single word.
- rgoulter 2y agoThe best value-for-effort upgrade to keyboards for coders would be to get a keyboard where each thumb can use two-three keys each (rather than just being able to use a single giant spacebar). Stenography looks like 'high effort, high reward'. Whereas, bringing keys like backspace, enter, esc, tab to within easy reach of the hands on home row is going to be a big increase in comfort (and I'd be surprised if it was slower).
- proaralyst 2y agoI've used my Kinesis Advantage 2 for years and am inseparable. I'd like to swap to the Kinesis 360 but my current keyboard is just fine and it feels like a small upgrade
- brokenmachine 2y agoErgodox. You can use it for steno as well if you want.
- jytou 2y agoI’m a computer engineer - a lot of programming, but also a writer so a lot of writing, and we also generally do a lot of writing in our daily lives - emails, chats, prompting… :D I am generally split between English and French writing mostly. I use a combination of Dygma Defy with its awesome thumb cluster, along with macros for frequent series of letters (think “tion” and such) as well as chords using https://github.com/rvaiya/keyd/ https://github.com/rvaiya/keyd/ . And I use the Optimot layout because I’m French, for English speakers, Dvorak is probably enough, but Colemak and many other alternatives offer various advantages depending on your usage. As many have hinted here, it’s absolutely not only about speed. It’s about comfort, both physical and psychological. Using the thumb is a great way to avoid moving the hands too much because now your pinkies don't have to reach keys on the side which generally causes a slight extension of the hand. After a year of using the Defy, I don't have any form of strain building up in the thumbs, even though I use them quite a lot - but still a lot less than other fingers. Macros for short series of letters are very powerful in my opinion: it doesn't necessarily goes faster as it breaks the flow of typing, but you have a lot less keys to press which also minimizes errors. The same goes with chords using keyd (I know it’s originally not exactly designed for that usage, but it still works great at least for me) - less keys, less coordination. Finally, the choice of keyboard layout is critical. Originally I’ve switched from the French Azerty to Bépo because I notices how much my wrists were moving when I was typing in French with Azerty compared to English in Dvorak. There was a huge difference and I could feel it in my bones after long sessions of typing. So yes, choose your layout wisely. As a last note, typing speed does matter. But it’s not about typing at the 0.001% fastest percentile. Typing speed will not make you really faster, but you just don't want it to slow you down too much. Typically, you don't want to be in the position where your thoughts go so fast that you feel the frustration of not being able to type fast enough and losing some of your thoughts in the process. Besides, for coding it’s much more about having the right tools at your disposal: powerful auto-complete and suggestions, easy refactoring processes, keyboard shortcuts to do everything you need, easy access to symbols on your keyboard/layout, etc. Typing speed is rarely an issue while programming compared to when writing plain text.
- jasonm23 2y agohttps://deskthority.net/ https://deskthority.net/ is the place to find a wide range of keyboard hacks and hackers
- replwoacause 2y agoIf your typing speed is a productivity factor while you’re coding, then you’re not coding, you’re doing data entry.