Career‎ > ‎


The following is a list of projects which I have worked on in recent years.  Many projects are centered around the delivery of an electronic voting solution since I have spent more than six years designing and developing products for this purpose.
Electronic Voting System
Designed and Built an enterprise voting system used to conduct binding elections for government, unions, trade organizations, corporate governance and institutions.  The system is primarily a web based application which leverages standard browser technology and voice platforms to provide high volume, multi-channel voting with a full suite of supporting applications.  The system is the result of over seven years of development in an emerging market that has very little in terms of best practice, and a high degree of public scrutiny and debate.  The system would be considered a J2EE application running on Oracle Application Server 10g and supporting technology as well as an Oracle Database on the Linux operating system.

The system is designed to be highly available, scalable and accessible due to the nature of elections in general.  Below is a short description of some of the specific sub-components of the application and the technologies used in their implementation.
Web Based Voting Engine
Web application for ballot presentation and interactive selection of candidates.  Uses XHTML, Javascript (including AJAX), CSS, JSP, custom tags, Struts, EJB and JDBC.  High volume application engineered to allow up to 4000 concurrent voter sessions with base deployment.

IVR Based Voting Engine
Voice implementation of voting engine using Voice XML, Javascript, JSP, custom tags, Struts, EJB and JDBC.  The same application components are used for both WEB and IVR channels, but the view uses audio, text to speech, voice/dtmf recognition.

Remote Ballot Box Integration
System serializes cast ballots and transfers them using a web service on a remote system.  It provides a mechanism to encrypt the ballot, ensure that it was recorded accurately on the remote service and handle communications and I/O issues that may impact the transaction.  It uses Java DOM components, Java Network components, Java security components, EJB and Struts.

Vote Management Modules
Web based application suite for vote system configuration, management and end user support.  Modules are role based using Oracle Identity Management in the back end with Java LDAP integration.  Uses XHTML, Javascript, CSS, JSP, custom tags, Struts, EJB, JDBC and Swing/AWT for some applets.  The system is designed as a highly secure platform with multi-factor authentication and session management with a complete audit trail.

Mail in Ballot Processing
Applet based system that uses a bar code reader to lookup records for ballots returned by mail and process the vote in the system.  Additionally, the system has a feature to transfer the credential using SSL to the clipboard on a peer workstations so that the credential can be processed without having to use the keyboard to eliminate user error.  Uses Java plugin components, Java Network components, Java DOM components and Swing.

Certificate Authority
Web application to enroll users in the application using X509 certificate and keypair generation in the browser.  Application utilizes javascript to generate the keypair using native browser API and submit the request to the service.  The service uses Java security to issue a certificate and then supply to the browser where it is installed using javascript.  The certificate authority manages the revocation list to allow access to the management modules.

Voter List Import Facility
Component to import large lists of voters into the system by reading data from XML, CSV or text data and then populating the internal database.  Process was designed to normalize data and import data consisting of millions of records.  Uses Struts, Java DOM components, various file parsers, EJB and JDBC.
Touch Screen Voting System
A partner company that supplies electronic voting systems internationally, required a touch screen system to be used in the international market.  The system was to be deployed on custom hardware with very specific energy requirements and non-standard peripheral equipment.  Our role was to design and build the prototype for the system that interfaced with native hardware drivers and could accurately record ballots to the internal storage system from a touch screen interface.  The system used JNI, Swing, Java DOM components and implemented a new framework modeled after JSF for navigation and controller logic.

Real Time Database Backup
System periodically checks the database and extracts new archive logs from ASM file storage which it then encrypts the file and transfers it over the internet to an offsite in order to ensure high availability, confidentiality and disaster recovery.  The system uses bash scripting, Oracle RMAN, GnuPG and ssh/scp.

Automated Build and Deployment
Using ANT, JUnit, CVS and Continuous Integration Server (Luntbuild), this system regularly checks out system code, compiles the software, builds artifacts, runs tests, generates documentation and performs static analysis on the code before deploying to a test server and running front end tests.  The purpose of the process is to identify problems in the code early by constantly running test suites written by developers as they create the code and reporting back to the development team by the end of the day if there are issues.

Scrum and XP Development Implementation
The move toward an agile culture in our organization is on-going.  As the team lead, I developed the agile process now used in the organization and trained the entire development team and management team in the philosophy and practice of agile software development.

Front End Testing
System works within unit tests to browse the application, click links, fill in forms, etc and then read and analyze the output.  The system uses HTMLUnit, Java DOM components and JUnit.

Data Center
Purchase, install and configure a multi node linux environment using Oracle application server technology.  The system is more than a dozen blade servers in a managed, fault tolerant environment.  Designed custom firewalls for all nodes within the data center, configured Cisco content server switches for redundant load balancing and SSL termination and configured management agents to monitor hardware and report on failures.

SR&ED Application
Being a small startup organization, we tend to rely on grants and tax credits available to organizations involved in research and development.  With the help of a third party, we have submitted applications for hundreds of thousands of dollars in research money over several years and have been 100% successful each time.

IRAP Application
Where SR&ED is a tax credit, IRAP is a grant available from the federal government to fund research and development.  I wrote the project descriptions for the applications.

Electronic Elections
The development team is also the operations team for a small organization such as Intelivote.  The following is list of several Elections facilitated by Intelivote.

Halifax Regional Municipality - Special By-Election
Using our election platform, our organization provided services to enable the entire by-election in the city to allow for on-line and telephone voting as well as enable manual voting at the polling stations.  As senior architect, I led the requirements analysis, custom development and system support effort for the project.

Municipal Elections - Province of Nova Scotia
During the 2008 municipal elections in Nova Scotia, our organization provided services to enable on-line and telephone voting for four municipalities including HRM, Windsor, Berwick and Stewiacke.  With the exception of HRM, these municipalities allowed electronic voting using our system right up to and including election day.  As the senior architect, I led the requirements analysis, custom development and system support for all elections.

NDP Leadership Elections - Ontario and Saskatchewan
In two separate events during 2009, Ontario and Sasketchewan selected the leader of their party using a combination of Mailin ballots and electronic voting.  As senior architect, I led the requirements analysis, custom development and system support for both leadership elections.

Local Government Elections Pilots - South Buckinghamshire and Rushmoor, UK
The Department of Justice in the UK conducted internet voting pilots in five regions in the UK during 2007.  Our organization provided services to two of the regions and integrated successfully with a competing product and in one region with four other vendors to provide a seamless voting solution for registered voting participants.  As senior architect, I led the requirements analysis and custom development required to complete the project.

Municipal Elections - Province of Ontario
During 2006, eight municipalities contracted with our organization to provide election services either by telephone or the Internet or both.  In some cases, this was in addition to regular paper ballots in the polling stations.  As the senior architect for the organization, I led the requirements analysis, custom software development and system support for all eight elections.