<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Screeching Into The Void</title>
<link>https://screechingintothevoid.com/</link>
<atom:link href="https://screechingintothevoid.com/index.xml" rel="self" type="application/rss+xml"/>
<description></description>
<generator>quarto-1.8.27</generator>
<lastBuildDate>Tue, 17 Mar 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Hello World: How This Blog Was Built</title>
  <dc:creator>Ishaat Chowdhury</dc:creator>
  <link>https://screechingintothevoid.com/posts/2026/001-hello-world/</link>
  <description><![CDATA[ 





<div class="callout callout-style-default callout-caution callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Caution</span>AI-Generated Content
</div>
</div>
<div class="callout-body-container callout-body">
<p>This post was entirely generated by AI (GitHub Copilot). It exists solely to test the site’s rendering pipeline and will remain as a transparent artifact of the blog’s setup process. All subsequent posts on this blog are written by a human.</p>
</div>
</div>
<section id="introduction" class="level2">
<h2 class="anchored" data-anchor-id="introduction">Introduction</h2>
<p>Every blog needs a first post, and what better way to break in a new site than to document how it was built? This post walks through the architecture and tooling behind <em>Screeching Into The Void</em> — a blog built for long-form written content like book reviews and essays, where academic-style citations are a first-class feature.</p>
<p>The stack is straightforward: <strong>Quarto</strong> for authoring and static site generation,<span class="citation" data-cites="QuartoBlog2024"><sup>1</sup></span> <strong>GitHub Actions</strong> for continuous integration,<span class="citation" data-cites="GitHubActions2024"><sup>2</sup></span> and <strong>CloudFlare Pages</strong> for hosting.<span class="citation" data-cites="CloudflarePages2024"><sup>3</sup></span></p>
</section>
<section id="why-quarto" class="level2">
<h2 class="anchored" data-anchor-id="why-quarto">Why Quarto?</h2>
<p>Quarto is an open-source scientific and technical publishing system that turns markdown into polished HTML, PDF, and other formats.<span class="citation" data-cites="QuartoBlog2024"><sup>4</sup></span> For a blog focused on long-form writing, Quarto offers several advantages over other static site generators:</p>
<ol type="1">
<li><p><strong>Native citation support.</strong> Quarto uses Pandoc’s citation engine under the hood, which means you can write <code>[@AuthorKey2024]</code> in your markdown and get properly formatted references in any citation style.<span class="citation" data-cites="QuartoCitations2024"><sup>5</sup></span> This blog uses the Chicago Notes-Bibliography style, which renders citations as footnotes with a full bibliography at the end — a natural fit for essays and media criticism.</p></li>
<li><p><strong>Bootswatch theme integration.</strong> Quarto ships with 25 Bootswatch themes<span class="citation" data-cites="Bootswatch2024"><sup>6</sup></span> and supports light/dark theme pairing out of the box.<span class="citation" data-cites="QuartoThemes2024"><sup>7</sup></span> This site uses the <em>flatly</em> and <em>darkly</em> pair, which are designed to work together with matching typography and spacing.</p></li>
<li><p><strong>Markdown-first workflow.</strong> Posts are plain <code>.qmd</code> files (Quarto-flavored markdown) with YAML front matter. No JavaScript framework, no build toolchain beyond Quarto itself.</p></li>
</ol>
</section>
<section id="architecture" class="level2">
<h2 class="anchored" data-anchor-id="architecture">Architecture</h2>
<p>The deployment pipeline follows a pattern that Quarto’s CI documentation describes as “Local Execution with CI Rendering”<span class="citation" data-cites="QuartoCI2024"><sup>8</sup></span> — though in this case there’s no computational code to execute locally, since all posts are pure prose.</p>
<pre><code>┌─────────────┐     ┌───────────────┐     ┌──────────────┐
│ Write .qmd  │────▶│ GitHub Actions│────▶│ CloudFlare   │
│ + refs.bib  │     │ quarto render │     │ Pages        │
│ git push    │     │ pages-action  │     │ serves _site │
└─────────────┘     └───────────────┘     └──────────────┘</code></pre>
<section id="why-not-cloudflare-pages-built-in-build" class="level3">
<h3 class="anchored" data-anchor-id="why-not-cloudflare-pages-built-in-build">Why not CloudFlare Pages’ built-in build?</h3>
<p>CloudFlare Pages can build sites directly from source, but Quarto isn’t in its default build environment. While you <em>can</em> install Quarto via a custom build command, using GitHub Actions with the official Quarto setup action<span class="citation" data-cites="QuartoActions2024"><sup>9</sup></span> gives better control over the build environment, version pinning, and failure diagnostics.</p>
<p>The workflow is minimal — install Quarto, render the site, and deploy the <code>_site/</code> directory using CloudFlare’s own GitHub Action:<span class="citation" data-cites="CloudflarePagesAction2024"><sup>10</sup></span></p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode yaml code-with-copy"><code class="sourceCode yaml"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">steps</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb2-2"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">uses</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> actions/checkout@v4</span></span>
<span id="cb2-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">uses</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> quarto-dev/quarto-actions/setup@v2</span></span>
<span id="cb2-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">run</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> quarto render</span></span>
<span id="cb2-5"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">uses</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> cloudflare/pages-action@v1</span></span>
<span id="cb2-6"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">with</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb2-7"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">apiToken</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> ${{ secrets.CLOUDFLARE_API_TOKEN }}</span></span>
<span id="cb2-8"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">accountId</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}</span></span>
<span id="cb2-9"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">projectName</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> screechingintothevoid</span></span>
<span id="cb2-10"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">directory</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> _site</span></span></code></pre></div></div>
<p>This also enables <strong>PR preview deploys</strong> — every pull request gets its own CloudFlare Pages preview URL, which is useful for reviewing draft posts before they go live.</p>
</section>
<section id="why-cloudflare-pages-specifically" class="level3">
<h3 class="anchored" data-anchor-id="why-cloudflare-pages-specifically">Why CloudFlare Pages specifically?</h3>
<p>CloudFlare Pages is a static site hosting platform that serves content from CloudFlare’s global CDN.<span class="citation" data-cites="CloudflarePages2024"><sup>11</sup></span> Beyond the standard static hosting features, it supports deploying any static HTML output,<span class="citation" data-cites="CloudflarePagesStaticHTML2024"><sup>12</sup></span> which is exactly what Quarto produces. The platform’s AI bot blocking capabilities and broader security features were the deciding factor over alternatives like Netlify or GitHub Pages.</p>
</section>
</section>
<section id="site-structure" class="level2">
<h2 class="anchored" data-anchor-id="site-structure">Site Structure</h2>
<p>The blog uses a date-organized directory structure for posts:</p>
<pre><code>posts/
└── 2026/
    ├── 001-hello-world/
    │   ├── index.qmd
    │   └── refs.bib
    └── 002-next-post/
        ├── index.qmd
        └── refs.bib</code></pre>
<p>Year folders provide top-level grouping, and three-digit zero-padded sequence numbers give filesystem ordering within each year. This is a deliberate trade-off: Quarto’s URLs are tied directly to the filesystem path,<span class="citation" data-cites="QuartoBlog2024"><sup>13</sup></span> so the directory structure <em>is</em> the URL structure. The resulting URLs look like <code>/posts/2026/001-hello-world/</code>.</p>
<p>The home page uses Quarto’s listing feature<span class="citation" data-cites="QuartoListings2024"><sup>14</sup></span> with a recursive glob pattern to discover all posts regardless of nesting depth:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode yaml code-with-copy"><code class="sourceCode yaml"><span id="cb4-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">listing</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb4-2"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">contents</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"posts/**/index.qmd"</span></span>
<span id="cb4-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sort</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"date desc"</span></span>
<span id="cb4-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">type</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> default</span></span>
<span id="cb4-5"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">categories</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">true</span></span></code></pre></div></div>
<p>Navigation is kept minimal — just a top navbar<span class="citation" data-cites="QuartoNavigation2024"><sup>15</sup></span> with the site title, an About page link, search, and the automatic light/dark theme toggle. No sidebars, no complex hierarchy. It’s a blog, not a documentation site.</p>
</section>
<section id="citations-and-the-chicago-notes-bibliography-style" class="level2">
<h2 class="anchored" data-anchor-id="citations-and-the-chicago-notes-bibliography-style">Citations and the Chicago Notes-Bibliography Style</h2>
<p>Each post gets its own <code>refs.bib</code> file containing BibTeX entries for that post’s references. A shared <code>posts/_metadata.yml</code> file sets the citation style globally using the Chicago Notes-Bibliography CSL file,<span class="citation" data-cites="CSLStyles2024"><sup>16</sup></span> so individual posts don’t need to repeat the configuration.</p>
<p>The Chicago Notes-Bibliography style was chosen because its footnote-based format is the standard for humanities writing — essays, literary criticism, and media analysis. Citations appear as numbered footnotes that expand into full references in a bibliography at the end, keeping the prose clean while providing rich source detail.<span class="citation" data-cites="QuartoCitations2024"><sup>17</sup></span></p>
</section>
<section id="post-scaffolding" class="level2">
<h2 class="anchored" data-anchor-id="post-scaffolding">Post Scaffolding</h2>
<p>New posts are created with a single command using mise,<span class="citation" data-cites="MiseTaskRunner2024"><sup>18</sup></span> a polyglot task runner:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb5-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">mise</span> run new-post <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"My Post Title"</span></span></code></pre></div></div>
<p>This runs a bash script that auto-detects the current year, finds the next sequence number, slugifies the title, and creates the directory with a boilerplate <code>index.qmd</code> and empty <code>refs.bib</code>. Posts are created as drafts by default — set <code>draft: false</code> in the front matter when ready to publish.</p>
</section>
<section id="how-this-blog-was-actually-built-spec-driven-development-with-openspec" class="level2">
<h2 class="anchored" data-anchor-id="how-this-blog-was-actually-built-spec-driven-development-with-openspec">How This Blog Was Actually Built: Spec-Driven Development with OpenSpec</h2>
<p>The entire setup described in this post — every config file, workflow, and script — was implemented by an AI coding assistant (GitHub Copilot)<span class="citation" data-cites="GitHubCopilot2024"><sup>19</sup></span> following a structured specification process using OpenSpec.<span class="citation" data-cites="OpenSpec2025"><sup>20</sup></span></p>
<section id="what-is-openspec" class="level3">
<h3 class="anchored" data-anchor-id="what-is-openspec">What is OpenSpec?</h3>
<p>OpenSpec is a lightweight, open-source framework for spec-driven development with AI coding assistants.<span class="citation" data-cites="OpenSpecDocs2025"><sup>21</sup></span> The core idea is simple: before any code is written, the human and the AI align on <em>what</em> needs to be built through a series of structured artifacts — a proposal, design document, detailed specifications, and an implementation task list. This stands in contrast to “vibe coding,” where you prompt an AI and hope for the best.</p>
<p>OpenSpec uses a two-folder model:<span class="citation" data-cites="OpenSpec2025"><sup>22</sup></span> <code>openspec/specs/</code> holds the current state of the system’s specifications, while <code>openspec/changes/</code> holds proposed changes that are in progress. Each change follows a schema (in this case, <code>spec-driven</code>) that defines the artifact pipeline:</p>
<pre><code>proposal.md → design.md + specs/**/*.md → tasks.md → implementation</code></pre>
</section>
<section id="how-the-conversation-went" class="level3">
<h3 class="anchored" data-anchor-id="how-the-conversation-went">How the Conversation Went</h3>
<p>The process started with an <strong>explore</strong> session — an interactive conversation where the human described what they wanted (a Quarto blog on CloudFlare Pages with academic citations) and the AI researched the feasibility, surfaced trade-offs, and helped make design decisions. Key decisions were made collaboratively:</p>
<ol type="1">
<li><strong>Deployment strategy</strong>: GitHub Actions + <code>cloudflare/pages-action</code> over CloudFlare’s built-in build (because Quarto isn’t in CF’s default build image).</li>
<li><strong>Theme</strong>: Flatly/darkly pair with automatic toggle.</li>
<li><strong>Citation style</strong>: Chicago Notes-Bibliography (footnotes + bibliography) with per-post <code>.bib</code> files.</li>
<li><strong>URL structure</strong>: <code>posts/{year}/{NNN}-{slug}/</code> after exploring and rejecting full date nesting (<code>YYYY/MM/DD/slug</code>) as too deep for the publishing frequency.</li>
<li><strong>Post scaffolding</strong>: mise task over a plain shell script, since mise was already in use.</li>
</ol>
<p>Once all decisions were locked in, OpenSpec’s <strong>propose</strong> workflow generated the formal artifacts:</p>
<ul>
<li><strong><code>proposal.md</code></strong> — The “why”: a blog for long-form content with citations, deployed to CloudFlare Pages.</li>
<li><strong><code>design.md</code></strong> — The “how”: five key technical decisions with rationale and alternatives considered.</li>
<li><strong><code>specs/</code></strong> — Four capability specifications (<code>blog-scaffold</code>, <code>citation-system</code>, <code>deployment-pipeline</code>, <code>post-authoring</code>), each with testable requirements written in <code>SHALL</code>/<code>MUST</code> language and <code>WHEN</code>/<code>THEN</code> scenarios.</li>
<li><strong><code>tasks.md</code></strong> — 17 implementation tasks grouped into five phases, each a checkbox that the AI works through sequentially.</li>
</ul>
</section>
<section id="why-this-matters" class="level3">
<h3 class="anchored" data-anchor-id="why-this-matters">Why This Matters</h3>
<p>The spec-driven approach had a concrete benefit: every file in this repository traces back to a requirement in a spec, which traces back to a decision in the design, which traces back to the motivation in the proposal. When the AI implemented the tasks, it wasn’t guessing — it was following a contract that both parties had agreed to.</p>
<p>For example, the <code>scripts/new-post.sh</code> script exists because of this requirement in <code>specs/post-authoring/spec.md</code>:</p>
<blockquote class="blockquote">
<p>The task SHALL automatically determine the current year and the next available 3-digit zero-padded sequence number within that year’s directory.</p>
</blockquote>
<p>And the <code>chicago-notes-bibliography.csl</code> file at the project root exists because of this design decision:</p>
<blockquote class="blockquote">
<p>Download <code>chicago-notes-bibliography.csl</code> to the project root, reference it from <code>posts/_metadata.yml</code> so all posts inherit it.</p>
</blockquote>
<p>The OpenSpec artifacts for this change live in <code>openspec/changes/quarto-blog-setup/</code> and are committed to the repository — you can read the full proposal, design, specs, and task list to see exactly how the conversation between human and AI was structured.</p>
</section>
</section>
<section id="whats-next" class="level2">
<h2 class="anchored" data-anchor-id="whats-next">What’s Next</h2>
<p>With the infrastructure in place, the focus shifts to what matters: writing. Future posts will cover book reviews, essays, and other long-form explorations — all written by a human, with citations.</p>



</section>


<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent">
<div id="ref-CSLStyles2024" class="csl-entry">
Citation Style Language. <span>“Citation Style Language Styles Repository.”</span> 2024. <a href="https://github.com/citation-style-language/styles">https://github.com/citation-style-language/styles</a>.
</div>
<div id="ref-CloudflarePages2024" class="csl-entry">
Cloudflare. <span>“Cloudflare Pages Documentation.”</span> 2024. <a href="https://developers.cloudflare.com/pages/">https://developers.cloudflare.com/pages/</a>.
</div>
<div id="ref-CloudflarePagesStaticHTML2024" class="csl-entry">
Cloudflare. <span>“Deploy a Static HTML Site to Cloudflare Pages.”</span> 2024. <a href="https://developers.cloudflare.com/pages/framework-guides/deploy-anything/">https://developers.cloudflare.com/pages/framework-guides/deploy-anything/</a>.
</div>
<div id="ref-CloudflarePagesAction2024" class="csl-entry">
Cloudflare. <span>“GitHub Action for Cloudflare Pages.”</span> 2024. <a href="https://github.com/cloudflare/pages-action">https://github.com/cloudflare/pages-action</a>.
</div>
<div id="ref-OpenSpecDocs2025" class="csl-entry">
Fission AI. <span>“OpenSpec Documentation.”</span> 2025. <a href="https://openspec.dev/">https://openspec.dev/</a>.
</div>
<div id="ref-OpenSpec2025" class="csl-entry">
Fission AI. <span>“OpenSpec: Spec-Driven Development for AI Coding Assistants.”</span> 2025. <a href="https://github.com/Fission-AI/OpenSpec">https://github.com/Fission-AI/OpenSpec</a>.
</div>
<div id="ref-GitHubActions2024" class="csl-entry">
GitHub. <span>“GitHub Actions Documentation.”</span> 2024. <a href="https://docs.github.com/en/actions">https://docs.github.com/en/actions</a>.
</div>
<div id="ref-GitHubCopilot2024" class="csl-entry">
GitHub. <span>“GitHub Copilot Documentation.”</span> 2024. <a href="https://docs.github.com/en/copilot">https://docs.github.com/en/copilot</a>.
</div>
<div id="ref-MiseTaskRunner2024" class="csl-entry">
mise Contributors. <span>“Mise-En-Place: Tasks.”</span> 2024. <a href="https://mise.jdx.dev/tasks/">https://mise.jdx.dev/tasks/</a>.
</div>
<div id="ref-Bootswatch2024" class="csl-entry">
Park, Thomas. <span>“Bootswatch: Free Themes for Bootstrap.”</span> 2024. <a href="https://bootswatch.com/">https://bootswatch.com/</a>.
</div>
<div id="ref-QuartoCitations2024" class="csl-entry">
Quarto Development Team. <span>“Citations and Footnotes.”</span> 2024. <a href="https://quarto.org/docs/authoring/citations.html">https://quarto.org/docs/authoring/citations.html</a>.
</div>
<div id="ref-QuartoBlog2024" class="csl-entry">
Quarto Development Team. <span>“Creating a Blog.”</span> 2024. <a href="https://quarto.org/docs/websites/website-blog.html">https://quarto.org/docs/websites/website-blog.html</a>.
</div>
<div id="ref-QuartoListings2024" class="csl-entry">
Quarto Development Team. <span>“Document Listings.”</span> 2024. <a href="https://quarto.org/docs/websites/website-listings.html">https://quarto.org/docs/websites/website-listings.html</a>.
</div>
<div id="ref-QuartoActions2024" class="csl-entry">
Quarto Development Team. <span>“GitHub Actions for Quarto.”</span> 2024. <a href="https://github.com/quarto-dev/quarto-actions">https://github.com/quarto-dev/quarto-actions</a>.
</div>
<div id="ref-QuartoThemes2024" class="csl-entry">
Quarto Development Team. <span>“HTML Theming.”</span> 2024. <a href="https://quarto.org/docs/output-formats/html-themes.html">https://quarto.org/docs/output-formats/html-themes.html</a>.
</div>
<div id="ref-QuartoCI2024" class="csl-entry">
Quarto Development Team. <span>“Publishing with CI.”</span> 2024. <a href="https://quarto.org/docs/publishing/ci.html">https://quarto.org/docs/publishing/ci.html</a>.
</div>
<div id="ref-QuartoNavigation2024" class="csl-entry">
Quarto Development Team. <span>“Website Navigation.”</span> 2024. <a href="https://quarto.org/docs/websites/website-navigation.html">https://quarto.org/docs/websites/website-navigation.html</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>Quarto Development Team, <span>“Creating a Blog,”</span> 2024, <span>https://quarto.org/docs/websites/website-blog.html</span>.↩︎</p></li>
<li id="fn2"><p>GitHub, <span>“GitHub Actions Documentation,”</span> 2024, <span>https://docs.github.com/en/actions</span>.↩︎</p></li>
<li id="fn3"><p>Cloudflare, <span>“Cloudflare Pages Documentation,”</span> 2024, <span>https://developers.cloudflare.com/pages/</span>.↩︎</p></li>
<li id="fn4"><p>Quarto Development Team, <span>“Creating a Blog”</span>.↩︎</p></li>
<li id="fn5"><p>Quarto Development Team, <span>“Citations and Footnotes,”</span> 2024, <span>https://quarto.org/docs/authoring/citations.html</span>.↩︎</p></li>
<li id="fn6"><p>Thomas Park, <span>“Bootswatch: Free Themes for Bootstrap,”</span> 2024, <span>https://bootswatch.com/</span>.↩︎</p></li>
<li id="fn7"><p>Quarto Development Team, <span>“HTML Theming,”</span> 2024, <span>https://quarto.org/docs/output-formats/html-themes.html</span>.↩︎</p></li>
<li id="fn8"><p>Quarto Development Team, <span>“Publishing with CI,”</span> 2024, <span>https://quarto.org/docs/publishing/ci.html</span>.↩︎</p></li>
<li id="fn9"><p>Quarto Development Team, <span>“GitHub Actions for Quarto,”</span> 2024, <span>https://github.com/quarto-dev/quarto-actions</span>.↩︎</p></li>
<li id="fn10"><p>Cloudflare, <span>“GitHub Action for Cloudflare Pages,”</span> 2024, <span>https://github.com/cloudflare/pages-action</span>.↩︎</p></li>
<li id="fn11"><p>Cloudflare, <span>“Cloudflare Pages Documentation”</span>.↩︎</p></li>
<li id="fn12"><p>Cloudflare, <span>“Deploy a Static HTML Site to Cloudflare Pages,”</span> 2024, <span>https://developers.cloudflare.com/pages/framework-guides/deploy-anything/</span>.↩︎</p></li>
<li id="fn13"><p>Quarto Development Team, <span>“Creating a Blog”</span>.↩︎</p></li>
<li id="fn14"><p>Quarto Development Team, <span>“Document Listings,”</span> 2024, <span>https://quarto.org/docs/websites/website-listings.html</span>.↩︎</p></li>
<li id="fn15"><p>Quarto Development Team, <span>“Website Navigation,”</span> 2024, <span>https://quarto.org/docs/websites/website-navigation.html</span>.↩︎</p></li>
<li id="fn16"><p>Citation Style Language, <span>“Citation Style Language Styles Repository,”</span> 2024, <span>https://github.com/citation-style-language/styles</span>.↩︎</p></li>
<li id="fn17"><p>Quarto Development Team, <span>“Citations and Footnotes”</span>.↩︎</p></li>
<li id="fn18"><p>Mise Contributors, <span>“Mise-En-Place: Tasks,”</span> 2024, <span>https://mise.jdx.dev/tasks/</span>.↩︎</p></li>
<li id="fn19"><p>GitHub, <span>“GitHub Copilot Documentation,”</span> 2024, <span>https://docs.github.com/en/copilot</span>.↩︎</p></li>
<li id="fn20"><p>Fission AI, <span>“OpenSpec: Spec-Driven Development for AI Coding Assistants,”</span> 2025, <span>https://github.com/Fission-AI/OpenSpec</span>.↩︎</p></li>
<li id="fn21"><p>Fission AI, <span>“OpenSpec Documentation,”</span> 2025, <span>https://openspec.dev/</span>.↩︎</p></li>
<li id="fn22"><p>Fission AI, <span>“OpenSpec”</span>.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{chowdhury2026,
  author = {Chowdhury, Ishaat},
  title = {Hello {World:} {How} {This} {Blog} {Was} {Built}},
  date = {2026-03-17},
  url = {https://screechingintothevoid.com/posts/2026/001-hello-world/},
  langid = {en}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-chowdhury2026" class="csl-entry quarto-appendix-citeas">
Chowdhury, Ishaat. <span>“Hello World: How This Blog Was Built.”</span>
March 17, 2026. <a href="https://screechingintothevoid.com/posts/2026/001-hello-world/">https://screechingintothevoid.com/posts/2026/001-hello-world/</a>.
</div></div></section></div> ]]></description>
  <guid>https://screechingintothevoid.com/posts/2026/001-hello-world/</guid>
  <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
