January 7, 2008

Improving The Voting Process

The New York Times ran a very long but interesting article yesterday about the current troubles with electronic voting in the United States. I'm sure pretty much all of you are aware of at least some of the many problems that have plagued electronic voting since it was instituted after the huge "hanging chad" debacle in the 2000 presidential election in Florida. The thing is, many of the problems are not related to the fact that precincts are using electronic voting but, more specifically, touch screen voting. In addition to the hardware/software problems, the whole system seems horribly broken to me (as a software engineer) in terms of redundancy and the ability to verify said redundancy in a reasonable amount of time.

Consider this: according to a spokesperson for Net Bank quoted in an article for the Colorado Springs Business Journal, close to one third of banking customers never set foot in their bank branches. Are you telling me that we are able to manage millions of people's finances online, and yet we can't solve a comparatively simple problem such as voting? This boggles my mind.

Many of the problems mentioned in the Times article have what I think are very easy and elegant solutions. One of the things that confuses me is that people seem to swing to the extremes in terms of being in favor of paper ballot voting or electronic voting, when it seems to me that the most logical solution lies somewhere in between. I don't claim to have all of the answers here, by any means, and I'm sure that there exist some flaws in what I present below. I'm only one person, and designing an entire voting system in an afternoon is surely beyond my expertise. But that's the great thing about the internet: it allows for the easy exchange of thoughts and ideas among millions of people almost instantly. If you see something wrong with an idea I present, let me know; I'm always up for learning something new. Who knows, maybe we'll come up with the "next big thing" here. So, without further ado, I give you seven ways to improve the voting process.

1) Have Technically Savvy Professionals At All Polling Locations

Let's face it, the voting process in a country the size of the United States is going to be complicated, even more so if it's done even partially using electronic methods. Having the responsibility of maintaining electronic voting equipment fall on a 65-year-old volunteer who has no experience with computers other than their one day election official training course is just absurd. Each polling location needs to have at least one technical professional to handle any technical issues that come up, and they will come up. Whether it's an ethernet cable that's loose or a machine that simply needs to be rebooted, there needs to be a trained "voting engineer", if you will, at each location.

These technicians would still be volunteers, but they would be paid more than your typical election judge. These people would be required to be certified in a computer related field (computer science, computer engineering, electrical engineering, etc) with at least five years of professional experience on the job. They would attend an (at least) week long intensive training program where they learn the ins and outs of the entire voting system, from individual voting units to network and server infrastructure. Having technicians on site is a must for the voting systems of today and in the future.


2) Permanent Voting Locations

The days of holding elections in school gyms and local churches are over. The entire foundation of the current government of this nation runs on the electoral process. Treating it like something that should be set up and torn down a couple of times a year is not acceptable. Permanent voting locations need to be established and secured year-round. All hardware needs to be permanent to the location and not allowed to leave the location unless for repairs. Said location and hardware should be inspected randomly at least once every few months, and several times prior to upcoming elections.


3) Get Rid Of The Touchscreens

I don't know who decided that touchscreens should be used in the election process, but it seems like a horrible idea to me. Why would you choose a more expensive and less accurate form of input over a traditional mouse interface? The only reason I can think of is in order for the contracting company to turn a higher profit. Using a standard mouse with a voting machine would remove several of the issues mentioned in the above article that result from using a touchscreen, including the user touching the screen in more than one place at once, as well as the user dragging their finger on the screen.


4) All Voting Software Should Be Open Source

This is, perhaps, the most important of my suggestions to improve the system. The software used in the voting process MUST BE OPEN TO PEER REVIEW BY ANY CITIZEN. I can not emphasize this point enough. Any citizen of this country (or any person in the world for that matter), should be able to take a look at the software that runs the United States voting system and see how it works. This would allow any software professional or hobbyist the ability to examine said code and report any possible errors or vulnerabilities to the board of elections in order that it may be fixed promptly.

The whole security through secrecy mentality has no place in the voting process. In addition to open sourcing the software, the machine configuration, operating system, and hardware of each machine and server should also be known. The point is to force the process to be so secure that even if you know most aspects of the system, you are still unable to hack it. Obviously usernames, passwords, and connection strings shouldn't be divulged, but I see no problem in the people knowing that this specific software is running on this version of Linux (face it, Microsoft would never open source Windows) on this specific hardware.

I would also encourage the establishment of a reward process for those who find bugs in the software that would cause problems. These rewards would scale based on the severity of the bug and the potential impact it could have on any given election. Who knows, a hobbyist could find a show-stopper (the worst kind of software bug) and never have to work again. They could even be offered a job on the voting software team. Obviously, the team in charge of writing and maintaining this software would have to be some of your most talented and trusted programmers in order to prevent the intentional introduction of bugs in order to exploit the reward system. Of course, if you pay these people enough, the temptation is almost non-existant.


5) Improving Redundancy: Paper Trails

The biggest problem with electronic voting right now is the lack of a proper paper trail. That is not to say that there is no paper trail at all. One of the systems in the article is described as printing out each vote onto a spool of paper (protected behind a plastic screen to prevent tampering) that the voter can check before they leave. However, the voter has no record to take with them.

The method I propose would be simple to implement, allow the voter to take a record of their vote with them, and be extremely easy to validate in the event a recount is required. Allow me to reintroduce you to our friend, the barcode:



After each vote is cast, the electronic vote is stored, and two pieces of paper are printed out. The first piece of paper has the voter's choices in a human readable format and those same choices printed as a bar code at the bottom of the page. The other piece of paper has the barcode and a unique confirmation number printed on it, which the voter takes home with them. We'll get more into the confirmation number in the last point. No human readable information is stored on the page taken home to help curb voter intimidation.

On the way out of the polling location, the voter will enter a separate booth, scan the paper copy without the confirmation number, verify their choices on a display screen, and deposit it into a secure container which will be retained by the board of elections in the event a recount is necessary. The container would not accept the sheet of paper with the confirmation number printed on it in order to prevent the voter from leaving the wrong sheet. Having a paper trail in this way protects the voter by maintaining anonymity as well as allowing for redundant confirmation by the voter.


6) Improving Redundancy: Multiple Servers

This seems like a simple solution to a common problem, but the article in the New York Times made it sound like this was not being implemented properly at all. In one instance in the article, the author was at an election headquarters witnessing the tallying of the votes. The votes are tallied by taking the flash memory card from the individual voting machines and inserting them into a server, where the votes are read and stored. However, during this process, the server counting the votes crashed multiple times. My question is, WHY DO YOU ONLY HAVE ONE SERVER?

Seriously, we are talking about the election of members to the government of the most powerful country on this planet. This process should be executed in triplicate at a minimum, meaning at least three servers collecting and storing these votes. If one, or even two, of these servers have problems you still have another. This does not seem like a difficult solution to come up with, and it is most definitely a no-brainer engineering decision. This would also allow for easy validation of votes, as the votes stored in each server could be compared against each other to check for differences. If a difference is found, the vote (which is associated with a unique confirmation number) is marked as invalid.


7) Improving Redundancy: User Validation And Correction

My last idea to improve the electoral process is to have an easy way for the voter to validate and correct/dispute their vote on record. The solution here is the unique confirmation number that is printed on the bottom of the paper ballot the voter takes with them after they leave the polling location. The voter would be able to access a secure webpage online, enter in the barcode number, along with the confirmation number and be able to check exactly what votes are stored for them on the server. If a problem had occurred during the tallying of their vote on the servers, the voter would be notified here and have to register for a re-vote. Also, if they deem that some other problem exists with their vote, they could mark the vote as invalid themselves and register for a re-vote.

The voter would be given an additional couple of days to recast and validate their vote. No personal information would be needed to register for a re-vote, just the barcode number and the confirmation number. The voter would return to the polling place, the ballot would be scanned and the confirmation number entered to confirm an invalid previous vote. The voter would then repeat the process.

---

Now, obviously I don't think that these suggestions would completely solve all of the problems inherent with the current electronic voting system (or a paper balloting system for that matter). The fact is, the process is very large and complicated with many places where errors can occur, whether through human or computer error. However, a lot of these problems would be eliminated if all or some of the suggestions above were implemented on a national level. Where does the money come from to pay for this, you ask? Well, this is something that I would be more than happy to have my tax dollars spent on. Problems like these are what our government should be solving with our taxes, not some of the crazy pork spending that both parties are guilty of.

Do you agree? Disagree? Have better ideas? The purpose of this site is to make you think! You might as well share with the rest of us, so leave a comment!


Random Parting Thought:
LSU beats OSU by less than 10 points based on the fact that Les Miles will call some insane play on a fourth down that for some reason ends up working.

2 comments:

Jim said...

Interesting ideas, but I think feasibility is a big problem. The voting system is one of the most distributed things around, with polling places all over the place.

You suggest permanent polling locations. That sounds good, but it would be expensive. Do we really want the government purchasing or renting buildings with tax dollars when those buildings would only be used one, perhaps two, days each year. Further, if that were to occur, it would require some centralization. We wouldn't be able to have the plethora of polling stations we have now, people would need to go to more central locations. The problem with that is it is a big inconvenience on people, and in a nation where many people already don't bother to vote, we don't need yet another deterrent.

Likewise for technicians at polling locations. Sounds good, but is it feasible? Assuming we keep the same number of polling stations we have now, that's an awful lot of technicians. Now, maybe a "pool" of technicians for each region would be good. Most polling places have multiple machines, so if one went down, it could be put "out of order," until a technician from the pool arrived to correct the issue.

Finally, you suggest mice. Using a mouse is second nature to people our age, but having worked with people who have never used computers before, I know first hand that a mouse can be quite confounding. And yes, there are still MANY such people in America today. Touchscreens are much better for these folks. If they are unreliable, using "real buttons" associated with names on screen (sort of like an ATM) might be the way to go.

Just some thoughts.

Matt Silverthorn said...

When I said that permanent locations need to be established, I probably should have been more clear. I didn't mean that new ones would have to be constructed. I'm sure there are rooms in existing local/state government buildings that could be used for this purpose, or other buildings that are not currently in use which could be acquired. Sure, some new locations may need to be built, but that shouldn't be the norm.

As for the pool of technicians, I like that idea. I think you'd be more likely to get enough volunteers that way, since you'd need less. An excellent suggestion.

As for mice, if a simple point and click interface confuses you, then you probably shouldn't be voting! Seriously, though, it wouldn't take much time to explain it to the person and you could even have a brief optional tutorial on how to use it which could be skipped by people who already know how. To avoid confusion, we would return to the one button mouse for these machines. :-)