Rebuilding Voting, Part 1

Brian Hogg
Blundit
Published in
5 min readMay 23, 2018
This cool image of hands was callously grabbed from http://www.burntx.com.

So it’s been a while: the combination of some heavy deadlines for my day job, family obligations (my wife and I have a very active 4.5-year old, and we got an even more active puppy at the beginning of the year), and screen of my home laptop dying (repairs to which were hampered by the above-mentioned heavy deadlines), I haven’t really had a chance to work on anything Blundit in several months.

But now I’ve got a bit of time! So I’m working on it again.

Next up will be an overhaul of the voting system. Voting in Blundit at present is used to let the users determine the accuracy of a Prediction or a Claim.

The way voting works now

Presently, voting in Blundit is reasonably straightforward. When either a Claim or Prediction is in a voting window, users can vote on whether they think it’s true or false. But what determines whether an item is in a voting window?

  • A Claim can be voted on immediately, for a period of 15 days.
  • When a Prediction is created, a date that it will be ready to be voted on is selected, and it can be voted on as soon as that date is reached, for a period of 15 days. (For example, the Prediction “Apple will release 3 new iPhones in the WWDC keynote” would have a date of June 4th, which would be the beginning of the voting window)

After the 15 days, the site will calculate the votes and determine the “correct” stance. The status of the Claim or Prediction will then be changed, and the accuracy rating of any Experts connected to it will be adjusted accordingly.

There is, as well, a minimum voting threshold that must be met. For testing it’s 3, which means that after 15 days, there must be 3 votes in place in order for the item to get marked as true or false; if there aren’t enough votes, the voting window will remaining open until that threshold is met.

So the voting window is really 15 days or 3 votes, whichever comes first.

Those specific numbers are something I plan on changing (and which, as I’ll describe in a subsequent entry on voting, I plan to make dynamic based on a number of factors), just in case you’re reading this and thinking that 3 votes is a ludicrously low number. Because it is! And 15 days might be, I’m not sure yet!

Shortcomings to this approach

One of my primary concerns with Blundit, from the perspective of the integrity of the data in the system, is keeping it from being a site that simply records the consensus reality. This would be bad, because there are many things which will be believed false (or true!) by the majority, even though they’re actually true (or false!). And there will be things that are said by media folks who might, if the site becomes popular, send their fans to in order to spike the voting. In both cases, the current voting system (which, I should point out, hasn’t even been fully re-implemented on the frontend) would fall short. So we need the ability to allow Claims and Predictions to be voted on again.

Once a vote is closed, there’s no way for a user to record their opinion about the item on the site. So for example, if you came to the site 15 days after launch, and were reading the now-settled claim “Evolution happens” and had strong opinions on it, there wouldn’t be a button for you to press to register said opinions. Now, sure, you could leave a comment, but is that enough? No, definitely not. So we need the ability to record your opinion on an item, whether or not that opinion counts toward determining if the item.

The only two options are that a Claim or Prediction is true or false. This may immediately seem sufficient — and indeed it did, to me, for a while — but it isn’t. Much of the time you’ll be able to reduce an item to being True or False, but what about the Claim “IKEA is the best furniture store in the world?” I haven’t been to them all, I can’t confidently say that it is or isn’t, so I’d have to rate it “I don’t know.” Or what if you’re the kind of agnostic who thinks the existence or non-existence is unknowable? You’d want to respond to the Claim “God Exists” by clicking the “Unknown,” but you can’t, because that button doesn’t exist. So we need to add at least two more responses to vote with.

And what if you change your mind? In the current implementation, once you vote, that’s it. You’re done. What if, two years after clicking the big “FALSE” button on the “Evolution Happens” claim, you change your mind? Or what if you simply hit the wrong button, and want to fix your error? In both cases, right now, you’re out of luck. But you shouldn’t be! Blundit should be able to record the evolving opinions of its users. (We might also want to enable users to vote on whether they think a Prediction will come true, before it has, which would allow users to have their own accuracy score. Which would be cool!) So we need to allow users to update their votes on an item, to show when users change their minds.

Next Steps

This voting system will require extensive backend (Ruby on Rails) and frontend (ReactJS) modifications, but before I can properly start on those, I need to figure out a modified DB structure that will suit our needs. So in the next post, I’ll lay that out.

You can read Part 2 now!

If you want to follow along with the development of Blundit, please follow this Publication on Blundit. Alternatively you can head over to blundit.com and add yourself to our mailing list, and you can load up dev.blundit.com to see the current version of the site, and find links to our public Github repos, public Trello board, and other things.

--

--