The stupid question is the question not asked | |
PerlMonks |
Re: Larry Wall for President! (or at least voting systems in Perl...)by Ytrew (Pilgrim) |
on Nov 03, 2004 at 05:27 UTC ( [id://404822]=note: print w/replies, xml ) | Need Help?? |
So, Monks, how would you use Perl in a voting system?
I'm a fan of the KISS principle. I'd make it drive a graphics engine (assuming I chose Perl for this task) that printed out a machine and human readable ballot. For example, a large X could be printed out in a fixed spot beside one of the candidate's names. Next, the ballot would be passed through a verifier machine, to be sure that it can be electronically read. If it cannot, it must be shredded, and a new ballot must be printed, to avoid a spoiled ballot. A large man with a dangerous object in his hands would prevent anyone from putting more than one ballot into the ballot box. The machine readable ballots would then be quickly counted (say with a big sheet feeder passed through an OCR style process), and then verified by one or more hand counts. The hardware would be the hard part: ensuring that the printers printed, the scanners scanned, etc. In general, hardware is more reliable than software, so I'd rather put my trust in that. As a voter, I can't tell if the software in the blinking box is working, but I know an X when I see one. This seems like the most robust way I can think of to: (a) provide ballot validation, as an improvement over paper ballots. Since each ballot is validated before it is cast, there won't be debates over whether a circled box counts as a X in the box, and so forth. (b) provide a quick inital count, so that results can be announced quickly (people want to know "who won"). (c) provide a human verifyable recount. (d) Satisfy the requested conditions Security:People can't really tamper with the system, because all it does it print ballots. Voters can tell instantly if it breaks, because then the ballot they print isn't the one they wanted. If anyone tries, the large man gets up and hurts them. Stable/Redundant A generator with power backup for the length of the election could keep the system running. The software is simple, and unlikely to fail catastrophically. If any system fails, it can be reset (one possible strike against Perl, since the right answer is an instant-on ROM image, IMHO). If an EMP pulse takes out the entire system, the cast votes remain in the ballot box, and the remainder of the ballots are cast by hand. Accessible This is hard, but not impossible. Blind, deaf, and dumb people use computers. A soundproof booth with braille keys and a pair of headphones could assist a blind person. The booth would be transparent, so that no-one could sneak in behind the blind person, out of sight of the scrutineers. The large, dangerous man can also help with the physical security aspects. The verifier machine would be especially useful for the handicapped, as a second confirmation that they did vote the way they had intended. (e) Ensure trust in the system, by making it as simple and transparent as possible. Each person, regardless of role, should know as much as possible about the system. As a voter, I know my vote went into the box. If I want, I can stand around, and make sure no one else is putting more than one vote in the box. As a scrutineer, I know that nothing was taken out of the box until it was opened. I also know that the box was empty when the election started, and each voter put exactly one ballot in the box. This tends to suggest that the ballots in the box are the ballots that I saw the voters cast. I get to count them as many times as I want to ensure they add up. While it's technically still possible to rig up a magic trick ballot box (say, with hollow sides that catch the real votes, while the planted votes remain inside the locked door on the front), it's hard to do, and careful examination of the box (say, with X-rays) will catch it.
Writing buggy software is very, very easy. Proving that software is correct is very,very hard. Using software correctly in elections means using as little of it as possible, IMHO.
--
In Section
Meditations
|
|