One thing I've noticed is that I'm really creative whenever I'm learning a new programming language or technology. I usually also spend time talking to people and listening to what they complain about -- this is a really good way to find a real-world problem that you can solve with your "interesting new project."