Why Hacker news uses tables?
I had a quick look at the html of hacker news and saw tags that reminded me of how we made web pages 10 years ago. Why is this? Any particular rationale or just the good old 'if it works, don't fix it'?
8 comments
If you read the thread JeremyBanks points to, you can see that pg thinks it's a waste of time to be hand crafting, to be optimising when it's already so small and to be following recommendations beyond what is needed from standards bodies.
More importantly it's about where you spend your time. Pg's a busy guy but HN is good advertising for his business. He does spend time optimising the whole thing though, technology and community. Just look at the experiment, now finished, to see whether displaying average comment scores would alter community behaviour in a desirable way. These and the other tweaks - downvoted comments fading toward background colour, the front page algorithm, the effect of flagging and associated moderation, when people get voting rights - are the things which improve the website. There are plenty of places and forums with which are standards compliant and have a lot of seemingly whiz-bang features, but their commentary sucks and their community has an aggressive tone and is ridden with trolls. Too many people here think it's all about the technology when there are other factors.
Even if pg held a "redesign HN" competition, to which many would respond for free, reviewing the submissions and implementing the changes into the server would be a waste of time compared to the opportunity cost of trying out something else to improve the community and defend it against degradation.
More importantly it's about where you spend your time. Pg's a busy guy but HN is good advertising for his business. He does spend time optimising the whole thing though, technology and community. Just look at the experiment, now finished, to see whether displaying average comment scores would alter community behaviour in a desirable way. These and the other tweaks - downvoted comments fading toward background colour, the front page algorithm, the effect of flagging and associated moderation, when people get voting rights - are the things which improve the website. There are plenty of places and forums with which are standards compliant and have a lot of seemingly whiz-bang features, but their commentary sucks and their community has an aggressive tone and is ridden with trolls. Too many people here think it's all about the technology when there are other factors.
Even if pg held a "redesign HN" competition, to which many would respond for free, reviewing the submissions and implementing the changes into the server would be a waste of time compared to the opportunity cost of trying out something else to improve the community and defend it against degradation.
I do think of HN as one big social experiment for PG. It seems he wants to show reddit that the community does not have to degenerate after a number of members (but of course reddit wanted to make money and they are).
PG discussed this in this thread three years ago: http://news.ycombinator.com/item?id=100595
Thanks!
But 1. point, in this post, IMHO, is not completely resolved.
http://news.ycombinator.com/item?id=100699
http://news.ycombinator.com/item?id=100699
Tables are good for tabular data, they are also quick, easy and very cross-platform, the semantic zealots seem to overlook this. Using tables to lay out images or for a faux column effect is sloppy but really the whole table-hate thing is overblown.
EDIT pg made the same comment about tabular data in the linked thread.
EDIT pg made the same comment about tabular data in the linked thread.
Using tables is not a bad thing. I don't know how people came to this conclusion.
gmail lists emails using tables. What's wrong with that?
gmail lists emails using tables. What's wrong with that?
I don't think anyone is saying using tables at all is a bad thing, just using them inappropriately.
gmail is a table - columns are email properties, rows are documents.
HN is a list.
I believe PG argues a list is a smaller, single column version of table, and that nobody should care about the output of a compiler anyway.
I'd argue that the HN header is a cell, so are the links at the bottom of the page, and this is clearly a case of tables for layout. Also there may be things that parse the page for different audiences, who expect lists to be used for lists and tables to be used for multi columned data. Also, it's not hard to fix.
Reading the previous discussion, things got quite nasty last time, so I won't fan the flames and say anything more.
gmail is a table - columns are email properties, rows are documents.
HN is a list.
I believe PG argues a list is a smaller, single column version of table, and that nobody should care about the output of a compiler anyway.
I'd argue that the HN header is a cell, so are the links at the bottom of the page, and this is clearly a case of tables for layout. Also there may be things that parse the page for different audiences, who expect lists to be used for lists and tables to be used for multi columned data. Also, it's not hard to fix.
Reading the previous discussion, things got quite nasty last time, so I won't fan the flames and say anything more.
Here we go again. A preemptive note on semantic HTML: This is not a question of DIVs vs TABLEs. Those who litter DIVs everywhere are just as misguided. The idea of HTML is to meaningfully represent the content it's describing. Sometimes this means using tables (for tablular data), other times it involves wrapping elements in a div container.
Now whether or not HN's front page is tabular data (my vote is not) is left to debate.
Now whether or not HN's front page is tabular data (my vote is not) is left to debate.
How is a table with one column not meaningful? The meaning is obvious: it's a list.
That HTML has specialist elements for lists is nice, but I don't see how that implies that a table with one column isn't also appropriate for a list.
That HTML has specialist elements for lists is nice, but I don't see how that implies that a table with one column isn't also appropriate for a list.
A table with one column may very well be appropriate, however that's not the case here. A table has been used for layout. You will notice the up-vote icon has its own cell for example. Not to mention, various deprecated style-related tags like center are used as well.
Well, it's not only tables: if you take a look at the html you will see also the center tag, deprecated attributes like align and valign, inline styling etc. Hacker News is very far from what is nowadays used for building (by hand or automatically) web pages. Yet, it works, so this might be the final answer.
I don't think anyone is saying using tables at all is a bad thing, just using them inappropriately.
gmail is a table - columns are email properties, rows are documents.
HN is a list.
gmail is a table - columns are email properties, rows are documents.
HN is a list.
I believe this is a question worth revisiting by pg, because the site doesn't look good on mobile devices, even on the iPad.
Using css might make it easier through @media queries to adapt the site to different devices (I actually only care that it looks good, so a table based solution is actually fine with me), but nevertheless the site does need a revision.
Using css might make it easier through @media queries to adapt the site to different devices (I actually only care that it looks good, so a table based solution is actually fine with me), but nevertheless the site does need a revision.
HN works fine on my iPhone 3G, much better than those vile mobile sites which somehow disable zooming.
edit: Another example, on reddit I have to use m.reddit.com to make it light weight enough to be tolerable whereas HN works faster and more cleanly without losing the capacity to vote and comment.
edit: Another example, on reddit I have to use m.reddit.com to make it light weight enough to be tolerable whereas HN works faster and more cleanly without losing the capacity to vote and comment.
That's why I made http://ihackernews.com
To me, I find it more limiting that child comments are not nested within their parents. For example, implementing a show/hide children feature is annoyingly difficult to do, as is showing trails leading to the parent. IIRC, all HN comments are DOM siblings of each other.
I couldn't care less about divs vs tables or spacer images. However, I really feel tree structured data should be encoded as such, especially when the document itself is tree structured. It seems more difficult to do it otherwise.
Not that it really matters that much. I have bookmarklets that add nesting and trails, but it was just annoying to make them. I realize I'm an edge case, and overall HN is hardly as impacted by it's markup as it is by the community.
I couldn't care less about divs vs tables or spacer images. However, I really feel tree structured data should be encoded as such, especially when the document itself is tree structured. It seems more difficult to do it otherwise.
Not that it really matters that much. I have bookmarklets that add nesting and trails, but it was just annoying to make them. I realize I'm an edge case, and overall HN is hardly as impacted by it's markup as it is by the community.
Are you driving the exactly right car vehicle for you? Let's all figure it out.
Of course, you have all of the information we'll require to make this decision, so you'll have to answer all of our questions.
Oh, sure, we could just trust that understand the options and your own specific situation and have already weighed everything and taken the path that makes the most sense. But how would that be any fun?
Of course, you have all of the information we'll require to make this decision, so you'll have to answer all of our questions.
Oh, sure, we could just trust that understand the options and your own specific situation and have already weighed everything and taken the path that makes the most sense. But how would that be any fun?
Hi, I made a quick mockup of HN's frontpage using semantic markup and CSS. There are some issues as my CSS skills are not the greatest, but I think it's a very good start.
https://gist.github.com/719217
https://gist.github.com/719217