Oliver Schoenborn, AWS Developer in Ottawa, ON, Canada
Oliver Schoenborn

AWS Developer in Ottawa, ON, Canada

Member since April 27, 2014
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.
Oliver is now available for hire

Portfolio

Experience

Location

Ottawa, ON, Canada

Availability

Part-time

Preferred Environment

Amazon Web Services (AWS), Helm, Terraform, AWS, Kubernetes, Python 3, Bash, Visual Studio 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.

Employment

  • 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, CLI Development, Amazon Virtual Private Cloud (VPC), Terraformer, AWS IAM, AWS S3, Openfire, Nexus, REST APIs, Containerization, Visual Studio Code, PyCharm, Bash, C++, Arduino, AWS, MQTT, AWS IoT Core, Docker, Jira, Git, Bitbucket, CI/CD Pipelines, Kubernetes Operations (Kops), Helm, Spinnaker, Jenkins, Terraform, Amazon EKS, Kubernetes
  • 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, 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), AWS, Terraform, Kubernetes
  • 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: 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 - 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++

Experience

  • 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.

  • Toptal Mentor
    Oliver is a mentor in the Toptal Global Mentor’s Program. This program is a partnership between Toptal and General Assembly to provide high quality mentorship for students from minority and low income backgrounds who are looking to begin their careers as professional software engineers. Oliver shows commitment to diversity in tech by mentoring a General Assembly student every week for a year, covering everything from coding tips and tricks to advice on making it in the industry.

Skills

  • 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), Windows, Linux, Spinnaker, Unix, Arduino, Nexus, AWS Lambda, Google Cloud Platform (GCP), AWS IoT, Azure
  • Storage

    JSON, SQLite, PostgreSQL, AWS DynamoDB, MySQL, AWS S3
  • Tools

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

    CI/CD Pipelines, Terraformer, Containers, Regular Expressions, TCP/IP, System Architecture, Virtual Reality (VR), AWS, Pub/Sub, Networking, Amazon API Gateway, Message Queues, Kubernetes Operations (Kops), Containerization, Minikube, CLI Development, Numerical Programming, Simulations, Serverless, Internet of Things (IoT), AWS API Gateway, 3D Modeling, Process Simulation, Physics Simulations, 3D Animation, Ajax
  • Libraries/APIs

    REST APIs, Pandas

Education

  • Ph.D. and Master’s Degree in Physics (Pattern Formation)
    1991 - 1998
    University of Toronto - Toronto

Certifications

  • CKAD
    JANUARY 2021 - JANUARY 2024
    Linux Foundation

To view more profiles

Join Toptal
Share it with others