The Cloud Resume Challenge
Tags: beginners, awschallenge, portfolio
Published: 2024-05-29 00:49:53

Hi, I'm Michael! I'm a cybersecurity professional working on making the shift to working in software development, and as part of that I've decided to build a portfolio site where I can showcase the things that I'm working on. I decided to tackle the Cloud Resume Challenge in particular while building this site because I recognized a lot of holes in my knowledge that I felt like this challenge would help me address before going on to work on other projects.

## What is the Cloud Resume Challenge?
The Cloud Resume Challenge (at least when built on AWS) has 16 steps in total, but ultimately it can be broken down into three core ideas:

### 1) It is a resume.
The finished product for this challenge is a static website that displays the contents of your resume, along with a visitor counter.

### 2) It is hosted on the cloud.
The website is hosted on one of three cloud providers (AWS, which I used, or Azure, or GCP), and uses the various services they offer to serve the website to visitors and run the API that counts visitors.

### 3) It is challenging!
Provisioning everything manually in the UI might be easier when first getting to know the services AWS provides, but for anything non-trivial that has a lot of interlocking parts (like a static website with an API), you pretty much need IaC, and that can be really hard to set up, especially when you're still getting familiar with the services you're working with.

## What skills did I gain from doing this project?
Like I mentioned earlier, doing this project helped me fill a few gaps in my knowledge that were getting in the way of me working on other projects, and I wanna lay those out here:

### 1) Writing tests
I unironically wrote more tests for this project than I did during my entire undergraduate degree, and if this project didn't explicitly require writing those tests I probably wouldn't have, and my code would have certainly been worse if I hadn't.

Because this project required that I write tests, I was able to get over a lot of the blocks that normally get in the way when I go to write tests, like "I don't know how I would test this," or "Writing all these tests is getting in the way of getting my project done," and now that I have more experience writing tests it'll be easier for me to write tests when I work on future projects.

### 2) Frontend development
No matter how cool a project is, it's hard to confidently show it off if it looks like it was made in the 90's (and harder still if there's no UI at all!) I still have a lot to learn when it comes to frontend, but I think this project was a great start for me in that direction.

### 3) Infrastructure as Code
As I mentioned previously, making anything non-trivial on the cloud pretty much necessitates IaC to keep your project maintainable. For a project like this where I'm unlikely to be making very many changes to it after it's done, it sometimes felt like overkill to deploy everything with Terraform, but now that I've done it once with this project, I'll have a better idea about how to do it for any project in the future that would require me to use any services in the cloud.

## What's next?
I'm not sure! But since the Eurovision Song Contest final was earlier this month, an idea that I've been thinking of is a page where people can look at data visualizations for the votes from each year and from each participating country.

In any case, when I do start working on my next project, you'll be able to find it on my personal website at https://www.jmkriz.dev! I look forward to seeing you there!