Everyone is jumping on the HTML5 bandwagon, and we at Ai are no exception! For a while I’ve been a little reluctant to introduce the new revision for our projects mainly due to the lack of solutions that would target cross-browser compatibility out of the box. As an ecommerce shop, browser compatibility means more users, means more revenue, means happy client.

For the past couple years I’ve been monitoring the development of HTML5 Boilerplate, a project created by Paul Irish and Divya Manian, aimed to seamlessly integrate HTML5 and modern CSS3 features into your site across all browsers (even back to IE6). The current 1.0 build was recently released with a bunch of goodies such as HTML and JS minification, image compression, cache management, updated CSS reset, custom build script, the option to choose modernizr or html5shiv, and so much more.
To learn more about the project visit html5boilerplate.com.
If you ever wanted to find me in the office just ask for the guy with the big headphones, bobbin’ head, and deep bass lines thumpin’ at a soulful, funky 4/4.

Music has always played a vital and spiritual role in my life, and to be able to have those sounds glisten in my ears while I apply my craft at my desk is purely harmonious.
Since I can’t be at the clubs everyday, I bring the dance floor here. My mixer (keyboard) and turntable (mouse) help in producing some of the most illest, dirtiest 12 inch white label html mixes and css dubs. I’ll even drop some vocals from our javascript guru’s too.
I couldn’t do any of this without the right equipment.
-
Headsets:
- Sony MDR-V700DJ Studio Monitor Series
- Sony MDR-EX85LP Buds when I’m on the go
- Microsoft Natural Ergomic 4000 Mixer
- Microsoft Laser 4000 Tabletop
- Dual 20″ Samsung SyncMaster 204BW Multimedia Players
- Notepad++ Media Controller
- Photoshop CS3 EFX-1000
- Custom Mods/Add-ons
- Web Developer
- Firebug
- HTML Validator
- Tails Export
- Operator
- WAVE
- Yellowpipe
- YSlow
- Pixel Perfect
- Screengrab
Tom is Ai’s front-end tech lead.
The following is a developmental check-list I religiously adhere to and find extremely essential in ensuring semantic-rich, accessible and valid (x)HTML.

Da Basics
- Specify a
DOCTYPE and namespace
- Specify the document’s language
- Write your markup before writing any CSS to ensure your HTML is semantic and well-formed
- Document your HTML with start and end comments for clear separation of layout blocks within your markup
-
Make sure the page validates (x)HTML
- 1.0 Strict for all new development
- Transitional for legacy applications using HTML flavors from the past
- Make sure the page
title is set
- Include all necessary
meta tags
- Use block and inline elements appropriately
- X-browser/X-Platform the page
- Separate blocks of content with a
div
- KEEP ALL ATTRIBUTES AND THEIR VALUES LOWERCASE…KICKIN’ IT OLD SKOOL IS COOL, BUT NOT THIS WAY
Presentation and Content — Keep ‘em Separate
-
Make sure your markup is semantic in that proper elements are used in which their purpose was intended
- Layout =>
div
- Headings =>
h1 through h6
- Paragraphs =>
p
- List of items =>
ul, ol
- Content emphasis =>
em, strong
- Tabular/grid data =>
table
- The presentation of content should be consistently applied regardless of CSS
Name Your Children With Some Structure
-
Name your ID’s and classes based upon the structure of its content, not presentation
content_head
content_main
sidebar
navigation_main
navigation_secondary
logo
header
footer
- This will prevent renaming if the content’s look and feel changes
Headings Schmedings
- One
h1 per page
- Maintain the hierarchy,
h1 -> h2 -> h3 … h6 regardless of how cosmetically they may appear in design
Pretty Pictures
- Every image must contain a non-empty alt tag
- Dimensions on every image
- Keep images used for photographical purposes inline, not as background images
I Call ‘em Links, Anchors are for Boats
- Include title attributes on important links and/or graphical links containing no text in the image itself that describes the destination of the link
- Make sure there is always text present within the anchor even if it is a graphic
- The text should be informative, ie – use ‘close’ rather than just ‘x’ for a close button
Fontography
- Try to avoid all caps within markup and allow CSS or emphasizing elements to properly transform text so you have the option of reverting if needed
- Don’t abuse the
br tag, using multiple consecutively isn’t necessary, just begin a new block level element
Set the Table, Anthony, and Don’t Forget the…
caption element to let users know what your table is about (look at it as short headline)
- summary attribute to further describe your table’s contents in more detail
colgroup‘s for multi-column tables
th‘s for column headings
thead for table heading content, tfoot for table’s footer content and tbody for the main body of the table’s grid content
tfoot comes before the tbody in the markup…don’t ask me why
- And for pete’s sake, don’t use tables for layout, that’s so 1999
Forms (Don’t Have Anything Cute for this One, Sorry)
- Don’t forget the action and method attributes (leave em blank if you don’t know, leave that mush to the back-end dude)
- Have a
legend to set the title of the form
- Use
fieldset‘s to group related fields
- Use
div‘s for further content separation within fieldset‘s
tabindex on each input for easy keyboard accessibility
- The corresponding text for each input should be a
label with the for attribute set to the input‘s ID
maxchar set on inputs where necessary to assist with validation