HTML5: Designing Rich Internet Applications by Matthew David (Focal Press)
I’ll be honest and up-front: this is a pretty negative review. I’ve been sitting on it for months, but decided to post it as people have asked our opinion of this book.
Firstly, it’s true that all books have errors. As well as typos, there are authoring brain-farts (the book I co-wrote with Remy claims there is a <heading> element, for example). There is also the risk, when writing on a moving target like HTML5, that the spec will change after the book has gone to press.
About the book
Four of us doctors have read this book (figure 1) and in our opinion it contains an unacceptable number of errors which makes it misleading to the reader.
- The preface claims "a group called the Web Standards project began developing HTML5 in 2007". It didn’t; it was the WHATWG, in 2004.
- In "spring 2010 .. Microsoft formerly [sic] joined the HTML5 Working Group". Chris Wilson, then lead of Internet Explorer, was co-chair in 2006.
- Page 11 mentions the <m> element. There isn’t one; it was renamed to the <mark> element (as it’s correctly called on page 22) before June 2008, at least 2 years before this book was published July 2010.
- Page 19 discusses the <dialog> element, which was removed from the spec in September 2009.
- Page 27 tells us "The W3C had already begun modernizing the FORM element, called Forms 2.0, before HTML5". The WHATWG started with Webforms 2; the W3C had worked on XForms 1.0.
- There is a <navigation> element used extensively in the chapter "Building a web site using HTML5 blocking elements" — this should be the
<nav>
element. - Page 72 tells us “The ANCHOR element has four pseudo classes: link, active, hover and visited”, omitting the
focus
pseudo-class which is vital for accessibility, as it is applied when a user navigates to a link using the keyboard rather than hovering with a mouse. - Page 73 says “New to CSS3 is a new extension called pseudo elements”. Pseudo-elements were there from CSS 1.
The book also promotes several examples of bad coding practices:
<br/><br/>
pairs to force new lines- classitis (
<footer class="footerStyle">
) - form
<label>
s are not accessibly associated with their<input>
s - not using the full vendor-prefix stack (-moz-, -ms- , -o-, -webkit-, [no prefix]) resulting in code that is neither future-proof nor cross-browser
- bad semantics, for example
<p class=mainTitleStyle>
rather than using an HTML heading
The author’s website is http://matthewdavid.ws.
What I do recommend
So I can’t recommend this book. I can, however, recommend any of the following resources:
- Jeremy Keith’s HTML5 For Web Designers is a brief overview for designers or IT director types
- Dive into HTML5 by Mark Pilgim
- Professional HTML5 Programming by Peter Lubbers et al is a really good look at the APIs
- Definitive Guide to HTML5 Video by Silvia Pfeiffer
- Tantek Çelik’s HTML5 Now is a good video tutorial.
Have you read this book? What did you think of it? Let us know in the comments.
Reviewed by Bruce Lawson, Richard Clark, Oli Studholme and Tom Leadbetter.
15 Responses on the article “Review: HTML5 Designing Rich Internet Applications”
Good to point out such errors! Also, kinda ironic to see that http://matthewdavid.ws/ is fully Flash.
Some of this is unforgivable: “New to CSS3 is a new extension called pseudo elements.”
That’s pretty awful. I don’t know how someone could write a book about this and be so wrong about something that is common knowledge among even the newest web developers.
These are exactly the sort of reviews that people like me NEED. I’d hate to spend my money on a book only to find that I need to apply fixes to dozens of pages and code. Thanks for being honest about it – I bet you’ll get some flack from a certain section of the audience.
As Boye pointed out, his site is in FLASH (which I have blocked) and isn’t even HTML5 (view source if you dare).
Sad – some of the less educated shoppers will waste their hard earned cash on this book rather than one of the many that are much better.
Wow That book is, to be honest, kinda frightening..
Thank you for posting the review, I wont buy that book for our collection.
Personally I don’t see anything wrong with his website being in Flash, it’s not relevant.
Good, honest review of the book though. As mentioned above, honest reviews are needed.
Classitis can be more efficient for css and JavaScript selector engines like Sizzle though.
<div id="stuff">
<a class="anchors">link</a>
</div>
would allow you to use #stuff .anchors{} or $.find(“#stuff .anchors”) rather than the less efficient #stuff a{} or $.find(“#stuff a”)
@Adam – actually I’m pretty certain that $(‘#stuff a’) is more efficient because you’re using native DOM methods rather than scanning and looking for class names (where getElementsByClassName isn’t available).
Also note that performance-wise qSA (which sizzle defers to in some cases) is slower that getById and getByTagName.
Bruce, I’m curious: Have you been sitting on this review for months because it was negative or because you’re the author of an HTML5 book reviewing somebody else’s HTML5 book?
I’m writing an HTML5 book (who isn’t, these days?) but I’d deliberately stayed away from saying anything positive or negative about other HTML5 books.
I’m curious how your decision came about. Thank you.
I won’t lie, I have this book in review on the corner of the desk I’m typing this reply from. I wanted to get a book on the topic at the time of purchase, and wasn’t all that aware of some of the the authoritative names behind the specs. That said, I was a bit disappointed with the content that the book provides. Looking back through it, the thing that struck me as a red flag is all of the use of inline styles in at least the first project example. I think it would have been a better organization method to show all of the CSS in a style tag for reference if needed, and then all the markup for that project clean and clear.
Looking at my bookmark, I left off at chapter 5 and have yet to really sit back down with it to see what I can gain from that remaining chapter. However, with your review above and my own little grievances, I can’t help but agree this is not the best resource for someone coming into the topic.
Dale Cruse-
” Have you been sitting on this review for months because it was negative or because you’re the author of an HTML5 book reviewing somebody else’s HTML5 book?”
Both. I was worried that the community would think I was trying to big up my own book by being honest about this one; that’s why I haven’t included my own book in the list of resources at the bottom of the review. Also, I prefer not to be negative if possible, but had planned to say nothing.
But I saw good reviews of this book, presumably from people who had bought it on good faith and were unaware of the errors, and that irked. People look to HTML5 Doctor (they tell us) a provider of high-quality, unbiased information, so, in consultation with my fellow doctors we felt it was a disservice to our readership not to point out the flaws in this book (which we were sent by the publishers in the hope that we would review it).
I’ve tried to keep my review factual and objective; I don’t discuss the authorial tone or printing quality (which is pretty good: full colour, nice paper) as those are subjective.
Hi Remy, thanks for your response.
For CSS I picked this thinking up from Even Faster Web Sites (p194, section titled “The Key to Efficient CSS Selectors”) , they also link to a document on MDN https://developer.mozilla.org/en/Writing_Efficient_CSS .
For Sizzle, I suppose I figured newer browsers would have a getElementsByClassName and so it would be faster there. I’ve built a test on jsperf and for Chrome (at least) that thinking seems to be borne out. Haven’t tested on IE though…
Here’s the jsperf
http://jsperf.com/class-selector-v-tag-selector-in-jq
I know qSA is slow, but it does collect a fixed NodeList rather than a live one so I would have thought querying its parents for a match through right-to-left would be faster than querying the parents of a live NodeList.
That said, John Resig has stated that if a selector structure begins with an ID then Sizzle uses that as the context for the rest of the match rather than right-to-left.
So much to think about :)
Thanks for posting the review. I was thinking of buying the book. I’ll take it off the wish list.
As I started reading this article, I couldn’t but wonder what went through your mind when reading my book. But as I came to the concrete technical issues that you have with this book, I thought – wow, that’s shocking!
For my book I made an effort to incorporate all the changes that were made to the spec and to the browsers during the 9 months that my book was in the making and went back through all my code examples and spec references during the week before it all went to final proof. I cannot believe things like wrong element names made it through the technical review of this book! I find it the minimum duty of a author to be as up-to-date with their book as possible. As you guys have also done with your book.
I sure was relieved to see you mention my book as a good reference for HTML5 media, thanks. :-)
What shocked me the most though was that the author’s website is in Flash and simply doesn’t work in my browser (some clicks don’t have any effect). He has written about the tools to fix that and is not using them himself – that makes his message kinda hard to believe.
You could have just posted the link to the guy’s website. ;)
Wow, I am shocked and dissapointed to have found this review too late! I actually was already skeptical when I opened the book in chapter 1. I was reading about HTML 5 prior to opening this book and already knew about the nav element and in this book, they use navigation. This gave me a red flag even if it could have been a small typo. it is not, because it is mentioned in the whole book! I am so disappointment and I wish I could get my money back but it is too late now.
Another shocker is about his website. I think if you are a developer or an expert of the matter, you should, at least, have a compatible and up-to-date website.
Thanks for the review. I will make sure not to use it a reference anymore.
M.
Join the discussion.