I admit to be just a tad confused by the explanation offered for the problem of the R. Whitey "typo" in Chicago.
The mistake in the Green Party candidate's name appears on a review screen that allows voters to double-check their selections and not on the screen where the vote is registered. It also is not on paper ballots, Neal said.
OK, as most regulars know, I am not partisan to conspiracy theories and like to deal in hard facts. So. I wish to leave aside allegations of criminal/nefarious intent, and simply address my central question below.
I have some experience with relational database programming, but I am in no way an expert, (hardware is my forte). I have, back in the day, written a few programs, (tech support call database, repair database, etc), nothing complicated.
Now, if I were writing a program for a voting machine to tabulate votes, I would have two tables in the database. These tables would be "candidate info" (name, party affiliation, district/ward, office being sought, unique ID code), and the "actual votes", which would then be related to the first table (the "relation" relational database) by the "unique id code" which would be a common field of both tables. So, when you cast a vote, a TRUE value would be assigned to that unique id code in the "vote" table, which would then be related to a candidate, race, etc, in the "candidate info" table.
Again, I am very much oversimplifying here for the sake of discussion.
Now, in order to create a summary screen, the data values (votes and who they assigned to) have not yet been written to the "votes" table, i.e. cast. They are simply in memory, and I am performing a "lookup" of the data entered by the voter, and matched it to the candidates/races/referendum in the info table (before each election, all the candidate info would be entered, and the "vote" table zeroed out).
To re-iterate, as votes are entered (NOT cast) by the voter, they are assigned to temporary data values in memory, when the summary screen is called up, the temporary values are displayed, and the lookup performed to match the values with "candidate info" table.
Now, if I misspell a name, that misspelling is in the "candidate info" table, meaning EVERY time I do a lookup, whether to create the ballot page or the summary screen, the same typo will appear.
In order for the error to have occurred the way the election officials explained it, there would have to be TWO "candidate info" tables, one with the name correct used to create the ballot pages, and one where the name is incorrect used to create the summary screen.
Which makes no sense to me.
WHY create two tables to lookup candidate data? I cannot think of a single rational reason (that meets the standards of good programming practice of a "security critical" application) for intentionally doing this.
As I am not professional programmer, I throw this question out to programmers with more experience who may be able to enlighten me as to why this would be a logical and reasonable practice.
Now, if folks agree with my analysis, and state that they can see no reason for the second table, this leads to four possible scenarios:
1) The second table intentional and is the product of poor programming practices.
2) The second table is unintentional, the result of poor programming practices and the legacy of a code handled by multiple programming teams, each patching their successor's mistakes, rather than re-writing the code from scratch.
3) The second table is a combination of reasons #1 and #2. Intentionally designed in by a bad programmer, then simply left in by those that followed because they forgot about it, missed it, or ignored it.
4) The second table is intentional, with some nefarious intent.
IF (and I must emphasize, IF), I am correct in my observations, then I am more inclined to view #1 or #2 as the most probable answer, as it meets my criteria of "never be quick to ascribe to treachery what can be better explained by incompetence and/or stupidity".
Diebold's code certainly meets the criteria for this, since it has handled by many different programming teams as the code passed from company to company, with no one willing to "start over" since it would cost a lot of money to actually write secure code from scratch. This, of course, make the case, yet again, that voting code MUST be disclosed to competent professionals loyal to the public good before use in any election.
Reason #3 is possible, but less likely since it requires an even greater level of incompetence than normal.
Reason #4 is possible, but I would have to see solid evidence to move in that direction.
Your constructive thoughts and criticisms of my observation, please. I am posting this, but have to dash. I will be back on later to read your responses.