Possible use of Python for a voting machine demo project -- your feedback requested

Ian Bicking ianb at colorstudy.com
Sun Jul 20 18:29:52 EDT 2003


On Sun, 2003-07-20 at 15:43, Alan Dechert wrote:
> In the world of voting technology experts, I'm known as the guy that has
> proposed to use commodity PCs as voting machines running open source
> software with a printer to generate the paper ballot.  While I have been
> pushing the idea since Dec of '00, I haven't gotten any project funded yet.
> Back then, I was just a crank with an idea.  Now people are starting to take
> it more seriously.  I have some computer scientists and some students
> interested in producing a demo of the system I have described.  Primarily,
> this demo is intended to introduce the idea to the public.  Lots of ideas
> for which language to use for the demo have been tossed around.  I would
> like to get some feedback on whether or not you think Python would be good
> for this and why.
> 
> This will be throw-away code.  It will be pure coincidence if we end up
> using any of it when the real [funded!] project gets underway.  We will be
> demonstrating to some reporters the look and feel of our voting machine --
> and by extension to the public, especially since we plan to have a demo on
> the web that anyone with an Internet connection can try out.  Some have
> suggested HTML or XML but I'm not sure this will give us fine enough control
> over the page layout.
> 
> Here are some requirements for the demo:
> 
> 1) The display will be for 1280 x 1024 resolution.  While other resolutions
> may be supported in the final product, the demo will only support this
> resolution (the large screen is a critical usability advantage).  Here is a
> mock up of the on-screen ballot image:
> 
> http://home.earthlink.net/~adechert/ballot-mockup3.gif
> 
> Pretty much, I want pixel-for-pixel control over what goes on the display.

If you really want pixel-for-pixel control, then SDL will provide this
for you.  Pygame (pygame.org) provides an interface to SDL, though it's
somewhat low-level, pyui (pyui.sf.net) is slightly higher-level, but
poorly documented and maybe not that helpful.  In particular, I'd be
concerned about text rendering, and then the consistent translation of
that to print.

PDF would be easier to generate, though I'm not sure how you would make
that interactive.  Reportlab generates PDFs nicely.  Perhaps it would be
possible to lay out the boxes accurately so you know where they are,
then let the PDF renderer fill in the text.  How exactly you would
render the PDF I'm not sure... though heck, it doesn't have to be that
interactive.  You could simply render it to images, and compose those
images to come up with the screen.  That's probably easier and a better
experience than allowing any change in flow or layout based on something
the user does (i.e., you wouldn't want a selection to take up more space
once selected, even if the text itself becomes larger).  Maybe there's
other rendering techniques you could use that I'm not aware of.

The interface looks really dense to me, though, while not being large
enough for common ballots anyway.  Once you add in judges, you're
getting a lot of options.  And the county commissioner input is way too
dense.  Also, I suspect that the entire ballot is way to dense to be
used with a touchscreen, where the accuracy of input isn't very good. 
You're going to have to plan on all votes being multi-page, and you
might as well just program for that.  The printout could still be single
page, but then it won't look like the ballot they filled out, though
that's probably fine.

I really don't know why everyone wants to use touchscreens in voting
machines.  I hate touch screens, they are a horrible input method. 
ATM-style input is much better -- real buttons lined up along the side
of the screen.  Very reliable, not just the hardware, but the accuracy
of input.  The only problem is when the buttons are misaligned, so it's
not clear how the screen selection maps to the buttons.  The only
advantage of touchscreens is they are somewhat more flexible, but that's
also their greatest flaw.

You could even fit those buttons only normal monitors.  The buttons will
be further away from the screen, but you can paint in strips on the
enclosure right up to the screen so that it is very clear how the
buttons correspond to the screen.  Even if the buttons were an inch from
the screen and raised up off the screen, the stripes would make it very
clear.

Anyway, I wish you luck -- we certainly need open voting systems.  The
current closed systems scare me.  






More information about the Python-list mailing list