Profile

Paul Annesley This is the personal website of Paul Annesley, senior developer at 99designs in Melbourne, Australia. You can follow Paul on Twitter.

Recent Bookmarks

  • toto » Tiny blog engine in Ruby and Rack, uses flat git-managed content files containing YAML & ERB/Markdown, handles comments via disqus, leaves caching to HTTP.
  • Machinarium » A puzzle point-and-click adventure game with a nice ambient soundtrack and a Oddworld: Abe's Oddysee feel about it. Implemented in flash, free demo.
  • Semantic Versioning » Simple version number specification for systems which expose a public API. The format is major.minor.patch (e.g. 3.0.12); major indicates backwards incompatible, minor indicates backwards compatible, and 0.x.x indicates rapid development.
  • The Go Programming Language » New programming language from Google: performance like C, dynamic like Python, concurrent like Erlang.
  • node.js » Event driven network IO for V8 JavaScript.
  • v8 JavaScript Engine » Google's JavaScript engine as seen in Chrome, runs standalone or embedded in C++
  • jaml - GitHub » Jaml tries to emulate Ruby’s Haml library, making it easy to generate HTML in your JavaScript projects.
  • proxymachine - GitHub » Awesome looking Ruby/EventMachine TCP proxy from GitHub that does content-based routing to a backend. Opens a proxy to a backend once the read buffer contains enough information for a ruby block to return the desired backend address.

People

  • James Annesley » Maker and purveyor of fine jazz saxophone music in Melbourne, Australia

Great Webate - Tables Have No Place In Web Page Layout

25 August 2007

As promised, I'm finally posting my notes from my second debate in the Melbourne Web Standards Group's first ever Great Webate.

The proposition was that Tables Still Have A Place In Web Page Layout, and it was up to James Edwards and I to convince the crowd that such a statement just wasn't going to fly in the 21st century. Our unfortunate opponents were Kevin Yank and Andrew Krespanis, and I must say they made a brave albeit sometimes desperate attempt, given the proposition and the audience.

My argument was along these lines…

Once upon a time, when most sites boasted "Best viewed in Netscape 4" or "Powered by Frontpage", tables were great. Possibly even as good as framesets! With just a handful of table rows, plenty of data cells, and a sprinkling of spacer GIFs, you could place your spinning mailbox icon anywhere you liked!

But thankfully those days are gone, and with them, the need to use tables for web page layout. Jump forwards a few years, and we're in a whole new era.

"The use of tables is now actually interfering with building a better, more accessible, flexible, and functional Web."

http://hotdesign.com/seybold/everything.html

Semantics

HTML, in its various forms and versions, is quite rich with semantics. The correct use of heading levels and paragraphs alone can introduce valuable structure to a document. Correct use of tables—for tabular data, rather than layout—is also an invaluable tool. But when all of the content is contained in layers of nested tables, determining the document structure based on the markup alone becomes near impossible. When you have a rich set of tags for describing your content, why try to jam it all into tables?

Design—Locked In, Inflexible

"Forgetting semantics—because that's essentially what you're doing when you use tables for page layout—CSS based layout still has the massive benefit of separating content and presentation. A table will lock you into a design."

http://www.htmldog.com/ptg/archives/000049.php

Page Size & Cacheability

Using tables for layout means very verbose markup that needs to be defined again and again on every page, rather than in a central (and cacheable) style sheet. Apart from making a site very expensive to maintain and redesign, this also means that every page load will be larger. Now, you might say that a few extra kilobytes per page doesn't matter, but this is important for mobile Internet devices. Coupled with the fact that they do not scale well on small screens, table based layouts are clearly inappropriate for mobile devices.

Markup as an API

More and more, the value of cleanly structured markup is becoming apparent. The standardization of various microformats allows web authors to add small pieces of metadata to their markup to introduce rich semantics which are easily discovered and interpreted by machines. This has led to the view of markup as an API. Personally, I don't fancy working with any API that lives in seven layers of nested tables.

User Style Sheets and User Scripts, Accessibility

Even if you don't plan on utilizing microformats in your content, you are giving your users much greater value by providing clean, semantic markup. Users with special needs will be able to easily apply user style sheets and scripts to make your website accessible.

User style sheets aside, the WCAG1 states Authors should use style sheets for layout and positioning. The message is quite clear: Do not use tables for layout...

Comments

This post has 2 comments.

  1. 07 September 2007

    I think these comments reflect the one sided view of a very DTP type of design oriented person. Personally I think CSS is a failed web standard. The very term standard is synonymous with compatibility, perhaps the one and only thing all browsers understand correctly is tables, whereas CSS requires a book of workarounds.

    Granted, some good arguments are made for CSS, but please don't make tables out to be some kind of dead and buried artifact, its simply not true.

    The web has many uses aside from 'prettier pages', and tables are adequate for many of them and do just fine when complimented by CSS.

  2. 09 September 2007

    Peter: it's meant to be one sided - it was a debate! :)