Preface
I’ve been fortunate to have been a web developer for approximately 20 years. I can remember using NCSA Mosaic to browse the web and picking up HTML books to help me build my first web page. (Yes, I used a rainbow gradient back then.) Things were rough in those days. I can remember playing with LiveScript, the initial release of JavaScript, and having to reboot my entire machine at times to get my browser to work. I spent a good deal of my first decade or so as a developer focused on the server side, first with Perl and then with ColdFusion. I ignored the front-end due to the numerous issues with browsers and, pretty much, just the browsers themselves.
Approximately 10 years ago, I turned my attention back to the client side. I was surprised to find that this Web 2.0/AJAX thing was actually kind of cool, and that, for the most part, it actually worked. I began to spend most of my time learning JavaScript (again) and reacquainting myself with HTML. That may sound like a surprising statement. I certainly knew HTML and used it in my server-side applications, but I discovered that when I looked closely, there was quite a bit I didn’t know and didn’t appreciate.