
First Post: The Tech That Powers This Blog
July 27, 2025
How This Blog Finally Happened π
I bought this domain in April because my deep-dive notes never seem to stick. I'll obsess over a topic, document every detail, feel sure I will remember, and six months later draw a blank. Too many evenings vanish rebuilding knowledge I already earned.
Everything clicked in June while I was preparing for a guest slot on the Azure & DevOps Podcast. I spun up a simple Azure Static Web App, let the portal scaffold a GitHub Actions workflow, and tried the preview of OpenAI Codex. One prompt, one build, and a blank page suddenly displayed a smooth CSS animation. The rush felt like my first ChatGPT session. From that moment this site became my public tech diary, a single place to keep my research and, if my notes save you a few hours, even better.

What I built, step by step
-
Hello World
Installed Eleventy locally and confirmed a static page could build in under half a second. -
Templates and collections
Added a clean post layout and a posts collection so new articles surface automatically. -
Azure hookup
Used the Azure portal to create the Static Web App. During that process Azure- authenticated with GitHub
- pushed a ready-made workflow file that calls
Azure/static-web-apps-deploy@v1
- added the deployment secret (
AZURE_STATIC_WEB_APPS_API_TOKEN_...
) in Actions secrets
No manual tokens required.
-
Pull request preview, then production
- First pull request against
main
triggered the workflow and Azure spun up a preview site at a temporary URL. - After reviewing the preview I merged the pull request, which ran the same workflow on
main
and published to the primary domain.
- First pull request against
-
Codex polish
Asked Codex for quick CSS fixes, sample posts, and layout refactors. Each task finished in about five minutes. -
Open Graph basics
Added Open Graph and Twitter meta tags plus a default preview image so every shared link shows at least one clean thumbnail.
Why I chose Eleventy
I briefly considered building my own engine in .NET, but that would have delayed writing for weeks. I needed something that let me stay in Markdown, version content in Git, and ship plain HTML. Eleventy met those goals with zero framework overhead. Markdown plus Nunjucks templates give me full control, the output works perfectly on Azure Static Web Apps, and there is no lock-in if I ever migrate. In Domain-Driven Design terms, my Markdown files are the domain layer and Eleventy is just an implementation detail.
Initial commit on July 15, live site on July 27. Twelve days of evening work and my GitHub contribution graph has never looked greener.

Why link previews were tricky
Issue | What happened |
---|---|
Preview URLs are temporary | Pull-request builds served HTML that still pointed meta tags to https://example.com/... |
Validators saw a mismatch | Twitter tried to fetch images from production that were not live yet and failed |
Quick fix β ship one default OG image that already lives on production.
Next steps
- Detect preview builds with the environment variable Azure supplies
- Rewrite
og:image
andog:url
to use the preview hostname during build - Generate unique post images automatically
How Codex fits into the loop

I create a task in the Codex web UI, select the repo and branch, and describe the change. Codex spins up a container, edits the code, runs the Eleventy build, then shows file diffs and a summary. From there I click Create PR and a pull request appears in GitHub. About a minute later the Azure workflow adds a preview link to the PR comments. If the preview looks good I merge. When I need more tweaks I avoid manual commits, use the same task, and give Codex a new instruction. It updates the branch and I hit Update branch in the UI. Manual commits on the PR break the task, so I only edit locally if I plan to archive the task and start a fresh one.
Working with Codex day to day
Codex helps with | Where I still step in |
---|---|
CSS tweaks and layout refactors | Codex cannot push binary files. When it hits the "Binary files are not supported" error the task stops. I commit PNGs manually. See the OpenAI community thread. |
Generating placeholder posts | If I commit directly to the PR branch Codex loses context and the task breaks. I debug locally, then re-prompt Codex so it updates the PR. |
Clear, self-describing commits | I always add run the build to each instruction so the GitHub Actions pipeline passes. Tip from the Azure & DevOps Podcast. |
Average task time is four to five minutes including container start-up.
Real-world hurdles and lessons
-
Broken preview builds
Early PR builds failed often. Instead of patching locally and breaking Codex, I reran the task with clearer instructions so the task stayed intact. -
Link previews that would not load
Meta tags pointed to production, so OG images failed in preview sites. For now I test cards in production and rely on the default image until the automated preview solution is ready.
Portable content and Domain-Driven Design
Posts live in Markdown with YAML front matter. Markdown acts as the domain layer: independent, durable, and easy to move to any future framework.
The stack at a glance
- Hosting β Azure Static Web Apps free tier with a global CDN and three preview environments
- Generator β Eleventy Markdown-first with no client JavaScript
- Repository β GitHub pull-request workflow I already know
- CI/CD β GitHub Actions with Azureβs template handling the heavy lifting
Cloud cost so far: only the yearly domain fee.
Whatβs next
- Smarter per-post Open Graph images
- C# deep dives, DevOps experiments, and other research I refuse to lose again
Call to action: Share this post on X or LinkedIn and watch the link preview appear. If the card looks odd please let me know so I can improve it.
Thanks for reading and see you in the next post!