HNHacker News
TopNewBestAskShowJobs

maoeurk

330 karma · joined September 15, 2017

submissionscomments
maoeurk··on Speaking in code: hands-free programming
Those are fair points! I got too excited and didn't explain what I was talking about clearly -- so it isn't great general advice. To clarify for those who may need it:

I think my case was a bit exceptional in how bad it got. I went from having no hand problems at all to having acute pain to the point where I couldn't function in daily life in a matter of weeks. Things such as working, driving, or opening doors with doorknobs became essentially impossible for me. I couldn't even sit in most chairs or sleep without my wrists being in constant pain.

2, 4, and 5 are the most useful because they're preventative. 3 is to deal with the physical trauma and 1 is do deal with the mental trauma.

I agree with you that being on psychoactive drugs is not ideal, but when your life becomes nothing but sitting around in pain, I think that they're a reasonable short-term solution. Although non-hand based exercise is surely better if you can manage it, I found that running with my wrists taped up was fine and helped as much or more than the drugs, and I stopped the drugs after a few months when I felt more able to deal with it.

maoeurk··on Speaking in code: hands-free programming
That's a great point! There are quite a few specialized products for voice recognition and in fact domain specific voice recognition should surely be easier than trying to recognize general natural language. This is especially true, in the case of programming languages, because they tend to be so structured. There are a few major differences between most uses of voice recognition and programming though:

The biggest issue is that most coding is not producing code; it's navigating and editing existing code in a non-linear way. I think that makes it extremely difficult because it needs to be integrated with static (or dynamic!) analysis of a codebase. And once we take that step, we should be able to turn programming from shuffling text around to a more conversational (not unlike REPL-based) development.

There are also issues with the ability to pronounce things in some programming languages and being able to abstractly refer to these (often not linear) things. Because voice recognition is slower in terms of commands per second (as far as I've seen), we'd need more powerful and expressive ways of communicating intent to reach parity with keyboard-based programming.

What I was hoping for with "interactive metaprogramming" was to be able to do project-wide queries and edits. It seemed that trying to find a voice-based equivalent to the way we program with text and keyboards was never going to be a great fit and that, really, we should have more powerful tools for interacting with code anyways. Lojban provides a lot of fertile ground for these ideas, I think. For example, Lojban has a really powerful way of talking about space, time, relative positions, anaphora, and meta-linguistic correction/negation. I can imagine that being incredibly useful for programming by voice.

And I think the conversational style is key because the biggest issue with voice-based interfaces is presentation of relevant information. Lojban is based on relationships so it would be very natural to query the language itself with datalog-like evaluation, which provides an elegant solution to the hidden commands problem.

edit:

In regards to the price, I'd be willing to pay quite a lot. Losing the ability to program was one of the darkest times in my life. Soul-crushing, really. I was completely lost, unable to work and unable to enjoy myself. I remember when I thought $300-350 for a keyboard was expensive when looking at the Kinesis Advantage 2, but today, I'd be happy to pay 10 or 100 times the price knowing what it did for me. It's the difference between being able to work and enjoy myself (not being in constant pain from trying to work anyways) and laying around feeling hopeless and worthless.

maoeurk··on Speaking in code: hands-free programming
As a developer with carpal and cubital tunnel syndrome, I'm extremely excited about the possibility of voice programming. However my experience was that it's somewhere between non-existent and impractical when I last tried it.

It was actually the inspiration for my undergraduate research which explored (scratched the surface, really) the use of Lojban[0] as an "interactive metaprogramming language". The benefits of Lojban are that it is significantly more expressive than making sounds that are mapped to vim-like commands via a hacked natural language recognition engine, is isomorphic between text and speech (you can speak mathematical expressions with precision), is phonologically and grammatically unambiguous, and is standardized/has a community -- even if it's a small one.

I still think it's a paradigm shift and would be indescribably more efficient and powerful than traditional code exploration and editing. And I would love to continue, but it's such a massive project and working on something that foreign alone for long enough is really isolating because it's hard to explain. Lojban also has its fair share of problems for this and would need to be further standardized and scoped out for computers, so there's really not a clear path forward in any case.

Regardless, for those _currently_ suffering from hand and arm issues preventing them from coding and/or working, my advice is:

1) don't panic. Go on antidepressants and/or see a therapist if you need to; it's going to take a while to recover

2) rest as much as possible and make sure to get a lot of sleep

3) wear wrist braces to sleep to prevent further damage in the short term (consult a doctor and all that, you want to avoid muscle atrophy so don't use them for too long without starting some kind of muscle strengthening program)

4) invest in proper tools (standing desk + ergonomic keyboard is like magic for me, I can actually type again)

5) gain weight if you're on the low-side of normal weight -- this helped my cubital tunnel syndrome quite a bit by giving my ulnar nerve more protection

And finally, don't give up hope; I'm able to work full time and don't wear wrist braces to sleep at all anymore after a little over a year.

[0]: https://en.wikipedia.org/wiki/Lojban

maoeurk··on How China Sidestepped QWERTY
I use ibus on Linux, it has an option in the advanced settings to "Use system keyboard layout". This applies the default layout to all other input methods.

Notably Ubuntu comes with Dvorak for Japanese as a default, an option I've never seen anywhere else. So there might be special support for your use case. This solution doesn't scale well though.

My keyboards also both have hardware output to Dvorak, which would probably be the best option on other systems. It's been too long since I've used other systems to have a better answer than that though.

From a brief search, hardware transformers do exist, but they seem excessively expensive (QIDO is $150). You can buy a nice keyboard (with the option built in) for less than that price.

maoeurk··on How China Sidestepped QWERTY
It's worth pointing out that in China, QWERTY with pinyin (Latin characters representing pronunciation with an IME mapping it to Chinese) is the most popular input method.

Japanese similarly is primarily done with QWERTY and an IME. Other layouts do exist but they're not very common.

Chinese input is quite varied though. Taiwan uses Zhuyin (or bopomofo) which is a phonetic alternative that doesn't use Latin. Hong Kong, Cantonese, and/or misc. types of Chinese may use other methods like Cangjie (which does use a QWERTY layout). Cangjie is notable for not being phonetic at all -- likely similar to the typewriter input methods mentioned in the article. Words are typed as ordered sequences of pseudo-radicals (pieces of Chinese characters) that are memorized by their associations to Latin letters and color[0].

Although there's no real reason either Japanese or pinyin IMEs should have to use QWERTY -- in fact it's likely quite suboptimal as neither make use of all the keys, or at least not as a primary function (many IMEs are configurable and/or allow non-standard characters to map to more complex sequences of input). I personally use both through Dvorak (which, being optimized for English, is similarly suboptimal).

As for voice input, Chinese is easier than Japanese because of the larger phonetic inventory and use of tones to form minimal pairs. Although the different types of Chinese (regional dialects (as opposed to different Chinese languages)) and their variations in pronunciation complicate things. Japanese does have pitch accent, but it's not really consistent across Japan, so I don't know how helpful it would actually be for a voice recognition system.

Purely from personal experience, I can rarely get Japanese voice recognition to work if trying to search for a word in isolation. It's quite good with sentences though. This might just be an artifact of my poor pronunciation though.

I think typing in general, as it is now, is pretty primitive and has a lot of room to be improved. I've been tempted to try to make some new, and possibly more efficient, input methods, but haven't been able to justify giving any a try yet. I do think even an IME at the level of what currently exists in Chinese and Japanese would be wonderful to have for English though. Intelligent auto-complete, shortcuts, semantically aware insertion of unicode (Emoji are actually natural to use in IME-using languages; just type what you want and select the emoji that pops up).

[0]: https://en.wikipedia.org/wiki/Cangjie_input_method#/media/Fi...

← PreviousPage 2 of 2