From: aschneiderman@... Date: 2000-11-09T03:10:05+09:00 Subject: [ruby-talk:6173] RE: Mapping text to method calls Thanks very much to hipster and Aleksi for their examples; it's just what the doctor ordered. > > P.S. In theory, of course, I could just use emacs & some of the voice > > tools that are out there. But hacking this together is a > > whole lot more fun. > > Sounds fascinating, wanna tell more? > - Aleksi Here's my fantasy: I have an RSI, and although I don't get a chance to do a lot of programming, I've wanted an alternative to coding by typing. I've been mucking around in my spare time in Python, and now I'm rewriting it from scratch in Ruby. A few weeks ago, I discovered a wonderful project called the Voice Toolbox Open Source Project (http://ii2.ai.iit.nrc.ca/VoiceCode/openSource.html). The Voice Toolbox project is trying to create tools that will make it easier to program by voice using any editor that's built so it can accomodate the Toolbox's needs. Right now, most of the work is being done around emacs--on the PC!--with plans for forraying further into MS territory. They've already implemented a couple of the basic tricks, such as allowing you to say "if number customers is greater than 5" and produce "if numCustomers > 5". The people involved with the project are very nice and very smart, but after spending a few months playing around, I've come up with an approach I like better. In a sense, the Voice Toolbox is trying to let programmers use voice to unleash the power of an emacs-style approach to coding. I can appreciate this approach, but it seems to me that it plays to the weaknesses rather than the strengths of voicing. For example, suppose you want to grab a copy of a method you wrote in another program and use it as a template to create a new, modified method (assuming reuse isn't an option). I can describe the task at a fairly high level: "grab method glomResults from class blueberry and make a copy, changing variables numColors and numSassafras to numBrightColors and numTea." To do this by hand involves a fair amount of typing: open a file, find the method, copy just the method, paste it into my current program, and do 2 search-and-replaces w/in just that method. Making it possible for me to take all of these steps using voice rather than typing is better than nothing, but why not go one step better? Why not build a system in which you could voice that request in one line? Similarly, one of the problems that's always vexed me about coding is that I'll discover how to do something complicated in a programming language, then six months later I'll need the same trick but won't remember where I used it. In an ideal world, you'd solve that problem by turning every solution into an object/class that you stored in a reusable library. Since I don't know anyone who does that, I'm looking for a simpler approach. For ex, if I've figured out in Perl how to read in a file in one fell swoop, I'd say, "grab lines 5-8 and store them under Perl:files." Six months from now, I'd say, "help with Perl:files," get a list of topics, then paste in the appropriate example. You could certainly do this by hand, but it seems to me that it would be easier and more natural to do it by voice. Obviously, this is no small feat. I'm starting by writing a very simple editor--essentially vi ala voice--because I know from previous experience that until I have something to play w/, I won't know what I really want. Also, building something that powerful from scratch is a daunting task. If the class browser/refactoring tool folks have been talking about already existed, I could get a lot done using its parsing tools. Since it isn't, and since I'm at best a middling programmer with not a lot of time on my hands, I'll incrementally cobble something together. If I ever get something together that's halfway decent, I'll be sure to post it to the Ruby app list. Thanks, Anders Schneiderman National Journal Group Sent via Deja.com http://www.deja.com/ Before you buy.