8 ms·
Fast is one thing. BUT I'd much rather get rid of the "this link has expired" syndrome. Fast is only impressive if the results are modern.
by JuDue 14y ago
Fast is one thing.
BUT I'd much rather get rid of the "this link has expired" syndrome.
Fast is only impressive if the results are modern.
- deleted 14y ago[deleted]
- brudgers 14y agoThe superior results from my browser's back button far outweigh the inconvenience of the expired link. I click on a link from the "Ask" front page, reply to the top comment, and my comment appears in the thread. Next I click "back" on my browser and I'm back at the front page of "ask". I do that much more often than I hit an expired link.
- cincinnatus 14y agoStill, why not link to a page offset and just show what is current? Or include it with the current linking and automatically redirect? Pretty basic ux optimization.
- brudgers 14y agoBecause the functions which generate pages get garbage collected. Once the function is gone, there is no reference point. I suspect hindering spam and vote manipulation plays a part in the architectural decisions. It also makes it possible to create different HN's for different users - e.g. the hellbanned, royals, and plebeians.
- Indyan 14y agoI know about hellbanned, but what are the royals and the plebians?
- brudgers 14y agoTheoretical particles required by my unified theory of HN.
- stcredzero 14y agoInterested. Link?
- dfc 14y agoRoyals and plebeians might be a little strong. YC folks have a slightly different interface. I think the main differences are that YC usernames show up in orange and there is a link along the top that displays the most recent submissions from YC folks/alumni.
- brudgers 14y ago"Royals" came to mind from FlameWarriors - though maybe my predispostion to think of PG as the Philosopher King of HN played a role. Anyway, "Plebians" was just pushing the political analogy a little further. I'll take your word about the differences in interface. I really was just conjecturing. http://redwing.hutman.net/~mreed/warriorshtm/royals.htm http://redwing.hutman.net/~mreed/warriorshtm/royals.htm
- jules 14y agoThat doesn't really have much to do with the expired link issue. That issue exists because the targets of links are stored as closures on the server. What you want is to serialize those closures into the URL itself, instead of letting the URL be a pointer to a closure stored on the server. In traditional web applications, you'd have to do that serialization manually (although if you've never used such a closure based web framework you might not even be aware that you're doing this, just like a C programmer who has never used a high level language might not consciously realize that he is implementing objects or closures or garbage collection manually -- or like an old Fortran programmer who is not aware that he is implementing recursion manually). The problem used to be much worse, but then PG did this transformation manually for the important subset of the site (most importantly for links to the comments section -- these links no longer expire). Here's an example. Currently if you go to the home page and then click the "More" link at the bottom to go to the next page, and wait long enough, the more link expires. That's because it's currently implemented as something like this (not sure about ARC syntax, I'll use Scheme syntax here, but you get the idea): (define (show-list-of-posts page-number) ... display the rest of the homepage ... (link "More" (lambda () (show-list-of-posts (+ 1 page-number))))) This stores the closure `(lambda () (show-list-of-posts (+ 1 page-number)))` with the free variable `page-number` in a hash table on the server. The URL becomes an index into that hash table. But the only information needed to reconstruct such a closure, is the function body and the free variables. So if we defined an auxilary function: (define (foo page-number) (show-list-of-posts (+ 1 page-number))) then we could represent the closure as the pair ("foo",page-number). If we encode that in the URL, then instead of looking up the closure from the hash table, we can reconstruct the closure on the fly. Hence we do no longer have to store anything on the server, and no links can expire anymore. There are some challenges when you want to do this transformation automatically, but they can be overcome.
- jgrahamc 14y ago"The problem used to be much worse, but then PG did this transformation manually for the important subset of the site (most importantly for links to the comments section -- these links no longer expire)." I don't think this is strictly true. The comments and reply links simply link to a normal (non-closure) URL on the site and the page is generated from that URL in the normal manner.
- lmm 14y agoThere are extensions that help with that.
- raldi 14y agoThe worst is when you write a big long comment, submit it, and get "this link has expired" -- then you hit back, and the textbox is empty. This is particularly infuriating on a cellphone. One quick fix: in the code that prints this message, check to see if the request was a comment-post action. If so, append, "...but for your convenience, here's the text you tried to post, so it's not lost forever: [...]" (Just watch out for XSS!)