Skip to content

module.root

$ terraform apply

Terraform will perform the following actions:

+resource "engineer" "craig_sinnott" {

+role  ="Cloud Engineer"

+region="eu-west-2"

+focus =["aws", "terraform", "ci/cd"]

+status="available for work"

}

Plan: 1 to add, 0 to change, 0 to destroy.

Craig
Sinnott

I build and run AWS infrastructure that teams can reason about — defined in code, versioned, and boring on purpose.

module.about

Infrastructure you can read before you run it.

I work across AWS and Terraform, turning click-ops estates into reviewable infrastructure. Most of my work sits where reliability meets cost: right-sizing what already exists, then making the next change safe to ship.

Plan before apply

Every change is reviewable before it exists. No surprise resources, no drift left unexplained.

Cost is a design constraint

Architecture that ignores the bill isn't finished. I size for the load that exists, not the load someone hopes for.

Boring where it counts

Novel infrastructure is a liability at 3am. I save the interesting choices for problems that actually need them.

Write it down

A decision that only lives in someone's head is a single point of failure. Runbooks and ADRs are part of the delivery.

stack

What I work with

Day to day, in production — not a list of everything I've ever opened.

Cloud

  • AWS
  • EC2 · S3 · RDS
  • VPC · Route 53
  • IAM
  • Lambda

Infrastructure as code

  • Terraform
  • CloudFormation
  • Ansible

Delivery

  • GitHub Actions
  • Docker
  • Git

Observability

  • CloudWatch
  • Cost Explorer

Languages

  • Python
  • Bash
  • HCL
  • YAML

module.projects

Selected work

All projects →

module.qualifications

Certified, and honest about the rest.

All qualifications

CLF-C02

AWS Certified Cloud Practitioner

Foundational

active

SAA-C03

AWS Certified Solutions Architect — Associate

Associate

active

module.contact

Got infrastructure that needs a second pair of eyes?

Start a conversation