Slashdot Mirror


Software Bug Adds 5K Votes To Election

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."

66 of 239 comments (clear)

  1. Uh oh... by Anonymous Coward · · 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.

    1. Re:Uh oh... by Jonas+Buyl · · Score: 2, Funny

      What? I thought Hillary didn't make it to president after all?

    2. Re:Uh oh... by Hasai · · Score: 2, 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....

      --

      Regards;

      Hasai

    3. Re:Uh oh... by neoform · · Score: 3, 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.

      --
      MABASPLOOM!
    4. Re:Uh oh... by NotBorg · · Score: 3, Funny

      I'd mod you funny but I've completely lost faith in electronic voting.

      --
      I want this account deleted.
  2. How hard is it for a computer to do addition? by pieterh · · 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.

    1. Re:How hard is it for a computer to do addition? by rvw · · 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.

    2. Re:How hard is it for a computer to do addition? by Darkness404 · · Score: 3, Insightful

      While I'm as puzzled as you are on why its doing simple addition wrong, I can understand why you would want a computer to do the math though, as it should be more error-proof than humans.

      --
      Taxation is legalized theft, no more, no less.
    3. Re:How hard is it for a computer to do addition? by tangent3 · · Score: 4, 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.

    4. Re:How hard is it for a computer to do addition? by RenHoek · · Score: 2, 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..

    5. Re:How hard is it for a computer to do addition? by jgtg32a · · Score: 3, Interesting

      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?

    6. Re:How hard is it for a computer to do addition? by tangent3 · · Score: 5, Funny



      void vote(int candidate)
      {
         switch (candidate)
         {
            case GEORGE_BUSH:
               totalVotes[GEORGE_BUSH] ++;

            case AL_GORE:
               totalVotes[AL_GORE] ++;
               break;
         }
      }

    7. Re:How hard is it for a computer to do addition? by Tubal-Cain · · Score: 2, 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.

    8. Re:How hard is it for a computer to do addition? by pieterh · · Score: 4, 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.

    9. Re:How hard is it for a computer to do addition? by C_Kode · · Score: 2, Funny

      Real life appears to disagree with you! :D

    10. Re:How hard is it for a computer to do addition? by stickrnan · · 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.

    11. Re:How hard is it for a computer to do addition? by Anonymous Coward · · 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.

    12. Re:How hard is it for a computer to do addition? by Rakshasa+Taisab · · Score: 2, Interesting

      Exactly... why would it fail on a single-threaded program? The problem is much more that just simple race-conditions on instruction level. What do you do if the program crashes? You have no way of recovering if all you do is increment an array. It really should keep a cryptographically signed logs of each vote, on hardware designed to be read only using specialized key+hardware. The GUI app and the vote management app should be separate programs, with different user/privileges. This would avoid the more complicated UI code having memory corruption issues affecting the vote registration. Each vote would need to do a proper syn/ack message passing to confirm the vote was registered, and a separate sequence sent to the operators controlling the voting booth so they can see the voter successfully cast a vote and tell the vote server when it can accept another vote.

      --
      - These characters were randomly selected.
    13. Re:How hard is it for a computer to do addition? by Cixelsiduous · · Score: 5, Funny

      eh...your first case statement is missing a break. As it currently stands, a vote for GEORGE_BUSH also adds a vote for AL_GORE. I dunno maybe you left it out on purpose to make a point? I guess the bigger question is: why do I care? The answer of course is because I have no friends.

    14. Re:How hard is it for a computer to do addition? by The+Moof · · Score: 2, Informative

      That was the whole point of the code. He was answering the GP's question "How can a computer 'add phantom ballots'?"

      Or at least I hope that was his intention.

    15. Re:How hard is it for a computer to do addition? by nine-times · · Score: 3, 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.

    16. Re:How hard is it for a computer to do addition? by rickb928 · · Score: 2, 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 connections and work out the details, of not for this election than for the next. Pwnage.

      Really, if the concern for sending hourly updates is reliability, then reconsider the system. If the concern for sending updates is physical security and lost votes, you are doomed, get better poll monitors. If the concern is software problems, reconsider the system.

      There is no need for interim results. If you want to audit the system during the day, have a team come in, stop the voting for a moment, take the tally card as would be done at the end of the day, document it and give the pool watchers a receipt, insert a new card, and voting recommences.

      But paper is the simplest and surest way. Sorry, but it is.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    17. Re:How hard is it for a computer to do addition? by BitZtream · · Score: 3, 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.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    18. Re:How hard is it for a computer to do addition? by Enigma0498 · · 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

    19. Re:How hard is it for a computer to do addition? by buchner.johannes · · Score: 2, 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: totalVotes[candidate] = tempB + 1

      The issue is that the ++ command (increment) is not necessarily atomic. Either you make it atomic (operating system or hardware), or you need some read-write concurrency strategy (a synchronisation strategy like locks).

      Also see Readers-writers_problem

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    20. Re:How hard is it for a computer to do addition? by EkriirkE · · Score: 2, Funny

      I think you meant to have Gore first, then Bush...

      --
      from 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
      to 45 2F 6E 40 3C DF 10 71 4E 41 DF AA 25 7D 31 3F
    21. Re:How hard is it for a computer to do addition? by TurboNed · · Score: 2, Funny

      The only issue with HDDVD encryption was keeping 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 secret. Oh, crap. There it is.

    22. Re:How hard is it for a computer to do addition? by wfstanle · · Score: 2, 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.

    23. Re:How hard is it for a computer to do addition? by Fulcrum+of+Evil · · Score: 3, Insightful

      why would you have multiple threads running on a tally?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    24. Re:How hard is it for a computer to do addition? by Quantumstate · · Score: 2, Funny

      Because when a computer has to count 10000 votes (assuming each machine counts and then sends the total) it would just put too much pressure on a single thread. Isn't it obvious?

  3. How hard can it be? by Nursie · · Score: 4, 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?

    1. Re:How hard can it be? by noundi · · Score: 3, 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.

      --
      I am the lawn!
    2. Re:How hard can it be? by Nursie · · Score: 4, Funny

      Ah, "Shaky" Jim was off his meds again.

  4. How..... by Darkness404 · · Score: 3, Insightful

    It still amazes me how "hard" it is to write a simple program. First have something to scan the ID, check that its unique then move to the voting. Have a few radio buttons that you click, then hit submit, each radio button corresponds to a candidate or a choice, they are added up and give you the results. How the crap do you screw that up?

    --
    Taxation is legalized theft, no more, no less.
    1. Re:How..... by Anonymous Coward · · 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. 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.

      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?

    2. Re:How..... by Shakrai · · Score: 4, Interesting

      It still amazes me how "hard" it is to write a simple program. First have something to scan the ID, check that its unique then move to the voting. Have a few radio buttons that you click, then hit submit, each radio button corresponds to a candidate or a choice, they are added up and give you the results. How the crap do you screw that up?

      Well, in the case of New York State, our fearless leaders in Albany changed the requirements no less than 15 times after signing a contract with the vendor for new voting machines. Then after they finally agreed on a set of requirements they decided that they needed voting machines for 62 counties right now so they'd have them in time for the election. Then after the machines arrived they changed the requirements again and needed the new software for them right now.

      Doing business with the Government is not an easy undertaking. The only good thing that came out of it is our fearless leaders weren't stupid enough to go with a DRE (direct electronic recording) system. 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.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    3. Re:How..... by Darkness404 · · Score: 3, 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.

      --
      Taxation is legalized theft, no more, no less.
    4. Re:How..... by S77IM · · 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 with voting machines, and killing machines. Fallible though humans may be, I don't want my rights or future decided by computers.

        -- 77IM

      --
      Student: Is it true that the foundation of the universe is paradox?
      Master: Well, yes and no.
    5. Re:How..... by Shakrai · · Score: 2, Informative

      Hey, you are preaching to the choir here. I became a NYS Elections Inspector primarily so I could see how the machines and procedures work behind the scenes. I'm convinced that we have a good system.

      The new machines we use have two main components. The ballot scanner and ballot marking device (BMD). The BMD is only used by handicapped voters. It consists of different interfaces (a control pad, a sip/puff device, foot pedals, LCD screen and headphones) designed for people with various disabilities. It takes their votes and prints out a ballot that is then scanned by the ballot scanner. Regular voters get a paper ballot where they fill in the squares and drop it into the ballot scanner. The ballot scanner will catch under/over-votes and give you a chance to get a new ballot if you want.

      All paper ballots are retained and can be referred back to in the event of a close/disputed election. The scanner is also smart enough to catch write-in votes and divert those to a different ballot box for easier tabulation. When it scans a ballot it also retains an image of the actual ballot on a memory card. At the end of the day we remove that memory card and transport it to the Board of Elections with the unused ballots and rest of our supplies. This memory card is primarily intended as a backup in the event that something (i.e: building the machine is in burns down) happens to the paper ballots.

      Our system is pretty good. It took NYS years to adopt it but at least that gave us the chance to learn from the mistakes that other states made. I've seen the DRE machines in action (worked as a poll watcher during the Presidential Primaries in Ohio last year) and they scare the hell out of me. A single hardware failure and you lose every vote cast on that machine during the day. What idiot decided that was a good idea?

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
  5. I must be missing something... by thekm · · Score: 3, Interesting

    ...but I can't understand how a glorified logger can be this far off. With hand-shaking and all the rest of it, it just staggers me that something this simple is so hard. If our systems or audit logging were off by more than 5k, our nuts would be in a sling, and our projects sure as heck aren't as big as these puppies.

  6. Blckboxvoting.org by Red+Flayer · · Score: 5, Insightful

    "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.

    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 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.

    --
    "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    1. Re:Blckboxvoting.org by nedlohs · · Score: 4, Funny

      Yes, but it's hilarious when there were only 5600 actual votes cast. +/-100% error bars, is good enough for government work apparently.

  7. Bug? by david@ecsd.com · · Score: 2, Funny

    It's not a bug, it's a feature.

  8. Probably counting screen touches outside buttons by h4x354x0r · · Score: 2, Funny

    Wired thinks it's "probably a complex bug"? I think probably not, it's probably something blindingly simple, and stupid.

    --
    They were right - the revolution did not get televised. It was posted on YouTube instead. All in 120 characters. SLOOSH!
  9. This is why we have validation. by BlueKitties · · Score: 4, Interesting

    I'm pretty sure, somewhere in that code, was a server thread handle which states "if {vote=="thisGuy"){thisGuy++;}else{otherGuy++;}" - because validating your requests might require extra code.

    --
    "Sorrow is better than laughter, for by sadness of face the heart is made glad." [Ecclesiastes 7:3]
  10. tampering? by Ltap · · Score: 5, Interesting

    TFA only tells me the numbers and the guy's plans, nothing about the actual bug. What was it? It seems awfully hard to screw up adding two numbers together to get a third number, which is basically what that software was doing. Has it occurred to anyone that it might have been tampering? It seems to me that, with the fairly large (tens of thousands) number of votes, adding or removing just enough to make it a runoff would be the perfect vote tampering scheme - too little to draw much attention, but enough to actually make a difference.

    --
    Yet Another Tech Blog
    (but so much more, including game and movie reviews)
    http://yanteb.peasantoid.org
  11. Re:!bug by skelterjohn · · 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.

  12. Re:!bug by link-error · · Score: 5, Insightful

    It's probably more like they aren't rolling back some transaction on a network error or something. Network timeouts, etc, are probably doubling up the votes from that machine. It's probably an unusual error so it doesn't get caught in testing. Like busy networks on election night? It's not that hard to imagine.

    --
    -Unresolved symbol? Byte me!
  13. looking at the source code by moon3 · · Score: 2, Funny

    vote = GetVote( );


    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...

    /s

  14. It's simple by Mad-Bassist · · Score: 5, Funny

    Someone forgot to clear the chad bit!

    --
    "The only legitimate use of a computer is to play games." - Eugene Jarvis
  15. Doubles by Paddo_Aus · · Score: 2, Funny

    Was there a double B, double G, double L?

  16. In related news... by Xiver · · Score: 3, Interesting

    In related news its apparently very easy to convince the media that programming voting machines is hard. I seriously doubt this was an accident. Independent testing should have flushed this bug out very early.

    --
    10: PRINT "Everything old is new again."
    20: GOTO 10
  17. my observation by Tumbleweed · · Score: 2, 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.

  18. Pseudocode by Jamamala · · Score: 2, Informative

    I posted a question yesterday about what was wrong with a simple program. No-one seemed to know so here's my attempt at writing that simple program. Feel free to tear my ideas to pieces. Hint: I am not a programmer.

    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 }

  19. ballot browser by mtrachtenberg · · 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.

  20. Re:I agree. by Rakshasa+Taisab · · Score: 2, Insightful

    The problem is probably that the developers of that voting software was probably exactly like the OP, thinking: I'm pretty sure I could write a program with a couple of buttons and a counter for each.

    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 memory corruption issues. And requiring the operator to clear the vote server for receiving the next vote would avoid 5000 votes being registered due to a bug of any kind.

    The server and GUI client would be separate users with different privileges and cryptographically signed log to append-write only medium. Hell, the final confirmation to the user should be displayed on screen by program using a plain-text message sent by the server to a different client process, just to ensure the GUI is showing a different choice from what it registers with the vote server. And I'm sure there's plenty of other stuff that would need to be done to make a truly secure and reliable voting system.

    --
    - These characters were randomly selected.
  21. Re:my observation [ATMs DO fail] by gizmonic · · Score: 2, 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).

    --
    WWJD?
    JWRTFM!
  22. PuhLease by wtbname · · Score: 3, Funny

    Can't these idiots get anything right? This is so freaking easy to fix it boggles the mind.... votes = votes - 5000 ; There. Done.

  23. whiners by commodoresloat · · Score: 2, 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!!

  24. Re:Open source voting by TheLink · · Score: 2, Insightful

    It's called paper based voting.

    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 said before- Elections don't just have to be fair, they have to be SEEN as fair. If democracy is important, it doesn't matter if it costs a few hours to get it right.

    The best thing about it is, even if it's a surprise result - because the various observers see that it's mostly fair, the losers will grudgingly accept the result. If the result is close a recount can be done with even more stringent monitoring.

    Where the cheating probably happens in my country is from the postal votes. But the electronic systems will also be vulnerable to this problem, in addition to being vulnerable to very many other problems inherent with e-voting.

    E-voting fails my "seen to be fair" requirement- because it's some blackbox that the normal folk don't understand, and the IT security people understand and thus don't trust. Even if you have the source code, it's so hard to prove that it's the same software that actually runs during the counting, or that the rest of the hardware isn't messed with.

    With e-voting, only a few specialists can understand and check the system, and the rest of the public have to near blindly trust them.

    Whereas with hand counting, it's easy to explain to most people how it's done - and their party representatives are there checking each ballot as it's counted as well.

    Is it so hard in the USA to find people who can count? Tell me it can't be so bad as "Counting votes is hard, let's go shopping!" right?

    --
  25. The real issue by Subm · · 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!

  26. Verified Voting by Presto+Vivace · · Score: 2, Informative

    Verified Voting also does great work.

  27. Choice, Responsibility and Punishment by bill_kress · · Score: 2, 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?

  28. Hacking Democracy anyone? by gubers33 · · Score: 2, Informative

    The documentary "Hacking Democracy" talks about bugs like this one as well as poorly written and easily exploited code used in these systems. It why one such system was banned from use in California. It is amazing how many government tools use extremely poor code not just voting machines, but breathalyzers and other vital hardware.

    --
    Just because you are wrong and I called you out on it doesn't mean I am a Troll.
  29. too perfect by Khashishi · · Score: 2, 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.

  30. Hold them responsable by SnarfQuest · · Score: 2, 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.

    --
    Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.