stlhopswikiSo, I don’t know if anyone noticed, but it’s been a full week and there wasn’t a winner declared for the STL Hops 2011 St. Louis Beer Challenge.  The reason is that when the contest ended, it looked like there was a bit of an irregularity in the voting.

Rather than just depend on the Bracketeers (the website I use to run this contest) winner declaration, I decided to email the company to find out what happened.  Because, you see, as the contest came to a close on Thursday night, it appeared that Buffalo Brewing’s Rye IPA was winning with 70% of the vote compared to Schlafly’s American IPA’s 30%.

After the contest ended, I received a string of emails that used phrases such as: “Fixed the race” and “sham”.  I even had a string of emails implying that I was a fraud and a liar.

Needless to say, this really hurt.

I’m not trying to create a sob story here, because I’ve really been proud of everything that the STL Hops community has done and created, but I’ve worked really hard the last 3.5 years to passionately promote beer in Saint Louis. So, when you receive emails like this, it can be a real kick in the gut.

But, I understand, people are passionate about beer. When their favorites lose, especially after the software showed the beer was in the lead, people get a bit riled up.  So, I wanted to get an answer before moving forward.    Here’s the response back from Bracketeers:

Hi Mike,

Below is the actual vote count by date:

266 votes for Schlafly American IPA
262 votes for Buffalo Brewing Rye IPA
156 votes for Schlafly American IPA
58 votes for Buffalo Brewing Rye IPA

95 votes for Schlafly American IPA
16 votes for Buffalo Brewing Rye IPA

Final vote count:
517 votes for Schlafly American IPA
336 votes for Buffalo Brewing Rye IPA

What it looks like is going on is someone attempting to be clever and game the system, coupled with a bit of a bug on our side (which did not affect the results).

Basically, when we record a user’s vote, we only allow each unique user to cast a single vote.  We identify unique users based on cookie values (if their browser supports cookies), or else by IP address (if their browser doesn’t support cookies).  The winner of each round is determined by counting up these unique records.  However, for calculating percentages, we don’t use the unique records — counting up all the votes for a matchup every time we display a percentage would be incredibly inefficient and slow. Instead, we maintain a running tally of votes that gets incremented every time someone clicks the vote button.

Now, here’s where the bug comes in.  If someone, after voting, reloads the page in an attempt to vote twice, or clears their browser cookies and then reloads the page, there are instances where the tally will get incremented while the unique record will not.  If we can allocate some time to it in the near future we’ll try to fix this.  We can tell when this has happened when the running tally votes don’t correspond to the actual votes cast — it means that the same unique user has voted (or attempted to vote) in the same matchup multiple times.  There are a few, fairly unusual circumstances where this can happen legitimately (multiple users with cookies disabled coming from behind the same proxy server, for instance), so we like to keep counts of both records.

By both counts, Schlafly would have won the bracket, but there’s a pretty significant difference between the actual unique votes and the tally.  This sort of discrepancy can cause some fairly odd jumps in percentages during the actual voting.

Anyway, we’ve got a high confidence that the winner of the bracket was in fact the correct winner, and that’s always been our highest priority.


So, it looks like we have an answer to why the software might have shown one thing for a while but when the numbers were finally released Schlafly was the winner.  But I’m not comfortable with that.

Yes, the numbers say Schlafly was the winner, but the software, which I picked, said different for quite some time.  So, I think the best option is something I said when this final round began, “But let’s be honest, no matter who loses, we all win.  Both of these are fantastic beers and ones that absolutely deserve to be in the final two.”

So what we’re going to do is make the beers co-champions.  Congrats to both winners, you make some fantastic beer.

And I promise next year, if I do this again, I’ll find a new website to host it. That should hopefully fix any problems.