I have developed for the web since the mid-90’s from the first version of HTML that became HTML 1.0. There was only a rumor of CSS then, tables were the only way to get a layout to play nicely and the <font> tag was king. A lot of HTML/CSS I’ve done can be viewed in the legacy site I keep around as a reminder how far I’ve come. I code HTML and CSS with an obsessive drive for clean and efficient code.
- Appropriate document type. We declare a document type not for the user or visual rendering, but to provide information to the device reading it – browser, screen reader, search engine, or other device – about what to expect from the document. Today that is almost exclusively HTML5, but before the rise of HTML5 I always used an appropriate document type. If I was publishing HTML documents, I would use HTML 4.01 strict or transitional (before the specification was finalized,) if I was extending the HTML, I would use XHTML.
- Semantic HTML. Since we are building documents to be read by devices (as well as viewed by users,) one of the primary considerations when I code are the semantics. Here is a simple example:
<strong><em>I am bold italic text!</em></strong> <span class="bold italic">I am bold italic text too!</span> <b><i>So am I!</i></b>
This is a largely ignored concept in today’s web, a future article will discuss the infectious disease seen across the web, divitis in which semantic elements are ignored for usage of heavily nested generic <div>’s. There is a time to use generic elements, and there are times when you shouldn’t.
- Code to the natural document flow. What I mean by this, and what it means to my clients, is discussed at length in the blog post Code to the Natural Document Flow. Many developers will disagree, I do not use a global CSS reset (gasp!) Here is why.
- Validate all output. Whether it’s a static web page or output from a PHP/Perl script, I always put special attention into validating all output. I discuss this at length in the blog post Why Validation Matters.
- Relative url’s for internal resources. I always code with domain relative URL’s when creating links. What that does for a page is makes it portable. For example, given the page about-us.html a common approach is often implemented in one of two ways:
<a href="about.html"> <-- or . . . --> <a href="http://www.example.com/about-us.html">
- SEO (Search Engine Optimization.) I built web pages/output with SEO in mind from the ground up. Too often a publisher hands over a site to an SEO company only to find it has to be rebuilt and optimized to really do well in search engines. By building in SEO-friendly content as I develop, most of the work is already done. I expand on this in the SEO Services page.