Oliver Schoenborn, Developer in Ottawa, ON, Canada
Oliver is available for hire
Hire Oliver

Oliver Schoenborn

Verified Expert  in Engineering

Bio

After years of developing distributed simulation systems for VR, Oliver's focused on DevOps engineering, particularly automation since 2017: (1) combining Terraform, Python, and Docker to automate the provisioning of Kubernetes clusters and cloud resources used by microservices deployed into those clusters; (2) engineering CI/CD pipelines; and (3) managing k8s clusters and helping developers integrate their work into it, standardizing in-house helm charts, and containerizing legacy applications.

Portfolio

Toptal Clients
Amazon Web Services (AWS), Python, Command-line Interface (CLI)...
Self-employed (Sentian Cloud Computing, Inc.)
Amazon Web Services (AWS), Python, Google Kubernetes Engine (GKE), Minikube...
CAE, Inc.
VirtualBox, Jenkins, Wireshark, TCP/IP, Simulations, Linux, Windows...

Experience

  • Object-oriented Programming (OOP) - 17 years
  • Python - 15 years
  • Linux - 15 years
  • Docker - 3 years
  • Kubernetes - 3 years
  • REST - 3 years
  • Terraform - 2 years

Availability

Part-time

Preferred Environment

Amazon Web Services (AWS), Helm, Terraform, Kubernetes, Python 3, Bash, Visual Studio Code (VS Code), PyCharm, Linux

The most amazing...

...automation I've built is a containerized CLI for developers, operations, DevOps, and CI/CD's to use, ensuring consistent automation logic and dependencies.

Work Experience

DevOps Engineer Contractor

2018 - PRESENT
Toptal 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), Amazon S3 (AWS S3), Nexus, REST APIs, Containerization, Bash, C++, Arduino, MQTT, Docker, Jira, Git, CI/CD Pipelines, Kubernetes Operations (kOps), Helm, Spinnaker, Jenkins, Terraform, Amazon EKS, Kubernetes, Amazon RDS

Principal Contractor

2017 - PRESENT
Self-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, Google Kubernetes Engine (GKE), Minikube, Bash, Docker Compose, Docker, MySQL, AWS CloudFormation, Pandas, Jupyter, CI/CD Pipelines, Git, Google Cloud Platform (GCP), Azure Kubernetes Service (AKS), Terraform, Kubernetes, Amazon EC2, AWS IAM, Amazon CloudWatch, Amazon RDS, Amazon S3 (AWS S3), AWS Lambda

Simulation Software Engineering Consultant

2005 - 2017
CAE, 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: VirtualBox, Jenkins, Wireshark, TCP/IP, Simulations, Linux, Windows, Virtual Reality (VR), Lua, Java, Python, C++

Simulation Software Engineer

1998 - 2005
National 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++

DevOps Automation

Designed and implemented delivery pipelines using Spinnaker, Python, and Docker. Automated provisioning of a Kubernetes cluster in AWS EC2 using kops and Python and Docker maintenance and QA of Helm charts.

Avionics Maintenance Trainer – Distributed Computing

Integrated C# .NET 4 (managed code on Windows) with Visual C++ 2005 (unmanaged) and Lua 5.1 to provide a 2+1D virtual environment where student could learn to troubleshoot modern integrated avionics.

The C# layer provided the GUI and UX, including imagery, guidance, navigation in the 2D environment, use of diagnostics tools by trainee, and realistic "live" cockpit instruments. The unmanaged C++ layer provided the business logic, from configuration, startup, and navigation in 2D environment to simulation of avionics including databus, progression tracking, and instrument failures. The Lua layer provided the scriptability of the application, including definition of instrument pages used interface with health-monitoring system (HMS), configuration of scenario components and capabilities, and configuration of goals/progression.

The application was multi-threaded, with the C++ layer acting as a service available to the GUI, and scripting allowing for extension and scenario definition without recompilation. Very powerful and very stable.

Crane Operation Simulator – Distributed Computing

Led the development of a fully immersive crane simulator. I was in charge of requirements management, system architecture, core components such as scenario definition, multi-computer multi-process data exchange C++ infrastructure, and hardware emulation using Java. As lead engineer, I was in charge of interface design and integration of components developed by other team members such as sound generation, crane physics, crane hardware, and immersive projection system with motion tracking and active 3D glasses. The system consisted of multiple computers exchanging data over TCP/IP, UDP, and shared memory, and an XML-based configuration system. The system was featured on the Discovery channel.

PubSub

https://github.com/schollii/pypubsub
PubSub is a Python publish-subscribe engine for applications that are event-based. Originally developed as part of wxPython, I took over this project in 2003 based on some significant improvements and extensive automated unit testing that I created for it.

Lua-icxx

http://sourceforge.net/p/lua-icxx/code/HEAD/tree/trunk/src/
Lua-icxx is a helper library to facilitate embedding Lua in a C++ application via an OO API so that the Lua stack can be completely invisible. It integrates with SWIG to make SWIG-based Lua wrappers available to C++ applications; without this, a developer is forced to use Lua's very low-level C API.

Nose2pytest

https://github.com/pytest-dev/nose2pytest
In this one project, I decided to upgrade the test harness from Python nose to PyTest due to some significant gains in test robustness that could be achieved with the latter. Since there were thousands of tests, this could not be done manually. I wrote a converter based on Python's bulit-in pattern matcher for its abstract syntax tree, and added it to GitHub and submitted it to the PyTest project, to which it was accepted.

IOF

http://sourceforge.net/p/iof/code/HEAD/tree/trunk/ioflib/include/iof/
IOF is a formatted input/output library to provide printf/scanf-like format-string-based I/O with C++ streams. Similar to Boost's format module, but compact (esp. compared to Boost), without any external dependencies. Also, it does not require any build (it is purely C++ templates).

Integration of C#, C++, and Lua

Integrated managed C# 2010, unmanaged C++ 2005, and Lua into one application. It may be difficult to appreciate the challenge until you try. Part of the challenge may have originated in the C++ layer which was a third-party library. Additionally, the C++ portion was in a separate thread, and had to be accessible from the Lua portion. I finally managed to make everything work into a robust and high-performance system.

Multi-process GUI Development Using Python and PyQt

Developed a sophisticated GUI supporting an extensive set of user actions managed via a state machine to limit actions available at any given time to a very small subset of all available actions. Developed a fully automated testing system for memory leaks, performance, and behavior of this application, based on PyUnit, Jenkins, and mocks. Designed the installation system, the documentation, and the multi-core engine enabling the simultaneous execution of business logic on a large number of cores to increase performance 1000-fold.

Integration of Python Debugger into a GUI Application

This project consisted of a Python GUI written using PyQt, and allowed the user to define Python scripts to be executed by the application. Add debugging capabilities to set and hit breakpoints in the scripts, stepping through script code, getting local variable values, etc. The documentation was poor and, eventually, I figured out how to make this work without blocking the GUI!

Business Process Modeling and Simulation Environment

Using DOORS, Python, PyQt (Python wrapper for the Qt library) and SQLite, I designed and developed a GUI and a console application that supports defining a business process and executing it to do what-if analysis using parallel Monte Carlo simulations of 10,000 replications distributed over as many cores as are available on the computer (48, 128, etc.). I automated the testing of the application using PyTest, Jenkins, and mocks.
1991 - 1998

Ph.D. and Master’s Degree in Physics (Pattern Formation)

University of Toronto - Toronto

JANUARY 2021 - JANUARY 2024

CKAD

Linux Foundation

Libraries/APIs

REST APIs, Pandas

Tools

Terraform, Helm, Docker Compose, Pytest, Jira, VMware, Git, Subversion (SVN), Jenkins, VirtualBox, AWS CloudFormation, AWS IAM, Amazon CloudWatch, OpenSceneGraph, Amazon EKS, MQTT, Azure Kubernetes Service (AKS), Jupyter, Amazon Virtual Private Cloud (VPC), Google Kubernetes Engine (GKE), Wireshark

Languages

Python, C++, Lua, YAML, Bash, XML, RELAX NG, Python 3, UML, JavaScript, Java, Fortran

Paradigms

Object-oriented Programming (OOP), Generic Programming, Object-oriented Design (OOD), DevOps, Event-driven Programming, Distributed Computing, Test Automation, Template Metaprogramming, Rapid Prototyping, Agile Software Development, Event-driven Architecture, Microservices, REST, Concurrent Programming

Platforms

Kubernetes, Docker, Amazon Web Services (AWS), AWS Lambda, Windows, Linux, Spinnaker, Amazon EC2, Unix, Arduino, Nexus, Google Cloud Platform (GCP), AWS IoT, Azure

Storage

JSON, SQLite, Amazon S3 (AWS S3), PostgreSQL, Amazon DynamoDB, MySQL

Other

CI/CD Pipelines, Containers, Regular Expressions, TCP/IP, System Architecture, Virtual Reality (VR), Amazon RDS, Pub/Sub, Networking, Amazon API Gateway, Message Queues, Kubernetes Operations (kOps), Containerization, Minikube, Command-line Interface (CLI), Numerical Programming, Simulations, Serverless, Internet of Things (IoT), 3D Modeling, Process Simulation, Physics Simulations, 3D Animation, Ajax

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring