Having a backward-compatible mode often helps reduce this pain. For example, there is a new syntax available with HTML5 that dispenses with the old section definitions of HEAD and BODY for a more trim syntax, but you can still do things with the old sectional format if you prefer.
Modernizer bridges with the past
As technologies progress, a significant problem has been the need to support the old and new worlds through the same experience. For Web applications, there have been a number of strategies to cope with this issue. Detecting the browser agent and redirecting to targeted versions of the site is a strategy that works, but multiplies the work to achieve the solution. The Modernizr.js script takes a vendor-agnostic approach to something Microsoft provided a solution to for years. In ASP.NET, the App_Browsers folder can be populated with browser definition files that allow the system to do the right thing based on the browser making the request.

The problem with all of Microsoft’s techniques is that they were not adopted by other vendors, whereas Modernizr is open source and widely used, and there is not the same “not invented here” bias against it. The open-source community embraces it, Microsoft’s competitors embrace it, and now Microsoft is promoting it, which is a clear sign that it is the way forward to solving this particular problem of history.

It is interesting to see JavaScript libraries filling important roles such as this. jQuery is the best example of a JavaScript library changing the face of the development world in ways no one predicted. Modernizr also works with style sheets, and the latest version supports capabilities that let you load resources conditionally.

As a programmer, using Modernizr is simple. Once the script is loaded, there is no need to initialize things. You can just go straight to checking properties. For example, Modernizr.Canvas returns true if the browser making the call supports this particular HTML5 capability, allowing you to set a condition and choose which markup should be sent to the user. If the browser in question does not support JavaScript, there is a way for Modernizr to deal with that as well, though this will be a more uncommon issue in the coming years as more and more of the Web relies on JavaScript to power experiences.

There are lots of resources on HTML5, but few on how it applies specifically to Windows development. However, in spite of the entire subject only being in the public consciousness since September 2011, there are already books available on the topic, including “Metro Revealed: Building Windows 8 Apps with HTML5 and JavaScript” by Adam Freeman. This book is a no-nonsense, all-business crash course in building Metro-style apps with JavaScript, and of course by extension HTML5.

The strength of this book is the fact that it walks the reader through building a sample application from scratch and does not spare the details of the code. It also explains the role of the WinJS API and WinRT in that development process.

There are also tons of resources such as blogs and walkthroughs. One particularly useful source is the blog of Michael Palermo, senior developer evangelist with Microsoft. He is very passionate in talking about how to create Windows 8 applications using HTML5, CSS3 and JavaScript. Consequently, he provides many resources on how to get started.

Dan Wahlin, president of The Wahlin Group, is someone whose writings and interviews have always struck me as very concise even on very complicated topics. Both Palermo and Wahlin have recorded training videos on HTML5 and JavaScript that are available through Pluralsight.com.
WCSchools.com versus WCFools.com
As already said, there are tons of great resources available to help you learn HTML5, CSS3 and JavaScript, but some of these are not without controversy. The best example of this is the site W3Schools.com. If you do a Google search on the term HTML5, this site is the second result among the unpaid results, and on Bing it is ranked fourth.

When you see the site, it is full of information about HTML5 and how to leverage the new capabilities. What I like best about the site is that it has a feature called “Try it yourself” that lets you edit the markup and see the results in a very instructive way. The feature pages also show which browsers support what feature, and how it has changed if it existed in some form in HTML4. There are also sections that do the same for JavaScript, CSS, PHP and others.