- Position: DevOps Engineer
- Dates: May 2020 - Current
- Technologies: Ansible Tower, Ansible, Jenkins, RedHat Enterprise Linux, Windows Server 2012R2, Windows Server 2019, Terraform, Docker, Powershell, Bash, Python, C#, Java, Groovy
- Enhanced code deployment process by building Canary-style deployments into the shared Jenkins pipeline library and Ansible deployment playbooks with automated integration tests and rollbacks
- Deployed Hashicorp Vault Enterprise in a highly available configuration across multiple environments and collaborated with both Java and .NET development teams to integrate their applications
- Improved monitoring of Production environments by writing scheduled environment validation Ansible playbooks that create ServiceNow incidents upon validation failure with incident handling instructions
- Authored and consolidated new On-Call documentation across multiple Confluence spaces that reduced On-Call training time and improved accessibility to existing documentation
- Position: DevOps Engineer
- Dates: Aug 2019 - Apr 2020
- Technologies: Terraform, Ansible, Docker, Kubernetes, Packer, AWS, Bash, Python, Ruby, Jenkins, Groovy
- Transformed a microservice based web application running on AWS into a standalone appliance using Helm, Packer, and K3s (a lightweight Kubernetes distribution), so that clients can perform an on-premise installation
- Enhanced Jenkins Pipeline Library by adding a feature to pause automated code deployments to production environments on specific dates
- Updated private Amazon Machine Images (AMIs) using Packer and Ansible so that they were built using the latest ECS-optimized AMIs based on Amazon Linux 2 and Ubuntu server 18.04
- Improved the manageability of Terraform plans by upgrading from using Terraform 0.11 to Terraform 0.12, standardizing the authentication methodology, and updating the READMEs
- Reason for Leaving: COVID-19 Layoffs
- Position: Senior DevOps QA Engineer
- Dates: Aug 2017 - Jul 2019
- Technologies: C#, Jenkins, Powershell, Windows Server 2008, 2012, Microsoft SQL Server 2016, Ansible, Chef
- Coordinated with both Operations and Development teams to build a new deployment pipeline for SQL CLRs to SQL Server 2017
- Addressed Java security vulnerabilities by writing test plans and verifying the automated upgrade of Java via Chef across Jenkins servers and ColdFusion servers
- Designed training materials and on-boarding procedures for all new DevOps teammates that inspired all other engineering on-boarding documentation
- Improved maintenance of Jenkins instances by adding a cleanup command to an in-house C# Jenkins job generation command line tool to remove deprecated or test-only jobs
- Wrote an Ansible playbook for the automated configuration of a Jenkins 2 master node to be used for automated testing and deployment of in-house PowerShell modules
- Reason for Leaving: Relocation
- Position: Lymphedema Researcher Team Member
- Dates: Jan 2016 - May 2017
- Technologies: MATLAB, Microsoft Kinect
- Developed an image processing application, with a five-person team, for early detection of lymphedema
- Designed, wrote, and tested algorithms to process point cloud data from a Microsoft Kinect using MATLAB
- Reason for Leaving: Graduation
I’ve worked with a variety of languages in my career. I’ve sorted them in order of familiarity (with 1 being most familiar) with some descriptions of how I’ve used them.
- Intermediate scripting and debugging of Python applications
- Completed 2 Pluralsight Python courses: Core Python: Getting Started and Python - Beyond the Basics
- Managed and maintained an internal Jenkins Pipeline Library at Surescripts and Automated Insights
- Added features to an internal C# console application used to automatically upload Jenkins jobs
- Write Selenium tests for a web application
- (College Only) Used for research projects, numerical analysis, and algorithm development
- Basic scripting and debugging of an Ruby application built using the Ruby on Rails framework
- (College Only) Used in an Introduction to Object-Oriented Programming course
- (College Only) Used in conjunction with OpenMPI for parallel algorithms and high performance computing (HPC) courses
I’ve primarily worked with SQL databases at this point in my career. The two primary ones being:
- Microsoft SQL Server
I have done the usual of running queries, constructing queries, basic scripting, and some basic setup. I’ve also done some basic management and configuring of an Postgres instance running in AWS RDS.
At Surescripts, I also worked briefly with Redis. I worked on automation to configure and setup a Redis cluster with Sentinel.
I am newer to the container space, having started working with containers in August 2019. However, in that time I’ve worked to update internal base images to mitigate security vulnerabilities from older software packages. I’ve also converted an application that was running in AWS ECS to run in Kubernetes. This was all part of an effort to convert the primary Software-as-a-Service (SaaS) platform from Automated Insights into an On-Premise offering.
I’ve only used Packer for Virtual Machine image management and building. While at Automated Insights, I used Packer to update the Amazon Machine Images (AMIs) we used for our Jenkins agents and AWS Elastic Container Service (ECS) Instances. I also used it to create the virtual machine appliance for the On-Premise version of Automated Insight’s SaaS platform.
I have used both Ansible and Chef for machine configuration management. I am most familiar with Ansible, as I used it extensively to build automation at Surescripts. I wrote Ansible roles to integrate with ServiceNow and Hashicorp Vault.
While at Applied Predictive Technologies (APT), I worked with fellow DevOps engineers to test and rollout a Java update to our Jenkins machines using Chef. I have also made minor modifications to the Chef cookbooks for our Jenkins instances to add plugins and modify the configuration.
While at Automated Insights, I used Ansible with Packer to configure and update the AMIs we used for our ECS instances and our on-demand Elastic Compute Cloud (EC2) Jenkins agents.
Georgia Institute of Technology, Atlanta, GA
- Dates Attended: Aug 2013 - May 2017
- Degree: B.S. Biomedical Engineering
- Minor: Scientific and Engineering Computing
- GPA: 4.0
- Awards/Honors: Faculty Honors Cooperative Plan
I originally decided to major in Biomedical Engineering in order to pursue a career in medicine. However, I quickly realized that I greatly enjoyed the engineering part of my degree. I added a Minor in Computer Science because I always had an interest in computing. I used to tinker with my old home PC and figured college would be a good time to learn in a formal setting. Doing my CS homework never felt like a chore as did some of my other coursework. This confirmed my interest in computing and led me to seek out jobs that could blend my skills in the biomedical and software industry.