Hacker News new | ask | show | jobs
by spit2wind 979 days ago
Stenography is the most ergonomic method of computer input I am aware of.

Stenography is a mapping of some combination of keys to some output.

A particular mapping is called a "theory".

One such mapping is phonetics, or the sounds of words. Let one key represent the "Kuh" sound, another "ah", and a third "tuh". Press them all down and when released, you get "cat". "Al" "Guh" "Or" "If" "Um" "Algorithm". 5 strokes instead 8. And that's not even trying to be efficient.

Another mapping is to use shapes. Three keys in the top row and one in the middle on the bottom looks like a "T". So, map that to something you associate with T.

A theory can be any mapping you want. Stenography is based on shorthand which was invented in the late 1800s. There are plenty of theories that already exist. You don't need to make your own.

When you write, you use some words or phrases frequently. Map those to convenient keys. Such mappings are called "briefs". Go crazy with them and you can reach 370 words per minute of real-time dictation.

You obviously don't have to be that good. I find that 30 wpm is sufficient to be productive at work. You can reach 70 wpm by practicing 15 minutes a day for a few months. You're a programmer. You can do it.

Expecting a lifetime of computer input? Don't optimize for easy key-to-output mappings such as QWERTY or Dvorak. Learn stenography.

See Plover and Javelin.

3 comments

For prose, it probably is the best, but have you tried it for programming? I find that my keyboard usage is dominated by text-editing shortcuts and punctuation characters. Not sure how well stenography would fit in.

On a similar note, though, I have amassed a "dictionary" of 50+ bash aliases, 1-, 2-, or 3-characters long.

Some "theories" emerged as well - I have groups of aliases whose names follow a pattern and depend on what subcommand (e.g. in git or kubectl) or options are included in the alias. This is good for mnemonics.

For extremely common commands, I ditch mnemonics and just choose a 1- or 2-character name that has no connection to the name of the command. For example r='cd -'. I chose "r" simply because it's on the opposite side of Enter, and I get to alternate my hands. (I guess this is a "brief".)

What got me into the alias hoarding business was the discovery of complete-alias[1] and, later, the progcomp_alias bash option. Turned out, you don't have to choose between aliases and programmable completion, you can have both.

[1]: https://github.com/cykerway/complete-alias

When I program I write words with two or three strokes thanks to lsp, company, yasnippets and <return> or <tab>. On my keyboard tab and return are accessible with my thumbs. I can perform any task related to my window manager, manage multiple monitors and windows with two fingers of the same hand, without moving my hands from the keyboard.

My keyboard is a macro-keyboard by default, "input" is a specific mode of the keyboard, that's vi but for whole desktop.

I type 120+ wpm, most of the keys I can type is an abstraction, the rest are characters.

All of that said, I do think there's no better thing as a split keyboard for controlling ergonomically your computer.

I was interested in stenography, but that's too much work to probably never reach the velocity and comfort I have right now.

Do you find that you have a particularly document-heavy workflow? Because I find I spend far more time navigating code than writing new code, and I try to let Intellisense do most of the letters. I've never felt that a higher WPM would help me in programming.

(Early on in my career someone I worked with had one of those "spend a whole week testing things and then emit a one character change" times, and that left an impression on me)

Then there's the APL programmers, who are all like "what do you mean 'a word'"?