Skip to content

Commit

Permalink
CV updates
Browse files Browse the repository at this point in the history
  • Loading branch information
al-duncan committed Jun 24, 2022
1 parent 3bde526 commit 142d61c
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 8 deletions.
Binary file modified assets/pdf/Al-Duncan-CV.pdf
Binary file not shown.
6 changes: 3 additions & 3 deletions crc.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ <h1 class="mb-5">
<span class="text-primary">Challenge</span>
</h1>
<p>I was recently recommended Forrest Brazeal’s <a href="https://cloudresumechallenge.dev/docs/the-challenge/azure/">Cloud Resume Challenge</a> after a discussion with a friend about how to get some hands on experience in the Microsoft Azure cloud environment. For those of you unfamiliar with the challenge Forrest describes it as a “hands-on project designed to help you bridge the gap from cloud certification to cloud job. It incorporates many of the skills that real cloud and DevOps engineers use in their daily work.”</p>
<p>The challenge essentially is to build and host a resume website with a visitor counter in the cloud and gain your first cloud platform certification. That sounds simple on the surface but the design of the challenge requires you to use multiple Azure services (CDN, Function App, Azure Cosmos DB etc..), configure DNS for your custom domain, write some python code and implement CI/CD using GitHub. The following diagram shows how it all works together and you can view the finished resume webpage <a href="https://azure-crc.theduncans.uk/">here</a></p>
<p>The challenge essentially is to build and host a resume website with a visitor counter in the cloud and gain your first cloud platform certification. That sounds simple on the surface but the design of the challenge requires you to use multiple Azure services (CDN, Function App, Azure Cosmos DB etc..), configure DNS for your custom domain, write some python code and implement CI/CD using GitHub. The following diagram shows how it all works together and you can view the finished resume webpage <a href="index.html">here</a></p>
<img class="img-fluid mx-auto" src="assets/img/azure-crc.png" alt="..." />
</div>
</section>
Expand All @@ -51,7 +51,7 @@ <h1 class="mb-5">
<section class="resume-section" id="frontend">
<div class="resume-section-content">
<h2 class="mb-5">The Front End</h2>
<p>Before reading on you can view my finished resume page <a href="https://azure-crc.theduncans.uk">here</a> and the repository for the front end can be found on GitHub <a href="https://github.com/al-duncan/azure_crc_frontend">here</a></p>
<p>Before reading on you can view my finished resume page <a href="index.html">here</a> and the repository for the front end can be found on GitHub <a href="https://github.com/al-duncan/azure_crc_frontend">here</a></p>
<p>As you will see from my resume I am pretty comfortable building websites so the thing I was most excited about was finally getting to build something in Azure. I quickly put together a “Hello World!” HTML file and put it to one side so that I could get on with making everything work.</p>
<p>I then logged into the Azure portal and once I had my Subscription and Resource Group created I set about configuring a storage account and enabling the static website. When you enable the static website on the blob storage service a storage container ($web) is created for you to host the static site content. I uploaded the HTML file I’d created earlier into the $web container using the portal interface and when I pointed my web browser at the Primary Endpoint Web container I saw my “Hello World!” message. Everything was working so far…</p>
<p>Next step was setup a custom domain and have the site use HTTPS which required using Azure CDN. I setup the CDN through the Azure Portal and configured it to ForceHTTPS. I already had a domain that I could use so I headed over to my domain host and created a CNAME record to point to the CDN Endpoint Hostname. Again a quick check in my browser and I could see the “Hello World!” page and my browser also confirmed it was using HTTPS on the custom domain.</p>
Expand All @@ -71,7 +71,7 @@ <h2 class="mb-5">The Back End</h2>
<p>Once I had everything setup I opened a terminal and created a new function app locally using the HTTP Trigger template and Python 3.9 environment. I then wrote a quick python script that simply returned a random number and ran the function locally to test that it worked. Using the Azure CLI I then created the function app service in Azure and published my local function into Azure. Directing my web browser to the functions URL to test gave me a random number as desired and confirmed the function was working. At this point I jumped ahead a little in the challenge and setup the back end GitHub repository and actions so that I had the CI/CD workflow as I continued to develop the function</p>
<p>At this point I went back to my front end and added some JavaScript that would hit the function and then display the result where I wanted it on the resume page. So I had a webpage with some JavaScript that makes a request to my Azure function and displays the result on the page, but the result is a random number rather than a count. Time for the last bit of the puzzle, the Azure CosmosDB.</p>
<p>The Azure CosmosDB offers multiple APIs that essentially allow you to treat the CosmosDB like it is another DB technology such as MongoDB, Cassandra etc but Forrest’s original challenge tells us to use the Table API. Using the Azure CLI I created the database and the entity to store the count value. When using the Table API each entity has 3 default fields, ‘PartitionKey’ and ‘RowKey’ are used to index the entities and ‘Timestamp’ records when the entity was last updated. To those I added a field to store the count and set it to zero.</p>
<p>To finally put everything together I headed back to my function and started to create the python script that would get the last count from the DB, increment it, give the result to the JavaScript and update the count field of the entity in the DB. After a few bumps on the way, particularly with the input/output bindings of the function, I got it working and you can see the final working resume <a href="https://azure-crc.theduncans.uk">here</a></p>
<p>To finally put everything together I headed back to my function and started to create the python script that would get the last count from the DB, increment it, give the result to the JavaScript and update the count field of the entity in the DB. After a few bumps on the way, particularly with the input/output bindings of the function, I got it working and you can see the final working resume <a href="index.html">here</a></p>
</div>
</section>
<hr class="m-0" />
Expand Down
9 changes: 4 additions & 5 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ <h1 class="mb-0">
</h1>
<div class="subheading mb-3">
Glasgow · Scotland, UK ·
<a href="mailto:alistair@theduncans.uk">alistair@theduncans.uk</a>
<a href="mailto:resume@theduncans.uk">resume@theduncans.uk</a>
</div>
<div class="social-icons mb-5">
<a class="social-icon" href="https://www.linkedin.com/in/al-duncan-005b7b104/"><i class="fab fa-linkedin-in"></i></a>
Expand All @@ -68,7 +68,6 @@ <h1 class="mb-0">
<li class="list-inline-item">ARM Templates</li>
<li class="list-inline-item">Bicep</li>
<li class="list-inline-item">CDN Profiles</li>
<li class="list-inline-item">Endpoints</li>
</ul>
<strong>General:</strong>
<ul>
Expand All @@ -88,12 +87,12 @@ <h1 class="mb-0">
<li class="list-inline-item">JSON</li>
<li class="list-inline-item">XML</li>
<li class="list-inline-item">Javascript</li>
<li class="list-inline-item">DNS</li>
<li class="list-inline-item">Linux Administration</li>
<li class="list-inline-item">Networking</li>
<li class="list-inline-item">Technical Support</li>
<li class="list-inline-item">2D/3D Draughting</li>
<li class="list-inline-item">BIM</li>
<li class="list-inline-item">Teamwork</li>
<li class="list-inline-item">Leadership</li>
<li class="list-inline-item">Communication</li>
</ul>
</div>
</div>
Expand Down

0 comments on commit 142d61c

Please sign in to comment.