A lot happens before ideas become solutions.
At ElixWare we want to bring you more than just great, affordable software. We want to let you know how and why we do what we do.
Our Ruminations blog will bring you insights into how we got here and some of the things we consider when trying to help you run your business. We hope it gives you a better understanding of how we strive to better serve your needs.
Monday was the official starting pistol of the 2020 presidential primary season. Iowa held their caucuses and the results surprised everyone. At least the fact that there were no results did.
In the United States we're used to almost instant results. Not necessarily the moment the polls close, but usually shortly thereafter. In close races it may take a few hours to get things sorted out, but while we're waiting we all know how close things are. But not this time. This time the only thing we know is that most precincts are blaming an app.
The good part is obvious: a controlled data environment with limited access should result in secure data and fast reporting. Emphasis on "should".
The bad part is even more obvious: election results should always have paper ballot backups. More emphasis on "always".
Fortunately the Iowa caucus organizers claim to have paper ballot backups, but they don't seem to have had a backup plan. Dead horse alert: normally I would quote Eisenhower here, but in this case a plan should have been in place and ready to go.
Iowa isn't the only early primary state that plans on using an app. Nevada also plans to use the same app for their caucus results later this month. After spending over $50k on the app I'd be willing to bet that today the Nevada State Democratic Party is testing it like there's no tomorrow.
Getting things right is important. Especially when the occasion is important, dangerous or if the world is watching. A good rule of thumb is "the more consequential something is the more redundancy should be employed".
Elections are important, and can be complex (e.g., ranked-choice voting). They're arguably more complex than pants (and possibly more important) but less complex than a space mission. I'm not claiming (yet) that elections can be as complex as a space mission, but even pants have an option for a belt and suspenders so why not elections?
E-voting is where I start grousing that elections can start to rival the complexity of a space mission. Hacking and election interference is a serious concern, and that doesn't even include the perils of online voting.
I'll be honest, I've done some research and some rough work on this subject. Someone like me could disrupt state and/or national online elections to a significant enough degree as to render the results contestable. Yes, the election commissions could take reactive countermeasures to prevent some methods of interference, but not during the election. There are no do overs for elections, so fixing it afterwards involves a barn door idiom.
I'll cover more about e-voting and all it entails in a future post.
Software testing comes in many forms. While coding, we do a lot of smoke testing and sanity testing. But testing shouldn't stop there. There's unit testing, regression testing, stress testing and many other types of testing. This may sound like a lot of testing, but keep in mind that software, like elections, is more complex than pants.
Each project needs different types of testing in different measures. And you know who shouldn't do the final testing? The programmer(s) who wrote the code. Not because they'd make sure the software passed the tests, but because their knowledge of how the software works can unconsciously influence how they test it.
The best testers are people who know what the software is suppose to do and nothing else. They should be motivated by a bounty on each and every bug they find, including cosmetic bugs. And the test results should be reviewed by these types of testers as well (though they should never review their own test results). There should be bounties on any bad data or errant results they find.
If paper is good enough for money it's good enough for ballots. Just don't let that baby feeding robot insert the ballots into the optical ballot scanner.