Oh man, the ultimate question... that I definitely don't have a good answer to.
Luckily, I know somebody who does... check this post out:
The first section is called "Finding a topic" and should be super helpful!
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.