How to choose programming technologies to learn
An important aspect of programming is choosing what technologies to learn. Besides knowing what you want to build there are many other factors that are wise to consider before diving in.
One way to make a decision is to see what programming jobs are available now. Looking at a few job boards (Ars Technica, StackOverflow, 37signals) will give you a quick snap shot of what languages and skill sets are in demand now.
Another useful way to think about this is to consider what technology is up and coming. The best example I can think of for this is HTML5. It could potentially replace or be an alternative to Flash which is a big deal since Flash is used on so many web pages right now. It may not be in demand now but there is a good chance it will be in the future.
The portability of a technology is also worth thinking about. Things like OpenGL, which run on the iPhone and on Android give the programmer more options because they are not limited to one platform.