How do I learn programming the second time?
You need to pick a goal (i.e. project that is VERY interesting for you, and that you REALLY want to write). Once you have a goal, you'll get a motivation, which will be enough to find new information and tutorials. I.e. when you have a goal, start writing code. When you bump into problem, start researching this problem using books, internet, google, etc. Eventually you'll find a solution and you'll learn something. Repeat until the project is done.
I do not know more efficient way to learn. People forget information that wasn't fun to discover, and you forget things that weren't interesting. Books, languages, availability of learning resources and tutorials, communities - all this doesn't matter when you aren't interested in your project, and aren't trying to use new technologies. Even if you have tons of resources, mountains of books written by genius, community full of gurus - If your project isn't fun, you'll forget 99% of info you learned, and will waste your time. For same reason if I tell you everything I know (which will take quite a while), you'll forget everything because you didn't use those techniques, didn't discover them yourself, it wasn't fun for you, and you can't get "intuitive" understanding from only explanations.
You need a project you're VERY interested in. Once you have it, pick ANY book, ANY language, and start writing code. If it isn't fun, try another book and another language.
Repeat until done. It doesn't matter where you start, just start somewhere.
What techniques or methods should I adopt? (write for my own use? join an Open Source Project?)
Joining Open Source Project isn't exactly easy - some developers are extremely picky about quality of patches and code you submit, and you already need some experience. It isn't a good place to start.