Oh boy. This was definitely something new.
Even before the country was locked down, I was looking to shift gears and move towards the tech industry. Not because I don't love what I do, but because I wanted to expand my skillset into an area of my life in which I've always had a passion for.
A little background on me: I am a Vancouverite, born and raised. After fulfilling the requirements to apply, I moved down to San Francisco to attend Life Chiropractic College West. There, I met my wife and after graduation, moved up to Portland, Oregon.
I am a chiropractor by trade but have always loved working with/in/around computers and have been coding (more accurately, playing with code) all my life.
I read about this challenge on Reddit months ago, but thought it was too big of a project to complete at that point in time. Now that I have some cursory experience with the technology and earned my Azure Fundementals and AWS CPP certification, I feel like its time to tackle the challenge.
--So what's the plan?
See the list, check things off of the list.
I figured that the best way to tackle this problem is to do it piece by piece, starting at the top. Since I already earned my CPP certification, I am already on my way.
Step #1, done (July 1st, 2020).
2 + 3. HTML + CSS
This is where I actually committed to this project (aka telling my wife and dog that I'm doing this). Coming back from the July 4th long weekend and a bit of a mental break from studying for the CPP, I've been wanting to sink my teeth into the next project.
Building the HTML for the resume was fairly simple, as I have had some experience in the past writing out simple websites in the past. Most recently, I completed Udacity's Introduction to Programming Nanodegree in April 2020, so many concepts of using HTML and CSS were still pretty fresh.
It took a bit of time to lay everything out the way I'd like, but I managed to get it done in a day or so of tinkering.
Step #2 + 3, "done" (July 7th, 2020). I say "done" because with websites, is it ever really done?
- Static S3 Website
Fairly straightforward here. Just finished studying Stephane Mareek's AWS CPP course in which we deployed a website on S3 in one of the labs, so this didn't take much time either.
Step #4, done (July 7th, 2020).
5 + 6. HTTPS + DNS
I've always wanted to host my own website, so why not do it now? I went through creating a distribution in CloudFront, redirecting HTTP to HTTPS to fulfil the requirement.
Next, I hopped on Route 53 to register my domain, tmikec.com! Followed a great write-up by Ricardo Sanchez to help guide me through this process.
Steps #5 + 6, done (July 9th, 2020).
This was the hardest step (so far).
I used tutorial from https://cdkworkshop.com for Python Lambda functions. Installed AWS CLI, Node.js, Python, AWS CDK toolkit
went through the prerequisites and the Python workshop.
Pulled out hair when my JS wasn't returning anything to display on HTML.
Consulted my friend Phi Bui, SDE @ AWS, to guide me. Basically fed me whitepapers until I got nauseous.
Got stuck on: proper use of update_item, CORS headers, Json.parse.
BUT ITS FINALLY DONE (July 29th, 2020)!
- Infrastructure as Code
After setting everything up, this was just a matter of going into CloudFormation and grabbing the template of my existing stack. This was quite easy since I already used AWS CLI when I was originally deploying everything.
- Source control
I found this to be easy enough. Followed the steps on Forrest's Cloud Resume Challenge Instructions and was done in a few minutes (July 29th, 2020).
14+15. CI/CD (Back end)+ (Front end)
This was a bit confusing, as I've never used GitHub before, let alone GitHub Actions. After reading some documentation, I installed Github Desktop to create two repositories: one for my front-end website code, and one for the back-end resources.
I set up GitHub Actions on the back-end using a template I found on the GitHub Actions Marketplace by AWS-Actions (very conveniently named), so that helped a lot. After crunching through some errors in my naming scheme, things seemed to work, so I moved on because the time was winding down on the challenge (July 31st, 2020).
- Blog post I was writing this in about three sessions. My first part was up to Step 5+6, then 7-11+13-15, and now finalizing my post for #16. What a great experience this was! Lots of videoes were watched, whitepapers read, long nights of troubleshooting problems (I was stuck on the visitor counter for at least four days!), and many conversations with people around me to try and solve unexpected problems.
I learned a ton during this past month. Refining my HTML and CSS skills, learning how JS and Lambda interact with each other, how to automate things with CloudFormation, and CI/CD with CodePipeline, GitHub, and GitHub Actions.
It really solidified the idea that this is what I want to do and it is something I would like to dive deeper into.
... So what's next?
I was already working on my Solutions Architect Associate certification, so I will be finishing that first. Afterwards, I will be getting a Linux certification of some sort to solidify my skillset enough to start working in the field.
I look forward to the challenges ahead and wish everyone else luck on completing this project!
A huge shout-out goes to Forrest Brazeal (https://forrestbrazeal.com) for setting up this challenge and offering his time and resources to helping people out!
I'd also like to acknowledge my good friend, Phi Bui (https://www.linkedin.com/in/phi-bui-5a8b048a/) for lending his expertise without spoon-feeding me along the way. I probably bothered you far more than I paid you (nothing) for. I definitely owe you a beer.