May. 2017 - present
Ethoca - www.ethoca.com
- Stand up VMs, configure services, develop and test infrastructure-as-code using Chef, Ansible, Jenkins, and Docker on servers in VMWare and Openstack.
- Mitigate security vulnerabilities, leveraging configuration management technologies to update and test server stacks en masse.
- Support QA and Development VMs, services, and configurations.
Jul. 2016 - May. 2017
Rogers Communications Inc. - www.rogers.com
System Administrator - DevOps
- Create and administer HAProxy configurations, nginx configurations, Wordpress sites, MySQL databases, and Percona XtraDB clusters using Chef and Ansible.
- Troubleshoot build pipeline issues. Technologies used include Capistrano and bash scripts.
- Stand up on-premise VMs using VMWare vCenter and AWS EC2 instances using the EC2 CLI.
- Create utilities in Python to facilitate or optimize administration, data gathering, and resource creation processes.
Wordpress Site Information Tool
- Gather Wordpress site and plugin information from Chef Ohai tool, convert it to SQLite tables, and use Python StringIO to rapidly create a site information summary page with links to individual site pages divided into sections for environments, servers, service versions, and plugin versions.
- Organize the site information with Atlassian Confluence wiki markup and upload new or changed information using Atlassian's REST API.
- Version control offline copies of the pages in a Git repository.
User Management Tool
- Created a command line tool allowing user and group information to be stored in Chef data bag (JSON) format
- Validating input: checking if a new or renamed user or group matches an existing one or if their numerical uid matches an existing uid. checking that requested deployment targets or groups or gids exist.
- Backing up of modified or deleted users to JSON files.
Meal Planning Application
- Created and configured new Wordpress/nginx servers and new Cassandra nodes.
- Updated and version controlled the HAProxy configuration changes to make the staging environment available.
- Troubleshooted and ran first Capistrano deployment on new environment before releasing the staging environment to developers.
Jan. 2013 - May. 2016
Symcor - www.symcor.com
- Create rapid, automated, and repeatable build and deployment systems and processes in non-production and production environments.
- Guide developers and architects into following industry-wide best practices and Symcor standards in the design and implementation of their products.
- Work with Information Security staff to make sure that the solutions that we build together comply with PCI, PIPEDA, and PHIPA standards and regulations.
- Provide troubleshooting and support for production issues escalated above 1st and 2nd tier support.
CheckVision Cheque Imaging Systems
- Solve reliability issues with a cheque image management system that grew to have two queue managers, 2 distinct sets of image processing services,
a db2 database, bidirectional SFTP and CONNECT:Direct connections, and 2 Java based services for each of 7 different financial institutions.
- Developed software and procedures for cheque imaging servers to allow all of those services to be coherently monitored through Nagios and restarted
through a Capistrano/Webistrano web-based interface. This allowed much of the day-to-day administration of these servers to be off-loaded to QA engineers,
freeing up implementation analysts on our team.
Symcor Data Exchange
- Created file mover routes for complex data flows from financial institutions, insurance, and healthcare clients, to our work scheduler, bulk print servers, and archives.
Options supported included CONNECT:Direct with EBCDIC-to-ASCII conversion, GPG decryption, and SFTP. Infrastructure included RedHat clusters to give HA capability to our extranet
DMZ nodes, intranet DMZ nodes, internal nodes, and disaster recover nodes.
- Modified ACLs, archive scripts, logging scripts, and cleanup scripts to keep landing zone folders from overflowing and keeping response time to incoming files high. Chose between trigger file and temp folder mechanisms
to guarantee that only complete files were processed or re-transmitted.
- Supported the development and testing of a new version of our system based on Apache Servicemix and Kafka. Wrote and tested new Camel routes to support new data flows.
- Migrated build process based on ant scripts and a command-line interface to Jenkins.
- Migrated CVS repositories to SVN.
- Added automatic creation of folder trees, database tables and indexes parameterized by environment.
- Streamlined maven-based build process for Apache Servicemix modules decreasing 40 minute build to 5
minutes and 3 pages of build parameters to 5.
- Automated deployment and health checks for 10 Servicemix instances and 5 Karaf instances in production
- Built and configured a Red Hat FUSE based enterprise service bus in 2 non-production and 1 production environment.
- Debugged performance bottlenecks and created automatic self-healing configuration processes.
- Created a test infrastructure for QA test engineers using Jenkins and Robot Framework for Python.
Feb. 2011 - Dec. 2012
Canadian Pacific Railway - www.cpr.ca
Grain Car Request System (GCRS)
- The GCRS project allowed the business to ship 27,000 more cars than
the previous crop year by enabling improvements to the ordering process.
Project success was mentioned in The Globe And Mail:
- Created table maintenance system for GCRS using JPA and Hibernate in the back end and JQuery in the front end.
- Added entities and services to Hibernate/JAX-RS/JPA-based data access layer.
- Helped set up secure access to GCRS using Kerberos and SPNEGO for internal access and IBM Tivoli WebSEAL for external access.
- Configured and debugged haproxy to enable load balancing and connection multiplexing between nginx, WebSphere, and Tomcat.
- Set up three eXtreme Scale clusters of 9 servers and 48 GB of allocated memory each able to process 800 transactions per second.
- Supported and debugged 4 environments (2 development, 1 UAT, 1
production) each containing 2 Tomcat servers, 4 WebSphere servers, 9
eXtreme Scale servers, 2 haproxy servers, 2 nginx servers, 2 WebSEAL
servers, 1 Tivoli policy and authorization service server, and 1
- Improved build and deployment scripts. This removed inconsistencies
between environments and decreased deployment times from half a day to
- Edited Python scripts to support automated deployment of
applications to WebSphere, user record verification, and command-line
queries against eXtreme Scale.
- Migrated our environments from laboratory WebSEAL servers to WebSEAL
servers in DMZ. Configured certificate-based connections between
WebSphere and Tomcat servers and Tivoli Access Manager Authorization and
- Helped configure Splunk and Appdynamics monitoring on all of our servers in UAT and production environments.
- Used Puppet and RPMBuild to create rapid automated installation and configuration system for all of our servers and services.
- Administered Amazon EC2 servers running SuSE Linux Enterprise Server
11 SP1 and wrote automatic instance creation/configuration scripts.
- Administered JIRA collaboration software and Bamboo continuous integration software.
Aug. 2004 - Feb. 2011
Rogers Communications Inc. - www.rogers.com
Knowledge Management Library
- Created KiXtart scripts for installing configurations and binaries
on certain workstations based on a user's membership in certain LDAP
Centre Library application including real-time updating alerts and
hideable display components.
- Administered Google Search Appliances, created parameterized search
capability, wrote custom stylesheets for their display, stemming files,
filtering rules. My work on the GSAs decreased the time it took agents
to receive useful search results from our knowledge bases from 30
seconds to less than a second.
- Wrote two different Java apps with Struts in the front-end, and
Hibernate with Oracle in the back end to administer users simultaneously
in an application's back-end Oracle database and in LDAP. This allowed
en-masse creation of agent IDs from CSV files which replaced a process that used to take
one full-time employee 30 hours a week.
Internal Document Management
- Enabled MS Word and MS Excel document autonumbering using the
Documentum Business Objects Framework and 3rd party Java-to-OLE bridge.
- Administrated content servers on both Windows Server and Unix platforms.
- Wrote patches for Program Development Process, a
J2EE/Hibernate/Struts based app. Created maintenance procedures that reduced average incident handling time from 30 min. to 2
min. and allowed every member of the team to handle PDP incidents without specialized knowledge.
- Supported SharePoint: performed restores from databases, responded to and fixed slowdowns and outages.
- Created and updated comprehensive monitoring plan for both MS SCOM
and Tivoli Monitoring for 7 different systems composed of 31 servers
that would send pages for application timeouts, errors, system hardware
failures, and network unavailability.
Nov. 2002 - May. 2003
Toyota Canada Inc. - www.toyota.ca
Apr. 2002 - Sept. 2002
Treklogic Inc. - www.treklogic.com
- Wrote Java servlets and JSPs (Java Server Pages) for SunDOMinate, a marketing information database and opportunity mapping tool.
- Ported part of a billing system composed of 750 shell scripts in
several languages from the Compaq Tru64 Unix platform to the Solaris 2.0
as Korn Shell scripts.
- Worked as network and MS Exchange administrator for Protec Staffing
Inc., a placement agency with 15 employees, both on and off-site.
Nov. 2000 - Mar. 2001
Nuvation - www.nuvation.com
- Wrote and edited project proposals, marketing materials, white papers, and other documentation.
- Updated and maintained www.nuvation.com,
the company web site and performed a major overhaul of the HTML code.
This involved thorough testing and validation of existing and updated
HTML code under a variety of browsers and platforms.
Sept. 1999 - Sept. 2000
maranGraphics, Inc. - www.maran.com
- Wrote and performed research for instructional books on programming languages, software applications, and operating systems.
- Tested and debugged code from other technical writers, the editorial
staff, and myself. Verified correct operation under numerous
HTML: Your visual blueprint for designing effective Web sites (by Eric Kramer)
- Researched and wrote about new topics in HTML, XML and CSS as well
as verifying and updating topics covered in our previous HTML books.
Perl: Your visual blueprint for building Perl scripts (by Paul Whitehead & Eric Kramer)
- Co-researched and co-wrote text and Perl scripts for the Perl: Visual Blueprint book.
- Helped configure a Linux Web server to make Perl scripts accessible for testing by the editorial staff.
- Supported an editorial staff with no prior programming experience and taught them Perl programming.
- Graduate of University of Toronto at Scarborough, Honours Bachelor of Science Degree
- Specialist (Co-operative) Programme in Computer Science and Physics
- Recipient of University of Toronto Scholarship, 1996
- 20 years in IT while employed as a technical writer, developer, database analyst, and implementation analyst.
- Experience as a published author writing for such books as Master Windows 2000 Professional Visually, Teach Yourself Red Hat Linux 6.1, HTML 4.0: Visual Blueprint, and Perl: Visual Blueprint.
References available upon request.