I have done some html and some autohotkey, (my only programming experience). I've been reading www.codinghorror.com, I am getting Code Complete 2 and I have enrolled in some online courses. What else can I do to become a programming ninja? I am considering learning to type in DDvorak, ect. With your (cloud) experience what directions would you give me for growth?
Do some serious programming. Join (or startup) an Open Source project where you can learn and get valuable feedback.
About typing, you can do as you want (even the two-finger style will do) as long as you think with your head :)
Read other peoples code is one good way of learning, but the primary method has to be WRITE CODE!
Edit: Also I am not quite sure that montage means what you think it means.
Code small apps in you free time, even if it is for something small. Even if it takes you more time to write the app than it takes to do the task you made the app for, you'd be surprised how much you can learn from just tinkering around! That is one of my favorite ways to learn more about programming.
I've been practicing martial arts for around 8 years now, and one of the things I commonly see at my school, which teaches maybe a half dozen styles, is that students sign up for a bunch of classes right away and are super-excited for a few months, and then get frustrated because they don't feel like they're making enough progress. The problem is that they try to tackle too much stuff, and there's too much time and effort required to learn so many things at once.
Don't make this mistake. You seem really eager, which is great, but take it easy, man. Learning Dvorak might make you a better typist, but it won't make your code any better, and it's just one more thing you're trying to learn. The most important thing you can do is just write a lot of code, read some blogs, and keep your eyes open for new techniques. If you pay any attention at all you will find out what you need to learn on your own.
Write a database in BASIC. You'll fail (or I did, at least) but the learning experience is invaluable.
When learning a lanaguage, it can often be difficult to progress because it's hard to apply the things you've learnt to actually DO something interesting. This is espeically apparent with C/C++ or another primairly console-based language (without using tons of libraries). It's one thing learning concepts from a book, but another entirely to see how they actually fit and solve real world situtions,
If you learn with something like .NET, you can easily knock up a GUI to apply your new knowledge to. It also provides a massive stock of common stuff right at your fingertips ready to use (learn how to write them yourself later, black boxes are good initially). I have often been in the situation when learning a new language where you really can't get any further without some sort of aim or objective to head towards. Afterall, you can't "just code".
Typically what I do is have a couple of utility programs that I re-write in the new language. If soemone is just starting coding, I would reccomend a language that can easily have a GUI knocked up... quick visual feedback to your work is key I think, for starting out. VB is a good choice, or C# if you want a {}; language... or even VBA because you can immediately apply your new knowledge to, say, spreadsheets or little forms.
Once you have mastered the fundamentals of programming, it's much easier to learn other languages that take you ages before you can actually do anything "interesting".
Good luck, persistence is your best friend!