Re: Barcode Vocalization Application

From: David Mertz <voting-project_at_gnosis_dot_cx>
Date: Thu Oct 02 2003 - 13:55:25 CDT

|I have made a first cut of the barcode vocalization application (bva).
|I wrote it in dBASE since I don't know Python and I don't have time to learn
|it right now.

OK. dBase seems like a slightly odd choice, but it doesn't really
matter. Either way, you should check in the files to Sourceforge--
that's our repository.

I would recommend trying to compile the program with Harbour
(, which is a GPL(-ish)[*]
Clipper-compatible compiler. That way, we can run on Linux or FreeBSD,
and don't have to worry about proper licensing of the OS etc. that BVA
runs on.

[*] Like the EVMPL, the Harbour Project added a minor Freedom-supporting
clause to the GPL. They got FSF OK on their clause (I still haven't
heard back from FSF on ours... agghh!).

Still, this might be a good opportunity for you to learn a little
Python--the whole program should be less than half as long in Python.

As a start, you'd save any special handling of long ints. Other than
that, everything in your code should translate pretty much line-by-line.

    do while n <= len(quint) - 5
        --> while n <= len(quint)-5:

    if "1" $ substr(StringOfSelections,1,8)
        --> if "1" in StringOfSelection[0:8]: # half-open w/ zero index

Does dBase really only have ltrim() and rtrim()? I recall Clipper has a
trim(). Anyway:

    barcodedata = rtrim(ltrim(barcodedata))
        --> barcodedata = barcodedata.strip()

Python doesn't have IIF, you need to use an actual if/else block (or use
one of the hacks that frequently comes up on don't do that).

In general, Python looks pretty similar to dBase, but is usually both
slightly shorter and slightly clearer. Neither has the line-noise
quality of Perl, nor the obscure pointer arithmetic of C. You save
all the "end" statements with Python.

One general design issue is that the messages like "NO READ" or "No
selections indicated or bad data" should really be spoken themselves
(probably with an extra "please scan again"). After all blind voters
will not see the screen. In fact, in production, I am sure the BVA
machine will not have a display at all... and I'd PREFER to skip the
display for the demo too (but this isn't absolutely required).

|If you want to try it, you can download it here. This includes bva.exe
|and all the wav files and the freeware wav player.

Freeware isn't the same thing as Free Software. Wav.exe only explicitly
says it's free for personal use, the commercial use clause is a little
fuzzy. And we don't have the source code for audit. I admit that it's
hard to see any security issue, since this doesn't affect printing or
tabulating ballots... but in paranoid mode, maybe 'wav.exe' lies to the
blind voter about which vote was registered (I admit, such a flaw would
be easy to detect over a few trials).

Yours, David...

 mertz@   _/_/_/_/_/_/_/ THIS MESSAGE WAS BROUGHT TO YOU BY:_/_/_/_/ v i
gnosis  _/_/                    Postmodern Enterprises         _/_/  s r
.cx    _/_/  MAKERS OF CHAOS....                              _/_/   i u
      _/_/_/_/_/ LOOK FOR IT IN A NEIGHBORHOOD NEAR YOU_/_/_/_/_/    g s
= The content of this message, with the exception of any external 
= quotations under fair use, are released to the Public Domain    
Received on Fri Oct 31 23:17:01 2003

This archive was generated by hypermail 2.1.8 : Fri Oct 31 2003 - 23:17:06 CST