DevOps Engineer Contractor
2018 - PRESENTToptal Clients- Migrated kops-based Kubernetes clusters to EKS for a US digital media firm.
- Automated provisioning of kops-based Kubernetes clusters in AWS using Terraform, Python, and Docker. Managed complicated kops upgrades.
- Designed and implemented continuous delivery pipelines in Spinnaker, making advanced usage of its pipeline re-use mechanisms.
- Developed a containerized CLI for automation of infrastructure, deployments, and deliveries, to be used by developers, the delivery team, operations team, and CI/CD (in true DevOps fashion!).
- Drastically improved configuration management and maintainability of a large Jenkins installation by developing a Groovy shared library and establishing coding standards.
- Debugged an Arduino device (circuit and wrote C++ code) for remote temperature measurement and engineered proper C++ code to integrate with AWS DynamoDB via IoT/MQTT.
Technologies: Amazon Web Services (AWS), Python, Command-line Interface (CLI), Amazon Virtual Private Cloud (VPC), AWS IAM, Amazon S3 (AWS S3), Openfire, Nexus, REST APIs, Containerization, Visual Studio Code, PyCharm, Bash, C++, Arduino, MQTT, AWS IoT Core, Docker, Jira, Git, Bitbucket, CI/CD Pipelines, Kubernetes Operations (Kops), Helm, Spinnaker, Jenkins, Terraform, Amazon EKS, KubernetesPrincipal Contractor
2017 - PRESENTSelf-employed (Sentian Cloud Computing, Inc.)- Automated AWS infrastructure provisioning for an Ottawa-based startup. Designed a certification management system based on Let's Encrypt/ACME. Imported existing infrastructure into Terraform via Terraformer.
- Migrated microservices from Docker Compose and EC2 to Kubernetes in EKS for an Ottawa business.
- Provided technical and classroom support for 3-day Python courses given to financial analysts at CitiBank in NYC.
- Featured in the recent book publication, Python Interviews: Discussions with Python Experts, Packt 2018 by Mike Driscoll, based on my open source work on PyPubSub.
- Migrated a legacy web application written in Node.js, Express.js, JavaScript, and SQLite to GKE. Automated deployment so as to minimize downtime and deploy only if tests pass.
- Enabled replication of the complete stack (including AWS resources external to EKS and needed for each stack) by developing CLI used by developers, delivery, and CI/CD (in true DevOps fashion for troubleshooting, staging, and more.).
- Coached a team of developers a few hours weekly for nine months at the Government of Canada on migrating a legacy .NET Core application to Azure Kubernetes Service (AKS). Analyzed their application, planned progression, provided hands-on every week.
- Refactored AWS CloudFormation templates to automate the replication of infrastructure at Ottawa business.
Technologies: Amazon Web Services (AWS), Python, Machine Learning, Google Kubernetes Engine (GKE), Minikube, Bash, Docker Compose, Docker, MySQL, AWS CloudFormation, Pandas, Jupyter, CI/CD Pipelines, Bitbucket, Git, Google Cloud Platform (GCP), Azure Kubernetes Service (AKS), Terraform, KubernetesSimulation Software Engineering Consultant
2005 - 2017CAE, Inc.- Engineered an infrastructure-as-code system for distributed simulation applications. This was "micro-Kubernetes": I designed configuration files based on XML and used an RPyC agent running on each system to remotely startup and shutdown processes.
- Integrated the system with Java, Tomcat, and MySQL to provide a web interface for a GUI based creation of infrastructure code.
- Developed a desktop GUI application for agent-based simulation using Python, PyQt, and pytest. Used multi-core Python (communicating processes) for large scale computing.
- Led a team, wrote core components and infrastructure, set up and managed virtual machines and Jenkins.
- Used virtual machines to provision software development environments for team members. Used vSphere and virtual machines to enable a class-based virtual training environment for military personnel learning avionics maintenance.
Technologies: VMware vSphere, VMware ESXi, VirtualBox, Jenkins, Wireshark, TCP/IP, Visual Studio, Simulations, Linux, Windows, Virtual Reality (VR), Lua, Java, Python, C++Simulation Software Engineer
1998 - 2005National Research Council of Canada- Led an engineering team of six on an immersive crane simulator. Coordinated work, code reviews, and integration of team components.
- Architected event-driven message-based multi-machine architecture.
- Developed the event and inter-process messaging system in C++ and a powerful XML based configuration system.
Technologies: Virtual Reality (VR), Event-driven Architecture, Distributed Computing, Simulations, Windows, TCP/IP, UML, Object-oriented Design (OOD), Java, Bash, Linux, Python, C++