About two years ago, I was in the shower.  I had an idea: genetic algorithms modify data so as to optimize for something you care about. Lisp encourages programmers to think of programs as data. Why not use genetic algorithms to find the optimal program to achieve something? For example, find the program that is the best at playing checkers! 
I enthusiastically proposed the idea to my machine learning professor at our next meeting. She said Ah, that’s a great idea. It’s called evolutionary programming. People have written PhD theses on it. They haven’t gotten much traction because the search space is way too large, unless you’re working on a small problem with a specialized programming language.
I felt proud to have thought of the idea, but moreso I felt disappointed that the idea had already been explored and found fruitless.
Whenever I have a new idea, I find myself hoping that I’m the first to think of it. You've got to check with alumni, though, to make sure you're not spending cycles rediscovering something that's already known.
We've met several times with Eric Hahn to discuss what we're doing. Eric is the universally acknowledged email expert in Silicon Valley. He did cc:Mail, Lotus, Netscape, Lookout Search, and probably a few others. He has been a great source of wisdom when it comes to our product.
The other lesson from this experience? Take plenty o' showers.
 Okay, wise guy, not that that was my last time to take a shower..
 Paul Graham has spoken to this exact method of coming up with ideas. It's actually kind of eerie. He talks about making familiar mental gestures against a new substrate in the shower. In my case, I was in the shower, thinking about programs as data, and the genetic algorithm gesture got invoked.