the way to get startup ideas is not to try to think of startup ideas.
.. Real problems are interesting, and I am self-indulgent in the sense that I always want to work on interesting things, even if no one else cares about them (in fact, especially if no one else cares about them), and find it very hard to make myself work on boring things, even if they’re supposed to be important.
My life is full of case after case where I worked on something just because it seemed interesting, and it turned out later to be useful in some worldly way.
I should mention one sort of initial tactic that usually doesn’t work: the Big Launch. I occasionally meet founders who seem to believe startups are projectiles rather than powered aircraft, and that they’ll make it big if and only if they’re launched with sufficient initial velocity. They want to launch simultaneously in 8 different publications, with embargoes. And on a tuesday, of course, since they read somewhere that’s the optimum day to launch something.
It’s easy to see how little launches matter. Think of some successful startups. How many of their launches do you remember? All you need from a launch is some initial core of users. How well you’re doing a few months later will depend more on how happy you made those users than how many there were of them. 
.. So why do founders think launches matter? A combination of solipsism and laziness. They think what they’re building is so great that everyone who hears about it will immediately sign up. Plus it would be so much less work if you could get users merely by broadcasting your existence, rather than recruiting them one at a time. But even if what you’re building really is great, getting users will always be a gradual process—partly because great things are usually also novel, but mainly because users have other things to think about.
In his 2004 short essay The Python Paradox, PG argues (perhaps controversially) that a company can hire smarter programmers if it chooses to write its code in a “comparatively esoteric” programming language. At the time, Python was probably considered by most people to be esoteric in comparison to Java – in the sense that not many people would learn it at university or for career purposes. Therefore, the programmers who knew Python were people who learnt it for fun; and learning languages for fun is an activity which typically only the bright and motivated people engage in. Which makes the language a good “quality filter” for people.