Matt Crook

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


Brief Summary

Currently, I am a Staff DevOps Engineer and Tech Lead in Systems, Networking, and Cloud Infrastructure; where I influence many teams and technical road maps with deep technical expertise and leadership skills. In this role, I also design and architect systems with best practices, scalability, and reliability in mind.

In addition, I my utilize previous Full-Stack Engineering and Site Reliability Engineering (SRE) experience to create infrastructure and pipelines in which data is shaped and protected from failure, and manage large scale, highly complex networking 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.

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, as well as MLOPs alongside Kubeflow, VertexAI and deployment of ML models via AI Model Pipelines.

Leadership
Stepping into more of a leadership role as Lead and Staff Engineer, 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.

Brief Historical 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. For a more detailed description of my history and how I made the transition from the Music Business to Software Engineering, please see about.

Personality
Personality wise, I am a lifelong learner and will always consider myself "junior" as there is always something new to learn, something to improve, and goals to be met.

Mentoring and Contracting
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.

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


Portfolio

Below is a collection of personal projects I have worked on and contributed to over my time as a Software Engineer. These showcased projects range from Full-Stack applications, coding exercises and algorithms, and arbitrary coding projects I thought were fun to create, or created as I was learning a particular subject. This list is not exhaustive, as much of the most recent things I have built are proprietary. If you wish to see more, please see my GitHub profile.

Algorithms

Collection of common programming algorithms written in Python and Javascript.

Algorithms featured include:
  • Graph Traversal Algorithms
  • Two Sum and Three Sum
  • Simple Searches
  • Circular Buffer
  • Binary Search
  • Linked Lists
  • Sorting
  • Max Depth Binary Search Tree
  • Longest Common Prefix
  • Matrix Diagonal Sum
  • Reversing Bits
  • Merging Sorted Array/ List
  • Pascal's Triangle
  • Valid Palindrome
  • Fibonacci Sequence
  • Different solutions to FizzBuzz
  • Coding Challenges (LeetCode, etc...)
  • Many more...

Additionally, Graph Traversal Algorithms creating an adjacency list.

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.

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.

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.

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.

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!

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.

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 micro-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.

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.

From Musician, to Project Manager, to Data Analytics, to Developer.

Before becoming a software engineer, I had worked in the music industry as an Income Tracking Services Manager and later Data Analyst at Bertelsmann Music Group, where I gained experience working in a rapidly changing and demanding environment, where my role touched nearly every other department in the company. My responsibilities as Income Tracking Services Manager included Redirection, Live Performance tracking and analysis, Mechanical Tracking and analysis, Radio Tracking and analysis, and further pipeline analysis and forecasting. I would contribute to over $5 million dollars recovered annually.

In addition, moving into Income Tracking Analytics, I project managed technical projects, worked regularly with large data, utilized the underlying platform services and infrastructure, created scripts to fetch data using various API's, developed extensive professional experience in data visualizations, used SQL and SQL tools for queries using various drivers to feed data into Power BI, and worked directly with our developers to build tools, apps, and automate processes.

My deepening curiosity for programming and understanding how things worked, ambition towards goals, and drive 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 Site Reliability Engineer at Built Technologies. In my time at Built, I was eventually promoted and given the opportunity to lead a small SRE team to implement the SRE set of guiding principals for key initiatives.

Growing my aptitude in both application development and infrastructure, and gaining experience working with large distributed systems, I moved on to my current role at Target, where I have the opportunity to work with a wide array of technologies, including Kubernetes, Istio Service Mesh, CDNs and Edge Compute, work with Machine Learning Engineers to implement MLOps, Tech Lead many projects, and much more.

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


Technology

List of technologies I have worked with over my career thus far. I recognize this is a long list, and I have worked with much more, but in an effort to keep this list condensed the below technologies are those that I have more than "worked with" and have good to expert level knowledge in.

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