Next up: The subscription and payment system, in anticipation of a public store presence and our launch date.
So, there I was, figuring I could "simply" take an existing library to count votes and use it in our code. Democratic voting has become a moderately prominent topic in recent years, with several researchers in the field actually still being alive (…and even active on Reddit).
The reality, however, forced me to abandon multiple libraries and code snippets. They are either more concerned with running elections or have such a massive overhead using structures proving how object-oriented you can write stuff that could otherwise fit into two lines of code. This could be a bit subjective, of course.
Oh, and the most significant obstacle: We want insight into the voters' preferences. Just getting "the winner" doesn't quite cut it.
While things like that are relatively common, somebody like me who's used to thinking in visuals and abstract structures isn't the best choice in writing code that comes down to performing maths. I clawed my way through conflicting opinions by actual experts, tons of aspects why which algorithm would work for what situation while trying to find the least evil which could be implemented in a reasonable timeframe.
Two kilos of biotin supplements and one fried brain later, I ended up with a working version of Tideman's ranked pair voting. “Working” in the sense that it gives fast, valid results for a few public test cases, but we don't have to resolve ties to the same extent that others do.
Naturally, for our super most awesome democratically engaged users, there is no visual difference - except that the results are actually meaningful. Unless you only have two candidates. We're still doing FPTP in that case.
TL;DR: 3rd party libraries didn't work. Had to spend a ton of effort writing new code. Math is hard. 3rd party libraries, projects, Reddit, and universities are awesome. Going to put this into yet another open-source library in the future.
Celebrations and a round of おにぎり for everybody! (…please nobody mention that we still have to implement Schulze STV for polls with multiple winners in the future).
All the best,
Zen, CTO at ODE.
Please, if you have any questions start a chat, we are always online and happy to talk 🤗 There is a little blue chat icon on the bottom right of the screen, give it a try 🧐
All the best from Potsdam,
The ODE Team ❤️