This app emerged from a mandate to make the caucus more accessible and transparent. It was well-intentioned but underfunded and lacked comprehensive organizational buy-in. Introducing tech can help but you have to spend tons of money to make it reliable and usable, then you have to spend more to train everyone in using it. This is a problem organizations of all sizes and shapes face when making massive IT changes.
Shadow is a firm that makes custom software for Democrats and progressives. It has an unnecessarily sinister name. There are not a lot of companies that make software for Democrats because it’s an awful job. You make very little money. Everyone hates you when things go wrong, which they will, because the product testing cycle and margins are nonexistent. Then everyone will assume things went wrong because you are some combination– you choose– of secretly evil, secretly working for Bernie, secretly working for The Establishment/Hillary (per someone's unpersuasive Imgur post below), or secretly working for Buttigieg.
Others have noted that Shadow also made software for the Buttigieg campaign. If you take my claims above as true, this should be unsurprising to you: a hard market where everyone hates you and no one has money to pay you is not attractive to enterprising software engineers, so there are few firms available to choose.
That sounds like a lot of money to a lay-person, but assuming $100/hr, which seems like at least a reasonable ballpark rate, that breaks down to 600 man-hours, or 15 man-weeks.
That is a very tight deadline to turn out a critical app like this. Especially since I assume it wasn't just a single person doing the coding.
People don't realize that software is expensive and a custom built application is probably not the correct choice for a single-use product. I'm sure whoever was in charge felt that $60k was a quite generous offer to build this. In reality it's basically nothing.
I used to have acquaintances approach me and say, "Hey I've got this great app idea you could help me with."
The response I found shut them down real quick was, "Great. Do you have $100k lying around to get the first beta out the door?"
You only had 1000 precincts, all you had to deal with is 1000 calls - and if one of them went wrong, you'll let that person know through some kind of reviewing mechanism. I understand that $60K is nothing but this kind of failure is absurd.
https://www.latimes.com/business/technology/story/2020-02-04...
Edit: Nevada has since said they will not use the app and are looking at backup options
Most of the time here (and hence money) goes in gathering requirements and stakeholder engagement.
I'd imagine there is probably at least 200 hours of meetings, travel and phone calls just getting to the point of working out what they need. And yes, a lot of that is going to be physically sitting down with volunteers in some town and seeing how things are done.
One screenshot showed an SQL error.
I think if you're doing an one man job, under pressure, making an app that has limited scalability, the last thing you should be doing is not using some kind of ORM or something similar (especially at a login page)
So it looks like they made it unnecessarily hard on themselves.
Also Shadow was openly hostile to the Sanders campaign in numerous encounters.
It’s not as bad as the CEO of a major voting software company saying he’ll “bring home the votes for Republicans” (Diebold, 2004) a but this is a clear case of conflict of interest.
In other words it's exactly the kind of business that attracts activist types who have non-monetary motivations and it could therefore present an opportunity for tampering, particularly since any discrepancies can be dismissed as bugs from underfunding and rushed development.
Whatever is actually going on, the system is clearly insanely broken.
If I can ask, why the specific nature for their clientele? Isolating your solutions to a specific political party seems strange to me especially if the emphasis on making money. If anything, money normally supersedes political leanings at the end of the day which makes the whole fiasco even stranger to me. Wouldn't you want to provide a solution for both parties by default? Not doing so seems nefarious on it's own.
It sounds like pairing products with political leanings is not a good business decision? Which may explain where all the 'hate' is coming from - it's just bad business and sows the seeds of doubt in their credibility in the minds of many.
Even if you wanted to cross the aisle, it would be hard. If you work for Democrats, Republicans will not work with you. If you work for Republicans, Democrats will not work with you.
Anecdotally, nations doing it that way seem to report faster than when software and electronics become involved.
As an aside - these instances of underfunded and underdeveloped services, specifically in the political sphere, are really painful reminders of the flip side to the idealistic technocratic future that I think a lot of folks around here assume to be an inevitability.
Since that time he's probably had his own epiphanies from working in industry but one of mine was that we did shockingly little QA and everything was built as fast as humanly possible. Everything was building the airplane in the air and it was largely due to constraints of the political or legal kind. Timeline management and allocating resources to testing was always an afterthought.
Testing usually comes from a feedback loop of launching broken features, incident response, manager gets in hot water, engineer gets in hot water, engineer proposes testing plan, manager uses incident as primary source reference to secure additional budget, testing implemented.
In politics no service, company, initiative, or team lasts long enough to complete the cycle.
You may find this discussion enlightening. In short, trust is at a premium and there are few white-label providers.
First of all (and it seems I've been using this word a lot lately) this turns software development into a religion rather than a business with solid business strategy. The equivalent in other businesses, like the entertainment industry, are people who do work for stars for nothing or nearly nothing because they think it will lead somewhere. All they get is a weird and abusive form of servitude (I've seen this first hand) and no future.
Why would someone not write software for politics instead and make part of their value proposition that they are not biased (and, of course, take the steps necessary to actually deliver that).
We have a close relative in South America who owns a company that makes and markets voting hardware and software. They are not aligned with any specific political party, movement or cult. They sell to everyone, in and outside South America and have a very nice business.
As far as why people don't sell to everyone, the above explains a lot. Another explanation is that political sales (which is different from true election tech, which is purchased by governments) are driven by trust and personal relationships. Once you work for one party in the US, the other will not trust you.
It’s quite the leap you make from there to religion.
Um, isn't this app allowing people to enter data, and sending that to an API? How could that be out of anyone's core skillset? Almost every single app must do that.
Going back to voting exclusively by ink on paper and hand counting is imperative.
This is how it's supposed to work: https://youtu.be/ViK9pe9Pv_s?t=27
Good old progressive enhancement. Not sure why people want to rip out the old functionality (paper) until the new functionality (e-voting) has a solid track record on it's own.
The challenge is: is the person submitting the results who they say they are, and are they authorized to submit results for said precinct, did their data submission transform on transit. The misconception seems to be that any of the data is private.
Issuing 1700 instagram accounts and having each precinct post and tag a photograph would have been both more secure, and instantly verifiable. Anybody could go back later and go "yep thats the photo I posted." "Yep that is the account that we expected the photo to come from." "Yep, the account wasn't improperly accessed."
Everyone in the public can see the live results real time, and hand verify the summarization. A worst case scenario would be someone doctoring one of the Math Sheets, printing out a near perfect duplicate, and creating confusion over which document is the "real" one. Breaking into a physically secure area with a fake piece of paper may cause a situation with an unverifiable truth. Having a public, timestamped photograph minimizes counterfeiting and forgery.
Providing a csv/xlsx file, and having a whitelisted list of senders would have worked, along with a bot ingesting the files as they came. A onedrive with 1700 shared spreadsheets would have worked, each precinct manager would have just needed a copy of mobile excel. The technology that generates my fantasy football cheat sheets seems more advanced.
The goal here should be to get a definitive answer posted into the public record, timestamped and proven to be the appropriate sender.
The "pin" nonsense is the scary part of all this. Did anybody who shouldnt have download the app, and submit the wrong results?
>he had to sign in with an email and password, provide a two-factor authentication, and enter a one-time password generated by the Google Authenticator app.
What is the point of 2fa/authenticator, if the person is registering for the first time the night of the primary? Wouldnt 2fa be for preventing access to the account youve already made, not to prevent someone from creating your account? Unless somehow the phone numbers were already on file, and a sanity check took place before the 2fa step, which I doubt. Is 2fa anything more than security theater in this application?
I'm pretty comfortable with that.
Either way in a caucus you are NOT electing a president, you are just choosing a delegate who goes on to the national convention where the president is chosen. There are rules so that the caucus results feed who is supported at the national convention, but there are ways around those rules if you want to go to the national convention and then support someone who wasn't even running in the first place - though you pretty well better be assured of a win before you think about trying those tricks as the media will go nuts. (the same rules exist in primary states, technically there is a caucus somewhere that chooses the delegate to the national convention who can then vote for someone else)
yes, the general public now understands how bobo this operation is!
The Republicans do ballots - on paper, but the democrats don't have a ballot at all.
All four voted for Trump, but that's not super relevant. What's relevant is that it was four out of 127,000,000 votes. Even if the problem were 1,000 times worse then we know it still would have had no effect on the election, even if they were all in Wisconsin.
Folks can take home the stub to ensure non-repudiation etc..
They can look up the serial number on the stub they take home to see for sure it was recorded.
FYI we should also have basic ID requirements for voting. The arguments against it are kind of ridiculous, and federal or state ID should be free.
There should be no 'voter registration' required either: the state knows your address and that's that.
For lighter elections like city alderman, you can use your ID + passcode to SMS or email your vote.
Maybe make a law requiring that any tech used for legal voting has to get the thumbs up from the NSA or some super amazing agency that is also secular in nature. None of this 'quickie app for voting' rubbish.
At this point, I hate politics so much, I think every nation needs a 'caretaker' Pres/PM from the bureaucracy - someone who can clean out the cobwebs, get rid of a bunch of old laws, clean up the tax code, take on the public unions (I mean reform not destroy, I mean teachers probably need higher salaries) and basically do a big, operational house cleaning that has nothing to do with politics.
You realize that every single thing you said there is political, right?
The reason this happens is because hundreds of millions of dollars are lit on fire during election season and all the sharks, including former Google employees, come out to swim. Even well intentioned projects get slammed by the crunch of the election season (seriously try shipping a well scaled app in < 2 months with terrible product direction) and ultimately fail - failing the needs of the entire citizenship of the country.
After the success of Obama's 2008 and 2012 campaigns even more money was funneled into IT as a sort of perceived silver bullet. But in 2016 it wasn't, and yet no analysis was done to correct the problems for the 2020 cycle - because the decision makers (all these "CTOs") are clueless fucks who are just there for the money and could care less about the integrity of our democratic system.
- in 2016 I worked for one of the companies in this niche and saw the bidding/sales/engineering processes first hand. FWIW I am a life long democratic voter and this makes me sick to my stomach.
However, if you are only a campaign manager for six months or whatever and have to prove your worth or else move back in with your parents and spend the rest of your working life fetching coffee and slowly paying for your $200k georgetown political science degree, then yeah that app better be out in 2 damn months.
Rat races don't lead to quality, they lead to desperate people taking shortcuts and making mistakes, and fodder for managers to point to on a slide when they have to appear in front of superiors. Things that woudn't otherwise happen if pressure was lowered and we thought about things like burnout and well being rather than whatever meaningless work-related metric is hot right now. This sort of failure is inevitable in fields operating like this.
Well, you aren't technically wrong here, but I disagree with the sentiment. The RNC leveraged a the same kind of data used by the Obama team in '12 to squeak out an Electoral College win in `16.
I think it's easy to get overly ambitious with civic tech and deliver expensive garbage. However, when people stay focused and deliver then I think the results speak for themselves. While the '12 and '16 elections didn't turn on candidates tech strategies alone, it's clear that they contributed.
I personally worked on digital marketing campaigns for years as a data scientist in a previous job, and have become entirely disillusioned with the entire notion (and I am not alone[0]). Its largely snake oil, and its effectiveness is incredibly overblown. But literally billions of dollars, large marketing teams embedded in every company, and some of the largest tech giants on the planet all have an incentive to drink the Kool-Aid.
[0] https://thecorrespondent.com/100/the-new-dot-com-bubble-is-h...
304 to 227 wasn’t a “squeak”
Edit: Seeing downvotes on this, but it's in support of tptacek's comment. The DNC and State democratic parties are separate and the latter run the elections. You might believe that the DNC is fixing the process, but the reality is that they have little influence in how the States choose to run their election/nomination processes.
In all honesty, the Iowa caucases are likely a huge pain in the ass for them and this failure is probably driving a lot of DNC folks crazy right now.
https://mobile.twitter.com/kendallkarson/status/122481061735...
"Shadow Inc.’s website has scant information about the firm and its employees. But a review of social media accounts shows that three of the Washington, D.C.-based firm’s top executives worked on the 2016 Hillary Clinton campaign.
The CEO of Shadow Inc., Gerard Niemira, was the director of product on Clinton’s campaign, his LinkedIn profile says."
https://nationalinterest.org/blog/buzz/shadow-inc-mysterious...
This is not even close to paranoid. Conflicts of interest are an important issue for nonprofits because it can cause them to lose tax exempt status, and the IRS makes a whole todo about it, and therefore so do competent boards. Trying to brush this under the rug because of politics is disgusting and would not be tolerated at ethical and competent organizations.
(funny substitution tho)
The only thing that could conceivably provide a systematic opening to fix things (ie, not just fixing specific things, after they've become apparent, because they've already catastrophically failed), in the realm of badly-written science fiction and fantasy, would be:
Bernie Sanders (or another equally popular candidate, in the near-future) is ratfucked so badly and obviously (which this could be the start of the perception of, even if it is just sufficiently advanced incompetence to be indistiguishable from malice), then the nominee loses to Trump so convincingly, that it completely shatters the party -- like it is no longer able to function at a basic level, and will clearly, even to the most delusional, never be able to win another election again -- and then... something, I don't even know how this would work. I am not creative enough to write this laughable science fiction any further.
There might also be a route involving Bernie Sanders winning both the primary and the general by a landslide, but that comes with its own and different set of systematic problems that I don't think would make the party's competence at dealing with technical problems, at least, any better.
But in either case, the deepest underlying rot is still the toxic interests of its financial backers, which are reproduced in the very bones of the party, and occasionally pop up in especially ridiculous and very indirect ways like this (and many more that don't get frontpaged as a problem on HN, or the New York Times for that matter). There's no fixing anything without somehow getting rid of them. And there is no realistically traversable path to that.
Sounds like they know exactly what they are doing.
Why ship a competently built project when you can ship a broken POS and scoop up even more money?
My son was there working as volunteer, and so was his ex-girlfriend, who's still a close family friend. I was chatting with them both throughout the evening and into the wee hours this morning.
They worked different locations in the Des Moines metro area and the results they reported to me were pretty close to the same in both.
I'll say this about it, it's hard to imagine that less than 4500 calls to a server over the course of an hour or two would "crash" it, or even ten times that number. And that I think an SQL db is a poor choice for an app like that.
CouchDB, or most any open source "nosql" db, would've been a better choice and, really, so would a dead simple flat file db to store the data for each precinct in and those are both very easy to build for something as simple as this.
And they didn't even need an "app" per se. All they needed was a password protected web page with a dead simple form.
What happened makes it a bit difficult to avoid pondering if the delays weren't deliberate. Whatever the case may be, the DNC is who ended up taking it on the chin.
The data being submitted is so simple that using an SQL db adds a layer of unnecessary complexity.
So did their decisions for authentication, which appears to be where things got stuck.
Or 1678 password protected databases with one or more human readable files in them and let CouchDB handle user auth, which CouchDB makes really easy.
You could do the same thing with a simple flat file database using directories and files and system level user access, and it'd be very fast too.
This is pretty much the kind of thing CouchDB is designed for though and has tools built-in to make it easy.
This should fall on the IDP (Iowa Democratic Party) as they commissioned the app...
Other suspicious dealings are a premature victory announcement by Buttigeig's campaign and a leak of a picture of paper tallies which included a PIN allegedly used to login to the tally app. Looking for the tweet now...
>https://townhall.com/tipsheet/leahbarkoukis/2020/02/04/shado...
Edit: I'm not necessarily trying to suggest anything, but I'd like to point out that this post went from +10 to +2 in a matter of minutes.
Aren't you though? I mean, your post is essentially "CLINTON" "ALLEGED" "SEVERE" "LEAK" . Lot's of words meant to imply some grand conspiracy. The reality is almost certainly that the developer (who has an unfortunate name) probably just didn't have enough time/budget to put out a decent product. Not everything is an actual conspiracy.
Calling it a "conspiracy" theory is just dismissive slander at this point. People have conspired successfully to achieve far greater and more malicious goals.
This doesn't necessarily mean there is a huge conspiracy, but the optics -and the reality- of the party machine functioning properly is terrible, and the choice is between incompetence or malfeasance. Either way, they shot themselves in the foot, and it's not a good look.
Intentionally releasing a broken app is an idiotic excuse for a conspiracy.
...Yikes.
It's a reporting tool. How the heck did you get to this position?
Lmao.
CEO, COO, CTO...
Here's the thing I don't understand about them, I thought startups were averse to this? Am I wrong about startups or am I wrong about them being a startup?
If this incident hadn't happened, these folks could have proudly claimed that they were the CTO/COO/CPO etc of Shadow Inc on their LinkedIns and whatever article BuzzFeed/Forbes wrote about them.
At least now I don't feel bad about when I test in production. (just kidding, I didn't feel bad before).
https://www.theverge.com/2020/2/4/21122737/iowa-democractic-...
But looking at the TestFairy pricing page, the free version is actually limited to 200 sessions per month. I would read this as every time a user logs on - definitely not going to work for 400 users logging on multiple times in one night.
The company who produced this app didn't just fail on development but on any procurement/contractual sense. How could they have imagined that relying on a free tier of a beta testing platform could be acceptable in a real life production environment?
Yikes?
Yeah, democracy is fucked.
0. https://theintercept.com/2020/02/04/iowa-caucus-app-shadow-a...
That being said, it's important to grasp what actually happened with the app rather than give in to misinformation and political apathy surrounding the news. Iowa voted by paper, so we are all just sitting tight while the hand count occurs as is traditionally done.
You can't really rig votes even with an app. Hanlon's razor probably applies here; never attribute to malice that which is adequately explained by stupidity
The Iowa caucus is not a paper ballot. People stand in groups in a large multipurpose room and raise their hands for who they vote for. Depending on the viability threshold, people move to new groups and are recounted.
The exact rules are complicated and the process is run by unpaid humans. Moreover, in 2020 everyone has smartphones to post embarrassing mistakes on social media. And this year is a very crowded primary for the democrats, raising the chance for error.
Under this theory, the app is a convenient scapegoat to hide the fact that the process is inaccurate and bad. For politicians this seems pretty convenient. Who would you rather blame, and decades old tradition or an app contractor?
As anybody can tell you, nothing sinks projects faster than changing requirements late in the development cycle.
The app also sucked for another reason. Lots of Iowa is rural and cell coverage can be spotty. The app was designed with the all too common assumption in this day and age that the Internet works everywhere.
The process has never worked. I attended a couple caucuses myself between becoming 17 [0] and leaving Iowa. I still hear about them from family. They have various flaws. The most severe one IMHO is that due to the time commitment, they only reflect the voice of die-hards and/or those with few responsibilities. That's true for choosing the candidates and even more so for choosing the platform.
However, I imagine you mean this specific failure mode (unable to produce an authoritative count within X hours for some smallish X) is new. AFAIK, that's correct.
I would love it if this failure inspires them to change to a standard primary process. Probably won't, though.
[0] iirc you can participate if you will be 18 by the general election.
Example of rule confusion: "No new voters are permitted to join the caucus after the first alignment. But in at least 70 precincts, more than 4 percent of the total, there are more tabulated total votes on final alignment than on first alignment."
Picture it, there's 100 people in a room who all have to move themselves around to their respective candidates and people count them and shout out the numbers.
All of the candidates are represented (they're reporting the numbers) and can hear the same numbers, all of the voters can hear them too.
It's messy, but it's probably one of the most difficult systems to "hack" in terms of real numbers since so many people know the results immediately.
Random example: if candidate is below the viability threshold, that group is supposed to disband and join another group. You could have a mistake where, on the 2nd round, two non-viable groups merge and form a viable group.
For example, maybe Biden is at 14% and Klobuchar is at 2%. Under rules, those groups are both non-viable. But you could easily see a mistake where the caucus operators allow the 2% Klobuchar group to "merge" with the Biden group.
My favorite screenshot is the last one, it looks like a generic mobile Firefox error for a misspecified URL.
I don't want to speculate too much on that screenshot but it looks like they have an error in their Auth0 integration. When you use a service like Auth0 you give it a redirect url to send authenticated users to. It looks like they passed in an invalid url for that redirect. Maybe they only tested this 2fa step locally and something was different when they deployed to users' phones, I can't say for sure, but it doesn't look good.
One possible issue is that Fennec/Fenix doesn't open http URLs in external apps by default (unsure about custom protocols), whereas Chrome does.
"The app was not deployed through traditional app stores or even sideloaded using an enterprise certificate. Instead, it was deployed through the TestFairy testing platform, which is similar to Apple’s TestFlight and used predominantly for Android and iOS apps that are not yet finalized."
https://www.theverge.com/2020/2/4/21122737/iowa-democractic-...
4 years ago I had the Republican app on my phone. I was the backup reporter just in case the main reporter had problems. Since the main reporter used the app correctly I didn't use it, but I had access to it.
I would have written an app that doesn't work for only $25000
At $50k they certainly weren't going to get what they wanted delivered, and they have no-one to blame but themselves.
Why Shadow?
When a light is shining, Shadows are a constant companion. We see ourselves as building a long-term, side-by-side “Shadow” of tech infrastructure to the Democratic Party and the progressive community at large.
Remember "deplorables"?
Many people at this company were directly involved with the HRC '16 campaign.
It seems pretty hard to screw that up so badly but clearly it’s quite easy to make a complete dumpster fire from those requirements.
https://www.theverge.com/2020/2/4/21122737/iowa-democractic-...
they used the a free tier of TestFairy that limited the number of test users to 200 and on iOS used TestFlight and did not use either the app store for the final version or make an enterprise version, and possibly could not distribute the app to the approximate 1700 users. They still would have needed to get the app through the app store approval process for general release to fix the app at least on the iOS side as far as I understand it. To fix it quickly would have just required them to go back to calling in results by voice as in past years. Don't know why they did not just do that.
They did that - but apparently the phone number for calling in the results was the same as for "help my app doesn't work", so the phone line was flooded. Unfortunately I don't have the source link to hand, so feel free to treat that as hearsay.
However, CNN had a live cross to someone trying to call in their results, and after an hour on hold, when they finally got through, the other side hung up on them while they were broadcasting live on air:
https://www.washingtonpost.com/nation/2020/02/04/iowa-caucus...
"It took an hour and a half for Shawn Sebastian to get hung up on in 10 seconds. And it unfolded on national television Monday, making the moment, in the words of some, “one of the most ridiculous things I’ve seen on cable TV.”"
The jest of it is one of the most important institutions in the United States (the Democratic National Committee) uses a highly nepotistic and incompetent system for managing IT which leads to colossal failures in marketing, canvassing, and security. Not to mention massive PII violates as millions of emails, phone numbers and SSNs, are passed around in plain-text via CSV files.
The reason this happens is because hundreds of millions of dollars are lit on fire during election season and all the sharks, including former Google employees, come out to swim. Even well intentioned projects get slammed by the crunch of the election season (seriously trying shipping a well scaled app in < 2 months with terrible product direction) and ultimately fail - failing the needs of the entire citizenship of the country.
After the success of Obama's 2008 and 2012 campaigns even more money was funneled into IT as a sort of perceived silver bullet. But in 2016 it wasn't, and yet no analysis was done to correct the problems for the 2020 cycle - because the decision makers (all these "CTOs") are clueless fucks who are just there for the money and could care less about the integrity of our democratic system.
- in 2016 I worked for one of the companies in this niche and saw the bidding/sales/engineering processes first hand. FWIW I am a life long democratic voter and this makes me sick to my stomach.
If you want to refer to something you said elsewhere, please use a link.
Even if it is, say, 500TB of data, in 300 different formats usually those formats aren't drastically "different." Maybe I'm not understanding what the application was supposed to do to not understand why this wasn't solved every quickly. Or maybe given the timeline it was solved quickly once the right people got involved and figured out what needed to be done.
Everything about this reeks of a publicity stunt to "ruin" electronic voting in the public eye.
My experience is that customers hate to pay for testing once they see the product running. They assume that it's done. I had a customer tell me that if I did the programming right it should always work and testing should be minimal. I had to explain to him that that's not the case with software and testing is one of the most important parts of the software development cycle. He felt it was a waste and that I was looking to add extra costs for no reason.
I bet there was not enough money. People seem to feel that a few grand will cover the costs. They figure 10k is an outrageous amount. What they don't seem to understand is that it will barely cover the costs of planning the app.
Both the developers and the people that approved the app for use need to take responsibility. Too bad since it could have saved a lot of money and time in the long run.
BTW, this could have been a Google Form with a spreadsheet as a back end. But user training would have still been an issue. You can't get around that.
Ok, did anyone actually design the app?
Maybe it's too hard to move to electronic voting nationwide. But every organization has governance and could use an electronic voting system based on BFT consensus of mutually distrusting parties. Vote using an app, it gets stored "on-chain", then you can check it on another app.
Do the paper vote - as it was always done. Let our technology analyze it afterwords. Why are we all trying to put our technology in front of this simple device. of paper.
You all know this rule = "make a single application do one thing well."
Again, this is ridiculous from a Credibility sense. Paper + networks, Paper + mobile, forget the paper, Mobile only, Mobile + scale. Where are we at? No where and much less. Just take a paper vote and tally it. Is that so hard?