[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Demexp-dev] Thoughts on voting machines

From: Brian Hurt
Subject: [Demexp-dev] Thoughts on voting machines
Date: Sat, 18 Sep 2004 19:14:27 -0500 (CDT)

I'm not sure what the scope of this project is, or what the current design 
is.  So I thought I'd just throw these thoughts at the wall and see what 

First off all, the only voting system I'd trust needs paper.  The paper 
ballot is the legal, official ballot.  And the voter has to hold the peice 
of paper- and understand what the paper says!

But even given that, there is a lot we can do.  The general idea I had was
the touch screen system exists simply to print out the ballots.  In
addition, the computer system can perform a non-binding count.  The voter
enters the booth, makes his/her selections.  Out comes a peice of paper.  
On the paper is printed his/her votes- in english.  If the vote is 
correct, the stick it into the slot and the vote is recorded.  If not, 
they throw the ballot out and try again.  Repeat until they get a ballot 
they like.

Note that the computer should have a precise count of exactly how many 
votes for Kerry, how many votes for Bush, etc., are in each lockbox.  So 
after the election is done, while the media is still reporting on the 
non-binding results, the election officials roll dice, or pick cards from 
a hat, or in some other way select a random statistically signfigant 
selection of polling machines to recount by hand.  The pull the box out, 
and start counting papers.  

If the count is off by the least amount, off by one vote, the non-binding
results should be thrown out and the entire election recounted.  Since
which machines will be the sample machines to recount is not choosen until
*after* the election, any wannabe vote rigger doesn't know which machines
are safe to rig and which aren't.  The statistically signifigant
requirement means that it is unlikely any widespread rigging, of the sort 
usefull enough to throw an election, would be highly unlikely to go 

The paper ballots themselves could be made very easy to OCR with an
obscenely high degree of reliability.  First off, you print on the paper 
alignment marks, which allow you to figure out the paper's orientation no 
matter what.  Second, you use an OCR-friendly font, like the one used for 
the numbers on the bottom of your checks.  Third, there are a limited 
number of possible strings at any given location.  If we OCR a vote and 
get back "Albert W. Gere Jr., Democrat", that was much more likely a vote 
for Gore, and not a vote for Bush.  We have a lot of redundancy.  And, if 
all else fails, humans can read the ballot.

The goal of the computer is to make creating the ballot as easy, 
foolproof, and quick as possible.

For example- color coding the candidates names.  If Gore's name was in
blue, Bush's name in red, Nader's name in green, etc., it'd be a lot
easier for the eye to pick out who they want to vote for.  In addition, we
can consider icons.  What if, beside Gore's name, there was a Democrat
Donkey logo, beside Bush's there was a Republican Elephant, etc.  
Possibly even little thumbnail pictures of the candidates.  Note that the
literacy requirement drops way down here.

There is a known tendency for voters, when picking at random, to pick the 
first name on the list.  So we want to randomize the order of candidates 
for every voter, to negate any statistical advantage of position.

Another idea I like is help screens.  For candidates, these would be 
small, one-page explanations of who they are and why you should vote for 
them, written by the candidates.  For referendums, they should be similiar 
summaries of why you should vote for/against the referendum, written by 
parties advocating said position.  This would allow the voter in the booth 
who suddenly went "I have no idea who these candidates are, or what this 
referendum is about" to be given some clue.

I also like the idea of allowing sample ballots to be programmed in.  Note 
that the voter would still be able to go back and override the choices, 
it'd just be a bunch of default choices.  So the voter could go "I want to 
vote the straight Trotskyist ticket, except I hate who they have running 
for Dog Catcher, do I want to vote for the other guy."

Another idea I had: in addition to the ballot, the voter gets an identical 
"receipt" to take home.  The receipt and the vote is given a 256-bit, 
cryptographically secure random number as an ID.  After the vote is done, 
all the votes are published on a website somewhere- no names, just receipt 
ID and what the vote was.  The advantage here is that I, the voter, can 
then verify that a) my vote exists and was counted correctly, and b) the 
tabulation of votes as put up on the web site matches the tabulation of 
the votes announced as the result.  This allows the average voter to 
verify the election results.  But the anonymity of the vote is still 
protected- while it easy to go from the individual via the receipt to the 
id number, there is no way to backtrack and link an id number to a given 

This could all be done with off the shelf parts.  My back of the envelope 
approximation would be:

        - a really cheap PC motherboard.  We want a PC because we want 
on-board video, not something you get with most embedded hardware.  But we 
need almost no processor power.  VIA would be good, or really cheap 
Athlons.  K6s would work if we could still get them.  Or Transmeta.  The 
idea here, however, is cheap as can be.

        - A touch screen monitor
        - Some sort of cheapo printer (A receipt printer)
        - Some bent tin

We need someway to know when the user has voted, and some way to make sure 
the voter only votes once.  Those I'm still working on.

"Usenet is like a herd of performing elephants with diarrhea -- massive,
difficult to redirect, awe-inspiring, entertaining, and a source of
mind-boggling amounts of excrement when you least expect it."
                                - Gene Spafford 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]