How One Programmer Is Coding Faster By Voice Than Keyboard 214
mikejuk writes "Is it possible that we have been wasting our time typing programs. Could voice recognition, with a little help from an invented spoken language, be the solution we didn't know we needed? About two years ago Tavis Rudd, developed a bad case of RSI caused by typing lots of code using Emacs. It was so severe that he couldn't code. As he puts it: 'Desperate, I tried voice recognition'. The Dragon Naturally Speaking system used by Rudd supported standard language quite well, but it wasn't adapted to program editing commands. The solution was to use a Python speech extension, DragonFly, to program custom commands. OK, so far so good, but ... the commands weren't quite what you might have expected. Instead of English words for commands he used short vocalizations — you have to hear it to believe it. Now programming sounds like a conversation with R2D2. The advantage is that it is faster and the recognition is easier — it also sounds very cool and very techie. it is claimed that the system is faster than typing. So much so that it is still in use after the RSI cleared up."
Probably not faster than auto complete (Score:3, Insightful)
Re: Probably not faster than auto complete (Score:4, Funny)
Yeah, but Microsoft is evil and everyone knows you are dumb as door nails if you cheat with autocomplete and code suggestions in a modern IDE rather than type everything yourself
Re: (Score:2)
True... much better to just type something that looks plausible and then run it and find out that you left out the 's' from the end and now you get to fix it. Not to mention spending all of your time googling because god forbid there would actually be real documentation.
I really miss auto-complete :(
Re: (Score:2)
You know the parent post was actually joking right?
Re: (Score:3)
Re: (Score:2, Insightful)
Maybe you were too young, but they pretty much created the concept of autocomplete for programming with Intellisense. As much as it is popular to hate Microsoft, they became well known for trying to make computers easier and have widespread availability. Sure they weren't as easy as Apple, but after reflecting of how long it took Linux to have tools like Nano become the default editor for a lot of config files, it made me realize that definitely geeks like us should play a limited role in what a good end-us
Re: (Score:3, Insightful)
Maybe you were too young, but they pretty much created the concept of autocomplete for programming with Intellisense.
You might have had a point about my youth and inexperience if MS had developed autocomplete for punchcards, 'cos that's what I learned on, but in reality it's been around longer than Windows has been.
I remember using autocomplete coding in some IDE on a Vax box in the mid '80s, and later using it on Suns and Amigas in the late '80s and early '90s (Pascal variant, maybe?). I know Delphi had good autocompletion.
So no, Microsoft didn't invent it, and no amount of revisionist history here will change that
Re: (Score:3)
Maybe I'm too old, but programmers editors have been supporting completion using ctags and its ilk since Microsoft were dabling in DOS. Intellisense didn't appear until the late 90s. Sure MS's focus on tools for developers [youtube.com] helped to cement their OS monopoly at that time, but there was plenty of completion support, and a lot of research in context sensitive completion long before.
autocomplete as done in Borland C++ .. (Score:4, Informative)
> I'd have a hard time believing that this could be faster than someone using something like autocomplete as done in .NET ..
autocomplete was around long before .NET as was context-sensitive-help before Microsoft renamed it Intellisense ..
Re:autocomplete as done in Borland C++ .. (Score:4, Insightful)
Sure, but he was merely offering an example that most people here are likely at least somewhat familiar with. He never made any claims to its originality. I mean, if I was making a car analogy, I'd likely reference a car that people here know, rather than the earliest one that exhibited the traits I was referencing, just because the purpose of the statement is solely to supplement understanding of a separate topic.
Re: (Score:2)
The GP's comment makes more sense if you add "... and get off my lawn!" to the end of it.
Re: (Score:2)
Sure, but he was merely offering an example that most people here are likely at least somewhat familiar with. He never made any claims to its originality. I mean, if I was making a car analogy, I'd likely reference a car that people here know, rather than the earliest one that exhibited the traits I was referencing, just because the purpose of the statement is solely to supplement understanding of a separate topic.
Autocomplete is fairly common though. It would be like referencing a specific car when talking about something that is common to all or most cars - "driving using tires, as used on Fords" may as well be "driving using tires, as used on cars".
Re: (Score:3)
Auto-complete is not so common as tires on cars, however. Every car out there has tires on it, whereas I'd be willing to wager that FAR less than half of the tools used for writing code feature auto-complete (there are loads of bare-bones editors that get as far as syntax coloring but don't get around to featuring auto-complete). That the most popular ones happen to have it while hundreds of smaller products don't would lend more credence to the idea that it's useful to name a specific one, rather than refe
Re: (Score:3)
I haven't RTFA, but I'd guess his biggest gains came from scripting things that were annoying to say. If you invested the same amount of effort in automating things that you would normally type, you can get very big productivity gains.
My father is a (retired) software developer. When he was a kid he lost both of his hands in an accident. So how does he type? By holding a pen between his arms. How does he code efficiently? Lots and lots of domain specific vi macros. For example, with less than 10 key presse
Re:Probably not faster than auto complete (Score:4, Funny)
He's been in the local paper a few times as a human interest story during his life, but there's nothing available online that I can find. Though he has told me a fair number of anecdotes from work over the years.
Once he turned up to a job interview after being referred by an old colleague. The interviewer hastily excused himself to call the guy; "You didn't tell me he didn't have any hands". "I didn't think it was relevant to his ability".
After discovering that a Y2K compliance project was starting (ie using 4 digit dates everywhere), with an estimate of 8 people for 2 months. He came back after about 2 hours with all the changes checked in.
#cough# (Score:3)
#snort# #ugh-phptt# gah gak #thwip# #snrgle# #cmhmm#...
Save
Compile
There. Your routine is done.
Re: (Score:2)
To be honest, I find it moronic that parsers don't provide an API for code editors, as well as a transform from syntax trees back into source code. It's quite retarding, the obsession humans have with textual glyphs, and the limitations they accept as programmers.
Imagine if your .o object files were more malleable than text, now realize that they are, but you haven't developed the tools to do so.
Re: (Score:2)
I'm on a horse.
Re: (Score:3)
Why would you (routinely) want to directly edit your object files? What exactly are you trying to do that a non-experimental compiler can't do better?
Re: (Score:2)
If you watch the video, you'll notice his is actually using autocomplete and even seems to use voice commands (as far as I can understand them from hearing) specifically for autocomplete.
Emacs (Score:5, Funny)
Re: (Score:3)
> while (true != false) process_more_stupid_code();
Ah, I see you've selected "a lawyer enters the room" as your stopping condition. Should I be suspicious of the code in that harmlessly named function?
Re: (Score:3)
Should I be suspicious of the code in that harmlessly named function?
Not really. The whole scope ceases to be a problem when vanish(puff_of_logic) gets called at the end.
Re: (Score:2, Flamebait)
It actually stands for Venom Incarnate, of course.
Anyway it's about time someone figure out the key to voice recognition. (I have known it for some time of course but obviously no one listens to me.) Computers have a very difficult time understanding natural human language, but humans dont have any problem at all making up verbal codes which are much more structured and regular, and a computer should have a much easier time understanding those.
Re:Emacs (Score:5, Funny)
VI VI VI
the editor of the beast
Re: (Score:3)
The secret is hot sauce (Score:2, Offtopic)
I get some RSI as well sometimes and then I run out to buy some habanero sauce
It has some chemical that you find in prescription drugs that treat the condition
Re: (Score:2)
Re:The secret is hot sauce (Score:5, Funny)
So... what? Do you just chug it?
I believe it's intended to be administered as an enema . . .
You might be able to convince some frat boys into trying it . . . they're already doing it with alcohol.
Re: (Score:2, Informative)
You can't win.. (Score:5, Funny)
So how long until he gets laryngitis and has to start typing again?
Re:You can't win.. (Score:5, Informative)
If you watch the video, he discusses that. He does about 40-60% of his coding with this system and he does keep voice-strain in mind (in fact, he was sucking on a hard candy during the demonstration to keep his voice from drying out). You may not do 100% of your work in it, but just imagine if you could cut the amount of typing you do down to about half of normal? Suddenly, you're spreading some of the load to your voice, keeping either from being excessively stressed.
Re: (Score:2, Funny)
It's best to spread out the load: 1/3 with your fingers, 1/3 with your voice, and 1/3 with your dick.
Re:You still can't win.. (Score:2)
How long after that will he get carpal tunnel and have to start speaking again?
Re: (Score:2)
Switch to a brain controlled interface. I've long been waiting for a BCI wearable computer. With thought macros etc:
http://hardware.slashdot.org/comments.pl?sid=3371153&cid=42543331 [slashdot.org]
http://hardware.slashdot.org/comments.pl?sid=3478821&cid=42956909 [slashdot.org]
Then we can have virtual telepathy, telekinesis and lots of cool stuff*.
* subject to **AA/DMCA restrictions.
Re: (Score:3)
> Switch to a brain controlled interface.
And then when your brain wears out you are totally screwed!
Re: (Score:2)
Nah, just replace it and you'll feel like a brand new person.
Anyway make sure you don't go for cheap knock-off interfaces that can't tell the difference between your brain asleep and your brain awake. Otherwise you might dream about sending "That Message" to "That Someone" and actually do it...
Coding != Typing (Score:4, Insightful)
Re:Coding != Typing (Score:5, Funny)
I do not spend that much time ting, actually.
You don't say?
Re: (Score:2)
Besides the fact that speech-to-text is a decidedly crappy input method in open plan offices
Know what else is crappy?
Re: (Score:3)
It's an impressive demonstration of voice recognition
Is it really? Since English is a non-phonetic language, I wonder if there's a parallel between coming up with consistently pronounced individual phonemes for special characters, and PalmOS Graffiti. In both cases:
It is definitely impressive from a practical perspective in that tweak
Re:Coding != Typing (Score:4, Interesting)
In the talk he says open source voice recognition software, e.g. Sphinx, don't work at all, and you have to go for Dragon.
But then creates writes his own command language.
So I don't understand why do we need voice recognition software that recognizes English? All we need is a open source package that translates sounds into some phonetic dictionary (e.g. IPA), and from there the second problem is to translate that into a native language.
Or even simpler, give it a dictionary of commands, and get it to find the closest match, or if all are unlikely, do nothing.
Why try to go for something so hard, but there is no software for the simpler problem that would make people very productive by just commanding the computer?
Re: (Score:2)
So I don't understand why do we need voice recognition software that recognizes English?
He's got his own sounds for common commands, tabulation, etc, but you still need to be able to give names to and use the names of functions and variables.
Codijng faster by voice because... (Score:3, Insightful)
His coding by hand has been crippled by RSI. That's like saying someone can get around faster in a wheelchair because they've broken their legs.
Re: (Score:3)
Re: (Score:2)
You could go faster in a wheelchair, too, if you were going downhill and never ran into stairs.
ELEVATE!!
Re:Codijng faster by voice because... (Score:5, Insightful)
That's like saying someone can get around faster in a wheelchair because they've broken their legs.
You might want to look up the record time for completing the Boston Marathon in a wheelchair vs. on foot.
Re: (Score:2)
Re: (Score:2)
And then kill your model girlfriend and blame it on an imaginary intruder.
And you thought *your* cube mates were annoying (Score:3, Insightful)
It's bad enough to hear people yelling at their phones in the cubes around. Now one can expect to hear someone yelling at the computer...
Re: (Score:2)
It's bad enough to hear people yelling at their phones in the cubes around. Now one can expect to hear someone yelling at the computer...
You don't already? Granted it's about 80% cursing with sprinkles of frustration, rage, resignation and prayer so it's not exactly voice recognition I need. I've never felt the need to yell though, by then the urge is usually stronger to throw it out the window.
Sounds Tedious (Score:2)
Writing is easy (Score:4, Insightful)
90% of my work is debugging and even figuring out the failure scenario and testing against it. Writing the fix and new code is easy and quick.
Re: (Score:2)
90%? Maybe you suck :-)
Re:Writing is easy (Score:5, Funny)
I'm not debugging *my* code :)
Mouse (Score:2)
Does his RSI prevent him from using a mouse? How does he cut and paste?
Re: (Score:3)
If you actually watched the video, you could have seen that he was using voice commands to select blocks of text and cutting/pasting them that way as well.
How about coding better (Score:2)
Rather than coding more?
Re: (Score:2)
Indeed. Unfortunately that idea is way beyond the understanding of many coders and the reason most code out there is pretty bad.
This is like the corded keyboard (Score:5, Interesting)
This use of speech recognition seems like a similar situation. It works for a few people, but it will not ever have a large user community. QWERTY keyboards are so dominant that their network effect makes other input modes irrelevant. Even those who adopt it will still be using conventional keyboards away from their custom environment.
Re: (Score:2)
This use of speech recognition seems like a similar situation. It works for a few people, but it will not ever have a large user community. QWERTY keyboards are so dominant that their network effect makes other input modes irrelevant. Even those who adopt it will still be using conventional keyboards away from their custom environment.
I think this point is a red herring. At every job I've ever had I've spent 90% of my time in front of the same workstation. If you can use your preferred input method 90% of the time, how is that purpose defeated by using QWERTY the other 10%?
Re: (Score:3)
The problem is not with the person learning the new input UI, but with those that end up having to use your computer with zero training. I remember trying to help out a coworker that decided to buy a kinesis keyboard, and then set it up to dvorak: Not only I had to remember to switch layouts every single time I had to type something, and managed to miss 15% of my keystrokes due to its strange button placement, but then space, enter and backspace are all wrong, and right next to each other: It was just a hor
Re: (Score:2)
I use dvorak-left and my mouse in the right hand.
I use regular qwerty, and mouse with my left hand (I'm right handed). For actual, extended typing (such as now) I do use both hands, but for a lot of tasks it makes sense to keep the right hand on the keyboard - arrow keys, del, backspace, pgup/dn etc. are all on the right side.
Also, if you use full size keyboards, a mouse on the left is much closer to the typing space for quick switching.
I think there is a more general argument about using both hands more evenly. A lot of equipment designed for right-
The Video (Score:2)
http://www.youtube.com/watch?v=8SkdfdXWYaI&t=9m [youtube.com]
What if (Score:2)
Input is not the limiter when coding (Score:5, Insightful)
Unless you are programming utterly structure starved glue-code, input is not the limiting factor, thinking about what you want to input is.
Re:Input is not the limiter when coding (Score:5, Insightful)
You beat me to it.
I can type in code pretty damned fast - Fast enough that people frequently ask me how often I go through keyboards - Fast enough that I've actually had people in the room with me ask if I had just typed something meaningful or merely mashed keys for the hell of it - And, while coding, I tend to spend far, far more time thinking than coding. Someone watching me program for an hour would see 3-5 minutes at a time of complete inactivity, followed by assaulting the keyboard for a 30 second burst, rinse wash repeat.
Re:Input is not the limiter when coding (Score:5, Interesting)
You beat me to it. I can type in code pretty damned fast - Fast enough that people frequently ask me how often I go through keyboards - Fast enough that I've actually had people in the room with me ask if I had just typed something meaningful or merely mashed keys for the hell of it - And, while coding, I tend to spend far, far more time thinking than coding. Someone watching me program for an hour would see 3-5 minutes at a time of complete inactivity, followed by assaulting the keyboard for a 30 second burst, rinse wash repeat.
I think I can have considerably longer buffer/burst cycles, the challenge is keeping the big picture in your head while doing the little parts, and there I feel the duration of the bursts matter. If I've figured that to solve a business problem I need to change code sections A2, B4, C3 and D1 I'll start working on A2 and if it's quick and easy I won't forget the rest while if I struggle and need to churn out a lot of boilerplate by the time I'm done I might not remember what those other changes were. Either you then have to take notes or pseudocode the whole solution first or recreate it from memory, in those cases faster input would help keep me "in the flow", even though the input itself is only a small fraction of the wall time.
Re: (Score:2)
Same here, but I am a relatively slow typer and with the stuff I am currently doing, I spend a lot more time hashing the ideas out on paper before I start coding them. (It is some intricate data-structure work right at the border of what still can be found in the literature...)
Re: (Score:2)
He was/is a freelancer, so I think it's a pretty safe bet that the majority of his typing was not code. Emails, specifications, documentation, planning, accounting, correspondence with tax authorities and so on and so fourth. These things don't write themselves.
Re: (Score:2)
It is on other devices like a tablet.
Now, I'm not saying it is a good idea to develop on a tablet nowadays. But then consumer grade stuff have a tendency to invade the professional world, so it may be forced upon us at some point.
Re: (Score:2)
Not on me. I will not get a tablet and I only have a smart-phone because I need calendar access for work. And should it ever break, I will replace my excellent Cherry G80-3000 with another one of these.
New rapping fad (Score:3, Funny)
You: "Biff Niff Bobblewop, Mop Top, Flip Flop Dribble Nibble Bazzle Dazzle Ropple Popple Slip Dip..."
Boss: "Get to work, no more rapping!"
You: "I'm not rapping, I'm programming via voice commands. Actually, I'm doing both."
Boss: "Yeah, right. It's called Riff Raff."
Python? (Score:2)
So, as long as he makes sure the VTT software understands "tab" he'll be golden...
You insensitive clod! (Score:2)
I code in Malbolge!
Not shocking (Score:4, Interesting)
Not a fan of evolutionary psychology, but I think there's a lot of reason to think we do have an aptitude for spoken language. I wouldn't be at all surprised if a well designed voice system left more mental focus available for the task of coding.
I'm not sure if the technology is there yet, and you still don't want to hear your officemates jabbering away, but I could see the theoretical usability of a spoken word interface surpassing that of typing.
Re: (Score:2)
How about a programming language created with speech in mind? It should be even more efficient.
Must see, VR coding in action: (Score:3)
https://www.youtube.com/watch?v=MzJ0CytAsec [youtube.com]
Typing speed is never the bottleneck in coding (Score:2)
The bottleneck in coding is solving the problem, and debugging issues in your code. Code rapidly written is more likely to have errors because you have not had as much time to think about what you are writing. Coding is not like writing a book.
Cublcles (Score:2)
As if cubicles weren't annoying enough already.....
Perl (Score:2)
Lisp programmers need foot pedals (Score:5, Funny)
What Lisp programmers really need are two foot pedals - one for left parentheses and one for right parentheses. That should cover 90% of their input requirements.
This is awesome and will change peoples' lives. (Score:3)
I am seeing lots of negative and off topic comments, many of which show people only watched part of the video. I thought it was totally amazing. When I was a teenager I had to change the course of my career away from computational science towards experimental science because of RSI-like problems. If I had his tools when I was 14 and had known I needed to use them, my career would be totally different and possibly much better since my programming talents would actually have been used.
Today, I can't really afford to spend several months learning to replicate his work, but hopefully soon it will be easier to learn. This will never be for everyone - some people can't use modal programs - and maybe it will never work in every context (Can it talk to my 20 year old Tektronix oscilloscope over GPIB?) but the video showed it can work. I hope good documentation, native linux support, and support for latex will be forthcoming so it can help me do science.
Re: (Score:2)
This will never be for everyone - some people can't use modal programs - and maybe it will never work in every context (Can it talk to my 20 year old Tektronix oscilloscope over GPIB?) but the video showed it can work."
You shouldn't have a problem with GPIB since that relies on calls to a GPIB lib for your host adapter and also knowing the GPIB command set for your scope. GPIB is ancient but well documented and well supported in most popular operating systems and programming languages.
Richard Stallman (Score:2)
Unnaturally speaking (Score:2)
Stop underestimating my imagination (Score:2)
Instead of English words for commands he used short vocalizations — you have to hear it to believe it.
No I don't. I can easily believe it already. Why would you think I'd have trouble with this?
Now to make it cool (Score:2)
The video demonstrates that it actually works. He's added about 2000 invented words to the vocabulary, most of which are either shortcuts for strings or navigational commands. This might be useful for doing technical work on smartphones, where typing sucks.
One area where this has potential is 3D animation and engineering software. There, you're constantly going back and forth between pointing at geometry and other input. There are various ways to do this, but voice input hasn't been used effectively yet.
vi? (Score:2)
Did someone point out this had not happend if he had used vi/vim in the first place instead of the evil emacs?
Voice computing, once again (Score:3)
... and the response, from 20 years ago, is still the same:
a) "Hey, Joe, are you still working on that difficult piece of code, or coming to lunch?
AAARRRGHGHGHHH!
and the ever popular
b) (as disgruntled, just fired emplyee walks out of HR) START! RUN! FORMAT C:! YES!YES!YES!
mark
Re:Try that with LISP (Score:5, Funny)
Huh, it actually works.
Re: (Score:3, Informative)
The first demo in the talk is editing lisp.
Re: (Score:3)
Spoken like somebody who has no idea what either LISP or COBOL is.
Oompah Oompah Band (Score:5, Funny)
No, open "parenthesis" will be abbreviated "pah". And close parenthesis will be "ump".
Thus, coding will sound like, "Umpah lumpa, dipity doo, I have another puzzle for you..."
http://www.youtube.com/watch?v=qw0zZttfUaw [youtube.com]
Re: (Score:2)
Welcome to Slashdot, Mr. Ballmer.
Re: (Score:2)
Re: (Score:2)
Have you considered therapy for your anger management issue?
Re: (Score:2)
The Macbook keyboard is actually very good and comfortable to type on. Of course I would prefer an IBM Model M keyboard, but you've got to compromise for a laptop and the Macbook keyboard is probably the best you can get that fits within the constraints of a laptop.
Re: (Score:3)
I have been typing for more than 30 years and I don't have an issue.
I have been touch typing for 30 years and I don't have an issue either. If you think either of our statements actually proves anything, you're not very smart.
Re: (Score:2)