My Head in the Cloud ☁️

What's up!

My name is Vernell Mangum, a Comp.Sci. grad from the illustrious University of New Orleans which, of course, means I am based out of the same city! I am kind of a recent grad (as of Dec. 2022) and I am currently looking to make my start in the tech industry. You can infer by the title and the diagram that this article is probably gonna talk about the Cloud but I also want to take you on my journey up to the Cloud(s) :D.

School was cool... sort of

I am going to be brutally honest here, my first two years of school were a nightmare to say the least. I have always had a love for technology, not specifically computers but technology in general so I knew that the major was right for me. Once I was exposed to how many things you could hone in on with the degree by the second year is when I became EXTREMELY overwhelmed. There was so much to learn and, in my eyes, not enough time to discover what I actually wanted to focus on. (In hindsight, I also knew I had a passion for art as well but that didn't really click with me at that point.) That's until I found myself understanding Java and it was set... I wanted to become a Software Engineer... L O L. Let's just say I was wrong about that. Loud and wrong to be exact. It wasn't until my last year, my last semester, that I truly understand what I wanted out of this degree. There were two courses that I took that shifted my thinking about tech in general. The first would be Mobile Application Development and It would be disrespectful to mention this course and not mention the professor behind the madness, Dr. Ben Samuel. The way he instructed this course opened my eyes to just how creative one can be with development and sparked an artistic fire under me. It was my first time using React and Javascript (both of which I thought were too difficult to grasp and want to work with) and he showed just how easy and beautiful they can be and accelerated my understanding of both. The second would be (yup, you guessed it) Cloud Computing.

My Intro to the Cloud

First and foremost, I would like to say that I psyched myself out of taking this course in previous semesters because of how advanced the course was. It was recommended for seniors or advanced tracked students so I thought to myself "there is no way I would be able to pass this class." The amount of programming I have done during my college career was more than enough for me to grasp that side of the Cloud but the Cloud itself is what was confusing me the most. "You mean to tell me I can have a computer INSIDE OF A COMPUTER? Where would I even start??" But this course did exactly that, gave me a start to learn a skill that I think I could end up doing as a job and as a career. It was my first introduction to Docker and container services, learning how to spin up containers, set up dependencies, and running code inside of these VMs. Our project/exam for our lesson in Docker involved me accessing an already made container, using the CL to access the code inside of the container and assessing whats wrong with the code to get it to run properly, and getting the output of the code to store inside of our personal machine and not the container. Annnd we only had an hour to do it, pretty gnarly for me at the time but I figured it out. Definitely took me longer than 1 hour though! The second half of the class is where it really caught my attention. An AWS workshop course, basically studying for the AWS CCP (Certified Cloud Practitioner) but as a class. And for our final project in this class, we had to use the AWS console, SDK, and CLI to make an application that used 4 AWS services, 4 of the "normal" services and one ML service. We were in groups for this final but unfortunately I had to take on this project myself. I ended up making a very simple Text-To-Speech program that takes in a text file and outputs a voice file thats stored to your computer. (you can checkout the code here) After I made that program and turned it in, my professor saw that I wanted to learn more and I took an interest to it so he decided to set up a day after the final to help me put finishing touches on it.

Now that I have made the program and obtained the knowledge and finished my degree, I thought to myself... What's next?

A Challenger Approaches...

After my degree, I did take a month or two off from programming just because I felt I was getting burned out. Over my break I did some researching on what it takes to become a software engineer and realized it involved the part I disliked the most about programming, algorithms. I didn't want to spend my time on LeetCode learning more about all the search algorithms and data structures. I did end up doing some of them though because I decided to take on Front-End Engineering using Codecademy's Learning Path. Halfway through that path, as any Millenial/Gen-Z person would do (I was born in the year that's cloudy as to where the former ends and the latter starts) I found @shaeinthecloud/IG who talked about her journey to Cloud. She mentioned that she used the Cloud Resume Challenge as a way to make her into tech so I decided to try it as well and see If it was something that I can partake in as well.

The Cloud Resume Challenge

A challenge meant for anyone to partake in to get their start in Cloud and switch to a career in tech.

The objectives of the challenge consists of the following:

  1. The AWS CCP is a prerequisite for the challenge

  2. A resume built in HTML/CSS and hosted in a S3 bucket

  3. Website uses a custom domain name using Route53 and secured with HTTPS using CloudFront

  4. A visitor counter on your website built using JavaScript that is displayed by getting the count from DynamoDB

  5. A Lambda function to call that DB making it server-less

  6. An API using API Gateway to receive requests from our website to update the DB

  7. It has to packaged and deployed programmatically using IaC (Infrastructure-as-Code)

  8. It also has to have CI/CD integration for future changes using Github

All of these steps I have completed and wanted to share that journey with you guys!

The Journey...

This challenge was a very unique experience for me and I enjoyed every bit of it from the start until the finish. It gave me some hands-on experience of AWS services that I would not have known how to use without taking on this challenge. I took me about 3 weeks to finish (about 4/5 hours per day, excluding weekends), which is kind of fast but I would like to thank my degree and previous knowledge to help me debug and figure out things that would take some people longer.

The first steps...

By far the easiest part of the challenge was the CCP, which I had prior to discovering this challenge, and the HTML/CSS resume. As I sated before I was already learning Front-End concepts through my learning path so those steps took me the least amount of time. The JavaScript to make the visitor counter was also easy as I have learned that through the learning path as well. Some of the AWS services used in this challenge I also used in my college course. The S3, DynamoDB, and Lambda services were somewhat familiar to me and took me the least amount of time to figure out.

The hard part...

I will say this, the rest of this project was difficult to me even with my prior experience.

My first encounter with a stressful situation was working with CloudFront to get the HTTPS security working correctly. It was mildly difficult but nothing that I could not over come. We are still working with the AWS console at this point so nothing is too out of reach. It took hours to debug but I eventually made it work using the AWS docs and a lot of StackOverflow.

The next chunk of work that cause me some trouble was setting up the Lambda function to connect with my database and getting the browser to talk to my API with no issues. The Lambda function involved using the AWS SDK which I used for my previous project so a simple refresher was all I needed. The most difficult part was getting the browser to connect and talk to the API. This part of the of the challenge took me 4 days to figure out thanks to the biggest but also most secure jerk I have ever encountered, CORS. Don't we all just love CORS! I had no previous experience with CORS so the first day and a half was all researching. The latter half involved me staring at the Chrome JS console for HOURS wondering what exactly I'm doing wrong. (And when I say HOURS, I really mean HOURSSS) Eventually, with the tweak of some Headers and other things, I figured out exactly what I needed to do. Definitely got a late start to the challenge the next day because I needed a brain break. I then had to test this page using an E-2-E Cypress.js tests which validates that my Lambda function and API are all working correctly.

This final chunk is where I spent the majority of my time on this project and that was getting everything I set up in the AWS Console set up as code, known as IaC. The challenge, created by Forrest Brazeal, was made with you to use the AWS SAM to provision your resources as code but I chose to use the popular Terraform. I knew nothing about Terraform and was a little discouraged to use it in the beginning. With how popular the service is across the Cloud industry, I took the challenge to have just another tool in my skillset. When I tell you there are configuration options for dayssss when you are using AWS and Terraform, by far the most difficult part of the IaC process. As soon as you think you recreated the model perfectly, you find out you're missing just about everything! There are also mods that you can use to further increase the complexity of the challenge and I used one of those mods in this step. The challenge is to just have your API, DynamoDB, and Lambda function as IaC but I used the mod and took it a step further to configure the WHOLE project in Terraform. The amount of configuration needed for each resource, the order in which the resources deploy, and understanding policies and permissions is a whole different beast.

The final part of the challenge was to implement CI/CD using GitHub Actions which was not that difficult but still took me two days to complete. Nothing really to write home about, very standard process and reading GitHub docs more or less lead me to developing the right code.

End game...

After 3 weeks of blood (not really), sweat, tears and dedication, I can finally write this blog to let you guys know that i have completed the Cloud Resume Challenge. As of when I'm posting this, my resume is the only thing on the site but with my front-end knowledge, I hope you guys continue to check in on me as I update the page and turn the resume into more of a website than a PDF in HTML. I also plan on making more websites using this IaC infrastructure for automation and further my knowledge of AWS by obtaining my AWS SAA (Solutions Architect Associate).

I know this is a very lengthy article so if you made it this far, THANK YOU for reading! I hope you have a blessed day and don't forget to add me on LinkedIn and refer me to a couple of your peers and colleagues! I am always willing to help and mentor and I am looking for a mentee to get me started in the right direction!

Love, vee$.