Software Bug Adds 5K Votes To Election 239
eldavojohn writes "You may be able to argue that a five-thousand-vote error is a small price to pay for a national election, but these errors are certainly inadmissible on a much smaller scale. According to the Rapid City Journal, a software glitch added 4,875 phantom ballots in a South Dakota election for a seat on the city council. It's not a hardware security problem this time; it's a software glitch. Although not unheard of in electronic voting, this bug was about to cause a runoff vote since the incumbent did not hold a high enough percentage of the vote. That is no longer the case after the numbers were corrected. Wired notes it's probably a complex bug as it is not just multiplying the vote count by two. Here's to hoping that AutoMark follows suit and releases the source code for others to scrutinize."
Uh oh... (Score:3, Funny)
The software has achieved sentience and is trying to elect its robot overlords! Before anyone else... I for one welcome our democratically elected robot overlords.
Re: (Score:2, Funny)
Re: (Score:3, Insightful)
I take it you've never really taken a good hard look at the crop of politicians currently in office. The 'droids have been running the show for quite some time now....
Re: (Score:2)
I take it you've never really taken a good hard look at the crop of politicians currently in office. The 'droids have been running the show for quite some time now....
The sad thing is, this works for either political party!
Re: (Score:2)
Obligatory Onion Video [youtube.com].
Re:Uh oh... (Score:4, Funny)
No no no, it's clearly a glitch. Counting numbers (e.g. 1+1) really isn't a computer's strong suit, so it's understandable that it would sometimes do this, 1+ 1 + 1 + 1 + 5000 + 1 + 1.
Re:Uh oh... (Score:4, Funny)
I'd mod you funny but I've completely lost faith in electronic voting.
How hard is it for a computer to do addition? (Score:5, Interesting)
Why is a voting system doing any kind of math at all? I voted yesterday in Belgium on a computer that puts my vote onto a card, which is then tallied separately. This same system has been working since at least 1995 with zero reports of fraud or failure (except normal "computer is broken" style failures).
How can a computer "add phantom ballots"? Software does not just "glitch", it breaks in ways that depend entirely on how it was built.
Re:How hard is it for a computer to do addition? (Score:5, Insightful)
Why is a voting system doing any kind of math at all? I voted yesterday in Belgium on a computer that puts my vote onto a card, which is then tallied separately. This same system has been working since at least 1995 with zero reports of fraud or failure (except normal "computer is broken" style failures).
How can a computer "add phantom ballots"? Software does not just "glitch", it breaks in ways that depend entirely on how it was built.
How do you know this system is fraud free? Reading your comment doesn't convince me one bit. I voted too, in the Netherlands, and for the first time in years I had to use a pencil again. No guarantee that there are no counting errors, but they won't be systematic on a large scale.
Re:How hard is it for a computer to do addition? (Score:5, Interesting)
Belgian politics are not always polite. There is endless infighting. There is no monopoly of power, every government is a coalition and always fragile.
This makes election fraud very hard to organise and probably impossible to keep a secret. One would need to buy too many people, for too long.
So not because I trust the Belgian political establishment, but because I trust their incompetence and greed, I'm pretty satisfied that every vote is counted, and accurately.
Re: (Score:2)
Ah delicious ... Democracy, the system that works despite faulty humans.
Re: (Score:2)
How do you know this system is fraud free?
Because the biggest proponents of electronic voting (OpenVLD) have lost the elections. :p
Re:How hard is it for a computer to do addition? (Score:5, Informative)
How do you know this system is fraud free? Reading your comment doesn't convince me one bit. I voted too, in the Netherlands, and for the first time in years I had to use a pencil again. No guarantee that there are no counting errors, but they won't be systematic on a large scale.
The Belgian government publishes the source code of the voting software the moment the bureaus close. The software of yesterday's election can be found here: http://www.ibz.rrn.fgov.be/index.php?id=1152&L=1 [rrn.fgov.be]
Re:How hard is it for a computer to do addition? (Score:4, Insightful)
Re: (Score:3, Funny)
Real life appears to disagree with you! :D
Re:How hard is it for a computer to do addition? (Score:4, Insightful)
Right. Ask a computer to count 1 million records and stop exactly on the millionth, and then ask a person to count 1 million cards and stop on the millionth. If you had to bet your life on it, who would you think would be more precise? Obviously computers have value.
On the other hand, I'm a firm believer in the idea that the source code should be available for review to make sure there are no weird bugs that could multiply votes, and there should be a paper trail so that the computer can be checked for voter fraud. Computers are more efficient, but not only are they more efficient at doing the right thing, and they're more efficient at doing the wrong thing. If the code tells them to count votes incorrectly (whether it's fraud or an inadvertent bug) they will very efficiently count the votes incorrectly.
Re:How hard is it for a computer to do addition? (Score:5, Funny)
Additions just aren't so simple anymore in concurrent computing. The obvious way to do addition in gcc c would be:
totalVotes[candidate]++;
but this will totally screw up the vote count, whereas
__sync_add_and_fetch(&totalVotes[candidate], 1);
gets it right.
Re:How hard is it for a computer to do addition? (Score:4, Interesting)
Is it a race condition, it pulls the number adds one and puts it back, and if the system is run parallel it will drop vote added at the same time?
Re: (Score:2, Informative)
i++; is essentially the same as the statement i=i+1;. If you have multiple threads running at the same time you can potentially lose data should more than one thread try to assign i the value of i+1 at the same time.
Re:How hard is it for a computer to do addition? (Score:4, Insightful)
Re:How hard is it for a computer to do addition? (Score:5, Interesting)
Yes, it's a threading issue. If you have multiple threads trying to update the value, some of them won't count. You'd either need to use a lock (and probably mark the variables as volatile) or use some kind of atomic update (like a read-modify-write operation).
Still, you'd have to be an idiot to even try to count votes as they're coming in. A much better approach would be to use a database. Database servers are already really good at handling concurrency and scaling. When a vote is cast, simply add a record to the database. Once the election's over, do something like "SELECT COUNT(*), candidate_id FROM votes GROUP BY candidate_id", and the results will be calculated based on the records in the database.
Really, you could only screw this up if you insisted on developing the entire system from scratch, rather than going with existing, well-tested code.
Re:How hard is it for a computer to do addition? (Score:4, Insightful)
Sure, go ahead and add a field to the table and you've got a record of who voted for who, which is awesome!
The problem for slashdotters is that there is more to a voting system than JUST counting the votes properly.
You have to count the votes properly, provide proper auditing to validate that everyones vote got counted for who they voted for, all the while making sure that you don't actually know who specifically voted for who, even though you may need to prove that their vote was counted for a specific candidate later.
If all they had to do was count votes, they would have gotten it right cause even the $0.50/hour programmers from India can get that part right.
It does blow my mind however that we still get errors in electronic voting due to bugs, these companies are utterly failing and should be banned from making software such as these as soon as a bug like this is detected. It is not acceptable to have not tested your software properly before hand to detect this crap.
Re: (Score:3, Interesting)
Re: (Score:2)
I doubt this is how the machines work, but to answer your question, assume thread A and B are voting machines trying to update a single vote count.
The three steps in doing that are:
1) Read the current value
2) Increment the current value
3) Store the result back in the memory location
If thread A and B read the current value at the same time, they will both increment that same value and both try to restore the new incremented-by-one value. So if current votes is 55, thread A and B will both simultaneously rea
Re: (Score:2)
I doubt this is how the machines work, but to answer your question, assume thread A and B are voting machines trying to update a single vote count.
The three steps in doing that are:
1) Read the current value 2) Increment the current value 3) Store the result back in the memory location
If thread A and B read the current value at the same time, they will both increment that same value and both try to restore the new incremented-by-one value. So if current votes is 55, thread A and B will both simultaneously read that value, increment 55 to 56 and store that result.
God, I hope not- that's a horrible algorithm.
Client threads should never query the server for the current tally. They simply need to post a single event that carries the argument(s) identifying the vote for the candidate/issue, and a unique ID (ie- an MD5 generated from the current user's voting ID) to prevent multiple votes. The only communication that the client should receive from the server is a confirmation that the vote has been received.
Re: (Score:3, Informative)
I'm not a programmer but why would totalVotes[candidate]++; not work?
Is it a race condition, it pulls the number adds one and puts it back, and if the system is run parallel it will drop vote added at the same time?
Because totalVotes[candidate]++ really is
totalVotes[candidate] = totalVotes[candidate] + 1
which is
temp = totalVotes[candidate];
totalVotes[candidate] = temp + 1
and with 2 threads this might look like this:
Thread1: tempA = totalVotes[candidate];
Thread1: totalVotes[candidate] = tempA + 1
Thread2: tempB = totalVotes[candidate];
Thread2: totalVotes[candidate] = tempB + 1
Or like this:
Thread1: tempA = totalVotes[candidate];
Thread2: tempB = totalVotes[candidate];
Thread1: totalVotes[candidate] = tempA + 1
Thread2:
Re: (Score:3, Interesting)
The obvious way to do addition in gcc c would be:
totalVotes[candidate]++;
but this will totally screw up the vote count.
Why will it screw up? A bug? gcc trying to force good coding practices? Ignorant minds want to know.
Re: (Score:3, Insightful)
The real question is why is there a need for parallel processing? This is a voting machine, even a simple single core processor without any threads should be sufficient. As a matter of fact, I would try to make the software as simple as possible. When it is short and simple, there is less chance of hidden bugs or for a malicious programmer to hide something in the code. Also, any obfuscated code should not be allowed.
Re: (Score:3, Insightful)
I am not a programmer, nor an election official, but that process is as dumb as a blade of grass.
Why upload during the day? We are only interested in the whole day's total.
Why reset the local count? Like the server is infallible?
Why transmit ANYTHING? Like I trust even a modem call to a dedicated line. There is not much easier than diverting a landline. All you need are cutters and spare wire. My modem is just like your modem. MY server will be like your server. I can tap in and listen to a few connec
Re: (Score:3, Interesting)
Well, there's the
candidate[x]++;
that should be going on inside..
Other then then, no math..
Seems somebody is not following the K.I.S.S. method..
Re:How hard is it for a computer to do addition? (Score:5, Funny)
void vote(int candidate)
{
switch (candidate)
{
case GEORGE_BUSH:
totalVotes[GEORGE_BUSH] ++;
case AL_GORE:
totalVotes[AL_GORE] ++;
break;
}
}
Re:How hard is it for a computer to do addition? (Score:5, Funny)
Re: (Score:3, Funny)
Re: (Score:3, Informative)
Or at least I hope that was his intention.
Re: (Score:2)
No it doesn't.
C# case statements aren't allowed to full through to the next case statement, which is your point I'm sure.
The problem is that it doesn't 'work fine', it will refuse to compile unless you're compiler is broken and doesn't follow the spec
Re: (Score:2)
Seriously...
How hard is
If "A"
A = A + 1
elseif "B"
B = B + 1
elseif "C"
C = C + 1
endif
???
Re: (Score:2)
Seriously, if they want an electronic voting platform that is bug free they can just tell everyone to bring in their #2 pencils and drag in the scantron machines from the local public schools.
When was the last time you heard about a student getting a 5000/100 because the scantron had a bug in the software. Pure incompetence (or worse) on the part of the voting machine companies.
How hard can it be? (Score:5, Insightful)
I mean really, I'm pretty sure I could write a program with a couple of buttons and a counter for each.
What's going on here?
Re:How hard can it be? (Score:4, Insightful)
What's going on here?
That, my friend, we will never find out. We would if these highly complex applications were OSS, but then again the complexity of these are so immense that 9/10 experienced programmers had their heads spontaneously explode upon viewing the first line of code. That or someone is bullshitting you.
Re: (Score:2)
Re: (Score:2)
What's going on here?
What's going on here is that the vast majority of computer software is crap. And if the programmers think that nobody is ever going to see the source and that it will be impossible to verify the results then the software they write is even crappier. And even if it were traced back to the incompetent programmers there'd be no liability for them... worst cases they get fired and go to work at some other company that doesn't know better than to hire them.
Of course there's also the purposely rigged voting sof
Re: (Score:2)
It is precisely that attitude that causes these kinds of problems.
It is not just a counter. It might start off that way. Then someone wants to centralize the counting for all the machines.
Someone wants centralized report generation. Someone wants the data encrypted or stored in a certain format.
Then you throw in networking, threading, database... issues and it can very easily turn a simple 'counting' problem into something much more difficult.
Re:How hard can it be? (Score:5, Funny)
Ah, "Shaky" Jim was off his meds again.
Re: (Score:3, Insightful)
Really, the very first step you'd need to make, is separating the system into a GUI client, operator client and vote server. The vote server would be easier to verify due to very few libraries and unrelated code being used. The GUI client would not be able to mangle _all_ vote results in an instance due to
How..... (Score:4, Insightful)
Re: (Score:2, Interesting)
How does a local election provider define the ballot? How do you ensure that the ballot programming is accessible to politicos and not computer programmers? How do you QA the ballot program? How do you verify that nobody has tampered with the ballot program after it has been QAed?
For QA, how do you do it without using official ballots that don't end up in the valid votes pile? Do you use a different form? Then the official ballot might be different from the test ballot and result in badly counted votes
Re:How..... (Score:4, Insightful)
How does a local election provider define the ballot?
Depends, have a list of candidates, choose the candidate, submit it. For a yes or no issue have two buttons, one yes the other no.
How do you ensure that the ballot programming is accessible to politicos and not computer programmers?
Either have a GUI or hire a programmer, I'm sure that the cost of one programmer and one or two other people is a lot less than hiring a team to hand-count votes.
How do you QA the ballot program? How do you verify that nobody has tampered with the ballot program after it has been QAed?
Sign it. Have the program check the signature, good signature it lets it go, bad signature it rejects it and throws up an error message.
For QA, how do you do it without using official ballots that don't end up in the valid votes pile?
Reimage the machine after use.
What happens if the scanner (for optical scanners) gets miscalibrated, or the ballot printer was miscalibrated when it printed them, so that alignments aren't off? What if the initial votes and ballots are correct but later ones are not because of changes in calibration or alignment? Think about multiple ballot runs off a printer in a high-volume election.
Simple, don't use scanners. Simply have it be all digital with a paper printout that may be used if the electronic voting failed due to errors, etc. The paper printouts could be hand-counted if there was a major failure.
What about different election types? "Most-of", "at-large", "one-of", "instant-runoff", etc.? What about the interactions between these election types and other election types on a single ballot? What about multiple ballots in small regional areas? Who programs them and verifies the programs?
Programmers and the town. Have an open meeting where anyone can discuss them, fix them, etc. You only need to hire one competent programmer to program a ballot. Multiple ballots are simply more XML files, trivial to make.
Comment removed (Score:5, Interesting)
Re: (Score:2, Interesting)
We still have paper ballots that can be counted by any human being if the computer system fails. All the computer does is tabulate them and provide an interface for those voters (the blind/handicapped) whom can't fill out paper ballots themselves.
This is how all electronic voting systems should work. No automated result should be legally admissible for anything unless a human can double-check that result. It's like those robot radar guns that snap a photo of your license plate and then mail you a ticket. There's no defense against it or way to double check it -- there's no human to put on the stand and testify against you. (I'm sure there are legal ways around this that let places use this technology but I disagree with them.) It's the same wit
Re: (Score:3, Informative)
Re: (Score:2)
Sound like a good system .... mark a paper ballot, scan it, keep it in case of disputes
The Computer only counts votes, it is just doing the job of a counter only quicker
The paper votes system is transparent and hard to fix, the only downside is the slow counting
The marker could be used for all people to stop spoiled papers .....
Re: (Score:2, Flamebait)
Given that the law requires us to have a maximum of 1,000 residents per precinct and that ballots must not show the same candidates in the same order on any subsequent precincts, there are a ton of complications. Keep in mind, we have well over 8M potential voters in LA County and 5,000 precincts. (Let's not even get into the fact that we print ballots in eight languages by Federal law.)
In the November election, we counted well over 4,000,000 ballots b
Re: (Score:2)
Stop that! (Score:2)
Copy/pasting the same answer over and over...
Makes me feel senile running into those. "I could have sworn I just read that comment a minute ago... Did I really?"
Re: (Score:2)
He is describing whats know to programmers as a race condition.
If, at nearly identical points in time two people vote for the same canidate then what happens in the computer is that the system goes and gets the value of totalVotes[canidate] and stores it in a register or cache or whatever, then it adds 1 to that, and then puts it back into the memory location for totalVotes[canidate]. If there is only one person doing that at any given time, no harm no foul, everything is fine.
When you get 2 people who pr
I must be missing something... (Score:3, Interesting)
Blckboxvoting.org (Score:5, Insightful)
A software error resulting in +/- 5000 votes cast is unacceptable on any level, even if it gets drowned out on the national level in the US.
There is absolutely no reason or excuse for software to miscount votes. It isn't rocket science.
I know I'm preaching to the choir here, but this shit just pisses me off. It's a matter of national and local integrity that our voting systems are transparent. Please support blackboxvoting.org [blackboxvoting.org] if you don't have the time to get involved in a deeper fashion (calling/writing your legislators, etc).
Note: I'm not affiliated with blackboxvoting.org. I just appreciate their work.
Re: (Score:2)
Re:Blckboxvoting.org (Score:5, Funny)
Yes, but it's hilarious when there were only 5600 actual votes cast. +/-100% error bars, is good enough for government work apparently.
whiners (Score:3, Funny)
A software error resulting in +/- 5000 votes cast is unacceptable on any level, even if it gets drowned out on the national level in the US.
You know, some people are always complaining. First you complain that there's not enough people turning out to vote each election, that people are apathetic, etc. Finally someone develops some software that fixes that problem and now everyone complains about that!!
Verified Voting (Score:3, Informative)
Bug? (Score:2, Funny)
Probably counting screen touches outside buttons (Score:2, Funny)
I had no idea (Score:2)
This is why we have validation. (Score:4, Interesting)
Re: (Score:2)
Re: (Score:2)
Or he is assuming that the third party will receive 5000 votes.
Re: (Score:2)
Probably more like:
int ok = validate_ballot(); // gotta have a goto
if (ok);
votes[candidate]++;
. . .
if (!ok)
goto screen1;
tampering? (Score:5, Interesting)
too perfect (Score:3, Interesting)
The initial Tuesday night report said incumbent Ron Kroeger received 49.96 percent of the vote, short of the 50 percent plus 1 vote re-election requirement. The recount found he actually received 51.8 percent, more than enough to secure his seventh term over challengers John Roberts and Steve Rolinger.
Doesn't anyone think that 49.96%, short of 50% is too perfect for a random error? Most software errors will cause the numbers to explode, either to 0 or some gigantic number.
It's simple (Score:5, Funny)
Someone forgot to clear the chad bit!
Nobody trusts these machines (Score:2)
Re: (Score:2)
I think the ones programming them are the ones not to be trusted.
Doubles (Score:2, Funny)
In related news... (Score:3, Interesting)
my observation (Score:3, Interesting)
I find it interesting that companies that make ATMs for systems that track things down to the penny are unable to track much smaller numbers with errors of plus or minus THOUSANDS.
Maybe we should just start voting at ATMs?
Oh wait, that's what the lobbyists do already.
Re: (Score:2)
I find it interesting that companies that make ATMs for systems that track things down to the penny are unable to track much smaller numbers with errors of plus or minus THOUSANDS.
Maybe we should just start voting at ATMs?
Oh wait, that's what the lobbyists do already.
No, that's merely where the lobbyists get their ballots... twenty of them on each sheet. It's sort of like absentee voting. They actually need to send them to various drop off points like the PR firm and the offices of a few dozen Congressmen to actually vote.
But you're right about one thing. One way or another, their votes are always counted correctly.
Re: (Score:2)
I find it interesting that companies that make ATMs for systems that track things down to the penny are unable to track much smaller numbers with errors of plus or minus THOUSANDS.
I had ATMs screw up four times in about 8 years. One of the four times, a Diebold machine refused to give me the money, gave me no receipt, just had a "failure" message on screen, but the withdrawal was somehow recorded. It was on a national holiday over here, so nobody could be reached for help, the maintainers of the ATM network refused to acknowledge the error, and instructed me to file a complaint to the bank the day after.
The bank refused to reimburse the money, that's why I won't do business with Ban
Re:my observation [ATMs DO fail] (Score:3, Insightful)
Nah, I've HAD the ATM screw up before, and record a deposit twice. The bank happily deducted it from my account later. I've also had an ATM record a withdrawal three times for the one transaction. Took me a couple weeks of back and forth for them to get it all straightened out. So, the ATMs *do* screw up, but the banks don't care because in the end they don't lose any money. The only one that suffers is the customer (by being out my $$ for two weeks).
Paper Trail (Score:2)
This case quite clearly highlights all the advantages of an paper trail.
Dispite a the software part of the IT system, we're capable of finding the true result of the election because we've still got the paper votes.
Result: the voting system works.
Compare and contract this to an system which didn't have paper ballots. It would be almost impossible to even see if there was a problem, let alone be able recover from it. You could possibly see that the numbers were wrong if they'd taken an register of who'd vo
We do not need electronic voting machines (Score:2)
No one yet has provided me a compelling argument for why we need to use electronic voting.
It seems to be simply a combination of techno-fetish with an illogical push toward "the new thing" which someone has sold as "better".
Yes, it is hard to conduct an election. Making machines do the counting would reduce the human effort, but the cost way is too high. While I was open to the concept initially, the graft and fraud uncovered leaves me with no confidence any longer that the machines in an election booth w
Re: (Score:2)
Even if the machines were free, you're right. When the cost is our nation and our freedom, the cost is just too high.
Pseudocode (Score:3, Informative)
MAIN:
print("Please enter your Voter ID")
scan, store as voterID
if (voterID == any value in array of legal voters)
then run the vote program
else {
print("Error")
go back to main }
VOTE:
print("Enter your choice of candidate")
scan, store as candidate
if (candidate == A) {
then record vote for candidate A
remove voterID from array of legal voters
exit }
elif (candidate == B) {
then record vote for candidate B++
remove voterID from array of legal voters
exit }
else {
print("Error")
go back to vote }
Re: (Score:2)
You're missing a method to ensure the voter doesn't vote multiple times by using the IDNumber on multiple machines at the same time.
So:
scan, store as voterID
if CheckOut(voterID) 'Returns true if successful, if already checked out, returns false
if (voterID == any value in array of legal voters)
then run the vote program
end if
else {
print("Error")
go back to vote }
CheckIn(voterID)
The error coding to ensure that the voterID gets checked back in if a vote isn't cast in error and that the ID gets ma
ballot browser (Score:3, Informative)
There is a very simple, comparatively low-tech fix for broken elections that involve paper ballots.
As we do in Humboldt County, CA, run all ballots through an off-the-shelf scanner and run an independent count with independent, open source software. Ballot Browser (open source, Python, GPL from me) is available for tweaking and the basics are explained in April's Python Magazine. Or, it's really not that difficult to write your own bubble-reading software.
How hard is it to Add? (Score:2)
I'm missing something. (Score:2)
Ok, being serious here. I'm an eng for a software development company. Security is a very aspect of our software; we store patient records for DoD hospitals.
I'm honestly scratching my head here, completely confused as to how anyone...anyone...could take a concept as overwhelmingly farking simple as COUNTING and screw it up. Seriously. I'm pretty sure I could have a reliable, bug-free (oh yes, I made that claim), fully auditable system created in a few days. I really, really don't understand why the hel
Re: (Score:2)
So maybe the people responsible should be punished as if they did it on purpose.
Because we're not actually talking about "just counting". We're talking about something far more important - voting.
The USA keeps making disparaging remarks about non democratic countries, spends hundreds of billions of dollars and thousands of lives to establish democracies/"regime change", but can't even count votes properly back home. Come on, we
Why it is not just a factor of 2 (Score:2)
Re: (Score:2)
PuhLease (Score:3, Funny)
The real issue (Score:3, Funny)
The real issue isn't that the votes were miscounted in South Dakota.
It's that I bought them for South Carolina!
This Shit Again (Score:2)
PAPER FUCKING VOTES
HAND FUCKING COUNTS
FUCK!
Filter error: Don't use so many caps. It's like YELLING. THAT'S BECAUSE I'M YELLING!
Choice, Responsibility and Punishment (Score:3, Insightful)
When you make the Choice to make something closed, especially something this important, you really should be taking on the responsibility for any errors, bugs, security flaws or back-doors that end up in the software.
If you're willing to take the responsibility, than any error should be considered criminal--as in jail time for the CEO and others who made the (now obviously wrong) decision to keep the information private.
If you don't want the responsibiliy, that's totally understandable--just open the software for peer review by anyone.
I'm getting kind of tired of CEOs and politicians with no competency doing jobs they obviously don't understand, taking authority and reward without responsibility. I realize they are hard jobs, but doesn't that make it even more important to hire someone intellictually and morally competent instead of some college drinking bud from the good ole' boy network?
Hold them responsable (Score:3, Insightful)
As part of the agreement for purchasing the voting machines, add a clause that subtracts $1.00 for each vote miscalculated.
This should make the voting machine creators be much more careful about the software they supply.
Re:!bug (Score:4, Insightful)
yeah, cause the difference in saying something like "x+y/2" or "(x+y)/2" is obvious fraud, as it is a bug that wouldn't crash the system.
Re: (Score:2)
Re:!bug (Score:5, Insightful)
looking at the source code (Score:3, Funny)
if( vote = my_candidate )
{
my_candidate_votes = my_candidate_votes + 2;
} else {
other_candidate_votes = other_candidate_votes + 1;
}
In the source code as complex as this, you will probably need a PhD in computer science...
Re: (Score:3, Insightful)
There are plenty of good paper based systems around.
They scale. The more voters you have, the more volunteers and observers you should be able to get.
The counting of each ballot can be observed by party representatives and independent 3rd party observers/monitors. In my country, the counter holds up each ballot paper to show it to "everyone". It'll take a fair number of magicians to cheat in this and they would have to work a lot harder to cheat without getting caught.
As I've