Azurite for storage, Azure Functions Core Tools for the real Functions runtime, SQL Server in Docker, and a local model behind an OpenAI-compatible endpoint. Free, so I can break things as often as I need to.
Cloud Security
AWS and Azure infrastructure, built with Terraform so I can rebuild it from scratch and destroy it when I'm done.
The AWS work here came out of studying for my Cloud Practitioner cert and wanting to stop configuring things by hand in the console. The Azure series is newer. It's five builds that each start from a problem a small business actually has, rather than a tutorial.
Everything is in Terraform. That matters less for the portfolio than it does for the bill, since I can stand an environment up, take what I need from it, and destroy it the same day.
How I build the Azure series
terraform apply against the Azure free tier, then actually
use the thing. Screenshots, logs, the cost report, Defender for Cloud findings, and an
architecture diagram all come out of this step.
terraform destroy, confirm nothing is still billing, then
write what happened. The write-up includes whatever didn't work the first time.
AWS work
Replaced clicking through the AWS console with Terraform. Built a custom VPC, hardened the security groups, and moved state to an S3 backend after I duplicated resources one too many times.
Terraform · AWS VPC · EC2 · S3 backend
The Hugo and Docker setup behind my previous site, including the GitHub Actions pipeline. Documented because the container networking and submodule problems took longer to solve than the site did.
Docker · Hugo · GitHub Actions
Spreading traffic across instances on AWS and watching what happens to live connections when a target drops out of the pool.
AWS EC2 · Load Balancer
The Azure series
Backups that only run when someone remembers eventually stop running. Versioning, lifecycle rules, immutability, and a daily message confirming it actually worked.
Blob Storage · Versioning · Lifecycle · Logic Apps
Owners can't tell what their cloud bill will be until it shows up. This one runs on the real spend from the other four Azure builds.
Cost Management · Monitor · Logic Apps · Workbooks
The site goes down and the owner hears about it from a customer. Three checks, alerts in seconds, and a dashboard showing the trend.
Timer Functions · Email/SMS · Workbooks
Sorting and routing incoming email with a model. That means untrusted text reaching something that can take actions, so it needs real injection defenses.
App Service · Azure OpenAI · SQL · Logic Apps
Stock decisions made on gut instead of data. Live stock levels plus restock predictions.
App Service · SQL · Azure OpenAI