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.
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.
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.
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.
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.
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.
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 occured. 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 syncronization code. I was able to leverage good infrastructure design to accomplish this, making it far more reliable.
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.
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.
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.
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.
I founded a non-profit organization called the Open Construct Foundation. The goal of the organization is to serve the AWS Cloud Development Kit community by surfacing community driven content through websites and other initiatives.