Hacker News doesn't validate
validator.w3.org
validator.w3.org
* Font tags
* Tables For Everything (tm)
* Inline styles
* Inline Javascript
* Crazy URLs (&whence=<gibberish>)
* Deprecated tag attributes
I could go on. I mean, it doesn't even have a Doctype. Technically, you could self-invalidate it by looking at the first source line.I've given up caring and just accept the numerous annoyances, such as the entire page having to load before seeing anything (thanks, tables!)
Edit: Actually, the only thing I still care about is that other sites don't see this as acceptable and do it too.
Hm? Both Opera and Firefox render HN's tables progressively.
My main problem with HN is the almost complete lack of comment formatting; no quotes, seemingly no links other than just pasting a full URL, and as you've demonstrated, no lists except using preformatted text.
CSS sucks. (edit: So do tables. Really, HTML, CSS, and Javascript all sucks. Browsers suck. The web environment sucks. We use it because of what it lets us do, not because it's a friendly programming environment.)
If CSS is meant for layout, and tables aren't meant for layout, wouldn't you expect CSS to be easier to use?
Tables are hard for everyone but the developer (and eventually the developer unless they never change anything) for reasons you can find in this thread.
You know, I'd expect CSS to be better, not necessarily easier. It isn't CSS that makes CSS hard, it's browsers, since they all choose to render the rules slightly differently. It's the same reason JS sucks; Browser A does this, B does that. Just the way of the world.
You can use the tools as they were designed and lose a little more hair in the process, or you can cram a square peg in a round hole and use tables for layout. That's basically what it comes down to.
As for your questions: The page bloat issue is pretty apparent: it takes a lot more markup to wrap everything in tables than it does to use floated / positioned block elements such as <div/>. Individually marking up each <font/> tag with color, bgcolor, etc. also wastes a shitload of bytes.
Accessibility is another issue entirely, but is generally hindered by inline Javascript because such JS is not based on progressive enhancement; rather, it directly hijacks events on specific elements rather than improving the experience for JS-enabled browsers. In the case of HN, it appears that "vote" links work with or without Javascript, though the latter loads a blank page after voting. This is certainly better than the alternative. Additionally, superfluous markup has a tendency to disrupt the functioning of assisted-reading devices such as screen readers.
There's a whole world of people out there advocating the use of web standards, all for very practical reasons. I'm not going to re-post all their thoughts and arguments here, but if you're not educated in the matter I highly recommend becoming so, if for no other reason than understanding what we crazy people are screaming about. Many people far more dedicated than I have written countless articles on the matter; a good place to start would be Roger Johansson's blog: http://www.456bereastreet.com/ but there are many others.
So while it may be un-accessible, it works better than the sites that are accessible.
Editing css outside of your html without having to worry about inline styles is a lovely thing to do.
They're not the law, but unless there's a pretty specific reason to not follow them, you can bet that they'll save you heartache sometime in the future.
In the case of HN, if you can't point to anything about the site itself that matters as a result, then going on about standards compliance and best practices seems irrelevant.
Google doesn't validate: http://validator.w3.org/check?uri=http%3A%2F%2Fgoogle.com...
Standards don't always dictate quality.
As my mum always says: two wrongs don't make a right.
Making silly analogies to justify standards compliance is just plain dumb if you want to play the name game.
I've never figured it out.
If one browser maker accepts a particular non-standard quirk, all others will have to follow. Sometimes this isn't a bad thing (XmlHTTPRequest) but it slows down browser development. Since browser makers can't keep up, web developers see browser incompatibilities and that makes them move to things like Fash/Flex.
So basically, the effect is that the web becomes more proprietary the more non-standard quirks have to be supported.
But still, there is clearly a tradeoff between conforming to standards, using what works to increase your own productivity, and experimenting with new things to innovate. It's not black and white in my view.
It would be cool to have the option to see HN comments in chronological order (with second order being hierachy) but still with otherwise standard point-marking/voting. I think this is a feature I've been secretly wanting in sites like reddit and HN, because I think it is fundamentally different to watch a conversation unfold. Like pure chronilogical markers so one could step through the conversation as it happens; hopping from anchor to anchor in the order they first appeared...
because that would be sweet...
Vs Slashdot.org, Digg, Reddit, or Here where a story can have twice the (possibly even insightful!) comments yet the last comment on the page is still the same from 6 hours earlier.
The architecture of closure-html and cxml are really nice, even if you don't use Lisp. You should take a look.
Otherwise, try HTML Tidy: http://tidy.sourceforge.net/
But, yeah, Tidy does a darn job of turning just about any HTML into XHTML.
The code ended up being something like
QWebView view; view.load("file://local/file/foo.html"); print view.mainFrame()->evaluateJavaScript(javascriptCode);
Full source here: http://github.com/Arora/arora/tree/master/tools/htmlToXBel
With QtWebKit working on all platforms and having a really nice api making things like this is a snap and easy to do.
For one, tables are excess bloat... as your site scales, those small kb turn into big bandwidth savings. Two, code uniformity is important when you have multiple people working on an intensive design and efficiency is critical. XHTML/CSS is practically the new table for new developers entering the market.
And three, as we age we get stuck in our ways. Doesn't surprise me PG may prefer tables. It took me 3 years to wean off of them... but the decision was for the better and I would never go back to tables, except for data display. :)
The lack of empirical evidence is due to that non-compliance. The same browser sometimes allows non-compliant code and chokes on valid code. This is a coordination game (just like driving on the right side of the road). If everyone complies (developers, browsers, etc.) things work. If enough don't, everything breaks.
Have you ever tried printing a thread? It's bearable, not certainly but pretty.
The point being that there is a lot more to development than keystrokes.
But let's user your argument anyway: what's faster:
<div id="content">content</div>
or
<table id="content"><tr><td>content</td></tr></table>
Now, lets say I want to move the table text from left to right alignment. While you're mucking around in your code, I pull up the css file and add a line.
I'm not saying it's impossible to write valid code that works (duh). But having code that validates doesn't exempt you from browser bugs and quirks. And sometimes it makes life quite a bit harder.
That the problem is with your coding. Invalid or not, if you can't make it work properly that's down to you and bugger all to do with validity.
An now, they're a nightmare to upgrade.
What could be discussed is whether it's good to build on web specs or not.
I swear this comes up every few months. Afterall, this site is so non-compliant, I am surprised anyone even comes here!
Does this site load? Is it fast? Then what exactly is the problem? Validation ensures that standards-compliant browsers will, in the future, render the page correctly. If the people behind the code are willing to rewrite it, fine, it's their choice. It makes no difference for anyone outside of the team whether it validates or not. Most browsers don't even respect the standards fully.