In my last post, I described how much JP and I enjoyed the film
Man of the Year and I gave writer and director
Barry Levinson well-deserved kudos for his ability to create effective stories and movies. I also took issue with his computer programming skills and promised to explain further today.
You'll recall that the voting machines in
Man of the Year contain a "glitch" that causes them to return the wrong results when th names of all candidates on the ballot contain double letters, e.g. BB, GG, LL, and so on.
As a plot device, it's nearly perfect. It's a subtle test case, rarely seen...one that could easily be missed by your average software tester. However, there's a major problem with the premise.
No competent programmer, no matter how inexperienced, would design a voting machine to sort names in order to determine the winner of the election. I could, perhaps, see this kind of design by a young programmer working out of a garage, but not from a successful software company with a thousand employees.
To understand why I say this, take a moment to think about the what a voting machine does and how it might perform that task as flexibly and easily as possible. As demonstrated in the movie, Delacroy's voting machines present a list of the candidates for a given election and records the number of times people press the button next to each name. Simple enough, right? Count the number of times people pressed button A, how many times people pressed button B, and so on.
When you're finished, you figure out which button got the most votes and return the name associated with that button. In the movie, the Delacroy machines present the candidates in order of social standing. President Kellogg appears first, Senator Mills is next, and Dobbs appears at the bottom of the list. That makes sense and mirrors the way many ballots are designed. So far, no problem.
Now, take a moment and think about the number of voting districts and precincts in the United States. On the national level, we have 435 seats in the House of Representatives, 100 seats in the Senate, one seat in the Oval Office, and innumerable local elections, propositions, initiatives, and so on. This means that Delacroy's voting machines need to be able to handle more than 700 separate names and election descriptions...and that's if we limit the positions to those on the national stage and each position to a potential of three candidates. By the time you allow for state level races, municipal elections, initiatives, propositions, and other things that regularly appear on a ballot, you realize to need well over a thousand slots for names.
Mapping votes to names (and the number of letters, spaces, and punctuation needed to support the range of possible names) would be woefully inefficient and wasteful.
Instead, the average voting machine has a certain set of buttons that can appear on each page. Each race is presented as a single page. When the voter is given a choice, only the set of names for a given race appears at a given time. Thus, votes are tallied by position.
When the election's over, the program reviews the total votes by position, determines which position got the highest number of votes, and then return the name associated with that position. The number of letters in the name doesn't even enter into the equation.
In other words, the voting machine doesn't scan names; it scans votes. To illustrate, consider the following:
- Democrat - 7 votes
- Republican - 5 votes
- Independent - 3 votes
In the revised design, that list is treated exactly the same as this one:
- Bullwinkle - 7 votes
- Rocky - 5 votes
- Natasha - 3 votes
As you might expect, the next list is handled exactly the same way:
- Kellog - 7 votes
- Mills - 5 votes
- Dobbs - 3 votes
In each case, the voting machine returns position one and then looks for the name to show. It does this not because it sorts the names alphabetically, but because it sorts the results by number of votes. Once the winning position is known, then the name associated with that position is returned.
Now, I know I've already said that the film is worth watching. It has some important things to say about the way we elect leaders in this country, the risks associated with paperless electronic voting machines, and the type of person who should be President. So, why am I talking so much about the technical "glitch" in the script?
I know I occasionally get visits from writers and those who would become writers. If you are writing about something beyond your experience, please take the time to have your ideas carefully reviewed by someone who is experienced with the subject matter. Otherwise, you place your credibility and the success of your work at risk.
While watching the movie, I got sidetracked by the improbabilty of the "glitch" that it pulled me out of the story. The illusion, if you will, was broken. As a result, that negatively impacted the effect of the file for me and brought the credibility of the writer into question. If I can't trust him to get a technical detail right, then how I can trust the ideas or conclusions that he offers through his story?
Now, Levinson is a good enough storyteller and filmmaker to transcend the technical stumble. Not everyone is so gifted. Again, if you're not clear on the material your writing about, then make sure you find someone who is. That person will help you avoid embarassing mistakes.
Photo credit:
Universal StudiosLabels: credibility, design, software, writing