Monday, October 16, 2006

Dealing with failure

An important sub-area of Computer Science is fault tolerance. In a nutshell, fault tolerance is the ability of a system to continue to function in spite of a failure of one or more of its components. A system that can continue to work even if many parts fail in unexpected ways is said to be more fault tolerant than one that does not.

It seems to me that one of the unheralded problems with the Diebold system, and with DREs in general is that it is extremely fault in-tolerant. Consider a few simple examples from the September 12 Maryland primary:

  • In Prince George's County memory cards were accidentally left in the voting machines, causing votes not to be counted initially, and at the very least losing track of the chain of custody of those votes.
  • In Montgomery county, and in at least one precinct in Baltimore county, smartcards were not delivered to the precincts, causing long lines and people leaving the polls without voting
  • The removal and reinsertion of a memory card in a Montgomery County precinct caused the voting machine not to tally votes on the memory card. The votes had to be recovered by Diebold off the internal flash memory in the machines, once again losing track of the chain of custody of those votes.
  • A dead power jack in my own precinct almost caused all the voting machines to run out of power and fail

DREs are highly vulnerable to power outages, software bugs, poll worker errors, hardware failures, and the list goes on. It is very difficult to anticipate how/when the system will experience a small failure, and the system is not fault tolerant, as previous experience has shown.

The reason that I advocate paper ballots is that while a paper based system is not going to be perfect, it will be much more fault tolerant than a fully automated DRE-based system. And on Election Day, we only have one chance to get it right. We need fault tolerance.