Adedayo Afolabi, Ph.D.

Cloud engineer & learning-sciences researcher.

I build AWS infrastructure the way I ran research: document everything, automate the repeatable, and be able to explain every decision. This site runs on architecture I built and manage entirely as code — S3, CloudFront, Route 53, and a keyless CI/CD pipeline, all under Terraform.

Two tracks, one habit of mind

// rigor transfers

I spent a decade teaching mathematics across Nigeria, The Gambia, and the United States, then completed a Ph.D. at Texas Tech University building AI systems that evaluate how students reason in math and physics — not whether answers match, but whether the thinking holds up. Cloud engineering is where that discipline now lives: infrastructure that can be read, versioned, and defended line by line.

Cloud & Infrastructure

Hands-on AWS: static hosting on S3 behind CloudFront with Origin Access Control, DNS and TLS with Route 53 and ACM, and least-privilege IAM throughout.

Everything ends up in Terraform — including importing live production resources into code with zero drift. Deployments run through GitHub Actions with OIDC: no stored AWS keys anywhere.

Research & Teaching

Ph.D. in Curriculum & Instruction (STEM Education, mathematics concentration), Texas Tech University. Dissertation: learning-progression-guided AI evaluation of math-science sensemaking in first-year physics.

Peer-reviewed publications, AERA presentations, and a 100% pass rate coaching students through international mathematics examinations.

Projects

// built in public — one repo per project

LIVE — you are looking at it

Cloud-hosted portfolio with keyless automated deployment

This page is served from a private S3 bucket — Block Public Access fully on — that only CloudFront can read, via Origin Access Control. DNS on Route 53, HTTPS from ACM, HTTP redirected to HTTPS at the edge.

// request path browser → Route 53 → CloudFront (TLS, cache) → OAC → private S3 // deploy path git push → GitHub Actions → OIDC token → scoped IAM role → s3 sync → invalidation

Every push to main deploys automatically — with no AWS keys stored in GitHub. The pipeline authenticates through OpenID Connect: GitHub mints a short-lived token, and an IAM role trusts it only if the token's audience is AWS and its subject is this exact repository on the main branch. The role itself can do four things — list, put, and delete objects in one bucket, and invalidate one distribution. Nothing else.

All sixteen resources — bucket, DNS records, certificate, distribution, identity provider, role, and policy — are managed in Terraform, imported from live infrastructure to a clean "no changes" plan.

Favorite bug: the pipeline's first OIDC handshake failed because GitHub had just changed its token subject format for new repositories, appending immutable numeric IDs. Decoding the JWT claims in a debug step exposed the mismatch; pinning the trust policy to the exact new format fixed it — and made the policy stricter than the tutorial version.

S3CloudFrontRoute 53ACMIAM · OIDCTerraformGitHub Actions

Next on the bench: a serverless contact form and visitor counter for this site — Lambda, API Gateway, DynamoDB, and SES, written Terraform-first — followed by a cost-guardian automation suite and a three-tier VPC application. Six projects, one roadmap, all public.

Working stack

// tools I use, not tools I've heard of

Cloud

  • AWS — S3, CloudFront, Route 53, ACM, IAM, CLI
  • IaC — Terraform (HCL, state, import, drift)
  • CI/CD — GitHub Actions, OIDC federation
  • Security — least-privilege IAM, OAC, keyless auth
  • Cert — AWS AI Practitioner (in progress)

Research & Data

  • Python — data analysis, scripting
  • Statistics — SPSS, JASP, statistical modeling
  • AI — LLM evaluation, prompt engineering, chatbots
  • Methods — mixed-methods research, academic writing
  • Agile — Certified Scrum Master

Get in touch

// open to cloud engineering roles

I'm looking for a cloud engineering role where infrastructure is treated as a product: versioned, reviewed, and understood. If that sounds like your team, I'd like to hear from you.

Contact

Have a question or an opportunity? Send a note — it lands in my inbox.