Skip to content

Commit 1d91af4

Browse files
committed
Automated site build
1 parent 05acdcb commit 1d91af4

13 files changed

Lines changed: 26 additions & 26 deletions

File tree

docs/archives.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ <h1 class="entry-title">Blog Archive</h1>
5656
<h2>2025</h2>
5757
<article>
5858
<h1><a href="https://pedanticjournal.com/exam-timeline/">AI-powered exam dashboard</a></h1>
59-
<time datetime="2025-07-23 00:00:00+01:00" pubdate>
59+
<time datetime="2025-07-31 00:00:00+01:00" pubdate>
6060
<span class="month">Jul</span>
61-
<span class="day">23</span>
61+
<span class="day">31</span>
6262
<span class="year">2025</span>
6363
</time>
6464
<footer>

docs/author/guy-gregory.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ <h1 class="entry-title">Author: Guy Gregory</h1>
5656
<h2>2025</h2>
5757
<article>
5858
<h1><a href="https://pedanticjournal.com/exam-timeline/">AI-powered exam dashboard</a></h1>
59-
<time datetime="2025-07-23 00:00:00+01:00" pubdate>
59+
<time datetime="2025-07-31 00:00:00+01:00" pubdate>
6060
<span class="month">Jul</span>
61-
<span class="day">23</span>
61+
<span class="day">31</span>
6262
<span class="year">2025</span>
6363
</time>
6464
<footer>

docs/category/blog/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ <h1 class="entry-title">Category: Blog</h1>
5656
<h2>2025</h2>
5757
<article>
5858
<h1><a href="https://pedanticjournal.com/exam-timeline/">AI-powered exam dashboard</a></h1>
59-
<time datetime="2025-07-23 00:00:00+01:00" pubdate>
59+
<time datetime="2025-07-31 00:00:00+01:00" pubdate>
6060
<span class="month">Jul</span>
61-
<span class="day">23</span>
61+
<span class="day">31</span>
6262
<span class="year">2025</span>
6363
</time>
6464
<footer>

docs/exam-timeline/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ <h2>Thoughts on AI and other subjects.</h2>
5353
<header>
5454
<h1 class="entry-title">AI-powered exam dashboard</h1>
5555
<p class="meta">
56-
<time datetime="2025-07-23T00:00:00+01:00" pubdate>Wed 23 July 2025</time> </p>
56+
<time datetime="2025-07-31T00:00:00+01:00" pubdate>Thu 31 July 2025</time> </p>
5757
</header>
5858

5959
<div class="entry-content"><p><a href="https://exams.guygregory.com"><img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /></a></p>
@@ -68,8 +68,8 @@ <h3>How it works - AI-powered recommendation via GitHub Models</h3>
6868
<li>The script uses OpenAI's gpt-4o model, which is hosted by GitHub Models (on Azure AI)</li>
6969
<li>Because this script is called directly from GitHub Actions, <a href="https://docs.github.com/en/github-models/use-github-models/integrating-ai-models-into-your-development-workflow#using-ai-models-with-github-actions">auth works seamlessly</a>. I only had to add <code>models: read</code> into the <code>permissions</code> section of the workflow for it to work.</li>
7070
<li>In order to return a consistent response, <a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;pivots=programming-language-python">Structured Outputs</a> are used with the <a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;pivots=programming-language-python#supported-schemas-and-limitations">enum type</a> to only return an answer from the <a href="https://github.com/guygregory/exam-timeline/blob/main/priority_ARB_exams.csv">list of prioritised exams</a>.</li>
71-
<li>Leverages the <a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits">GitHub Models quota, included in the GitHub Copilot plans (including free)</a></li>
7271
<li>The output of this script is a JSON object which includes the recommendation: <code>{"exam_code":"AZ-305"}</code>, which is then inserted into the button in <a href="https://github.com/guygregory/exam-timeline/blob/main/index.html"><code>index.html</code></a></li>
72+
<li>This automation uses the <a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits">GitHub Models quota, included in the GitHub Copilot plans (including free)</a></li>
7373
</ul>
7474
<h3>How it works - Data extraction from Microsoft Learn</h3>
7575
<p>To extract the exam information, the project uses a <a href="https://github.com/guygregory/exam-timeline/blob/main/passed_exams.py">Python script</a> to download the Microsoft certification transcript, based on the <a href="https://learn.microsoft.com/users/me/transcript">Transcript sharing code</a>.</p>
@@ -104,7 +104,7 @@ <h3>How it works - Data extraction from Microsoft Learn</h3>
104104
Guy Gregory
105105
</span>
106106
</span>
107-
<time datetime="2025-07-23T00:00:00+01:00" pubdate>Wed 23 July 2025</time> <span class="categories">
107+
<time datetime="2025-07-31T00:00:00+01:00" pubdate>Thu 31 July 2025</time> <span class="categories">
108108
<a class='category' href='https://pedanticjournal.com/category/blog/'>Blog</a>
109109
</span>
110110
<span class="categories">

docs/feeds/all.atom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<feed xmlns="http://www.w3.org/2005/Atom"><title>Pedantic Journal</title><link href="https://pedanticjournal.com/" rel="alternate"/><link href="https://pedanticjournal.com/feeds/all.atom.xml" rel="self"/><id>https://pedanticjournal.com/</id><updated>2025-07-23T00:00:00+01:00</updated><subtitle>Thoughts on AI and other subjects.</subtitle><entry><title>AI-powered exam dashboard</title><link href="https://pedanticjournal.com/exam-timeline/" rel="alternate"/><published>2025-07-23T00:00:00+01:00</published><updated>2025-07-23T00:00:00+01:00</updated><author><name>Guy Gregory</name></author><id>tag:pedanticjournal.com,2025-07-23:/exam-timeline/</id><summary type="html">&lt;p&gt;How to build yourself a free, AI-powered Microsoft exam dashboard, using Python, GitHub Actions, GitHub Models, and Azure Static Web Apps&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://exams.guygregory.com"&gt;&lt;img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /&gt;&lt;/a&gt;&lt;/p&gt;
2+
<feed xmlns="http://www.w3.org/2005/Atom"><title>Pedantic Journal</title><link href="https://pedanticjournal.com/" rel="alternate"/><link href="https://pedanticjournal.com/feeds/all.atom.xml" rel="self"/><id>https://pedanticjournal.com/</id><updated>2025-07-31T00:00:00+01:00</updated><subtitle>Thoughts on AI and other subjects.</subtitle><entry><title>AI-powered exam dashboard</title><link href="https://pedanticjournal.com/exam-timeline/" rel="alternate"/><published>2025-07-31T00:00:00+01:00</published><updated>2025-07-31T00:00:00+01:00</updated><author><name>Guy Gregory</name></author><id>tag:pedanticjournal.com,2025-07-31:/exam-timeline/</id><summary type="html">&lt;p&gt;How to build yourself a free, AI-powered Microsoft exam dashboard, using Python, GitHub Actions, GitHub Models, and Azure Static Web Apps&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://exams.guygregory.com"&gt;&lt;img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /&gt;&lt;/a&gt;&lt;/p&gt;
33
&lt;p&gt;After over 20 years spent earning Microsoft certifications, and with my recent success on the &lt;a href="https://learn.microsoft.com/credentials/certifications/github-foundations/"&gt;GH-900&lt;/a&gt; exam, I started reflecting on just how far I’ve come. That’s when the idea for &lt;a href="https://github.com/guygregory/exam-timeline"&gt;&lt;code&gt;exam-timeline&lt;/code&gt;&lt;/a&gt; was born. I wanted a fun, interactive way to visualise my certification journey and to try building a simple AI app that used LLMs from &lt;a href="https://gh.io/models"&gt;GitHub Models&lt;/a&gt;.&lt;/p&gt;
44
&lt;p&gt;The initial prototype came together in under half an hour of vibe-coding, thanks to &lt;a href="https://github.com/copilot"&gt;GitHub Copilot&lt;/a&gt; for the coding assist and using the Free tier of &lt;a href="https://learn.microsoft.com/azure/static-web-apps/overview"&gt;Azure Static Web Apps&lt;/a&gt; for the super-quick deployment and tight GitHub integration. From there, I spent a few more hours automating the extraction of exam data, and wiring up &lt;a href="https://docs.github.com/en/actions"&gt;GitHub Actions&lt;/a&gt; - mainly delegating the hard work to the &lt;a href="https://docs.github.com/en/copilot/how-tos/agents/copilot-coding-agent"&gt;GitHub Coding Agent&lt;/a&gt;. A few days later, I added the "AI recommendation" feature, using a few lines of Python. The end result is a project that’s both personal and practical, with a workflow that anyone can replicate.&lt;/p&gt;
55
&lt;h3&gt;How it works - AI-powered recommendation via GitHub Models&lt;/h3&gt;
@@ -11,8 +11,8 @@
1111
&lt;li&gt;The script uses OpenAI's gpt-4o model, which is hosted by GitHub Models (on Azure AI)&lt;/li&gt;
1212
&lt;li&gt;Because this script is called directly from GitHub Actions, &lt;a href="https://docs.github.com/en/github-models/use-github-models/integrating-ai-models-into-your-development-workflow#using-ai-models-with-github-actions"&gt;auth works seamlessly&lt;/a&gt;. I only had to add &lt;code&gt;models: read&lt;/code&gt; into the &lt;code&gt;permissions&lt;/code&gt; section of the workflow for it to work.&lt;/li&gt;
1313
&lt;li&gt;In order to return a consistent response, &lt;a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;amp;pivots=programming-language-python"&gt;Structured Outputs&lt;/a&gt; are used with the &lt;a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;amp;pivots=programming-language-python#supported-schemas-and-limitations"&gt;enum type&lt;/a&gt; to only return an answer from the &lt;a href="https://github.com/guygregory/exam-timeline/blob/main/priority_ARB_exams.csv"&gt;list of prioritised exams&lt;/a&gt;.&lt;/li&gt;
14-
&lt;li&gt;Leverages the &lt;a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits"&gt;GitHub Models quota, included in the GitHub Copilot plans (including free)&lt;/a&gt;&lt;/li&gt;
1514
&lt;li&gt;The output of this script is a JSON object which includes the recommendation: &lt;code&gt;{"exam_code":"AZ-305"}&lt;/code&gt;, which is then inserted into the button in &lt;a href="https://github.com/guygregory/exam-timeline/blob/main/index.html"&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
15+
&lt;li&gt;This automation uses the &lt;a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits"&gt;GitHub Models quota, included in the GitHub Copilot plans (including free)&lt;/a&gt;&lt;/li&gt;
1616
&lt;/ul&gt;
1717
&lt;h3&gt;How it works - Data extraction from Microsoft Learn&lt;/h3&gt;
1818
&lt;p&gt;To extract the exam information, the project uses a &lt;a href="https://github.com/guygregory/exam-timeline/blob/main/passed_exams.py"&gt;Python script&lt;/a&gt; to download the Microsoft certification transcript, based on the &lt;a href="https://learn.microsoft.com/users/me/transcript"&gt;Transcript sharing code&lt;/a&gt;.&lt;/p&gt;

docs/feeds/blog.atom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<feed xmlns="http://www.w3.org/2005/Atom"><title>Pedantic Journal - Blog</title><link href="https://pedanticjournal.com/" rel="alternate"/><link href="https://pedanticjournal.com/feeds/blog.atom.xml" rel="self"/><id>https://pedanticjournal.com/</id><updated>2025-07-23T00:00:00+01:00</updated><subtitle>Thoughts on AI and other subjects.</subtitle><entry><title>AI-powered exam dashboard</title><link href="https://pedanticjournal.com/exam-timeline/" rel="alternate"/><published>2025-07-23T00:00:00+01:00</published><updated>2025-07-23T00:00:00+01:00</updated><author><name>Guy Gregory</name></author><id>tag:pedanticjournal.com,2025-07-23:/exam-timeline/</id><summary type="html">&lt;p&gt;How to build yourself a free, AI-powered Microsoft exam dashboard, using Python, GitHub Actions, GitHub Models, and Azure Static Web Apps&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://exams.guygregory.com"&gt;&lt;img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /&gt;&lt;/a&gt;&lt;/p&gt;
2+
<feed xmlns="http://www.w3.org/2005/Atom"><title>Pedantic Journal - Blog</title><link href="https://pedanticjournal.com/" rel="alternate"/><link href="https://pedanticjournal.com/feeds/blog.atom.xml" rel="self"/><id>https://pedanticjournal.com/</id><updated>2025-07-31T00:00:00+01:00</updated><subtitle>Thoughts on AI and other subjects.</subtitle><entry><title>AI-powered exam dashboard</title><link href="https://pedanticjournal.com/exam-timeline/" rel="alternate"/><published>2025-07-31T00:00:00+01:00</published><updated>2025-07-31T00:00:00+01:00</updated><author><name>Guy Gregory</name></author><id>tag:pedanticjournal.com,2025-07-31:/exam-timeline/</id><summary type="html">&lt;p&gt;How to build yourself a free, AI-powered Microsoft exam dashboard, using Python, GitHub Actions, GitHub Models, and Azure Static Web Apps&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://exams.guygregory.com"&gt;&lt;img width="2217" height="1503" alt="image" src="https://github.com/user-attachments/assets/3aef88b7-aa2e-4d25-9d3b-b0d76bdd7766" /&gt;&lt;/a&gt;&lt;/p&gt;
33
&lt;p&gt;After over 20 years spent earning Microsoft certifications, and with my recent success on the &lt;a href="https://learn.microsoft.com/credentials/certifications/github-foundations/"&gt;GH-900&lt;/a&gt; exam, I started reflecting on just how far I’ve come. That’s when the idea for &lt;a href="https://github.com/guygregory/exam-timeline"&gt;&lt;code&gt;exam-timeline&lt;/code&gt;&lt;/a&gt; was born. I wanted a fun, interactive way to visualise my certification journey and to try building a simple AI app that used LLMs from &lt;a href="https://gh.io/models"&gt;GitHub Models&lt;/a&gt;.&lt;/p&gt;
44
&lt;p&gt;The initial prototype came together in under half an hour of vibe-coding, thanks to &lt;a href="https://github.com/copilot"&gt;GitHub Copilot&lt;/a&gt; for the coding assist and using the Free tier of &lt;a href="https://learn.microsoft.com/azure/static-web-apps/overview"&gt;Azure Static Web Apps&lt;/a&gt; for the super-quick deployment and tight GitHub integration. From there, I spent a few more hours automating the extraction of exam data, and wiring up &lt;a href="https://docs.github.com/en/actions"&gt;GitHub Actions&lt;/a&gt; - mainly delegating the hard work to the &lt;a href="https://docs.github.com/en/copilot/how-tos/agents/copilot-coding-agent"&gt;GitHub Coding Agent&lt;/a&gt;. A few days later, I added the "AI recommendation" feature, using a few lines of Python. The end result is a project that’s both personal and practical, with a workflow that anyone can replicate.&lt;/p&gt;
55
&lt;h3&gt;How it works - AI-powered recommendation via GitHub Models&lt;/h3&gt;
@@ -11,8 +11,8 @@
1111
&lt;li&gt;The script uses OpenAI's gpt-4o model, which is hosted by GitHub Models (on Azure AI)&lt;/li&gt;
1212
&lt;li&gt;Because this script is called directly from GitHub Actions, &lt;a href="https://docs.github.com/en/github-models/use-github-models/integrating-ai-models-into-your-development-workflow#using-ai-models-with-github-actions"&gt;auth works seamlessly&lt;/a&gt;. I only had to add &lt;code&gt;models: read&lt;/code&gt; into the &lt;code&gt;permissions&lt;/code&gt; section of the workflow for it to work.&lt;/li&gt;
1313
&lt;li&gt;In order to return a consistent response, &lt;a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;amp;pivots=programming-language-python"&gt;Structured Outputs&lt;/a&gt; are used with the &lt;a href="https://learn.microsoft.com/azure/ai-foundry/openai/how-to/structured-outputs?tabs=python-secure%2Cdotnet-entra-id&amp;amp;pivots=programming-language-python#supported-schemas-and-limitations"&gt;enum type&lt;/a&gt; to only return an answer from the &lt;a href="https://github.com/guygregory/exam-timeline/blob/main/priority_ARB_exams.csv"&gt;list of prioritised exams&lt;/a&gt;.&lt;/li&gt;
14-
&lt;li&gt;Leverages the &lt;a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits"&gt;GitHub Models quota, included in the GitHub Copilot plans (including free)&lt;/a&gt;&lt;/li&gt;
1514
&lt;li&gt;The output of this script is a JSON object which includes the recommendation: &lt;code&gt;{"exam_code":"AZ-305"}&lt;/code&gt;, which is then inserted into the button in &lt;a href="https://github.com/guygregory/exam-timeline/blob/main/index.html"&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
15+
&lt;li&gt;This automation uses the &lt;a href="https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits"&gt;GitHub Models quota, included in the GitHub Copilot plans (including free)&lt;/a&gt;&lt;/li&gt;
1616
&lt;/ul&gt;
1717
&lt;h3&gt;How it works - Data extraction from Microsoft Learn&lt;/h3&gt;
1818
&lt;p&gt;To extract the exam information, the project uses a &lt;a href="https://github.com/guygregory/exam-timeline/blob/main/passed_exams.py"&gt;Python script&lt;/a&gt; to download the Microsoft certification transcript, based on the &lt;a href="https://learn.microsoft.com/users/me/transcript"&gt;Transcript sharing code&lt;/a&gt;.&lt;/p&gt;

0 commit comments

Comments
 (0)