Ballot Voting System


Smartmatic, based in Amsterdam, and serves ‘voting’ solutions throughout the world.


  • Create a ballot voting system (high end prototype) within 1 month.
  • Users should be able to “swipe” and navigate through an interface, and digitally vote on their respective politicatian/party
  • User vote output would be printed out via a thermal printer.


  • Product Owner


The engineers of Smartmatic, were working on a high level prototype ballot voting system, which took 6 months. Too long in their Vice President eyes. He needed to deliver a working version because of tender. In other words: We needed to recreate it within 1 month. I said we could do that. And luckily we did.

Their main problem, was that the user “interface” needed to work like a big Apple Ipad – only in this case – it a very tiny mainboard / motherboard, a very small Raspberry PI, connected to very big touch 55″ screen provided by Microsoft.


  • Interface output onto a 50″ touchscreen  via a Raspberry Pi (not a good idea)
  • Apple iPad swipe effect doesn’t ‘feel’ right on touchscreen
  • Thermal Printer = fragile and vote information is not displaying correctly
  • No documentation
  • Code in Python
  • Deadline 1 month


When we looked at all the hard are, we thought, cool. But before we jumped in, we assessed the requirements of the main stakeholders / users, before we started programming.

  1. Mapped out the userstories and flows
  2. Mapped out the interaction flow
  3. Mapped out the screens / functional design
  4. Mapped out technical requirements

As final part of the “pre-production” phase, our GUI – graphical user interface – designer, made a visual flow of how the ballot voting system interface should operate / animate.

Time saver!

When we had this, we started to work on the hardware directly. There was no time to set up a test development area.

We did ran into some troubles, as the RaspberryPi was having huge troubles making the interface run  smooth swipe controls. Also, the Microsoft touchscreen (hardware) had troubles, with the Linux drivers of the thermal printer. It’s like an English and a German person, trying to understand each other.

This was not going to work – staying with the old code. So, we ditch it. We went back to ‘old’ skool HTML/CSS and some nice JavaScript animation tricks – to mimic – the ‘swipe’ effects.

  • Saves time
  • Easy to customize


  • Delivered the project within 1 month – with 3 days to spare (I must admit, that had sweat patches)
  • Very happy to work with my core team of self steering developers and quality test professionals.


  •  Linux, HTML/CSS, MsQL, Apache Cassandra, JavaScript, Jquery, Python


  • First assess, think, map out the flow, then start building.
  • Use hardware-and software that are actually aligned. So, don’t use product x, y and software z, because the chances are high, that they don’t work together. The main reason is price. But as we experienced, price comes with a cost.
  • Their programmer only used “Python” – and because of that – they got stuck. So, don’t work ‘in the old code’ of something that doesn’t work. You don’t use a hammer, when a screwdriver is needed.
  • Under pressure, keep calm and trust your people and your network of professionals.
  • Bring beer to late hours of work. It’s appreciated.
  • Throw “money” at someone to fix a Linux driver – within a day – actually works. It’s true.
  • When an external project manager tells you: “We need more time…. e.g. need more money” – Just tell him, to work and plan more efficient’ – True story.