One thing to point out which kinda annoys me about generic HTML in general: <b> and <i> are formatting tags, whereas <strong> and <em> are functional tags. Here is an example of the difference between formatting and functional:

Brave New World was a really good book.
The first emphasis is done with <i>, whereas the second is done with <em>. Now, you probably didn't see the difference - but that's because you were looking.

See, italics and bold mean nothing to blind people. Speaking web browsers can theoretically put vocal emphasis on stuff which needs to be emphasized. But if you use only the formatting (or only the functional) tags, then the semantic meaning is lost. Consider the two possibilities of how semantics must be decoded if you only use the formatting form:

*BRAVE NEW WORLD* was a *REALLY* good book.
versus
Brave New World was a really good book.
The first is where the browser needs to assume that all italics are a vocal stress. The second is where the browser needs to assume that all italics are formatting. Either way, nobody wins.

Why nobody? Well, see, it used to be the case that HTML was a markup language, not a desktop publishing language. The whole idea was that the browsers could be setup to interpret tags as was appropriate for the reader (depending on how they've set things up or whatever). Unfortunately, Netscape being half-assed and treating them as the same led to people not knowing the difference, and so now people think that EM and STRONG are just deprecated, verbose versions of I and B.

Wow, a somewhat-contextual MaggieRant(tm) for once.