Somewhat 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!).
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
I 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 friends that are master engineers, that have to change their careers, because their arms are all screwed up (multiple surgeries didn’t fix it).
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.
The 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?
> 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.
IANACR, 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...
I 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.
What 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.
That 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).
I 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.
This. 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.
Depends 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.
Non-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.
I 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.
A lot of the people customizing layouts for the Twiddler chording keyboard (https://www.tekgear.com/keyboards.html) are programmers, and are building custom layouts that reflect this.
I 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
I 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.
This 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). I’m not sure how widespread its use is.
Humor 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.
>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?
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.
The 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://github.com/davidphilipbarr/Sweep
Related:
https://news.ycombinator.com/item?id=30515912
Somewhat 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!).
If anyone is interested in a fun chording layout, check out ASETNIOP. It’s surprisingly easy to use.
A while back in PyCon UK I met some of the people behind 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
I 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 friends that are master engineers, that have to change their careers, because their arms are all screwed up (multiple surgeries didn’t fix it).
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.
The 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?
Ironically writing less code is probably better!
> 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.
IANACR, 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...
I 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?
What 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.
That 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).
I 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.
Mentioned by others, but I like project pages or home git repositories.
https://github.com/openstenoproject/plover
https://www.openstenoproject.org/plover/
An in-browser demo, https://www.openstenoproject.org/demo/
Suggested, loved extensions, https://github.com/openstenoproject/awesome-plover
Chorded keyboard input methods, more generally, are worth looking into.
I 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.
Dvorak is much more comfortable than qwerty, in my opinion. I never actually cared about speed, it just feels better.
This. 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.
It's more about comfort than speed.
Can you give some names/information on the software that is used ?
Absolutely yes, but not me personally. The keywords to search for are Plover, Stenotype https://youtu.be/jRFKZGWrmrM
Depends 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/
Non-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.
For some it's not about productivity, but about getting a few more years out of your fragile body before RSI ends your career.
Couldn’t you just create new chords that represent the most commonly typed code components?
Yes, 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.
I 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.
Feel 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.
You might consider using a templating system similar to `yasnippet` to expand abbreviations.
https://github.com/joaotavora/yasnippet
A lot of the people customizing layouts for the Twiddler chording keyboard (https://www.tekgear.com/keyboards.html) are programmers, and are building custom layouts that reflect this.
I 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
This guy on YouTube talks about his experience using a steno keyboard and Plover for writing code.
https://youtube.com/@aericksteno
and https://www.youtube.com/watch?v=jRFKZGWrmrM
Here is a great video on how the stenotype keyboard works and how words and sentences are represented: https://m.youtube.com/watch?v=OPZW8prlEYE
It's not a general purpose character entry method, but it's very interesting.
The ideal amount of code you should write to solve a problem is none, but I'm sure it's been tried to antisocial results.
Yes, I doubt the people paying you to write code will find that argument very convincing...
For 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.
I 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.
This 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). I’m not sure how widespread its use is.
Not 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.
Downvoted 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!
Humor 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.
>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
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.