Tell HN: upvotes don't register if you take the time to read the article

35 points by hyp0 ↗ HN
Instead, you have to refresh the comments page. This is caused by the specific upvote hyperlink becoming stale.

Unfortunately, the consequence is a systematic bias towards knee-jerk votes based on the title; and towards people who quickly skim the article, as opposed to taking the time for careful reading and reflection.

12 comments

[ 5.6 ms ] story [ 39.0 ms ] thread
wow, that is going to be a challenge to fix.
Any idea what the upper limit is? Pretty sure an hour's fine, as I usually open a few article together with their respective comments page and then go through them at leisure. I would upvote after I finish reading, then reload the comments page to see the latest comments, and the upvotes stay.
I'm not sure how you came to this conclusion, but as stated it's false. Vote links don't expire, and require no saved state on the server. In fact, they never change.

If you're still seeing strange behavior, please email me at nick@ycombinator.com, since I'd like to track it down and fix it.

It's exactly as e12e describes: if you've had the page open for a while, and click an upvote, then the arrow disappears and it looks like you have voted.

But if you refresh the page, you'll see that the arrow is still there. If you upvote now, on this fresh page, the upvote is counted - you can tell, because if you refresh the page now, the arrow will be gone. (This proves to me that I haven't been disenfranchised or banned in some way - I can vote, it just has to be on a fresh page.)

I get the same behaviour on both firefox desktop, and the stock android browser.

Why not try it, and see if you get the same behaviour?

Of course, I don't know the details of how HN implements voting - it just behaves as if the link expires in some way...

For a regular link on HN, if you leave it too long, it will explicitly say "link expired". But for upvotes, you don't see that message (presumably it is what gets returned to the up arrow though).

Voting uses a completely different mechanism. There is no saved state or time component. Unless your login cookie has expired, votes will count.

Can you tell if your browser actually makes the request?

I'm going to try it with your comment, though I don't expect I'll be able to reproduce it.

Update: Just tried it. Waited 1 hour, 36 minutes and upvoted your comment. Success.

In fact, looking through our server logs, you've never voted more than once for the same item in the last 12 days. These are logs of all requests, before the code could even potentially error or filter them.

For some reason, your browser isn't making the request, or it's getting dropped before we see it. If you have any ideas I'd love to hear them, but right now I've got nothing to go on.

Thanks for looking into it. That does sound strange.

My mobile internet connection is flakey at times; but unlike a regularly failed request, there isn't any evidence of failure for voting (BTW I noted that SO does give an alert if this happens for their votes.)

I also tried it again and found sometimes it fails even on a "fresh" page (and as you've explained, that shouldn't make any difference anyway). It may have just been a coincidence when refreshing worked.

I'm having a lot of network problems recently, so that may be it. But it's also definitely happened in the past, when I wasn't having any such problems.

"The network is unreliable" - this would also explain why several other people have experienced this behaviour, that looks like expired links. Heh, probably the HN maintainers have great network connectivity, and so you mightn't ever see it yourself.

> the consequence is a systematic bias towards knee-jerk votes based on the title

That's the success recipe of all social news sites (all news in general, in fact).

(comment deleted)
I think the main issue is that upvotes will seem to work, even if the link's timed out (ajax magic!).

So for me, that often look at the front page, open up a handful of interesting stories (comment pages) in new tabs -- read a few of the stories -- and maybe go an errand -- and then come back and decide, yup, I'll "save" (and upvote) those stories, because they were intersting -- I'll click the upvote, the arrow dissappears -- and then I'll reload the front page and see that my upvotes weren't registered after all.

I'm not asking hn to cater to my (perhaps eccentric) use-pattern -- but there should be some feedback that voting isn't registered (eg: an on timeout in the page, that disables the vote-arrow a little while before the link expires).

What I'm saying is that the link can't time out.
Strange. Perhaps it's a cache coherence issue then - but I certain I've on occasion clicked the up-arrow, seen it disappear, and the reloaded the page, and see the arrow come back (allowing me to up-vote "again"). AFAIK on those occasions the story in question hasn't been listed as a "saved story" on my profile page (until after the "second" vote).

[edit: seeing your other reply, I'm guessing either a network issue or a network issue coupled with an ajax issue. Any chance the browser caches the dns name for the url, an then makes the request to the wrong ip? ]