Thursday, July 2, 2009

Real Incremental find

How many times do you find yourself searching for something where you don't even know what to search for? This happens to me all the time. I can't remember the name of some new artist who's song I recently heard and loved, and so I search for some of the song lyrics. I can't remember the name of that great Sushi place I just ate at so I search a nearby cross-street I remember passing + "great sushi". But what about if you have absolutely no idea? A recent example I heard (From Joel Spolsky) was someone who was looking for how to create the perfect latte. It turns out in order to do this you need to perfect the steaming your milk until you get it into a state called "microfoam". How would you ever know that term to ask the question: "How do I create perfect milk microfoam" ?

As it turns out this happens in programming all the time. Often you start playing around with some new language and you really want to do "X", but it just doesn't work. As it turns out "X" has a special esoteric name in that language and if you only new that word you would solve your problem in 5 minutes. Instead you spend the next 30 minutes trying to type in searches like:
"Why do I get an exception when I pass a mutable object to NewLanguage.specialFuction(var), but not all the time..."
To me, this is one of the next logical evolutions of search and typeahead is the perfect place for it. I don't want incremental find (typeahead) to finish my sentence for me, I want it to finish my thought. I know, I know, that seems like a lot to ask. Natural language has so many ambiguities and computers are so explicit and logical. But the information is out there, AI can be improved, the graphs and connections are waiting to be formed. I will know someone (Google? Bing? ...Cuil?) is on the right track the minute I start typing; "Will this day never en..." and the first thing that comes up in my typeahead drop down is:

"You need a vacation: How about Fiji?"