6 ms·
Of course, I may be overlooking something, but this sure seems like a case of overeducated engineers overengineering a solution that then underserves users rela
by SiVal 12y ago
Of course, I may be overlooking something, but this sure seems like a case of overeducated engineers overengineering a solution that then underserves users relative to a naive solution.
Individualized closures to keep track of what each user has already seen? Why not just have a single, current ranking of stories for everybody and let me pick how many of them I want on each page (up to a point). So, I have a preference that says I want 100 stories per page. Well then I get 3-1/3 pages worth of non-repeating stories without all the computer science. If I later click the "more" button, I get the second hundred, whatever they happen to be at the time I click "next".
That's easy enough for me to deal with. If it has only been a few minutes since I loaded the front page, most of the second page will be new to me. I don't care if a few of them aren't. I'll just skip past them. I'll have plenty of titles to scan over. But if it has been, say, a day since I loaded the front page, instead of clicking "more", I'll probably just reload the front page. I can take care of that myself. No big deal.
With the new API, of course, we can now just build it ourselves, but all this engineering sophistication that resulted in a fixed, 30-article front page and the maddening inability to ever get far past the first 30, reminded me of Ted Nelson's Xanadu Project, which was so cleverly designed to prevent dead links that it never went anywhere, while the naive Web (dead link?, oh well) changed the world.
- willvarfar 12y agoExcept that stories can move up and down the list over time, and users do care. Slow browsers like me were hitting dead links precisely because we were slow. Yes you can still store this much more centrally and cheaply than closures. You can have all stories with a timeline in and do a sort using next-thirty-at-this-timestamp and, despite you visiting every story and then sorting, I'd expect it to be snappy enough for a heavy hit site. Furthermore, you could speed it up with linked lists instead of timestamps too etc.
- danielweber 12y agoIf I take 20 minutes to browse the first 30 links, and then click "next", do I really want "next 30 as of 20 minutes ago"? If I'm on the second page and hit reload, what's the expected behavior? "Second 30 as of 20 minutes ago" or "second 30 right now"? I can kinda-sorta see how this implementation might be better in some corner-case, but it overalls leads me to having a confused state about just where I am in the stream.
- Kluny 12y agoI definitely want the the second 30 as of 20 minutes ago. If I wanted the fresh thirty, I'd refresh the page.
- Domenic_S 12y ago> users do care Disagree. Reddit & (the old) Digg both use a naive implementation that repeats stories and they have/had millions more users than HN (and nobody complained).
- Kluny 12y agoI seem to recall that people complained constantly. Reddit at least, if you click the "more" link, at least half the time you would get "there doesn't seem to be anything here." And you bet people complained about that one.
- jacquesm 12y agoTed Nelson's Xanadu never went anywhere because they simply didn't release. HN is here to serve you and apparently it serves you well enough for you to be here to make snide comments at those that work to make your life a bit better. If you are not on the inside of a problem it's super easy to tell the people that are how you'd do a much better job of it you were the one in their place. To all those people I would say: prove it and build a website that serves the HN audience better than HN does right now. I'm sure you'll go places with that. If you dropped all the value judgements on the people that do the work in your first paragraph then your comment would be a much better one.
- SiVal 12y ago"All the value judgments" you accuse me of apparently means a single word, "overeducated", which I used as a tongue-in-cheek synonym for "perhaps a little too sophisticated for their own good in this case". I think you're being a little oversensitive about it, but just in case, let me formally (and literally, not sarcastically) express my gratitude to the makers of HN for creating a website of great value to me. Now, having said that, this is a website where the discussion of the pitfalls of one dev approach vs another is why we're here, and I was seriously suggesting that this might have been a case where the naive approach of a "less-educated" developer might have worked even better. I wasn't claiming to be a less-educated developer myself (ahem). ;-) As I said, I could easily be overlooking something, and I won't be building my own Hacker News in outrage over the issue, but it still seems to me that just letting me have more items at a time on each page would solve the problem well enough (for me) with no need for anything fancier.
- brudgers 12y agoWhat may be overlooked is that continuations are a useful way of storing state when using a stateless protocol such as HTTP or when dealing with asynchronous communications in general. They are useful because they are lightweight. There's no serialization/deserialization, no read/write from persistent storage, no additional tiers, no additional layers. It's a simple mechanism that's provided directly by the programming language in which the application is written. Out of curiosity, what problem do you experience due to the 30 item constant?
- brudgers 12y agoMy impression is that Hacker News is largely a case of a single over-educated engineer hacking up a side project. Closures were duct tape...not in the "Alabama chrome" sense, but in that they are a stable well understood technology. Files 'on disk' rather than a RDMS are a similar engineering simplification. Sometimes HN chars a bagel. It's a toaster not a microwave oven.
- rthomas6 12y ago>Sometimes HN chars a bagel. It's a toaster not a microwave oven. This is one of the strangest analogies I've ever heard.
- brudgers 12y agoHN is a simple mechanism. It fails in a few predictable ways. No raw spots in the chicken or exploding bowls of oatmeal.
- krapp 12y agoThat's not even a well designed toaster, though.
- lysium 12y ago> Of course, I may be overlooking something, but this sure seems like a case of overeducated engineers overengineering a solution that then underserves users relative to a naive solution. Actually, I'd say that saving and restoring closure _is_ the naive solution. You write code as if you were serving only a single user.
- malisper 12y agoHacker News was not meant to be something actually used, it was originally designed to be a way to test Arc[0]. Additionally, the code was meant to be a short as possible[1]. [0] http://paulgraham.com/hackernews.html http://paulgraham.com/hackernews.html [1] http://paulgraham.com/arcchallenge.html http://paulgraham.com/arcchallenge.html
- dang 12y ago> Hacker News was not meant to be something actually used Of course Hacker News was meant to be used.
- malisper 12y agoMy bad. What I wanted to say was that Hacker News was not meant to be used at the scale it is used today.
- wglb 12y ago... a place for current and future Y Combinator founders to exchange news From one of the articles you indicated. Sounds to me like it was intended to be used.