Hello, everyone! My name is Matthew Morton - alumnus from the University of Virginia with a degree in foreign affairs and a minor in business Spanish. You may be wondering after looking at my LinkedIn how an international government major with a previous job in commercial real estate data analytics and current job in legal assistance gained interest in obtaining a job in cloud. Allow me to explain.
The Beginning
After working at a commercial real estate database firm for more than 2 years right out of college, my father, without any warning or prior illness, suddenly passed away. After receiving three promotions, along with the increased responsibility, workload that came along with it, and assisting my mother plan an impromptu funeral, I soon realized I was unable to remain at my current position. After reluctantly resigning, I was able to secure a part time legal assistant position from a law firm that I interned with while I was in college. However, I had decided long ago that I did not want to pursue a profession in law.
The attorney gave me the enlightening suggestion that if I did not want to practice law, now is the perfect time in my life to reset and pivot careers. She told me that I could learn new skills in my free time to potentially land a position in a career that I was passionate about and enjoyed doing. It may be the only time in my life that I get a career reset with this much liberty, so I decided to take a risk and go for it.
The Movie Date of Destiny
One of my friends, Josh, who helped me with my grieving process decided to set up a movie date with one of his friends from college. After the movie finished, he introduced us and told his friend that I was interested in pivoting careers; more specifically into tech. His friend, Adrian, let me know that he worked in cyber security and that he had suggestions on what to study. Adrian suggested that I learn 3 critical skills: Python, Linux, and obtaining the Microsoft AZ-900 certification with the aspirations of obtaining a cloud engineering position. After 4 months of daily studying, I became proficient in Python and Linux and obtained the certification.
The Youtube Algorithm working in my Favor
One day, while scrolling through “Day in the Life of a Cloud Engineer” videos, I came across this well put together video that Lucy did. She mentioned the Cloud Resume Challenge by Forrest Brazeal. After reading what it was about, I realized it was a fantastic opportunity to bridge what I already learned from the certification to real world application. The project is an excellent idea: creating an online resume website for employers and recruiters to see while simultaneously learning the cloud platform to create it. I felt that it was divine timing for me to view the video to find the project, so I decided to take another risk and go for it once again.
The Azure Cloud Resume Challenge: First Attempt: The Art of Troubleshooting
I was delighted to see that the first part (or last, there is no exact order to do the steps of the project in) of the project was to obtain the AZ-900 certification! That was a big indicator that this was a project I should participate in. I already obtained it and could now apply my foundational knowledge. Forrest mentioned that beginners (like myself) should follow along with Gwyn’s video since the challenge tells you what to do, not how to do it. The project was smooth sailing until I reached my first roadblock: her IDE (integrated development environment) of Visual Studio Code was 2 years old since the video was created in 2021. While her video has great explanation, the options and mechanisms in her VS Code did not match up with mine; particularly when she got to the azure functions section. Since I was still new, I was completely unaware of how to architect this project properly.
I sat in utter frustration for at least a month (yes, a month) until I read the Well of Despair portion on page 148 of Forrest’s book. To get unstuck, set a time limit for yourself on how long you intend to stay on a problem. It works wonders how after going away and coming back, the solution or the thought process to the solution suddenly reveals itself to you. I learned about the developer tools later in the journey which I’ll explain further down.
However, the most important aspect I learned to get myself unstuck was Forrest’s suggestion of learning how to formulate a specific question. Vague questions and google searches get vague responses and don’t inspire people to help you out. When you analyze the problem and find the root of your error, you’ll ask a much more specific question. The more specific your question, the better answer you’ll find. After using that method, I ended up finding Craig’s very detailed blog post. This was the breakthrough I needed to complete the project. After much trial and error, I decided to start all over again from scratch; website creation, azure functions and all.
The Front End:
It’s important to create a GitHub repository to active push and commit your changes to show up on your website live. I didn’t see the need to use Github desktop since you can log into VS Code and work on your project and commit changes from there. It’s also important to select a resume website template where you can actually visualize how you want your website to look before you create it. I learned that not every template is good if you can’t decide how you want your site to look and where to input your sections and bullet points. I decided to use the same template Craig used because the orange matches my alma mater colors and as long as it was interactive and user friendly, I would still be getting my main point across. After editing the index.html file in VS code to match my resume and learning how to commit my changes and push them up to my GitHub, what I couldn’t figure out how to do in a month was completed in about 6 hours. I learned how to use HTML this way and how important CSS is for website design. The Front End was complete!
The Back End:
One thing I learned when dragging and dropping your files into the static website container to recreate your site on Azure is that the CSS is what makes a website go from blank text to actual design, color, and interface. I uploaded the CSS incorrectly and my azure website looked like an old website from the dot com bubble time period; only having my text in black font with a blank white background. To fix this, you need to upload your entire CSS file, not just the individual components within the file. Here is what I mean:

The visitor counter was very difficult, yet the most important part of the project. Anyone can set up a resume website, but it takes cloud application to set up the visitor count through Azure. I used the NoSQL table in Azure Cosmos Database to set up my counter database. In the items section in the table, I set my “id” to “visitors”. However, I did not set up the “VisitorsCount” line of code in the database like Craig did.

Another important note is that even though I learned from Craig’s guide, I still faced many challenges and roadblocks that made my own experience unique to his and others. One example of this is when I set up the azure HTTP Trigger counter function. After testing my function, I kept getting a “500 Internal Server Error” message every time it ran. This had me perplexed for at least another week until it finally hit me: The Terminal is always right. I noticed a contradiction in the azure portal and PowerShell. The message kept saying that error, but the terminal stated that the function succeeded. See below. Even now when I test it, it still kicks back some sort of error. Nonetheless, the terminal stated the function is working properly. I decided to ignore the error message and continue on.

I decided to double check the success of the function by going into the monitor section of Azure. Sure enough, the monitor section was giving me the “200 success” message that the function was working properly. And as you can see, I tested this function literally more than a thousand times before it functioned the way I needed it to.
At this point, I could see the goal line. I knew the function was working because the counter would populate a new number by an increment of 1 each time I refreshed the page. This would correspond to the number of times someone clicked my resume page. Now, I just needed to get my counter on the resume website page. This was the penultimate, and most difficult portion of the project for me.
I decided to write my azure function code in JavaScript since that seemed more compatible with the project for me. After writing the code, most of the other bloggers created a separate main.js file to call their function from to their index.html page. However, I decided what was better for me was to insert my JavaScript code into my HTML. And yet, I was still running into this issue of the visitor count still not populating on my page.

After looking at the code that (seemed like) was right, I asked my older brother if he saw any issues. After he looked at the code, he did not see any issues either. We then opened up the developer tool in Mozilla Firefox to see if it saw something we did not. (Side note: Google Chrome and Firefox are good for coding, not safari if you use a Mac. For some reason, since updating to Ventura 13.3.1, Azure Portal won’t load in Safari either.) The developer tool noticed that on line 20 of my code, I had (data.count) instead of just (data). Once I deleted the “count” out of the code, the function populated on my site! Just like that, the challenge was complete!


Final Thoughts and Retrospection:
This project brought out the most frustrated, yet best version of myself. With enough tenacity, you can solve almost any solution as a cloud engineer or programmer. It took about a total of 200 hours to complete (100 hours to obtain the certification, another 100 hours to complete the project. There were moments during the project where I did not know if cloud engineering was cut out for me and what my future entailed. However, I knew that once I figured out the front-end after trying to find a solution for a month, I had come too far to give up. I persevered, completed the project, and expect to reap its benefits through an offer of employment.
I hope that my specific errors and corrections will be helpful to anyone who reads this. Thank you, Forrest, for making this project and designing it the way you did. After testing my function over a thousand times and recreating the project from scratch several times, I learned all about the components of Azure while adding that knowledge to what I learned from the certification. It did not seem like it at first, but each error I ran into made me more familiar with Azure Portal since I spent countless hours troubleshooting and downright staring at my Azure Portal screen. I am enthused to apply what I’ve learned into a real position!
From seeing other blogs, I’ve noticed that the projects from 2-3 years ago have expired custom domain websites; therefore, their custom domain URLs are not working anymore. I’ll leave my original azure website URL here with the intention that it will never stop working as long as this blog post exists, even after my custom domain name expires. Here is my github version.

Top comments (0)