Geoff Miller | Software Engineer & Architect
Geoff Miller
Blog

Projects

CareerFoundry

Writing a course on cloud computing.

Work completed as an independent consultant, September 2021–January 2022.

This popular online coding bootcamp was looking to expand its offering with a course on cloud computing focused on AWS. I wrote the entirety of the course (~80,000 words) and consulted heavily on the course's structure.

The course is written with an assumption of minimal prior knowledge, beginning with an overview of the history of cloud computing and how it developed in response to a need for more powerful and flexible server hosting. From there, it eases students into setting up their AWS account and learning about the variety of services offered by AWS. Networking concepts are introduced and tied into hands-on exercises working with VPCs and EC2 instances. More advanced exercises introduce load balancing, autoscaling, and basic Linux system administration.

The course is rounded out with introductions to S3, Lambda, IAM, and AWS SDKs. Code examples are based around the MERN stack to align with CareerFoundry's web development courses. By the end of the course, the students complete a final project that incorporates the following:

  • A custom VPC.
  • A web application run on EC2 instances in an autoscaling group behind a load balancer.
  • An S3 bucket configured as a static website hosting web frontend assets.
  • An S3 bucket storing uploaded files.
  • A Lambda function triggered when files are uploaded to the S3 bucket.

Neurotrack

Reverse engineering and reviving a legacy system.

Work completed as an independent consultant, November 2021–December 2021.

When a poorly documented legacy system's production environment went down, I was brought it to reverse engineer it, document it, and return it to production service.

I worked my way through the system, which was deployed on AWS EC2 instances behind an Application Load Balancer. I was able to determine that the system consisted of a group of Docker containers orchestrated with Docker Compose running interlocking Django projects with shared models and other underlying code, Celery workers, and integrations with serverless infrastructure (AWS Lambda and API Gateway services).

There were many challenges in restoring the system's production environment. Nearly every piece of the system was hopelessly outdated, with ancient versions of Django and Celery running on Python 2.7 and the underlying OS being a version of Ubuntu that was out of long-term support. While the level of effort to modernize the system was deemed too high to be worthwhile, restoring the system to service required some clever solutions to fill in missing/broken dependencies with versions that worked and to work around other issues causing the system to malfunction.

Ultimately, the system was restored to a fully operational state in production, and extensive documentation was written to cover the system's API, integrations with other systems, and an operational playbook for dealing with any issues that may arise in the future.

Aerospike Cloud Managed Service

Managing a distributed database in the cloud.

Work completed as an employee of Aerospike.

The Aerospike Cloud Managed Service is a service that provides Aerospike database clusters run in the cloud and managed by experts at running Aerospike in the cloud. I was the first dedicated hire to augment an existing team in building out the service.

I made many core contributions to the Infrastructure as Code tooling, including Terraform modules, Ansible roles and playbooks, and Python tools, along with defining best practices and architectural patterns for deployments. While the service initially only ran in AWS environments, I added GCP support, porting Terraform modules to manage the equivalent GCP infrastructure, extending Ansible roles and Packer templates to account for differences in base Linux images, and building additional tooling as needed.

Additionally, I provided extensive support to customers, working with them to build out complex, multi-region deployments to meet their needs.

PhoneSlate

Architecting and building a SaaS application.

Work completed as an independent consultant, April 2018–May 2020.

PhoneSlate is a SaaS application for logging and tracking phone calls that began life as a PHP/Laravel hackathon project. When it began to pick up steam, a decision was made to rebuild the system from scratch with Django and React, hosted on AWS.

I was the sole developer for the majority of the rebuild project, coming in after a troubled development cycle. I focused on the backend components (RESTful API, several background jobs run asynchronously) and the infrastructure/DevOps components (writing all of the Ansible and Terraform to manage an entire system in AWS). The frontend was React (React Native for apps), but that was handled by another developer. I also wrote an ETL process to load the legacy system data, but the legacy system had a completely different data model that required a certain amount of manual management to transition customers.

I completed my work on the project around the start of the COVID-19 pandemic due to a lack of budget. There were always budgetary concerns since it was a bootstrapped company, and the client base, largely dominated by the entertainment industry, shrank while film and television productions were suspended. The project eventually launched in 2021.

Customer Engagement

AWS cost savings and operational improvements.

Work completed as an employee of Janrain.

The Customer Engagement product was acquired by Janrain, but at the time that I took over responsibility for it, there was little in the way of documentation. All that was known about it was that it was a constant source of pain for the customers, end users, and operations team.

Beginning with a thorough analysis of a large and unwieldy codebase, I eventually landed on an approach that prioritized better management of infrastructure rather than refactoring the application code. I developed Python-based tooling to map the application's cloud infrastructure, including nearly 100 servers, each with its own unique and complex configuration.

Mapping out the infrastructure led to remediation of widespread inefficiencies, ultimately resulting in savings of $7,000 per month in AWS costs. Extensive improvements were also made to operational practices through building Terraform and Ansible tooling to automate infrastructure management and creating improved, accurate documentation.

While the final business decision was to decommission the product, it was significantly cheaper to run and caused fewer headaches for the operations team until decommissioning could take place.

Penguin Random House

Leading teams and enabling digital transformation.

Work completed as an employee of Enharmonic.

Penguin Random House was seeking digital transformation for two of its leading brands: Living Language and Fodor's Travel. As part of the team at Enharmonic, I worked on products for the web and mobile devices to bring these brands into the modern world.

Responsibilities included management of a distributed team of developers and testers, coordination between business and engineering partners, and technical project management of development. Furthermore, I contributed system design and architectural guidance including a RESTful API, ETL processes to load data from multiple editorial sources, and web-based GUI tools for data management.

More hands-on technical work included management of infrastructure and deployments, with servers hosted on Linode, Rackspace, AWS, and Penguin Random House's own internal servers. I also developed tools for internal use and functioned as a senior QA resource, debugging more difficult problems and working with developers to fix them.