Programming for better elections
In the spirit of the recently held elections, I’ve been thinking of ways in which code can be used to improve Zambia’s election system. Its fascinating to think a country which has experienced so much infrastructural and economic growth in the past few years still uses a pretty primitive voting system.
True, Zambia is still a developing country with so much room for growth but do we really need to use indelible ink? What about those people shouting each voters name and NRC before checking the voting registers? I mean, is there really no better way to go about it?
There are quite a number of systems which Zambia uses that are outdated and truth be told, there are good reasons why Zambia would be afraid to move to an electronic voting system:
- It would displace many needed jobs created through elections.
- The high percentage of computer illiteracy could result in voter apathy.
- Technology use comes with a risk of data manipulation.
- A secure electronic voting system would come at a steep price.
But lets assume we were able to look past these reservations. How could we use programming for better elections?
Bear in mind that I am promoting electronic voting and not online voting because with all the vulnerabilities that come with the internet, I don’t think any democracy is ready for online voting.
Lets first have a look at the current voting procedure.
The current voting system
Step 1. Voters line up at polling station.
Step 2. Show NRC and voters card to polling assistant.
Step 3. Polling assistant checks voting registers for voters information (and also shouts their information for the whole polling station to hear because its SUCH a secret ballot).
Step 4. Voter is checked for ink marks and if none are found, their thumb is marked.
Step 5. Voter receives ballot papers and casts vote by marking X next to desired candidate.
Step 6. Voter deposits marked ballot papers in ballot boxes.
The Seda e-voting system
Step 1. Voters are allocated voting times
Step 2. Voter scans NRC and voters card
Step 3. Voter casts votes on touch screen machine
The system explained
1. Voters are allocated voting times
The most frustrating part of the voting process is having to wait in line for hours for your turn to vote. I haven’t had a bad experience myself in this area but I know my flatmate stood in line for at least 10 hours before being able to vote. 10 hours!
My suggestion is simple, since there is obviously a database holding all the voters at a particular polling station, why not create a program that will allocate voting times to each voter and send voters a text message with their allocated voting times? Take a look:
So in this case, we’d create a program that would allocate times to each voter according to the polling stations. For example, the voter Mwelwa Kunda is given the voting time from 10:00 to 11:00 at her polling station. This way, there would be less queues and less voter apathy.
This is a very naive database table which I chose to use for simplicity but the actual database would be much more mature.
2. Voter scans NRC and voters card
Thanks to technology, there are quite a number of machines already created that are able to scan identification documents. My personal favorite is the PatronScan ID scanner. It is able to detect fake IDs and check that an ID isn’t scanned more than once.
The existence of these is proof that creating an ID scanner to be used in an election is 100% possible. There are already multiple scanning engines by different manufacturers that can be used for the hardware. As for the software part, a little Java plus a little skill and we could build a custom ID reader.
I can think of at least 4 ways in which the manual checking of IDs by personnel can lead to election rigging:
- Fake IDs: If you’ve lived in Zambia long enough, you know that its pretty easy to buy a National Registration Card. These fake IDs come with fake bar-codes that could be detected if a machine was used to read IDs when voting.
- Removing indelible ink: Sure, indelible ink comes out after about 2 days. But a very determined election-rigger with a good chemistry education could remove their ink and vote more than once. But with scanning, it would be easier to detect who has already voted and who hasn’t.
- Using someone else’s ID: Using a stolen or dead person’s ID to vote is just way too easy. Funny enough, our registration cards come with a thumb print which I think is just there to make them look pretty. Those could be put to use by making voters scan their thumbs after they scan their IDs to be sure that they are who they say they are.
- Registering twice: Believe it or not it is very easy to register to vote at two different polling stations. Using ID scanners would remove this problem because they would be synced and would detect if an ID has already been scanned.
If this doesn’t convince you of the importance of using technology to scan IDs instead of physical checking then I really don’t know what will.
3. Voter casts votes on touch screen machine
Touch screen machines are becoming fairly common in Zambia now. Nearly every shopping mall has one to buy airtime instantly etc. Touch screen voting machines would implement the same idea. After you scan your IDs and are approved, you’d be presented with a screen like this:
The actual voting process would be as follows,
Writing a program to do this is pretty straightforward. As for efficiency, here’s why such a system would be more efficient:
- It makes counting of votes faster
- It leaves an accurate paper trail if there ever was a petition
- It’s easy to compare the tally and number of votes cast on the system to the printed results
- Less risk of printing extra ballots since ballot papers are printed on the spot by the voter
- If there is no external communications pathway, then there is no risk of hacking, or gaining unauthorized entry into the tabulation system
- It allows voters with a disability to cast an independent and secret ballot
Obviously any voting system would leave much to be desired but I do think the current system leaves a little too much to be desired and can be improved.
What do you think about using programming for better elections? Do you think the current system could be improved? Leave your comments below…