Matt Crook

Lead Cloud Systems and Infrastructure Engineer | DevOps Engineer | Site Reliability Engineer


Brief Summary

Before becoming a software engineer, I had been working in the Music Business for 5+ years, being involved on the artist side playing drums professionally, later transitioning to the business and technical side doing project management and data analytics. Before that, I was an athlete and semi-pro golfer, and for a couple years a personal trainer and strength coach.

Currently, I am a DevOps Engineer and Tech Lead in Systems and Cloud Infrastructure where I utilize previous full-stack engineering and Site Reliability Engineering (SRE) experience to be able to create reliable infrastructure and pipelines in which data is shaped and protected from failure, and manage large scale, highly complex networking and infrastructure components through the DevOps set of guiding principals, standards, and workflows. I also assist our large department of stakeholders in Machine Learning by applying these principals through MLOps.

In addition to my regular responsibilities, I provide mentorship for individuals and teams, and consulting services for various projects. I am available for both, and I am enthusiastic about exploring opportunities to support however I can in traditional capacities or volunteer my expertise for relevant projects or specific needs. Please don't hesitate to reach out, as I would love to start a conversation about how I can offer assistance.

I have experience and expertise working at large enterprise scale on a wide variety of technologies, some of which include: Kubernetes, CDN, Edge and Edge Compute, Web Application Firewall (WAF) and Security, Multi-Region / Multi-Cluster Service Mesh, API-Gateways, and MLOPS alongside Kubeflow, VertexAI and AI Model Pipelines, and deployment of ML models and pipelines.

As a Lead DevOps Engineer, I have stepped into more of a leadership role, where I assume responsibility not only for myself but also my team. I believe a team is only as good as its leader, and the leader must own everything in his or her world. For me, this means enabling the team for success, by mentoring and consistently working towards building a better and more effective team, and ownership in driving projects corresponding to business objectives consistently and effectively to completion.

For a more detailed description of my journey, previous work, and current work, please see the about page.


Portfolio

Quantum Coasters

As a roller coaster enthusiast, this project exemplifies my fullstack skills as a engineer. My goal was to build a platform and one-stop shop for roller coaster fans and other enthusiasts to track their coaster credits, as well as provide many other options and services. Quantum Coasters also encompasses a thorough, usable, crowd sourced API/ Database of roller coaster information and locations, as well as being an interactive application where users can view/ record their credits, see a live leaderboard, plan their next theme park visit with the custom integrated calendar, read the latest theme park news by accessing the Quantum News, and message/ chat with other users either in a public forum, group chat, or private message.

Quantum Coasters is a miro-services architected application with a React Client, Django full-stack application, third party Authentication and Management API, and Django RESTful API. Auth0 is used for authentication and authorization, and is fully integrated across all services Quantum has to offer, allowing for a Federated user to have a SSO experience. Please see ReadMe on Github for more details as well as list of technology used. Django Rest API repo here.

Google Kubernetes Engine Infrastructure

This project encompasses many different GCP components, including provisioning a fully customized GKE cluster with Terraform, along with any other resources that might be needed, including a VPC, subnets, NAT Gateway, Firewalls, IAM roles and permissions, CloudSQL instances, as well as many other GCP resources, including Compute resources.

Along with provisioning the infrastructure with Terraform using the Terraform modules, this project also houses the Kubernetes manifests to deploy any application to the provisioned infrastructure. This can be done either using the Kubernetes manifests themselves, or with Helm.

For demo purposes, there are also various simple applications to use, to deploy to the GKE cluster. These applications include a Django app, a Flask app and API, an Express app, and a Go app and API.

To view project repository, and for project setup and instructions, please follow the link below.

AWS Elastic Kubernetes Cluster

This project provides the necessary infrastructure and resources in AWS to provision an EKS cluster with corresponding networking and IAM roles and permissions.

Along with an EKS cluster, this project also houses modules to provision other AWS resources such as RDS instances, in-memory store with Elasticache, customized networking with VPC and corresponding Public and Private Subnets, Route Tables, Internet Gateway, NAT Gateway, ElasticIP, and relevant associations, as well as cloud object storage using S3 buckets, and DynamoDB for NoSQL object storage, for example for Terraform state locking.

Along with the provisioned infrastructure, this project also houses Kubernetes manifests to deploy applications to the cluster. Examples of both the Kubernetes manifests themselves, and using Helm can be used.

This project also houses a small demo Node.js/ Express application for demo purposes. This can be used to build a Docker image and to deployed to a Kubernetes cluster.

EC2 Running Containerized Application

This project creates an EC2 instance in AWS running a basic web application in Docker using a single command from the user. Before the script is run, there is no EC2 instances running and afterward the script should output the address of your working web application. The single command from the user can (and likely will) call a longer shell script, or other configuration management code. Part of the challenge is to have restricted access, so you can not use to EKS, ECS, S3, ELB, ASG, or Route53. For a more detailed ReadMe, click the Github link below!

Kubernetes/ Istio Examples

Collection of example Kubernetes config files for various resources, services, and components. Many of which, have deployable example apps which can be viewed in the browser by following the instructions on the ReadMe.

Terraform - Examples and Projects

This repository consists of a collection of Terraform examples and projects provisioning different types and resources of infrastructure. The projects utilize both GCP, and AWS as cloud providers, and consist of both unique projects and examples, as well as the same projects, but transposed between the two different providers.

Finding Given IP Address in Subnetwork

For a description of CIDR notation, and how to find the upper and lower IP range from a given CIDR, see Subnetting in CIDR Notation. This script can be run as a Command Line program, in which the program can find the subnet mask of a given IP address that is entered to the command line prompt. Or, can also be used the inverse, of having a subnet mask (CIDR) and returning the range of IP addresses available to that CIDR. However, it's main goal is to return True or False if the given IP that is input is within the range of a given subnetwork, retrieved from a list of official subnetworks. Then, if desired, return the upper and lower ends of the range (Network ID and Broadcast ID).

For more in depth description of the functions used in the logic, and the functionality behind them, see here.

Python Sockets and Multi Threading

This is a personal project and fun experiment that was inspired by a YouTube video I watched on multi-threading in Python. I decided to take the idea and run with it, creating this small command line project. This program will allow anyone running it to chat with other users on the same local IP address, also running the program on the command line. It will also show how many connections (i.e other people using the program) there are.

Encryption and Decryption

Repository includes examples of CLI programs implementing encryption-decryption procedures of messages using a client-server architecture.

The CLI programs can be run in the terminal, and demonstrates encrypted messages being sent between a client and a server, and vice versa. This can also be run on different hosts on the same LAN (Local Area Network), simulating sending encrypted instant messages.

The algorithms used are:
  • DES (Data Encryption Standard): It is a symmetric key algorithm which one can crack with brute force in 2^56 iterations.
  • Diffie-Hellman Key Exchange: The key exchange algorithm in order for the interacting systems to derive to the same shared key that will be used by DES for the encryption-decryption purposes.

Quantum Management

Quantum Management is a theme park management and business analysis management application built with Python/ Django. The purpose of this application is to track employees at the park, where they work, allow for addition, removal, or transition to a different role. It Only allows an admin (HR, Management, etc...) user to log in and have an account, and edit the employees resource to which they entered.

In addition, Quantum Management provides a dashboard of analytical business intelligence information for educated business decisions, reporting, and forecasting. The information displayed is business operations and intelligence statistics like number of visitors in the park, most popular time of year, most popular rides, ride wait times, and much more customizable queries to derive financial and income tracking data. All of which are displayed using data visualization tools for easy readability and analysis.

Calendar in JavaScript

Fully functional calendar written in JavaScript.

Features include:
  • Render the months onto a dropdown.
  • Render the years onto a dropdown.
  • Render the days for the currently selected month/year combination.
  • Redraw the calendar when the months/years are changed.
  • Changing the months and/or year will redraw the calendar to match the correct days per month and the correct offset in the week.

Algorithms

Collection of common programming algorithms written in Python and Javascript.

Algorithms featured include:
  • Fibanacci Sequence
  • Different solutions to FizzBuzz
  • Tower of Hanoi
  • Simple Searches
  • Sorting
  • Linked List
  • Binary Search
  • Many more...

From project manager, to data analytics manager, to developer.

Before becoming a software engineer, I had worked in the music industry as an Income Tracking Services Manager and Data Analyst at Bertelsmann Music Group, I gained experience working in a rapidly changing and demanding environment, where my role touched nearly every other department in the company. My responsibilities in redirection, live performance tracking, mechanical tracking, radio tracking, pipeline analysis and forecasting would contribute to over $5 million dollars recovered annually. In addition, I worked regularly with large data in Hadoop, later in GCP, utilized the underlying platform services and infrastructure, wrote scripts to fetch data using various API's, developed extensive professional experience in data visualizations using python and Tableau, used of SQL for queries using various drivers and Power BI, and worked directly with our developers to build tools, apps, and automate processes.

My deepening curiosity, ambition towards goals, and drive for to always have something new to work towards lead me to attending Nashville Software School. That curiosity and drive did not stop through school, and shorty after graduating from NSS, I accepted a role as a full-stack software engineer at RootNote where I had the opportunity to help build many of analytical and data visualization software I once used.

Continuing to learn and with the drive to grow my skills and craft, coupled with the passion and deep curiosity towards infrastructure, I continued my journey to next become a SRE at Built Technologies.

Growing my skillset in both application development and infrastructure, and gaining experience working with large distributed systems, I then moved on to my current role, which is DevOps Engineer on the systems and cloud infrastructure team at Shipt/ Target, where I have the opportunity to work with a wide array of technologies, including Kubernetes, Istio Service Mesh, CDNs and Edge Compute, MLOps, and much more.

To learn more, and for a more detailed description of my previous experience, see my LinkedIn profile.


Technology

DevOps Tooling

  • Kubernetes
  • Terraform
  • Helm
  • Istio Service Mesh
  • Gloo API Gateway
  • Gloo Mesh
  • Ambient Mesh
  • PKI Infrastructure
  • Fastly
  • Cloudlfare
  • Networking
  • Envoy
  • Docker
  • docker-compose
  • Git
  • Bash
  • Vault
  • Prometheus
  • Grafana
  • Teleport
  • Alert Manager
  • OpsGenie

Cloud Platforms

  • Google Cloud Platform (GCP)
  • Amazon Web Services (AWS)

Application Development

  • JavaScript
  • Typescript
  • React
  • Python
  • Django
  • Flask
  • Node.js
  • Golang
  • PHP

Databases

  • PostgreSQL
  • MySQL
  • Neo4j
  • MongoDB
  • Cassandra

Tools

List of developer and devops tools and applications I have used in the past and currently use in the present. List is not exhaustive, nor does it mean I am an "expert" in any relative tool - just that I have had experience and am familiar with each one of the below items.
  • Sealed Secrets
  • Gtoken
  • Ngnix
  • Contour (Ingress Controller)
  • PacketFabric
  • Kafka
  • Terraform Cloud
  • Cert-Manager
  • LetsEncrypt
  • Concourse
  • Harbor
  • Drone
  • Dockerhub
  • HAProxy
  • Airflow
  • Kubeflow
  • Jenkins
  • More Tooling/ Applications (Honorable Mentions):
  • JIRA
  • Scalyr
  • Rollbar
  • Dynatrace
  • GoCD
  • Styra (Open Policy Agent)
  • New Relic
  • Snyk
  • Codefresh.io
  • Sentry
  • Rundeck
  • Coveralls
  • SauceLabs
  • Confluence
  • Postman
  • Apache Hive and Impala
  • Hadoop
  • Tableau
  • Power BI