<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Joshua Does Things</title><link>https://blog.joshua-does-things.com/</link><description>Recent content on Joshua Does Things</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.joshua-does-things.com/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://blog.joshua-does-things.com/about/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.joshua-does-things.com/about/</guid><description>&lt;p&gt;Hey, I&amp;rsquo;m Joshua. I&amp;rsquo;m a DevOps professional and a nerd layperson based in the US.&lt;/p&gt;
&lt;p&gt;I built this site as a place to document my work, share things I&amp;rsquo;ve learned, and maintain my own long-lived notes and documentation.&lt;/p&gt;
&lt;p&gt;Feel free to reach out on &lt;a href="https://github.com/joshuahargrove" class="external-link" target="_blank" rel="noopener"&gt;GitHub&lt;/a&gt; or &lt;a href="https://www.linkedin.com/in/joshua-hargrove-78340272/" class="external-link" target="_blank" rel="noopener"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blog Infrastructure</title><link>https://blog.joshua-does-things.com/docs/blog-infrastructure/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.joshua-does-things.com/docs/blog-infrastructure/</guid><description>&lt;h2 id="overview"&gt;
 Overview
 &lt;a class="heading-link" href="#overview"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This site is a statically generated Hugo blog hosted on AWS, deployed automatically via GitHub Actions on every push to &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Write Markdown → push to main → GitHub Actions builds Hugo → syncs to S3 → CloudFront serves it
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="architecture"&gt;
 Architecture
 &lt;a class="heading-link" href="#architecture"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Static site generator — turns Markdown into HTML&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;S3&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Stores the built HTML/CSS/JS files&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;CloudFront&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CDN — serves the site over HTTPS globally&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ACM&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;TLS certificate for &lt;code&gt;blog.joshua-does-things.com&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;DNS — CNAME pointing to CloudFront (DNS-only, not proxied)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CI/CD — builds and deploys on push to &lt;code&gt;main&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Spacelift&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Manages Terraform state and infrastructure changes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="why-cloudfront-in-front-of-s3"&gt;
 Why CloudFront in front of S3?
 &lt;a class="heading-link" href="#why-cloudfront-in-front-of-s3"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;S3 static website hosting only supports HTTP. CloudFront provides HTTPS, a global CDN cache, and lets us use a custom domain with a proper TLS cert.&lt;/p&gt;</description></item><item><title>Hello World</title><link>https://blog.joshua-does-things.com/posts/hello-world/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.joshua-does-things.com/posts/hello-world/</guid><description>&lt;p&gt;Lookit that first post.&lt;/p&gt;</description></item></channel></rss>