‘This makes no sense’: JoCo knows election delay’s cause but critics skeptical of fix | The Kansas City Star
var userName = checkUserSubscribed('MPPUser');
var signInOrAccountLink = 'Sign In';
var subscribeLink = 'Subscribe';
var label = "My Account";
var signOutLink = '';
if (getSubscribedFlag)
if(userName)
userName = JSON.parse(userName);
subscribeLink = '';
signOutLink = 'Sign Out';
if (userName && userName.firstName && userName.lastName)
label = userName.firstName + ' ' + userName.lastName;
else if (userName && userName.firstName)
label = userName.firstName;
signInOrAccountLink = '' + label + '';
var subscriptionLink = 'Subscriptions';
if (1 === 1)
$(".right.paywall-links").prepend(signInOrAccountLink, " ", subscribeLink);
signInOrAccountLink = signInOrAccountLink.replace("main mh-only-lg", "");
var profileLink = signInOrAccountLink.replace(label, "Profile");
$(".account-popup .content").prepend(profileLink, subscriptionLink);
$(".account-popup .footer").prepend(signOutLink);
if (getSubscribedFlag)
$(".account-popup .user-name").prepend(signInOrAccountLink);
var f = userName.firstName.split('').shift();
var l = userName.lastName.split('').shift();
$(".account-links.mobile .initials").html(f+l);
else
var userIcon = '';
$(".account-links.mobile .initials").html(userIcon);
subscribeLink = subscribeLink.replace("impact mh-only-lg", "");
$(".account-popup .content").append(subscribeLink);
var userName = checkUserSubscribed('MPPUser');
var signInOrAccountLink = 'Sign In';
var subscribeLink = 'Subscribe';
var label = "My Account";
var signOutLink = '';
if (getSubscribedFlag)
if(userName)
userName = JSON.parse(userName);
subscribeLink = '';
signOutLink = 'Sign Out';
if (userName && userName.firstName && userName.lastName)
label = userName.firstName + ' ' + userName.lastName;
else if (userName && userName.firstName)
label = userName.firstName;
signInOrAccountLink = '' + label + '';
var subscriptionLink = 'Subscriptions';
if (1 === 1)
$(".right.paywall-links").prepend(signInOrAccountLink, " ", subscribeLink);
signInOrAccountLink = signInOrAccountLink.replace("main mh-only-lg", "");
var profileLink = signInOrAccountLink.replace(label, "Profile");
$(".account-popup .content").prepend(profileLink, subscriptionLink);
$(".account-popup .footer").prepend(signOutLink);
if (getSubscribedFlag)
$(".account-popup .user-name").prepend(signInOrAccountLink);
var f = userName.firstName.split('').shift();
var l = userName.lastName.split('').shift();
$(".account-links.mobile .initials").html(f+l);
else
var userIcon = '';
$(".account-links.mobile .initials").html(userIcon);
subscribeLink = subscribeLink.replace("impact mh-only-lg", "");
$(".account-popup .content").append(subscribeLink);
Johnson County Election Commissioner confident November’s general election will be smooth sailing
jQuery(document).ready(function ()
mi.leadAssets.init();
);
Faulty software code was to blame for an overnight delay in Johnson County’s primary election night results, an embarrassing ordeal that kept people across the country waiting for the outcome to several high-profile Kansas races.
“The slow reporting of results was unacceptable and we apologize,” Tom Burt, president and CEO of Election Systems & Software, said in a statement Monday. “We know the election office and other Johnson County government leaders put their faith in us and we let down our valued partners.”
Burt went on to say that the Omaha-based company, the county’s elections vendor, has rewritten the portion of the code that caused the delay and initial tests of that new code were successful. He said testing will continue so the new software can be certified prior to the general election.
Johnson County Election Commissioner Ronnie Metsker said Monday that he continues to have faith in ES&S, and he is confident the problem won’t repeat itself in the November general election. Metsker was the prime mover behind the Johnson County Commission’s decision to spend $10.5 million this summer on this new system of voting machines and software.
var mi = mi || ;
mi.calltoActionCtrl = (function ()
var $subscriptionForm = document.querySelector('#story-cta-widget');
var $newsletterForm = document.querySelector('#newsletter-signUpWidget');
if ($newsletterForm != null)
var isNewsletterEnabled = getDataAttribute($newsletterForm, 'isNewsletterEnabled');
if (isNewsletterEnabled === 'true')
var $email = $newsletterForm.querySelector('#s_email_address');
var $submitBtn = $newsletterForm.querySelector('#newsletterSignupSubmit');
// Object that contains key values stored in data-attributes
var config =
newsletterPreferenceListNames: JSON.parse(getDataAttribute($newsletterForm, 'newsletterPreferenceListNames')),
siteName: getDataAttribute($newsletterForm, 'newsletterSiteName'),
newsletterUrl: getDataAttribute($newsletterForm, 'newsletterUrl'),
newsletterSuccess: getDataAttribute($newsletterForm, 'newsletterSuccess'),
;
var newsletterData =
siteName: config.siteName
;
function isEmailValid(email) (".+"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3])
function getDataAttribute(el, attr)
var dataAttr = 'data-' + attr;
if (el.hasAttribute(dataAttr))
var val = el.getAttribute(dataAttr);
el.removeAttribute(dataAttr);
return val;
function getRandomArbitrary(min, max)
var randomNum = Math.random() * ((max - min) + min);
return Math.round(randomNum);
function removeNode(node)
if (node)
node.parentNode.removeChild(node);
function insertAfterNode(el, node)
if (node)
node.parentNode.insertBefore(el, node.nextSibling);
function insertHeadings(pos)
var $heading = document.createElement('h1');
$heading.classList.add('heading');
$heading.innerHTML = config.newsletterPreferenceListNames[pos].title;
$newsletterForm.insertBefore($heading, $newsletterForm.firstChild);
var $subtitle = document.createElement('p');
$subtitle.classList.add('subtitle');
$subtitle.innerHTML = config.newsletterPreferenceListNames[pos].headline;
insertAfterNode($subtitle, $heading);
function displayRandomNewsletter(num)
if($subscriptionForm)
removeNode($subscriptionForm);
$newsletterForm.classList.remove('hidden');
newsletterData.preferenceListName = config.newsletterPreferenceListNames[num].name;
$newsletterForm.querySelector('#newsletterType').value = config.newsletterPreferenceListNames[num].name;
insertHeadings(num);
function removeRandomCTA()
if (isNewsletterEnabled === 'true')
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length -1 );
if ($subscriptionForm && num === 0)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
displayRandomNewsletter(num )
notifyWidgetSelected($newsletterForm);
else
var num = getRandomArbitrary(0, 1);
if (num === 1)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
removeNode($subscriptionForm);
notifyWidgetSelected($newsletterForm);
if($newsletterForm != null)
$newsletterForm.classList.remove('hidden')
function notifyWidgetSelected(widget)
var newEvent = new CustomEvent('cta_widget', detail: widget);
window.dispatchEvent(newEvent);
function enableSubmitBtn()
$submitBtn.classList.remove('disabled');
$submitBtn.disabled = false;
function disableSubmitBtn()
$submitBtn.classList.add('disabled');
$submitBtn.disabled = true;
function showErrorMsg(node, msg)
var div = document.createElement('div');
div.classList.add('errorText');
div.innerHTML = msg;
insertAfterNode(div, node);
function validateNewsletter()
var errorMsg = $newsletterForm.querySelector('.errorText');
if (errorMsg)
errorMsg.remove();
if ($email.classList.contains('error'))
$email.classList.remove('error');
if (!isEmailValid($email.value))
showErrorMsg($email, "Please insert a valid email address!");
$email.classList.add('error');
disableSubmitBtn();
else
enableSubmitBtn();
;
function submitNewsletter(e)
e.preventDefault();
validateNewsletter();
if ($submitBtn.classList.contains('disabled'))
return false;
grecaptcha.execute();
newsletterData.emailAddress = $email.value;
$newsletterForm.setAttribute('data-json', JSON.stringify(newsletterData));
;
function eventHandlers()
$email.addEventListener('change', function (e)
validateNewsletter();
);
$newsletterForm.addEventListener('submit', function (e)
submitNewsletter(e);
);
$submitBtn.addEventListener('click', function (e)
submitNewsletter(e);
);
function init(isNewsletterEnabled)
/* eslint-disable no-undef */
var isLoggedIn = getSubscribedFlag;
/* eslint-enable no-undef */
if (isLoggedIn)
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length - 1);
displayRandomNewsletter(num);
else
removeRandomCTA();
if (isNewsletterEnabled === true)
eventHandlers();
return
init: init
());
/* function enableSubmitBtn(token)
mi.calltoActionCtrl.sendResponse(token);
*/
jQuery(document).ready(function ()
mi.calltoActionCtrl.init(true);
);
It was the first time this particular system configuration was deployed anywhere in the country. ES&S officials said other communities will soon deploy the same system configuration but they couldn’t provide a list of those customers.
Election results from the primary election were expected before 10 p.m. Aug. 7 in Johnson County, and those results were especially anticipated for the races for Kansas governor and the Kansas Third Congressional District.
Instead, final unofficial election results were not released until 8 a.m. on Aug. 8. In addition to the slow reporting of results, Johnson County also experienced long lines at some of its polling places on election day due to an unusually high turnout and voters who were unaccustomed to a new kind of touchscreen machine.
ES&S officials said the uploading of tallied votes did not perform as expected on election night, nor as tested prior to the election.
“While the aggregation and reporting of results were tested prior to the election, they were not tested in the exact scenario that Johnson County experienced,” the company said in a statement. “Most specifically, the number of ballot positions exceeded the number in the test scenario.”
One computer science professor said Monday that this failure showed the testing was inadequate.
“The big issue apparently is that they didn’t test this system at scale,” said Duncan Buell, professor of computer science and engineering at the University of South Carolina, who has studied that state’s election results extensively. “You need to test for all possible scenarios.”
He said there should have been a way to simulate counting a high number of votes prior to Johnson County’s primary election, in which more than 120,000 votes were cast.
“If you really want to test this system at scale you’ve got to do something like that. It should be feasible,” Buell said.
Buell had seen a copy of Monday’s press release about the Johnson County vote result problems and said he would be sharing it with his computer science students so they can see how things go wrong in the real world.
“We require students to write programs like adults and test them and document and make sure things work,” Buell said. “This demonstrates they can ignore us for four years and still get jobs.”
But Metsker staunchly defended the company.
“I believe they’re still the best vendor out there, and they’ve got the finest product we could have selected for Johnson County voters,” he said at headquarters in Olathe on Monday.
“While we were disappointed with what happened on election night in the primary, I am confident they have discovered what they need to do to make the corrections in software so we will not have this problem again.”
Both Metsker and ES&S officials said the software problem occurred with the “back end” reporting code for results, and not with the vote tabulation software. That reporting code was also separate and distinct from about 1,000 new ExpressVote machines that Johnson County rolled out for the first time in the Aug. 7 primary.
“We did not experience any issues with the integrity of the new voting machines nor the accuracy of the vote tabulation in August,” Metsker said.
ES&S officials said the reporting code caused extremely slow results because it was unnecessarily and constantly refreshing statistical data rather than actually processing the data. The new code has fixed that problem and it’s now being extensively tested to make sure it works, said Gary Weber, ES&S vice president of software development, who was in Johnson County on Monday.
“We’re making changes to the code to make it perform the duties in a faster manner...very much faster,” he said.
Metsker also said the county will deploy all 2,100 machines in November to alleviate long lines. He said the election office will also recruit 1,000 more election workers to assist voters, about as many as would normally be needed in a presidential election.
Still, one critic who watches election equipment nationally questioned why Johnson County would have so much confidence that everything will be fine in November.
Susan Greenhalgh, policy director with the National Election Defense Coalition, suggested Johnson County would be better off with paper ballot machines, rather than with its new touchscreen machines that have a voter verified paper ballot backup for tabulation. Both Greenhalgh and Buell said paper ballot systems are two to three times less expensive than electronic machines and are more efficient and secure.
“The problems that Johnson County experienced, both the long lines and the slow results uploads, could both be easily solved by using voter-marked paper ballots and scanners.
“ES&S individual scanners are used across the country without the upload issue of the ExpressVote scanners,” Greenhalgh said. “That Johnson County would not entertain the thought of returning the ExpressVotes and just getting tried-and-true scanners before the midterms is baffling. We know there will be high scrutiny of these elections, and their system is faulty. This makes no sense.”
Both Metsker and Weber argued that touchscreen machines with a paper backup are preferable. Weber said touchscreen machines make sure a voter doesn’t inadvertently skip a race or vote for more than one candidate in a particular race.
“This is really the best of both worlds,” Weber said.
Weber said he is confident the new code can be certified by federal and state officials, possibly by the end of September, well before the Nov. 6 general election.
Johnson County Election Commissioner confident November’s general election will be smooth sailing
jQuery(document).ready(function ()
mi.leadAssets.init();
);
Faulty software code was to blame for an overnight delay in Johnson County’s primary election night results, an embarrassing ordeal that kept people across the country waiting for the outcome to several high-profile Kansas races.
“The slow reporting of results was unacceptable and we apologize,” Tom Burt, president and CEO of Election Systems & Software, said in a statement Monday. “We know the election office and other Johnson County government leaders put their faith in us and we let down our valued partners.”
Burt went on to say that the Omaha-based company, the county’s elections vendor, has rewritten the portion of the code that caused the delay and initial tests of that new code were successful. He said testing will continue so the new software can be certified prior to the general election.
Johnson County Election Commissioner Ronnie Metsker said Monday that he continues to have faith in ES&S, and he is confident the problem won’t repeat itself in the November general election. Metsker was the prime mover behind the Johnson County Commission’s decision to spend $10.5 million this summer on this new system of voting machines and software.
var mi = mi || ;
mi.calltoActionCtrl = (function ()
var $subscriptionForm = document.querySelector('#story-cta-widget');
var $newsletterForm = document.querySelector('#newsletter-signUpWidget');
if ($newsletterForm != null)
var isNewsletterEnabled = getDataAttribute($newsletterForm, 'isNewsletterEnabled');
if (isNewsletterEnabled === 'true')
var $email = $newsletterForm.querySelector('#s_email_address');
var $submitBtn = $newsletterForm.querySelector('#newsletterSignupSubmit');
// Object that contains key values stored in data-attributes
var config =
newsletterPreferenceListNames: JSON.parse(getDataAttribute($newsletterForm, 'newsletterPreferenceListNames')),
siteName: getDataAttribute($newsletterForm, 'newsletterSiteName'),
newsletterUrl: getDataAttribute($newsletterForm, 'newsletterUrl'),
newsletterSuccess: getDataAttribute($newsletterForm, 'newsletterSuccess'),
;
var newsletterData =
siteName: config.siteName
;
function isEmailValid(email) (".+"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3])
function getDataAttribute(el, attr)
var dataAttr = 'data-' + attr;
if (el.hasAttribute(dataAttr))
var val = el.getAttribute(dataAttr);
el.removeAttribute(dataAttr);
return val;
function getRandomArbitrary(min, max)
var randomNum = Math.random() * ((max - min) + min);
return Math.round(randomNum);
function removeNode(node)
if (node)
node.parentNode.removeChild(node);
function insertAfterNode(el, node)
if (node)
node.parentNode.insertBefore(el, node.nextSibling);
function insertHeadings(pos)
var $heading = document.createElement('h1');
$heading.classList.add('heading');
$heading.innerHTML = config.newsletterPreferenceListNames[pos].title;
$newsletterForm.insertBefore($heading, $newsletterForm.firstChild);
var $subtitle = document.createElement('p');
$subtitle.classList.add('subtitle');
$subtitle.innerHTML = config.newsletterPreferenceListNames[pos].headline;
insertAfterNode($subtitle, $heading);
function displayRandomNewsletter(num)
if($subscriptionForm)
removeNode($subscriptionForm);
$newsletterForm.classList.remove('hidden');
newsletterData.preferenceListName = config.newsletterPreferenceListNames[num].name;
$newsletterForm.querySelector('#newsletterType').value = config.newsletterPreferenceListNames[num].name;
insertHeadings(num);
function removeRandomCTA()
if (isNewsletterEnabled === 'true')
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length -1 );
if ($subscriptionForm && num === 0)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
displayRandomNewsletter(num )
notifyWidgetSelected($newsletterForm);
else
var num = getRandomArbitrary(0, 1);
if (num === 1)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
removeNode($subscriptionForm);
notifyWidgetSelected($newsletterForm);
if($newsletterForm != null)
$newsletterForm.classList.remove('hidden')
function notifyWidgetSelected(widget)
var newEvent = new CustomEvent('cta_widget', detail: widget);
window.dispatchEvent(newEvent);
function enableSubmitBtn()
$submitBtn.classList.remove('disabled');
$submitBtn.disabled = false;
function disableSubmitBtn()
$submitBtn.classList.add('disabled');
$submitBtn.disabled = true;
function showErrorMsg(node, msg)
var div = document.createElement('div');
div.classList.add('errorText');
div.innerHTML = msg;
insertAfterNode(div, node);
function validateNewsletter()
var errorMsg = $newsletterForm.querySelector('.errorText');
if (errorMsg)
errorMsg.remove();
if ($email.classList.contains('error'))
$email.classList.remove('error');
if (!isEmailValid($email.value))
showErrorMsg($email, "Please insert a valid email address!");
$email.classList.add('error');
disableSubmitBtn();
else
enableSubmitBtn();
;
function submitNewsletter(e)
e.preventDefault();
validateNewsletter();
if ($submitBtn.classList.contains('disabled'))
return false;
grecaptcha.execute();
newsletterData.emailAddress = $email.value;
$newsletterForm.setAttribute('data-json', JSON.stringify(newsletterData));
;
function eventHandlers()
$email.addEventListener('change', function (e)
validateNewsletter();
);
$newsletterForm.addEventListener('submit', function (e)
submitNewsletter(e);
);
$submitBtn.addEventListener('click', function (e)
submitNewsletter(e);
);
function init(isNewsletterEnabled)
/* eslint-disable no-undef */
var isLoggedIn = getSubscribedFlag;
/* eslint-enable no-undef */
if (isLoggedIn)
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length - 1);
displayRandomNewsletter(num);
else
removeRandomCTA();
if (isNewsletterEnabled === true)
eventHandlers();
return
init: init
());
/* function enableSubmitBtn(token)
mi.calltoActionCtrl.sendResponse(token);
*/
jQuery(document).ready(function ()
mi.calltoActionCtrl.init(true);
);
It was the first time this particular system configuration was deployed anywhere in the country. ES&S officials said other communities will soon deploy the same system configuration but they couldn’t provide a list of those customers.
Election results from the primary election were expected before 10 p.m. Aug. 7 in Johnson County, and those results were especially anticipated for the races for Kansas governor and the Kansas Third Congressional District.
Instead, final unofficial election results were not released until 8 a.m. on Aug. 8. In addition to the slow reporting of results, Johnson County also experienced long lines at some of its polling places on election day due to an unusually high turnout and voters who were unaccustomed to a new kind of touchscreen machine.
ES&S officials said the uploading of tallied votes did not perform as expected on election night, nor as tested prior to the election.
“While the aggregation and reporting of results were tested prior to the election, they were not tested in the exact scenario that Johnson County experienced,” the company said in a statement. “Most specifically, the number of ballot positions exceeded the number in the test scenario.”
One computer science professor said Monday that this failure showed the testing was inadequate.
“The big issue apparently is that they didn’t test this system at scale,” said Duncan Buell, professor of computer science and engineering at the University of South Carolina, who has studied that state’s election results extensively. “You need to test for all possible scenarios.”
He said there should have been a way to simulate counting a high number of votes prior to Johnson County’s primary election, in which more than 120,000 votes were cast.
“If you really want to test this system at scale you’ve got to do something like that. It should be feasible,” Buell said.
Buell had seen a copy of Monday’s press release about the Johnson County vote result problems and said he would be sharing it with his computer science students so they can see how things go wrong in the real world.
“We require students to write programs like adults and test them and document and make sure things work,” Buell said. “This demonstrates they can ignore us for four years and still get jobs.”
But Metsker staunchly defended the company.
“I believe they’re still the best vendor out there, and they’ve got the finest product we could have selected for Johnson County voters,” he said at headquarters in Olathe on Monday.
“While we were disappointed with what happened on election night in the primary, I am confident they have discovered what they need to do to make the corrections in software so we will not have this problem again.”
Both Metsker and ES&S officials said the software problem occurred with the “back end” reporting code for results, and not with the vote tabulation software. That reporting code was also separate and distinct from about 1,000 new ExpressVote machines that Johnson County rolled out for the first time in the Aug. 7 primary.
“We did not experience any issues with the integrity of the new voting machines nor the accuracy of the vote tabulation in August,” Metsker said.
ES&S officials said the reporting code caused extremely slow results because it was unnecessarily and constantly refreshing statistical data rather than actually processing the data. The new code has fixed that problem and it’s now being extensively tested to make sure it works, said Gary Weber, ES&S vice president of software development, who was in Johnson County on Monday.
“We’re making changes to the code to make it perform the duties in a faster manner...very much faster,” he said.
Metsker also said the county will deploy all 2,100 machines in November to alleviate long lines. He said the election office will also recruit 1,000 more election workers to assist voters, about as many as would normally be needed in a presidential election.
Still, one critic who watches election equipment nationally questioned why Johnson County would have so much confidence that everything will be fine in November.
Susan Greenhalgh, policy director with the National Election Defense Coalition, suggested Johnson County would be better off with paper ballot machines, rather than with its new touchscreen machines that have a voter verified paper ballot backup for tabulation. Both Greenhalgh and Buell said paper ballot systems are two to three times less expensive than electronic machines and are more efficient and secure.
“The problems that Johnson County experienced, both the long lines and the slow results uploads, could both be easily solved by using voter-marked paper ballots and scanners.
“ES&S individual scanners are used across the country without the upload issue of the ExpressVote scanners,” Greenhalgh said. “That Johnson County would not entertain the thought of returning the ExpressVotes and just getting tried-and-true scanners before the midterms is baffling. We know there will be high scrutiny of these elections, and their system is faulty. This makes no sense.”
Both Metsker and Weber argued that touchscreen machines with a paper backup are preferable. Weber said touchscreen machines make sure a voter doesn’t inadvertently skip a race or vote for more than one candidate in a particular race.
“This is really the best of both worlds,” Weber said.
Weber said he is confident the new code can be certified by federal and state officials, possibly by the end of September, well before the Nov. 6 general election.
Johnson County Election Commissioner confident November’s general election will be smooth sailing
Johnson County Election Commissioner confident November’s general election will be smooth sailing
Johnson County Election Commissioner confident November’s general election will be smooth sailing
Johnson County Election Commissioner confident November’s general election will be smooth sailing
Faulty software code was to blame for an overnight delay in Johnson County’s primary election night results, an embarrassing ordeal that kept people across the country waiting for the outcome to several high-profile Kansas races.
“The slow reporting of results was unacceptable and we apologize,” Tom Burt, president and CEO of Election Systems & Software, said in a statement Monday. “We know the election office and other Johnson County government leaders put their faith in us and we let down our valued partners.”
Burt went on to say that the Omaha-based company, the county’s elections vendor, has rewritten the portion of the code that caused the delay and initial tests of that new code were successful. He said testing will continue so the new software can be certified prior to the general election.
Johnson County Election Commissioner Ronnie Metsker said Monday that he continues to have faith in ES&S, and he is confident the problem won’t repeat itself in the November general election. Metsker was the prime mover behind the Johnson County Commission’s decision to spend $10.5 million this summer on this new system of voting machines and software.
var mi = mi || ;
mi.calltoActionCtrl = (function ()
var $subscriptionForm = document.querySelector('#story-cta-widget');
var $newsletterForm = document.querySelector('#newsletter-signUpWidget');
if ($newsletterForm != null)
var isNewsletterEnabled = getDataAttribute($newsletterForm, 'isNewsletterEnabled');
if (isNewsletterEnabled === 'true')
var $email = $newsletterForm.querySelector('#s_email_address');
var $submitBtn = $newsletterForm.querySelector('#newsletterSignupSubmit');
// Object that contains key values stored in data-attributes
var config =
newsletterPreferenceListNames: JSON.parse(getDataAttribute($newsletterForm, 'newsletterPreferenceListNames')),
siteName: getDataAttribute($newsletterForm, 'newsletterSiteName'),
newsletterUrl: getDataAttribute($newsletterForm, 'newsletterUrl'),
newsletterSuccess: getDataAttribute($newsletterForm, 'newsletterSuccess'),
;
var newsletterData =
siteName: config.siteName
;
function isEmailValid(email) (".+"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3])
function getDataAttribute(el, attr)
var dataAttr = 'data-' + attr;
if (el.hasAttribute(dataAttr))
var val = el.getAttribute(dataAttr);
el.removeAttribute(dataAttr);
return val;
function getRandomArbitrary(min, max)
var randomNum = Math.random() * ((max - min) + min);
return Math.round(randomNum);
function removeNode(node)
if (node)
node.parentNode.removeChild(node);
function insertAfterNode(el, node)
if (node)
node.parentNode.insertBefore(el, node.nextSibling);
function insertHeadings(pos)
var $heading = document.createElement('h1');
$heading.classList.add('heading');
$heading.innerHTML = config.newsletterPreferenceListNames[pos].title;
$newsletterForm.insertBefore($heading, $newsletterForm.firstChild);
var $subtitle = document.createElement('p');
$subtitle.classList.add('subtitle');
$subtitle.innerHTML = config.newsletterPreferenceListNames[pos].headline;
insertAfterNode($subtitle, $heading);
function displayRandomNewsletter(num)
if($subscriptionForm)
removeNode($subscriptionForm);
$newsletterForm.classList.remove('hidden');
newsletterData.preferenceListName = config.newsletterPreferenceListNames[num].name;
$newsletterForm.querySelector('#newsletterType').value = config.newsletterPreferenceListNames[num].name;
insertHeadings(num);
function removeRandomCTA()
if (isNewsletterEnabled === 'true')
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length -1 );
if ($subscriptionForm && num === 0)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
displayRandomNewsletter(num )
notifyWidgetSelected($newsletterForm);
else
var num = getRandomArbitrary(0, 1);
if (num === 1)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
removeNode($subscriptionForm);
notifyWidgetSelected($newsletterForm);
if($newsletterForm != null)
$newsletterForm.classList.remove('hidden')
function notifyWidgetSelected(widget)
var newEvent = new CustomEvent('cta_widget', detail: widget);
window.dispatchEvent(newEvent);
function enableSubmitBtn()
$submitBtn.classList.remove('disabled');
$submitBtn.disabled = false;
function disableSubmitBtn()
$submitBtn.classList.add('disabled');
$submitBtn.disabled = true;
function showErrorMsg(node, msg)
var div = document.createElement('div');
div.classList.add('errorText');
div.innerHTML = msg;
insertAfterNode(div, node);
function validateNewsletter()
var errorMsg = $newsletterForm.querySelector('.errorText');
if (errorMsg)
errorMsg.remove();
if ($email.classList.contains('error'))
$email.classList.remove('error');
if (!isEmailValid($email.value))
showErrorMsg($email, "Please insert a valid email address!");
$email.classList.add('error');
disableSubmitBtn();
else
enableSubmitBtn();
;
function submitNewsletter(e)
e.preventDefault();
validateNewsletter();
if ($submitBtn.classList.contains('disabled'))
return false;
grecaptcha.execute();
newsletterData.emailAddress = $email.value;
$newsletterForm.setAttribute('data-json', JSON.stringify(newsletterData));
;
function eventHandlers()
$email.addEventListener('change', function (e)
validateNewsletter();
);
$newsletterForm.addEventListener('submit', function (e)
submitNewsletter(e);
);
$submitBtn.addEventListener('click', function (e)
submitNewsletter(e);
);
function init(isNewsletterEnabled)
/* eslint-disable no-undef */
var isLoggedIn = getSubscribedFlag;
/* eslint-enable no-undef */
if (isLoggedIn)
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length - 1);
displayRandomNewsletter(num);
else
removeRandomCTA();
if (isNewsletterEnabled === true)
eventHandlers();
return
init: init
());
/* function enableSubmitBtn(token)
mi.calltoActionCtrl.sendResponse(token);
*/
jQuery(document).ready(function ()
mi.calltoActionCtrl.init(true);
);
It was the first time this particular system configuration was deployed anywhere in the country. ES&S officials said other communities will soon deploy the same system configuration but they couldn’t provide a list of those customers.
Election results from the primary election were expected before 10 p.m. Aug. 7 in Johnson County, and those results were especially anticipated for the races for Kansas governor and the Kansas Third Congressional District.
Instead, final unofficial election results were not released until 8 a.m. on Aug. 8. In addition to the slow reporting of results, Johnson County also experienced long lines at some of its polling places on election day due to an unusually high turnout and voters who were unaccustomed to a new kind of touchscreen machine.
ES&S officials said the uploading of tallied votes did not perform as expected on election night, nor as tested prior to the election.
“While the aggregation and reporting of results were tested prior to the election, they were not tested in the exact scenario that Johnson County experienced,” the company said in a statement. “Most specifically, the number of ballot positions exceeded the number in the test scenario.”
One computer science professor said Monday that this failure showed the testing was inadequate.
“The big issue apparently is that they didn’t test this system at scale,” said Duncan Buell, professor of computer science and engineering at the University of South Carolina, who has studied that state’s election results extensively. “You need to test for all possible scenarios.”
He said there should have been a way to simulate counting a high number of votes prior to Johnson County’s primary election, in which more than 120,000 votes were cast.
“If you really want to test this system at scale you’ve got to do something like that. It should be feasible,” Buell said.
Buell had seen a copy of Monday’s press release about the Johnson County vote result problems and said he would be sharing it with his computer science students so they can see how things go wrong in the real world.
“We require students to write programs like adults and test them and document and make sure things work,” Buell said. “This demonstrates they can ignore us for four years and still get jobs.”
But Metsker staunchly defended the company.
“I believe they’re still the best vendor out there, and they’ve got the finest product we could have selected for Johnson County voters,” he said at headquarters in Olathe on Monday.
“While we were disappointed with what happened on election night in the primary, I am confident they have discovered what they need to do to make the corrections in software so we will not have this problem again.”
Both Metsker and ES&S officials said the software problem occurred with the “back end” reporting code for results, and not with the vote tabulation software. That reporting code was also separate and distinct from about 1,000 new ExpressVote machines that Johnson County rolled out for the first time in the Aug. 7 primary.
“We did not experience any issues with the integrity of the new voting machines nor the accuracy of the vote tabulation in August,” Metsker said.
ES&S officials said the reporting code caused extremely slow results because it was unnecessarily and constantly refreshing statistical data rather than actually processing the data. The new code has fixed that problem and it’s now being extensively tested to make sure it works, said Gary Weber, ES&S vice president of software development, who was in Johnson County on Monday.
“We’re making changes to the code to make it perform the duties in a faster manner...very much faster,” he said.
Metsker also said the county will deploy all 2,100 machines in November to alleviate long lines. He said the election office will also recruit 1,000 more election workers to assist voters, about as many as would normally be needed in a presidential election.
Still, one critic who watches election equipment nationally questioned why Johnson County would have so much confidence that everything will be fine in November.
Susan Greenhalgh, policy director with the National Election Defense Coalition, suggested Johnson County would be better off with paper ballot machines, rather than with its new touchscreen machines that have a voter verified paper ballot backup for tabulation. Both Greenhalgh and Buell said paper ballot systems are two to three times less expensive than electronic machines and are more efficient and secure.
“The problems that Johnson County experienced, both the long lines and the slow results uploads, could both be easily solved by using voter-marked paper ballots and scanners.
“ES&S individual scanners are used across the country without the upload issue of the ExpressVote scanners,” Greenhalgh said. “That Johnson County would not entertain the thought of returning the ExpressVotes and just getting tried-and-true scanners before the midterms is baffling. We know there will be high scrutiny of these elections, and their system is faulty. This makes no sense.”
Both Metsker and Weber argued that touchscreen machines with a paper backup are preferable. Weber said touchscreen machines make sure a voter doesn’t inadvertently skip a race or vote for more than one candidate in a particular race.
“This is really the best of both worlds,” Weber said.
Weber said he is confident the new code can be certified by federal and state officials, possibly by the end of September, well before the Nov. 6 general election.
Faulty software code was to blame for an overnight delay in Johnson County’s primary election night results, an embarrassing ordeal that kept people across the country waiting for the outcome to several high-profile Kansas races.
“The slow reporting of results was unacceptable and we apologize,” Tom Burt, president and CEO of Election Systems & Software, said in a statement Monday. “We know the election office and other Johnson County government leaders put their faith in us and we let down our valued partners.”
Burt went on to say that the Omaha-based company, the county’s elections vendor, has rewritten the portion of the code that caused the delay and initial tests of that new code were successful. He said testing will continue so the new software can be certified prior to the general election.
Johnson County Election Commissioner Ronnie Metsker said Monday that he continues to have faith in ES&S, and he is confident the problem won’t repeat itself in the November general election. Metsker was the prime mover behind the Johnson County Commission’s decision to spend $10.5 million this summer on this new system of voting machines and software.
var mi = mi || ;
mi.calltoActionCtrl = (function ()
var $subscriptionForm = document.querySelector('#story-cta-widget');
var $newsletterForm = document.querySelector('#newsletter-signUpWidget');
if ($newsletterForm != null)
var isNewsletterEnabled = getDataAttribute($newsletterForm, 'isNewsletterEnabled');
if (isNewsletterEnabled === 'true')
var $email = $newsletterForm.querySelector('#s_email_address');
var $submitBtn = $newsletterForm.querySelector('#newsletterSignupSubmit');
// Object that contains key values stored in data-attributes
var config =
newsletterPreferenceListNames: JSON.parse(getDataAttribute($newsletterForm, 'newsletterPreferenceListNames')),
siteName: getDataAttribute($newsletterForm, 'newsletterSiteName'),
newsletterUrl: getDataAttribute($newsletterForm, 'newsletterUrl'),
newsletterSuccess: getDataAttribute($newsletterForm, 'newsletterSuccess'),
;
var newsletterData =
siteName: config.siteName
;
function isEmailValid(email) (".+"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3])
function getDataAttribute(el, attr)
var dataAttr = 'data-' + attr;
if (el.hasAttribute(dataAttr))
var val = el.getAttribute(dataAttr);
el.removeAttribute(dataAttr);
return val;
function getRandomArbitrary(min, max)
var randomNum = Math.random() * ((max - min) + min);
return Math.round(randomNum);
function removeNode(node)
if (node)
node.parentNode.removeChild(node);
function insertAfterNode(el, node)
if (node)
node.parentNode.insertBefore(el, node.nextSibling);
function insertHeadings(pos)
var $heading = document.createElement('h1');
$heading.classList.add('heading');
$heading.innerHTML = config.newsletterPreferenceListNames[pos].title;
$newsletterForm.insertBefore($heading, $newsletterForm.firstChild);
var $subtitle = document.createElement('p');
$subtitle.classList.add('subtitle');
$subtitle.innerHTML = config.newsletterPreferenceListNames[pos].headline;
insertAfterNode($subtitle, $heading);
function displayRandomNewsletter(num)
if($subscriptionForm)
removeNode($subscriptionForm);
$newsletterForm.classList.remove('hidden');
newsletterData.preferenceListName = config.newsletterPreferenceListNames[num].name;
$newsletterForm.querySelector('#newsletterType').value = config.newsletterPreferenceListNames[num].name;
insertHeadings(num);
function removeRandomCTA()
if (isNewsletterEnabled === 'true')
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length -1 );
if ($subscriptionForm && num === 0)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
displayRandomNewsletter(num )
notifyWidgetSelected($newsletterForm);
else
var num = getRandomArbitrary(0, 1);
if (num === 1)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
removeNode($subscriptionForm);
notifyWidgetSelected($newsletterForm);
if($newsletterForm != null)
$newsletterForm.classList.remove('hidden')
function notifyWidgetSelected(widget)
var newEvent = new CustomEvent('cta_widget', detail: widget);
window.dispatchEvent(newEvent);
function enableSubmitBtn()
$submitBtn.classList.remove('disabled');
$submitBtn.disabled = false;
function disableSubmitBtn()
$submitBtn.classList.add('disabled');
$submitBtn.disabled = true;
function showErrorMsg(node, msg)
var div = document.createElement('div');
div.classList.add('errorText');
div.innerHTML = msg;
insertAfterNode(div, node);
function validateNewsletter()
var errorMsg = $newsletterForm.querySelector('.errorText');
if (errorMsg)
errorMsg.remove();
if ($email.classList.contains('error'))
$email.classList.remove('error');
if (!isEmailValid($email.value))
showErrorMsg($email, "Please insert a valid email address!");
$email.classList.add('error');
disableSubmitBtn();
else
enableSubmitBtn();
;
function submitNewsletter(e)
e.preventDefault();
validateNewsletter();
if ($submitBtn.classList.contains('disabled'))
return false;
grecaptcha.execute();
newsletterData.emailAddress = $email.value;
$newsletterForm.setAttribute('data-json', JSON.stringify(newsletterData));
;
function eventHandlers()
$email.addEventListener('change', function (e)
validateNewsletter();
);
$newsletterForm.addEventListener('submit', function (e)
submitNewsletter(e);
);
$submitBtn.addEventListener('click', function (e)
submitNewsletter(e);
);
function init(isNewsletterEnabled)
/* eslint-disable no-undef */
var isLoggedIn = getSubscribedFlag;
/* eslint-enable no-undef */
if (isLoggedIn)
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length - 1);
displayRandomNewsletter(num);
else
removeRandomCTA();
if (isNewsletterEnabled === true)
eventHandlers();
return
init: init
());
/* function enableSubmitBtn(token)
mi.calltoActionCtrl.sendResponse(token);
*/
jQuery(document).ready(function ()
mi.calltoActionCtrl.init(true);
);
It was the first time this particular system configuration was deployed anywhere in the country. ES&S officials said other communities will soon deploy the same system configuration but they couldn’t provide a list of those customers.
Election results from the primary election were expected before 10 p.m. Aug. 7 in Johnson County, and those results were especially anticipated for the races for Kansas governor and the Kansas Third Congressional District.
Instead, final unofficial election results were not released until 8 a.m. on Aug. 8. In addition to the slow reporting of results, Johnson County also experienced long lines at some of its polling places on election day due to an unusually high turnout and voters who were unaccustomed to a new kind of touchscreen machine.
ES&S officials said the uploading of tallied votes did not perform as expected on election night, nor as tested prior to the election.
“While the aggregation and reporting of results were tested prior to the election, they were not tested in the exact scenario that Johnson County experienced,” the company said in a statement. “Most specifically, the number of ballot positions exceeded the number in the test scenario.”
One computer science professor said Monday that this failure showed the testing was inadequate.
“The big issue apparently is that they didn’t test this system at scale,” said Duncan Buell, professor of computer science and engineering at the University of South Carolina, who has studied that state’s election results extensively. “You need to test for all possible scenarios.”
He said there should have been a way to simulate counting a high number of votes prior to Johnson County’s primary election, in which more than 120,000 votes were cast.
“If you really want to test this system at scale you’ve got to do something like that. It should be feasible,” Buell said.
Buell had seen a copy of Monday’s press release about the Johnson County vote result problems and said he would be sharing it with his computer science students so they can see how things go wrong in the real world.
“We require students to write programs like adults and test them and document and make sure things work,” Buell said. “This demonstrates they can ignore us for four years and still get jobs.”
But Metsker staunchly defended the company.
“I believe they’re still the best vendor out there, and they’ve got the finest product we could have selected for Johnson County voters,” he said at headquarters in Olathe on Monday.
“While we were disappointed with what happened on election night in the primary, I am confident they have discovered what they need to do to make the corrections in software so we will not have this problem again.”
Both Metsker and ES&S officials said the software problem occurred with the “back end” reporting code for results, and not with the vote tabulation software. That reporting code was also separate and distinct from about 1,000 new ExpressVote machines that Johnson County rolled out for the first time in the Aug. 7 primary.
“We did not experience any issues with the integrity of the new voting machines nor the accuracy of the vote tabulation in August,” Metsker said.
ES&S officials said the reporting code caused extremely slow results because it was unnecessarily and constantly refreshing statistical data rather than actually processing the data. The new code has fixed that problem and it’s now being extensively tested to make sure it works, said Gary Weber, ES&S vice president of software development, who was in Johnson County on Monday.
“We’re making changes to the code to make it perform the duties in a faster manner...very much faster,” he said.
Metsker also said the county will deploy all 2,100 machines in November to alleviate long lines. He said the election office will also recruit 1,000 more election workers to assist voters, about as many as would normally be needed in a presidential election.
Still, one critic who watches election equipment nationally questioned why Johnson County would have so much confidence that everything will be fine in November.
Susan Greenhalgh, policy director with the National Election Defense Coalition, suggested Johnson County would be better off with paper ballot machines, rather than with its new touchscreen machines that have a voter verified paper ballot backup for tabulation. Both Greenhalgh and Buell said paper ballot systems are two to three times less expensive than electronic machines and are more efficient and secure.
“The problems that Johnson County experienced, both the long lines and the slow results uploads, could both be easily solved by using voter-marked paper ballots and scanners.
“ES&S individual scanners are used across the country without the upload issue of the ExpressVote scanners,” Greenhalgh said. “That Johnson County would not entertain the thought of returning the ExpressVotes and just getting tried-and-true scanners before the midterms is baffling. We know there will be high scrutiny of these elections, and their system is faulty. This makes no sense.”
Both Metsker and Weber argued that touchscreen machines with a paper backup are preferable. Weber said touchscreen machines make sure a voter doesn’t inadvertently skip a race or vote for more than one candidate in a particular race.
“This is really the best of both worlds,” Weber said.
Weber said he is confident the new code can be certified by federal and state officials, possibly by the end of September, well before the Nov. 6 general election.
Faulty software code was to blame for an overnight delay in Johnson County’s primary election night results, an embarrassing ordeal that kept people across the country waiting for the outcome to several high-profile Kansas races.
“The slow reporting of results was unacceptable and we apologize,” Tom Burt, president and CEO of Election Systems & Software, said in a statement Monday. “We know the election office and other Johnson County government leaders put their faith in us and we let down our valued partners.”
Burt went on to say that the Omaha-based company, the county’s elections vendor, has rewritten the portion of the code that caused the delay and initial tests of that new code were successful. He said testing will continue so the new software can be certified prior to the general election.
Johnson County Election Commissioner Ronnie Metsker said Monday that he continues to have faith in ES&S, and he is confident the problem won’t repeat itself in the November general election. Metsker was the prime mover behind the Johnson County Commission’s decision to spend $10.5 million this summer on this new system of voting machines and software.
var mi = mi || ;
mi.calltoActionCtrl = (function ()
var $subscriptionForm = document.querySelector('#story-cta-widget');
var $newsletterForm = document.querySelector('#newsletter-signUpWidget');
if ($newsletterForm != null)
var isNewsletterEnabled = getDataAttribute($newsletterForm, 'isNewsletterEnabled');
if (isNewsletterEnabled === 'true')
var $email = $newsletterForm.querySelector('#s_email_address');
var $submitBtn = $newsletterForm.querySelector('#newsletterSignupSubmit');
// Object that contains key values stored in data-attributes
var config =
newsletterPreferenceListNames: JSON.parse(getDataAttribute($newsletterForm, 'newsletterPreferenceListNames')),
siteName: getDataAttribute($newsletterForm, 'newsletterSiteName'),
newsletterUrl: getDataAttribute($newsletterForm, 'newsletterUrl'),
newsletterSuccess: getDataAttribute($newsletterForm, 'newsletterSuccess'),
;
var newsletterData =
siteName: config.siteName
;
function isEmailValid(email) (".+"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3])
function getDataAttribute(el, attr)
var dataAttr = 'data-' + attr;
if (el.hasAttribute(dataAttr))
var val = el.getAttribute(dataAttr);
el.removeAttribute(dataAttr);
return val;
function getRandomArbitrary(min, max)
var randomNum = Math.random() * ((max - min) + min);
return Math.round(randomNum);
function removeNode(node)
if (node)
node.parentNode.removeChild(node);
function insertAfterNode(el, node)
if (node)
node.parentNode.insertBefore(el, node.nextSibling);
function insertHeadings(pos)
var $heading = document.createElement('h1');
$heading.classList.add('heading');
$heading.innerHTML = config.newsletterPreferenceListNames[pos].title;
$newsletterForm.insertBefore($heading, $newsletterForm.firstChild);
var $subtitle = document.createElement('p');
$subtitle.classList.add('subtitle');
$subtitle.innerHTML = config.newsletterPreferenceListNames[pos].headline;
insertAfterNode($subtitle, $heading);
function displayRandomNewsletter(num)
if($subscriptionForm)
removeNode($subscriptionForm);
$newsletterForm.classList.remove('hidden');
newsletterData.preferenceListName = config.newsletterPreferenceListNames[num].name;
$newsletterForm.querySelector('#newsletterType').value = config.newsletterPreferenceListNames[num].name;
insertHeadings(num);
function removeRandomCTA()
if (isNewsletterEnabled === 'true')
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length -1 );
if ($subscriptionForm && num === 0)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
displayRandomNewsletter(num )
notifyWidgetSelected($newsletterForm);
else
var num = getRandomArbitrary(0, 1);
if (num === 1)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
removeNode($subscriptionForm);
notifyWidgetSelected($newsletterForm);
if($newsletterForm != null)
$newsletterForm.classList.remove('hidden')
function notifyWidgetSelected(widget)
var newEvent = new CustomEvent('cta_widget', detail: widget);
window.dispatchEvent(newEvent);
function enableSubmitBtn()
$submitBtn.classList.remove('disabled');
$submitBtn.disabled = false;
function disableSubmitBtn()
$submitBtn.classList.add('disabled');
$submitBtn.disabled = true;
function showErrorMsg(node, msg)
var div = document.createElement('div');
div.classList.add('errorText');
div.innerHTML = msg;
insertAfterNode(div, node);
function validateNewsletter()
var errorMsg = $newsletterForm.querySelector('.errorText');
if (errorMsg)
errorMsg.remove();
if ($email.classList.contains('error'))
$email.classList.remove('error');
if (!isEmailValid($email.value))
showErrorMsg($email, "Please insert a valid email address!");
$email.classList.add('error');
disableSubmitBtn();
else
enableSubmitBtn();
;
function submitNewsletter(e)
e.preventDefault();
validateNewsletter();
if ($submitBtn.classList.contains('disabled'))
return false;
grecaptcha.execute();
newsletterData.emailAddress = $email.value;
$newsletterForm.setAttribute('data-json', JSON.stringify(newsletterData));
;
function eventHandlers()
$email.addEventListener('change', function (e)
validateNewsletter();
);
$newsletterForm.addEventListener('submit', function (e)
submitNewsletter(e);
);
$submitBtn.addEventListener('click', function (e)
submitNewsletter(e);
);
function init(isNewsletterEnabled)
/* eslint-disable no-undef */
var isLoggedIn = getSubscribedFlag;
/* eslint-enable no-undef */
if (isLoggedIn)
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length - 1);
displayRandomNewsletter(num);
else
removeRandomCTA();
if (isNewsletterEnabled === true)
eventHandlers();
return
init: init
());
/* function enableSubmitBtn(token)
mi.calltoActionCtrl.sendResponse(token);
*/
jQuery(document).ready(function ()
mi.calltoActionCtrl.init(true);
);
It was the first time this particular system configuration was deployed anywhere in the country. ES&S officials said other communities will soon deploy the same system configuration but they couldn’t provide a list of those customers.
Election results from the primary election were expected before 10 p.m. Aug. 7 in Johnson County, and those results were especially anticipated for the races for Kansas governor and the Kansas Third Congressional District.
Instead, final unofficial election results were not released until 8 a.m. on Aug. 8. In addition to the slow reporting of results, Johnson County also experienced long lines at some of its polling places on election day due to an unusually high turnout and voters who were unaccustomed to a new kind of touchscreen machine.
ES&S officials said the uploading of tallied votes did not perform as expected on election night, nor as tested prior to the election.
“While the aggregation and reporting of results were tested prior to the election, they were not tested in the exact scenario that Johnson County experienced,” the company said in a statement. “Most specifically, the number of ballot positions exceeded the number in the test scenario.”
One computer science professor said Monday that this failure showed the testing was inadequate.
“The big issue apparently is that they didn’t test this system at scale,” said Duncan Buell, professor of computer science and engineering at the University of South Carolina, who has studied that state’s election results extensively. “You need to test for all possible scenarios.”
He said there should have been a way to simulate counting a high number of votes prior to Johnson County’s primary election, in which more than 120,000 votes were cast.
“If you really want to test this system at scale you’ve got to do something like that. It should be feasible,” Buell said.
Buell had seen a copy of Monday’s press release about the Johnson County vote result problems and said he would be sharing it with his computer science students so they can see how things go wrong in the real world.
“We require students to write programs like adults and test them and document and make sure things work,” Buell said. “This demonstrates they can ignore us for four years and still get jobs.”
But Metsker staunchly defended the company.
“I believe they’re still the best vendor out there, and they’ve got the finest product we could have selected for Johnson County voters,” he said at headquarters in Olathe on Monday.
“While we were disappointed with what happened on election night in the primary, I am confident they have discovered what they need to do to make the corrections in software so we will not have this problem again.”
Both Metsker and ES&S officials said the software problem occurred with the “back end” reporting code for results, and not with the vote tabulation software. That reporting code was also separate and distinct from about 1,000 new ExpressVote machines that Johnson County rolled out for the first time in the Aug. 7 primary.
“We did not experience any issues with the integrity of the new voting machines nor the accuracy of the vote tabulation in August,” Metsker said.
ES&S officials said the reporting code caused extremely slow results because it was unnecessarily and constantly refreshing statistical data rather than actually processing the data. The new code has fixed that problem and it’s now being extensively tested to make sure it works, said Gary Weber, ES&S vice president of software development, who was in Johnson County on Monday.
“We’re making changes to the code to make it perform the duties in a faster manner...very much faster,” he said.
Metsker also said the county will deploy all 2,100 machines in November to alleviate long lines. He said the election office will also recruit 1,000 more election workers to assist voters, about as many as would normally be needed in a presidential election.
Still, one critic who watches election equipment nationally questioned why Johnson County would have so much confidence that everything will be fine in November.
Susan Greenhalgh, policy director with the National Election Defense Coalition, suggested Johnson County would be better off with paper ballot machines, rather than with its new touchscreen machines that have a voter verified paper ballot backup for tabulation. Both Greenhalgh and Buell said paper ballot systems are two to three times less expensive than electronic machines and are more efficient and secure.
“The problems that Johnson County experienced, both the long lines and the slow results uploads, could both be easily solved by using voter-marked paper ballots and scanners.
“ES&S individual scanners are used across the country without the upload issue of the ExpressVote scanners,” Greenhalgh said. “That Johnson County would not entertain the thought of returning the ExpressVotes and just getting tried-and-true scanners before the midterms is baffling. We know there will be high scrutiny of these elections, and their system is faulty. This makes no sense.”
Both Metsker and Weber argued that touchscreen machines with a paper backup are preferable. Weber said touchscreen machines make sure a voter doesn’t inadvertently skip a race or vote for more than one candidate in a particular race.
“This is really the best of both worlds,” Weber said.
Weber said he is confident the new code can be certified by federal and state officials, possibly by the end of September, well before the Nov. 6 general election.
Faulty software code was to blame for an overnight delay in Johnson County’s primary election night results, an embarrassing ordeal that kept people across the country waiting for the outcome to several high-profile Kansas races.
“The slow reporting of results was unacceptable and we apologize,” Tom Burt, president and CEO of Election Systems & Software, said in a statement Monday. “We know the election office and other Johnson County government leaders put their faith in us and we let down our valued partners.”
Burt went on to say that the Omaha-based company, the county’s elections vendor, has rewritten the portion of the code that caused the delay and initial tests of that new code were successful. He said testing will continue so the new software can be certified prior to the general election.
Johnson County Election Commissioner Ronnie Metsker said Monday that he continues to have faith in ES&S, and he is confident the problem won’t repeat itself in the November general election. Metsker was the prime mover behind the Johnson County Commission’s decision to spend $10.5 million this summer on this new system of voting machines and software.
var mi = mi || ;
mi.calltoActionCtrl = (function ()
var $subscriptionForm = document.querySelector('#story-cta-widget');
var $newsletterForm = document.querySelector('#newsletter-signUpWidget');
if ($newsletterForm != null)
var isNewsletterEnabled = getDataAttribute($newsletterForm, 'isNewsletterEnabled');
if (isNewsletterEnabled === 'true')
var $email = $newsletterForm.querySelector('#s_email_address');
var $submitBtn = $newsletterForm.querySelector('#newsletterSignupSubmit');
// Object that contains key values stored in data-attributes
var config =
newsletterPreferenceListNames: JSON.parse(getDataAttribute($newsletterForm, 'newsletterPreferenceListNames')),
siteName: getDataAttribute($newsletterForm, 'newsletterSiteName'),
newsletterUrl: getDataAttribute($newsletterForm, 'newsletterUrl'),
newsletterSuccess: getDataAttribute($newsletterForm, 'newsletterSuccess'),
;
var newsletterData =
siteName: config.siteName
;
function isEmailValid(email) (".+"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3])
function getDataAttribute(el, attr)
var dataAttr = 'data-' + attr;
if (el.hasAttribute(dataAttr))
var val = el.getAttribute(dataAttr);
el.removeAttribute(dataAttr);
return val;
function getRandomArbitrary(min, max)
var randomNum = Math.random() * ((max - min) + min);
return Math.round(randomNum);
function removeNode(node)
if (node)
node.parentNode.removeChild(node);
function insertAfterNode(el, node)
if (node)
node.parentNode.insertBefore(el, node.nextSibling);
function insertHeadings(pos)
var $heading = document.createElement('h1');
$heading.classList.add('heading');
$heading.innerHTML = config.newsletterPreferenceListNames[pos].title;
$newsletterForm.insertBefore($heading, $newsletterForm.firstChild);
var $subtitle = document.createElement('p');
$subtitle.classList.add('subtitle');
$subtitle.innerHTML = config.newsletterPreferenceListNames[pos].headline;
insertAfterNode($subtitle, $heading);
function displayRandomNewsletter(num)
if($subscriptionForm)
removeNode($subscriptionForm);
$newsletterForm.classList.remove('hidden');
newsletterData.preferenceListName = config.newsletterPreferenceListNames[num].name;
$newsletterForm.querySelector('#newsletterType').value = config.newsletterPreferenceListNames[num].name;
insertHeadings(num);
function removeRandomCTA()
if (isNewsletterEnabled === 'true')
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length -1 );
if ($subscriptionForm && num === 0)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
displayRandomNewsletter(num )
notifyWidgetSelected($newsletterForm);
else
var num = getRandomArbitrary(0, 1);
if (num === 1)
removeNode($newsletterForm);
notifyWidgetSelected($subscriptionForm);
$subscriptionForm.classList.remove('hidden');
else
removeNode($subscriptionForm);
notifyWidgetSelected($newsletterForm);
if($newsletterForm != null)
$newsletterForm.classList.remove('hidden')
function notifyWidgetSelected(widget)
var newEvent = new CustomEvent('cta_widget', detail: widget);
window.dispatchEvent(newEvent);
function enableSubmitBtn()
$submitBtn.classList.remove('disabled');
$submitBtn.disabled = false;
function disableSubmitBtn()
$submitBtn.classList.add('disabled');
$submitBtn.disabled = true;
function showErrorMsg(node, msg)
var div = document.createElement('div');
div.classList.add('errorText');
div.innerHTML = msg;
insertAfterNode(div, node);
function validateNewsletter()
var errorMsg = $newsletterForm.querySelector('.errorText');
if (errorMsg)
errorMsg.remove();
if ($email.classList.contains('error'))
$email.classList.remove('error');
if (!isEmailValid($email.value))
showErrorMsg($email, "Please insert a valid email address!");
$email.classList.add('error');
disableSubmitBtn();
else
enableSubmitBtn();
;
function submitNewsletter(e)
e.preventDefault();
validateNewsletter();
if ($submitBtn.classList.contains('disabled'))
return false;
grecaptcha.execute();
newsletterData.emailAddress = $email.value;
$newsletterForm.setAttribute('data-json', JSON.stringify(newsletterData));
;
function eventHandlers()
$email.addEventListener('change', function (e)
validateNewsletter();
);
$newsletterForm.addEventListener('submit', function (e)
submitNewsletter(e);
);
$submitBtn.addEventListener('click', function (e)
submitNewsletter(e);
);
function init(isNewsletterEnabled)
/* eslint-disable no-undef */
var isLoggedIn = getSubscribedFlag;
/* eslint-enable no-undef */
if (isLoggedIn)
var num = getRandomArbitrary(0, config.newsletterPreferenceListNames.length - 1);
displayRandomNewsletter(num);
else
removeRandomCTA();
if (isNewsletterEnabled === true)
eventHandlers();
return
init: init
());
/* function enableSubmitBtn(token)
mi.calltoActionCtrl.sendResponse(token);
*/
jQuery(document).ready(function ()
mi.calltoActionCtrl.init(true);
);
It was the first time this particular system configuration was deployed anywhere in the country. ES&S officials said other communities will soon deploy the same system configuration but they couldn’t provide a list of those customers.
Election results from the primary election were expected before 10 p.m. Aug. 7 in Johnson County, and those results were especially anticipated for the races for Kansas governor and the Kansas Third Congressional District.
Instead, final unofficial election results were not released until 8 a.m. on Aug. 8. In addition to the slow reporting of results, Johnson County also experienced long lines at some of its polling places on election day due to an unusually high turnout and voters who were unaccustomed to a new kind of touchscreen machine.
ES&S officials said the uploading of tallied votes did not perform as expected on election night, nor as tested prior to the election.
“While the aggregation and reporting of results were tested prior to the election, they were not tested in the exact scenario that Johnson County experienced,” the company said in a statement. “Most specifically, the number of ballot positions exceeded the number in the test scenario.”
One computer science professor said Monday that this failure showed the testing was inadequate.
“The big issue apparently is that they didn’t test this system at scale,” said Duncan Buell, professor of computer science and engineering at the University of South Carolina, who has studied that state’s election results extensively. “You need to test for all possible scenarios.”
He said there should have been a way to simulate counting a high number of votes prior to Johnson County’s primary election, in which more than 120,000 votes were cast.
“If you really want to test this system at scale you’ve got to do something like that. It should be feasible,” Buell said.
Buell had seen a copy of Monday’s press release about the Johnson County vote result problems and said he would be sharing it with his computer science students so they can see how things go wrong in the real world.
“We require students to write programs like adults and test them and document and make sure things work,” Buell said. “This demonstrates they can ignore us for four years and still get jobs.”
But Metsker staunchly defended the company.
“I believe they’re still the best vendor out there, and they’ve got the finest product we could have selected for Johnson County voters,” he said at headquarters in Olathe on Monday.
“While we were disappointed with what happened on election night in the primary, I am confident they have discovered what they need to do to make the corrections in software so we will not have this problem again.”
Both Metsker and ES&S officials said the software problem occurred with the “back end” reporting code for results, and not with the vote tabulation software. That reporting code was also separate and distinct from about 1,000 new ExpressVote machines that Johnson County rolled out for the first time in the Aug. 7 primary.
“We did not experience any issues with the integrity of the new voting machines nor the accuracy of the vote tabulation in August,” Metsker said.
ES&S officials said the reporting code caused extremely slow results because it was unnecessarily and constantly refreshing statistical data rather than actually processing the data. The new code has fixed that problem and it’s now being extensively tested to make sure it works, said Gary Weber, ES&S vice president of software development, who was in Johnson County on Monday.
“We’re making changes to the code to make it perform the duties in a faster manner...very much faster,” he said.
Metsker also said the county will deploy all 2,100 machines in November to alleviate long lines. He said the election office will also recruit 1,000 more election workers to assist voters, about as many as would normally be needed in a presidential election.
Still, one critic who watches election equipment nationally questioned why Johnson County would have so much confidence that everything will be fine in November.
Susan Greenhalgh, policy director with the National Election Defense Coalition, suggested Johnson County would be better off with paper ballot machines, rather than with its new touchscreen machines that have a voter verified paper ballot backup for tabulation. Both Greenhalgh and Buell said paper ballot systems are two to three times less expensive than electronic machines and are more efficient and secure.
“The problems that Johnson County experienced, both the long lines and the slow results uploads, could both be easily solved by using voter-marked paper ballots and scanners.
“ES&S individual scanners are used across the country without the upload issue of the ExpressVote scanners,” Greenhalgh said. “That Johnson County would not entertain the thought of returning the ExpressVotes and just getting tried-and-true scanners before the midterms is baffling. We know there will be high scrutiny of these elections, and their system is faulty. This makes no sense.”
Both Metsker and Weber argued that touchscreen machines with a paper backup are preferable. Weber said touchscreen machines make sure a voter doesn’t inadvertently skip a race or vote for more than one candidate in a particular race.
“This is really the best of both worlds,” Weber said.
Weber said he is confident the new code can be certified by federal and state officials, possibly by the end of September, well before the Nov. 6 general election.
Take Us With You
Real-time updates and all local stories you want right in the palm of your hand.
Take Us With You
Real-time updates and all local stories you want right in the palm of your hand.
Take Us With You
Real-time updates and all local stories you want right in the palm of your hand.
Take Us With You
Real-time updates and all local stories you want right in the palm of your hand.
Subscriptions
Learn More
Advertising
Clash Royale CLAN TAG#URR8PPP
Comments
jQuery(document).ready(function ()
mi.commentingFaceboook.init();
);