I spent my youth interested in video games, computers, and 3d graphics. I thought I wanted to be a professional animator, but quickly realized I didn't have the patience in my youth to hone my artistic skills.
1980 - 1998Virginia Tech
At Virginia Tech I studied for a degree in Computer Science. In southwest Virginia I learned solid computing fundamentals, including data structures, operating systems, and Big O Notation.
09/1998 - 05/2000University of Colorado at Boulder
I continued my education as a Buffalo. I studied systems designs, advanced languages, and quantum computing.
I especially enjoyed the courses in 3D rendering, the graduate level Windows MFC32 course, and linux administration.
09/2000 - 05/2003Nolan Business Solutions
(then Nolan Computers)At Nolan Business Solutions my role was to provide support for our US customers and liason with our developers in the UK to get customer issues resolved.
I travelled to customer sites and worked directly with Subject Matter Experts to implement their requirements using our software. I built strong relationships with our customers and eased concerns when their accounting and sales systems ran into problems.
While I wasn't developing directly, our solutions did have scripting in .NET and re-energized my love for development.
05/2003 - 06/2007Statêra
At Statêra I had my first opportunity to do full-stack development as a consultant. My first couple of projects involved integration tasks, as those were my strong skill at the time.
My third project was for Ball Corporation. I was one of four developers that built a Sharepoint-based application. I learned proper development techniques like source control, TDD, and CICD. It was during this project I received my first promotion to Senior Developer, having only been developing professionally for a few months.
I was then placed at Springbok Services as a Microsoft CRM integration specialist. When I wasn't fulfilling that primary role I was assisting with architecture design and implementation. I was then offered a full-time position with the company.
02/2007 - 12/2008Springbok Services
At Springbok Services I continued in an architecture role for their custom order fulfilment system being written in ASP.NET and C#. I was then moved into managing the team that maintained and supported their legacy VB.Net application.
Here I was introduced to a true SCRUM process of software development and had the opportunity to lead my first team of developers. I also learned the value of a robust CICD process.
12/2008 - 09/2009Ball Corporation
I then came back to Ball as a full-time employee and maintained the Sharepoint-based application I had originally developed there a few years earlier.
My responsibilities included the development of any custom solution for the enterprise as a whole, typically small scale utility applications. This included services, web application, and standalone applications.
One such application was used by plants when any central ERP downtime occurred. It cached important business data and re-sent it to the central system when systems were back online. My favorite part: I didn't have to write a single line of synchronization code. I was able to leverage good infrastructure design to accomplish this, making it far more reliable.
09/2009 - 12/2012Prolink Solutions
I was brought into Prolink Solutions to finish the development of their cloud-based workspace solution, Procorem (https://app.procorem.com).
I lead a team of 3 (max) people to get the application deployed and maintained. Shortly after the first version was released we began work on a total re-write using ASP.NET MVC and a service bus to manage backend worker processes. We leveraged KnockoutJS to handle much of the browser-side logic, and C# and NHibernate over SQL Server to handle the backend.
01/2013 - 04/2014ShowPitch
ShowPitch is a platform for upcoming music and movie stars to get discovered. As a senior software engineer I was responsible for most of the backend implementation of the site. We leveraged ASP.NET WebApi and C# over MongoDB as well as a service bus for handling backend worker processes.
04/2014 - 12/2016Starz
At Starz I was responsible for a number of internal-facing utility applications. Most were built on a MEAN stack and were deployed via Docker containers to AWS. The projects usually involved just me and sometimes one UX designer. I was responsible for gathering requirements, designing, and implementing the systems along with documenting and handing off to SysOps for deployment.
One of the main projects I lead was the Media Room. This was a gated site for reviewers and bloggers of Starz' original content like American Gods and Outlander. The site allowed authorized users to watch content before the air date, allowing those users to write reviews and complete the editorial process for their publications by the time the episode aired to maximize buzz around new episodes. I redesigned the old transcoding process and reduced turn-around time from the episode production team to deployment on the site from days to hours, automating almost all steps of the process to reduce bugs.
I also worked with the starz.com team in a focused effort to bring increased performance and quality to the online video player. I worked directly with the third-part vendor and existing team to meet the performance goals management required.
12/2016 - 04/2017Rackspace
The first project I worked on at Rackspace was an internal onboarding application for new customers. It was originally built by a few Solution Architects on their spare time and I, along with 2 others, were brought in to finalize the application and make it ready for a production environment. It was built with AWS Serverless as the primary platform, utilizing Lambdas, DynamoDB, SNS/SQS, and both Elasticache and ElasticSearch.
Shortly after it was deployed we discovered it could not be easily modified to support a wider range of users, so we began a re-write of the application. I lead the architecture and design efforts. We moved to using a Node-based API deployed via Docker containers to AWS ECS via a CICD process using CodeBuild and CodePipeline (detailed here). We shifted to using Postgres on Aurora. We continued to use SNS/SQS and Lambdas for a service bus. The other big change was shifting to an Event Sourced data model, which greatly eased our ability to meet requirements.
In the last few months I transitioned to more of a DevOps role. I was building Terraform modules as 'quickstarts' to assist our Build Engineers get new customer environments rolling, reducing weeks of effort into just a few hours. This included a little work to create a custom Terraform provider for performing common data manipulation tasks within those modules.
04/2017 - 02/2019Volkswagen Group of America, Inc.
(as an independent contactor)I began working on a major release of the manufacturer's IoT platform. My job was to manage the CICD pipeline to deploy the application into the various environments, including dev, qa, and production. The system was largely already in place and being used but needed significant re-work to ensure its long-term viability. This included reworking jobs to adhere to good design principles and reduce code clutter.
The application was deployed in AWS and required a considerable amount of infrastructure. This was managed through CloudFormation templates and a Jenkins job to apply changesets from code changes. Most of these templates were managed by hand but I began re-writing the more complex templates using the AWS Cloud Development Kit (CDK). I also introduced methods to control template application based on environment so that any aspect of the application could be scaled down (for dev) or up (for prod) according to the needs of that particular environment, for which there was 7.
Finally, I was able to get my hands on a complex Kubernetes deployment, involving 2 separate application teams and over 150 individual microservices. I helped guide the application teams on how best to define their deployments to work in the EKS system we had created. This included aspects like Pod Disruption Budgets, Secrets Management, and debugging runtime issues.
04/2019 - 02/2020Defiance Ventures/Defiance Digital
Chief Cloud ArchitectOne of my first tasks was helping Tavve get set up to work from home, as the pandemic was hitting and lockdowns had started. Up until that point, all of their servers and development machines were in house and they couldn't take these machines with them as they went home. We set up Docker images for local development, CICD pipelines for building the application, and VPNs to allow secure access. Previously it would take a senior-level engineer almost 2 weeks to get a laptop set up for development and with the new process it was less than 4 hours to go from 0 to first commit.
I've led a team of DevOps engineers in implementing architecture, automation tasks, and security concerns for our clients. We focus on IaC (the AWS CDK) and repeatable processes and automation to ensure that our clients get a reliable system.
04/2020 - Current