I'm a Software Engineering student at BYU-Idaho. I'm learning cloud by building real projects on AWS, and I'm looking for a cloud engineering internship.
AWS Certified
Cloud Practitioner
Amazon Web Services
Verify on Credly →About
I'm studying Software Engineering at BYU-Idaho, and the part I like most is cloud infrastructure. This website is my biggest project so far. I set up everything on AWS with Terraform, wrote the Lambda functions, and it deploys itself through GitHub Actions whenever I push a change.
Outside of school and coding, I like spending time with my family, staying active, and playing guitar.
Skills & Tools
Projects
The site you're looking at. The files live in S3 and are served through CloudFront. The visitor counter calls a Lambda function through API Gateway, which updates a count in DynamoDB. Everything is set up with Terraform, and GitHub Actions deploys it when I push changes.
A simple chatbot that runs on Lambda behind API Gateway. It answers questions about my resume, skills, and projects. You can try it on this page: open the chat in the corner and type "help".
A weather app I built with JavaScript. You search for a city and it shows the current weather plus hourly and weekly forecasts, pulled from a weather API.
How It Works
Click on a service to see what it does for this site.
Click a service above to see what it does.
Notes
My pipeline used to sign in to AWS with access keys saved as GitHub secrets. Those keys never expire, so if they leaked someone could use my account. I switched to OIDC. Now each GitHub Actions run gets temporary credentials from an IAM role that only my repo can use, and there are no AWS keys stored in GitHub at all.
When I moved my Terraform state to S3, the real state file was still on my laptop. The first CI run saw an empty state and tried to create every resource again. Most of it failed with "already exists," but it did make a few duplicate APIs and a certificate. I deleted the duplicates, uploaded the real state, and ran terraform plan to make sure it only showed small changes before letting CI deploy again. Now I always check where my state lives before I change a pipeline.