<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>An example built with crofty</title>
		<link>https://demo.crofty.site/</link>
		<description>Recent content on An example built with crofty</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Sat, 13 Jun 2026 19:00:00 +0900</lastBuildDate>
		
			<atom:link href="https://demo.crofty.site/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Music notation with abc.js</title>
				<link>https://demo.crofty.site/posts/music-notation-with-abc/</link>
				<pubDate>Sat, 13 Jun 2026 19:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/music-notation-with-abc/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://abcnotation.com/&#34;&gt;ABC notation&lt;/a&gt; is a plain-text way to write music. A&#xA;project render hook (&lt;code&gt;render-codeblock-abc&lt;/code&gt;) feeds an &lt;code&gt;abc&lt;/code&gt; fenced code block to&#xA;&lt;a href=&#34;https://www.abcjs.net/&#34;&gt;abc.js&lt;/a&gt;, which engraves the score and adds a play&#xA;button — all in the browser, from text in your post.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-simple-tune&#34;&gt;A simple tune&lt;/h2&gt;&#xA;&lt;figure class=&#34;abc-block&#34;&gt;&#xA;  &lt;div id=&#34;abc-0-paper&#34; class=&#34;abc-paper&#34;&gt;&lt;/div&gt;&#xA;  &lt;div id=&#34;abc-0-audio&#34; class=&#34;abc-audio&#34;&gt;&lt;/div&gt;&#xA;  &lt;script type=&#34;text/vnd.abc&#34; id=&#34;abc-0-src&#34;&gt;X:1&#xA;T:Cooley&#39;s&#xA;M:4/4&#xA;L:1/8&#xA;R:reel&#xA;K:Emin&#xA;D2|EBBA B2 EB|B2 AB dBAG|FDAD BDAD|FDAD dAFD|&#xA;EBBA B2 EB|B2 AB defg|afe^c dBAF|DEFD E2:|&lt;/script&gt;&#xA;  &lt;script&gt;&#xA;  (function () {&#xA;    function render() {&#xA;      var src = document.getElementById(&#34;abc-0-src&#34;).textContent;&#xA;      var visual = ABCJS.renderAbc(&#34;abc-0-paper&#34;, src, { responsive: &#34;resize&#34; })[0];&#xA;      if (ABCJS.synth &amp;&amp; ABCJS.synth.supportsAudio()) {&#xA;        var ctl = new ABCJS.synth.SynthController();&#xA;        ctl.load(&#34;#abc-0-audio&#34;, null, { displayPlay: true, displayProgress: true });&#xA;        ctl.setTune(visual, false);&#xA;      } else {&#xA;        document.getElementById(&#34;abc-0-audio&#34;).textContent =&#xA;          &#34;Audio playback is not supported in this browser.&#34;;&#xA;      }&#xA;    }&#xA;    if (window.ABCJS) { render(); }&#xA;    else { (window.__abcQueue = window.__abcQueue || []).push(render); }&#xA;  })();&#xA;  &lt;/script&gt;&#xA;&lt;/figure&gt;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdn.jsdelivr.net/npm/abcjs@6/abcjs-audio.css&#34;&gt;&#xA;&lt;script&#xA;  src=&#34;https://cdn.jsdelivr.net/npm/abcjs@6/dist/abcjs-basic-min.js&#34;&#xA;  onload=&#34;(window.__abcQueue || []).forEach(function (f) { f(); });&#34;&gt;&lt;/script&gt;&#xA;&lt;h2 id=&#34;a-scale-with-a-different-key-and-metre&#34;&gt;A scale, with a different key and metre&lt;/h2&gt;&#xA;&lt;figure class=&#34;abc-block&#34;&gt;&#xA;  &lt;div id=&#34;abc-1-paper&#34; class=&#34;abc-paper&#34;&gt;&lt;/div&gt;&#xA;  &lt;div id=&#34;abc-1-audio&#34; class=&#34;abc-audio&#34;&gt;&lt;/div&gt;&#xA;  &lt;script type=&#34;text/vnd.abc&#34; id=&#34;abc-1-src&#34;&gt;X:2&#xA;T:C major scale&#xA;M:4/4&#xA;L:1/4&#xA;K:C&#xA;C D E F | G A B c | c B A G | F E D C |]&lt;/script&gt;&#xA;  &lt;script&gt;&#xA;  (function () {&#xA;    function render() {&#xA;      var src = document.getElementById(&#34;abc-1-src&#34;).textContent;&#xA;      var visual = ABCJS.renderAbc(&#34;abc-1-paper&#34;, src, { responsive: &#34;resize&#34; })[0];&#xA;      if (ABCJS.synth &amp;&amp; ABCJS.synth.supportsAudio()) {&#xA;        var ctl = new ABCJS.synth.SynthController();&#xA;        ctl.load(&#34;#abc-1-audio&#34;, null, { displayPlay: true, displayProgress: true });&#xA;        ctl.setTune(visual, false);&#xA;      } else {&#xA;        document.getElementById(&#34;abc-1-audio&#34;).textContent =&#xA;          &#34;Audio playback is not supported in this browser.&#34;;&#xA;      }&#xA;    }&#xA;    if (window.ABCJS) { render(); }&#xA;    else { (window.__abcQueue = window.__abcQueue || []).push(render); }&#xA;  })();&#xA;  &lt;/script&gt;&#xA;&lt;/figure&gt;&#xA;&lt;p&gt;Press play on either score to hear it. The notation stays plain text in your&#xA;Markdown, so it diffs cleanly and survives any platform — the rendering and the&#xA;audio are added by the reader&amp;rsquo;s browser, not baked into a file.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What Markdown looks like here</title>
				<link>https://demo.crofty.site/posts/what-markdown-looks-like/</link>
				<pubDate>Fri, 12 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/what-markdown-looks-like/</guid>
				<description>&lt;p&gt;Everything on this page is written in Markdown. Here is a quick tour of what&#xA;that gives you.&lt;/p&gt;&#xA;&lt;h2 id=&#34;headings-keep-the-structure-clear&#34;&gt;Headings keep the structure clear&lt;/h2&gt;&#xA;&lt;p&gt;Use them to break a longer piece into sections a reader can scan.&lt;/p&gt;&#xA;&lt;p&gt;You get &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italics&lt;/em&gt;, and &lt;code&gt;inline code&lt;/code&gt; without thinking about markup.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Lists are just dashes&lt;/li&gt;&#xA;&lt;li&gt;One item per line&lt;/li&gt;&#xA;&lt;li&gt;Nested points work too&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Block quotes set apart a line worth pausing on.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;For code, fence it:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Code, highlighted</title>
				<link>https://demo.crofty.site/posts/code-with-highlighting/</link>
				<pubDate>Thu, 11 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/code-with-highlighting/</guid>
				<description>&lt;p&gt;Tag a fenced block with its language and Hugo&amp;rsquo;s highlighter (Chroma) colours it.&#xA;This site uses class-based highlighting, so the colours come from&#xA;&lt;code&gt;css/chroma.css&lt;/code&gt; and switch with the reader&amp;rsquo;s light/dark setting.&lt;/p&gt;&#xA;&lt;p&gt;Inline code like &lt;code&gt;crofty build&lt;/code&gt; stays plain. Blocks get the full treatment:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// a tiny program&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello, crofty&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;posts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/index.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;then&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;recent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;posts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;draft&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;slice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`showing &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt; posts`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;word_count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read_text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;word_count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content/posts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;crofty build       &lt;span class=&#34;c1&#34;&gt;# render Markdown to a static site&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;crofty deploy      &lt;span class=&#34;c1&#34;&gt;# push it to your own domain&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;workspace&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;01KV1XEQ26RCK07BFWGZW743K1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;deploy&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;cloudflare&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;project&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;crofty-demo&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A fence with no language stays uncoloured — fine for shell transcripts or plain&#xA;output:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Owning your words</title>
				<link>https://demo.crofty.site/posts/owning-your-words/</link>
				<pubDate>Wed, 10 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/owning-your-words/</guid>
				<description>&lt;p&gt;Most writing on the web lives on someone else&amp;rsquo;s platform. It looks free, but&#xA;the address belongs to them, the audience is rented, and the words can vanish&#xA;when the service does.&lt;/p&gt;&#xA;&lt;p&gt;This blog is the opposite by design. Every post is a Markdown file on disk.&#xA;crofty turns those files into a plain static site and publishes it to a domain&#xA;I own. If I ever want to leave, there is nothing to export and no lock-in — the&#xA;files are already mine, and the site is ordinary Hugo underneath.&lt;/p&gt;</description>
			</item>
			<item>
				<title>On keeping a feed</title>
				<link>https://demo.crofty.site/posts/on-keeping-a-feed/</link>
				<pubDate>Tue, 09 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/on-keeping-a-feed/</guid>
				<description>&lt;p&gt;A feed is the oldest way to follow a site, and still the kindest. No login, no app, no algorithm deciding what you see. You subscribe, and new posts arrive in whatever reader you already use.&lt;/p&gt;&#xA;&lt;p&gt;I keep one here because I want the relationship to be direct. If you like what I write, you can take the address and walk away with it. Nothing sits in the middle, deciding whether my words reach you.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Diagrams with Mermaid</title>
				<link>https://demo.crofty.site/posts/diagrams-with-mermaid/</link>
				<pubDate>Sun, 07 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/diagrams-with-mermaid/</guid>
				<description>&lt;p&gt;Mermaid turns a fenced code block into a diagram. You write the relationships in&#xA;text; the browser draws them. A project render hook (&lt;code&gt;render-codeblock-mermaid&lt;/code&gt;)&#xA;loads Mermaid only on pages that use it, and the diagrams follow your light/dark&#xA;setting.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-flowchart&#34;&gt;A flowchart&lt;/h2&gt;&#xA;&lt;pre class=&#34;mermaid&#34; aria-label=&#34;diagram&#34;&gt;graph TD&#xA;  A[Write Markdown] --&amp;gt; B{crofty build}&#xA;  B --&amp;gt;|ok| C[Static site]&#xA;  B --&amp;gt;|error| D[Fix and retry]&#xA;  C --&amp;gt; E[Deploy to your domain]&lt;/pre&gt;&#xA;&lt;script type=&#34;module&#34;&gt;&#xA;  import mermaid from &#34;https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs&#34;;&#xA;  const dark = window.matchMedia(&#34;(prefers-color-scheme: dark)&#34;).matches;&#xA;  mermaid.initialize({ startOnLoad: true, theme: dark ? &#34;dark&#34; : &#34;neutral&#34; });&#xA;&lt;/script&gt;&#xA;&lt;h2 id=&#34;a-sequence-diagram&#34;&gt;A sequence diagram&lt;/h2&gt;&#xA;&lt;pre class=&#34;mermaid&#34; aria-label=&#34;diagram&#34;&gt;sequenceDiagram&#xA;  participant You&#xA;  participant crofty&#xA;  participant Cloudflare&#xA;  You-&amp;gt;&amp;gt;crofty: crofty deploy&#xA;  crofty-&amp;gt;&amp;gt;Cloudflare: upload built site&#xA;  Cloudflare--&amp;gt;&amp;gt;You: live URL&lt;/pre&gt;&#xA;&lt;h2 id=&#34;a-pie-chart&#34;&gt;A pie chart&lt;/h2&gt;&#xA;&lt;pre class=&#34;mermaid&#34; aria-label=&#34;diagram&#34;&gt;pie title Where the words live&#xA;  &amp;#34;Plain Markdown&amp;#34; : 92&#xA;  &amp;#34;Front matter&amp;#34; : 6&#xA;  &amp;#34;Everything else&amp;#34; : 2&lt;/pre&gt;&#xA;&lt;p&gt;The source stays plain text in your post, so a diagram is as portable — and as&#xA;diff-able — as the prose around it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The exit is a feature</title>
				<link>https://demo.crofty.site/posts/the-exit-is-a-feature/</link>
				<pubDate>Sat, 06 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/the-exit-is-a-feature/</guid>
				<description>&lt;p&gt;Most platforms are built so you cannot leave. Your posts, your followers, your history — all of it lives inside, and the door out is narrow on purpose.&lt;/p&gt;&#xA;&lt;p&gt;I wanted the opposite. This site is just files I hold, published to a domain I hold.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;If I want to go, there is nothing to export. The files are already mine.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;That sounds like a small thing until you have lost a decade of writing to a service that shut down. An easy exit is not a sign you plan to leave. It is a sign you were never trapped.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Images and figures</title>
				<link>https://demo.crofty.site/posts/images-and-figures/</link>
				<pubDate>Thu, 04 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/images-and-figures/</guid>
				<description>&lt;p&gt;Images live right next to the post that uses them. This post is a &lt;em&gt;page bundle&lt;/em&gt;&#xA;— a folder holding &lt;code&gt;index.md&lt;/code&gt; and its pictures — so the files travel together&#xA;and the links never break.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-plain-markdown-image&#34;&gt;A plain Markdown image&lt;/h2&gt;&#xA;&lt;p&gt;The standard syntax is &lt;code&gt;![alt text](file)&lt;/code&gt;. Here is an SVG that shipped in this&#xA;folder:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://demo.crofty.site/posts/images-and-figures/hills.svg&#34; alt=&#34;Layered hills at dusk&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Alt text is not optional dressing — it is what a screen reader announces and&#xA;what shows if the image ever fails to load. Write it like a caption you would&#xA;say out loud.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A folder of text</title>
				<link>https://demo.crofty.site/posts/a-folder-of-text/</link>
				<pubDate>Tue, 02 Jun 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/a-folder-of-text/</guid>
				<description>&lt;p&gt;Behind this site there is no database and no dashboard. There is a folder. Inside it are Markdown files, one per post, sorted by name.&lt;/p&gt;&#xA;&lt;p&gt;I can open that folder in any editor, search it with any tool, back it up by copying it somewhere else. It will still make sense in twenty years, because text always has.&lt;/p&gt;&#xA;&lt;p&gt;A folder of text is humble, and that is the point. It does not need a company to keep running. It just needs me to keep writing.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Embedding video</title>
				<link>https://demo.crofty.site/posts/embedding-video/</link>
				<pubDate>Sun, 31 May 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/embedding-video/</guid>
				<description>&lt;p&gt;There are two honest ways to put video on a page you own: host the file&#xA;yourself, or embed a player from somewhere else. Both work here.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-self-hosted-video&#34;&gt;A self-hosted video&lt;/h2&gt;&#xA;&lt;p&gt;If you keep the file, you keep control. The HTML &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; element needs no&#xA;third party and no JavaScript. The clip below ships in this post&amp;rsquo;s folder, so&#xA;turn your sound on — it has audio:&lt;/p&gt;&#xA;&lt;video controls preload=&#34;metadata&#34;&gt;&#xA;  &lt;source src=&#34;https://demo.crofty.site/posts/embedding-video/bunny.mp4&#34; type=&#34;video/mp4&#34;&gt;&#xA;  Your browser does not support the video tag.&#xA;&lt;/video&gt;&#xA;&lt;p&gt;Drop the &lt;code&gt;.mp4&lt;/code&gt; in the post&amp;rsquo;s folder and point &lt;code&gt;src&lt;/code&gt; at it the same way you&#xA;would an image. (The clip is &lt;em&gt;Big Buck Bunny&lt;/em&gt;, © Blender Foundation, CC-BY 3.0.)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Writing in the open</title>
				<link>https://demo.crofty.site/posts/writing-in-the-open/</link>
				<pubDate>Thu, 28 May 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/writing-in-the-open/</guid>
				<description>&lt;p&gt;There is a difference between a thought in your head and a thought you have to write down for strangers. The second one has to hold together. It cannot hide behind a vague gesture.&lt;/p&gt;&#xA;&lt;p&gt;So I write in the open, not because every post is finished, but because the act of finishing it teaches me something. The gaps show up when you try to fill the page.&lt;/p&gt;&#xA;&lt;p&gt;Most of these posts will be read by very few people. That is fine. The discipline is mine to keep, whether or not anyone is watching.&lt;/p&gt;</description>
			</item>
			<item>
				<title>External snippets that paste in</title>
				<link>https://demo.crofty.site/posts/external-snippets/</link>
				<pubDate>Mon, 25 May 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/external-snippets/</guid>
				<description>&lt;p&gt;Half the web hands you a block of HTML and says &amp;ldquo;paste this on your site.&amp;rdquo; Those&#xA;snippets are just raw HTML and a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;, so they work here because this site&#xA;turns on Hugo&amp;rsquo;s &lt;code&gt;unsafe&lt;/code&gt; Markdown. A few of the common ones:&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-github-gist&#34;&gt;A GitHub Gist&lt;/h2&gt;&#xA;&lt;p&gt;Gists embed with a single script tag pointed at the gist&amp;rsquo;s &lt;code&gt;.js&lt;/code&gt; URL:&lt;/p&gt;&#xA;&lt;script src=&#34;https://gist.github.com/octocat/6cad326836d38bd3a7ae.js&#34;&gt;&lt;/script&gt;&#xA;&lt;h2 id=&#34;a-codepen&#34;&gt;A CodePen&lt;/h2&gt;&#xA;&lt;p&gt;CodePen&amp;rsquo;s embed is a &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; placeholder plus their &lt;code&gt;ei.js&lt;/code&gt;, which swaps in a live&#xA;editor (this is the example pen from CodePen&amp;rsquo;s own docs):&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why I left the timeline</title>
				<link>https://demo.crofty.site/posts/why-i-left-the-timeline/</link>
				<pubDate>Fri, 22 May 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/why-i-left-the-timeline/</guid>
				<description>&lt;p&gt;The timeline is built to keep you reacting. Every post competes with every other post, and the ones that win are the loudest, not the truest. I noticed I was writing to win.&lt;/p&gt;&#xA;&lt;p&gt;That is a slow way to lose yourself. You start shaping thoughts to fit the feed instead of shaping the feed to fit your thoughts.&lt;/p&gt;&#xA;&lt;p&gt;So I left, and I built a place where nothing scrolls past. A post here sits still until someone chooses to read it. No counter, no ranking, no rush. It turns out I had more to say once the audience stopped shouting back.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Plain text outlasts</title>
				<link>https://demo.crofty.site/posts/plain-text-outlasts/</link>
				<pubDate>Fri, 15 May 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/plain-text-outlasts/</guid>
				<description>&lt;p&gt;I have files from the nineties that no program will open anymore. The formats died with the companies that made them. But the plain text files from the same years open instantly, in anything.&lt;/p&gt;&#xA;&lt;p&gt;That is the quiet superpower of text. It has no version, no licence, no host it depends on. A Markdown file is just letters and a few marks of punctuation pretending to be structure.&lt;/p&gt;&#xA;&lt;p&gt;When I choose what to write in, I am also choosing how long it will live. Plain text outlasts almost everything else I could pick.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A domain of one&#39;s own</title>
				<link>https://demo.crofty.site/posts/a-domain-of-ones-own/</link>
				<pubDate>Fri, 08 May 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/a-domain-of-ones-own/</guid>
				<description>&lt;p&gt;A username on a platform is a guest pass. It can be revoked, renamed, or wiped out when the service folds. A domain is different. It is an address you rent directly, and you can point it anywhere you like.&lt;/p&gt;&#xA;&lt;p&gt;Mine has moved across hosts more than once. The links never broke, because the name stayed the same and only the machine behind it changed.&lt;/p&gt;&#xA;&lt;p&gt;That continuity matters more the longer you write. People find old posts. Other sites link to yours. A domain of one&amp;rsquo;s own is what keeps all of that from turning to dust.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Notes toward a slower web</title>
				<link>https://demo.crofty.site/posts/notes-toward-a-slower-web/</link>
				<pubDate>Thu, 30 Apr 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/notes-toward-a-slower-web/</guid>
				<description>&lt;p&gt;A page does not need to move to be alive. It does not need to track me, autoplay anything, or beg for my attention before I have read a sentence.&lt;/p&gt;&#xA;&lt;p&gt;The slow web is just the web without all that. Pages that load at once. Text that sits still. Sites that ask nothing of you except your reading.&lt;/p&gt;&#xA;&lt;p&gt;I am trying to build my small part of it that way. No popups, no chrome, no manufactured urgency. Just words on a page that respects your time. The faster everything else gets, the more I want one place that simply waits.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The blogroll returns</title>
				<link>https://demo.crofty.site/posts/the-blogroll-returns/</link>
				<pubDate>Wed, 22 Apr 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/the-blogroll-returns/</guid>
				<description>&lt;p&gt;There was a time when every personal site carried a short list of other sites the author liked. You followed the links and wandered. One good blog led to three more.&lt;/p&gt;&#xA;&lt;p&gt;That habit faded when the platforms took over discovery. Why link out when the algorithm would hand you something to look at next?&lt;/p&gt;&#xA;&lt;p&gt;But the wandering was the best part. A blogroll is a small act of generosity — pointing away from yourself, toward people you think are worth reading. I am glad to see them coming back. The web is more interesting when we recommend each other instead of competing for the same eyes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Backups are a love letter to your future self</title>
				<link>https://demo.crofty.site/posts/backups-are-a-love-letter/</link>
				<pubDate>Tue, 14 Apr 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/backups-are-a-love-letter/</guid>
				<description>&lt;p&gt;Nobody thinks about backups until the moment they would have saved everything. By then it is too late, and the loss is total in a way that is hard to describe to people who have not felt it.&lt;/p&gt;&#xA;&lt;p&gt;A backup is just a copy somewhere else. It is unglamorous and easy to put off. But it is also a quiet promise to the person you will be next year, that the work you are doing today will still exist.&lt;/p&gt;</description>
			</item>
			<item>
				<title>On not going viral</title>
				<link>https://demo.crofty.site/posts/on-not-going-viral/</link>
				<pubDate>Sun, 05 Apr 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/on-not-going-viral/</guid>
				<description>&lt;p&gt;I used to measure a post by how far it spread. A big number felt like proof that the writing was good. It was not. It was mostly proof that the writing was loud.&lt;/p&gt;&#xA;&lt;p&gt;Now I would rather reach ten people who read to the end than ten thousand who saw the first line and moved on. The small number is the honest one.&lt;/p&gt;&#xA;&lt;p&gt;Not going viral has freed me to write about things that matter to almost no one. Those turn out to be the posts I am proudest of, and the ones a few people actually remember.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Markdown is enough</title>
				<link>https://demo.crofty.site/posts/markdown-is-enough/</link>
				<pubDate>Fri, 27 Mar 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/markdown-is-enough/</guid>
				<description>&lt;p&gt;For years I chased better writing tools. Richer editors, more buttons, cleverer ways to arrange the page. None of it made the writing any better.&lt;/p&gt;&#xA;&lt;p&gt;What I actually needed was a heading, some emphasis, the occasional list, and a way to link out. Markdown gives me all of that with a handful of plain marks I can type without lifting my hands from the keys.&lt;/p&gt;&#xA;&lt;p&gt;The constraint is the gift. With fewer choices about how a paragraph looks, I spend that attention on what the paragraph says. Markdown is enough, and most of the time enough is the right amount.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Owning the relationship, not the audience</title>
				<link>https://demo.crofty.site/posts/owning-the-relationship/</link>
				<pubDate>Wed, 18 Mar 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/owning-the-relationship/</guid>
				<description>&lt;p&gt;Platforms talk about your audience as if it were a thing you possess. It is not. The followers live on the platform, and the platform decides which of your posts ever reach them.&lt;/p&gt;&#xA;&lt;p&gt;What you can own is the channel itself. A feed and a domain are mine. When someone subscribes, no one stands between us deciding whether the next post counts as worth showing.&lt;/p&gt;&#xA;&lt;p&gt;I am not collecting an audience here. I am keeping a door open. Whoever wants to walk through it can, on their own terms, and leave whenever they like. That is the only kind of relationship worth having on the web.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A quiet corner of the web</title>
				<link>https://demo.crofty.site/posts/a-quiet-corner/</link>
				<pubDate>Mon, 09 Mar 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/a-quiet-corner/</guid>
				<description>&lt;p&gt;Not everything has to be a stage. Some places are just rooms — small, lit, and lived in. This site is one of those.&lt;/p&gt;&#xA;&lt;p&gt;I do not post here to perform. I post to think out loud in a corner that belongs to me, where the lighting does not change to keep me scrolling and no stranger&amp;rsquo;s anger arrives uninvited.&lt;/p&gt;&#xA;&lt;p&gt;The big web will always be loud. I do not want to fix it or fight it. I just want a quiet corner of my own to come back to, and to leave the door unlocked for anyone who wanders by.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Version control for prose</title>
				<link>https://demo.crofty.site/posts/version-control-for-prose/</link>
				<pubDate>Thu, 26 Feb 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/version-control-for-prose/</guid>
				<description>&lt;p&gt;Programmers keep every version of their work and can return to any moment in its history. Writers rarely do, and we lose something for it — the record of how a piece actually came to be.&lt;/p&gt;&#xA;&lt;p&gt;Because my posts are plain text files, I keep them the same way code is kept. Each edit is a small saved step. I can look back at a paragraph from three drafts ago, or recover a line I cut and later missed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The cost of free</title>
				<link>https://demo.crofty.site/posts/the-cost-of-free/</link>
				<pubDate>Sat, 14 Feb 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/the-cost-of-free/</guid>
				<description>&lt;p&gt;Free platforms are generous until they need to make money. Then the price arrives quietly. Your reach is throttled unless you pay. Your posts are wrapped in ads. The terms shift under you, and the work you put in starts serving someone else&amp;rsquo;s balance sheet.&lt;/p&gt;&#xA;&lt;p&gt;You were never the customer. You were the thing being sold.&lt;/p&gt;&#xA;&lt;p&gt;I would rather pay a small, plain cost for a domain and hosting and know exactly what I am paying for. The bill is honest, and the work stays mine. Free always has a cost. The only question is whether you can see it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Reading by RSS again</title>
				<link>https://demo.crofty.site/posts/reading-by-rss-again/</link>
				<pubDate>Sat, 31 Jan 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/reading-by-rss-again/</guid>
				<description>&lt;p&gt;I went back to reading by feed this year, and it changed how the web feels. My reader shows me everything from the sites I chose, in order, with nothing else mixed in. When I reach the end, I am done.&lt;/p&gt;&#xA;&lt;p&gt;No infinite scroll. No suggested posts from accounts I never followed. No quiet sorting of what I am allowed to see.&lt;/p&gt;&#xA;&lt;p&gt;It is a calmer way to read, and a fairer one for the writers too. Every site I subscribe to reaches me the same way, big or small. The feed reader is old technology. Coming back to it felt like remembering something I should not have forgotten.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Starting small</title>
				<link>https://demo.crofty.site/posts/starting-small/</link>
				<pubDate>Sun, 18 Jan 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/posts/starting-small/</guid>
				<description>&lt;p&gt;The easiest way to never have a site is to wait until you have the perfect plan for it. The design, the topics, the schedule, the audience. By the time it is all worked out, the moment has passed.&lt;/p&gt;&#xA;&lt;p&gt;I started this one small. A few posts, a plain layout, no grand idea of what it would become. It can grow later, or it can stay modest. Either is fine.&lt;/p&gt;</description>
			</item>
			<item>
				<title>About</title>
				<link>https://demo.crofty.site/about/</link>
				<pubDate>Thu, 01 Jan 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/about/</guid>
				<description>&lt;p&gt;This is a demonstration site built with &lt;strong&gt;crofty&lt;/strong&gt;. The author below is an&#xA;example — a stand-in for the person whose blog this would be.&lt;/p&gt;&#xA;&lt;p&gt;Everything here is plain Markdown rendered to a static site on a domain its&#xA;owner controls. No platform sits in the middle, nothing phones home, and the&#xA;whole thing can be carried off to ordinary Hugo at any time. The posts are just&#xA;files in a folder; this page is one of them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Contact</title>
				<link>https://demo.crofty.site/contact/</link>
				<pubDate>Thu, 01 Jan 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/contact/</guid>
				<description>&lt;p&gt;The quiet way to reach the author of a site like this is email:&#xA;&lt;a href=&#34;mailto:hello@example.com&#34;&gt;hello@example.com&lt;/a&gt;. No form, no account, no queue — a&#xA;message lands in an inbox the way it always has.&lt;/p&gt;&#xA;&lt;p&gt;A static site has no server to catch a form post, and that is a feature, not a&#xA;gap: there is nothing here to break into and nothing quietly collecting what you&#xA;type. When a site does want a form — a booking, a longer enquiry — the small-web&#xA;answer is to embed one from a service that handles it (Formspree, Tally, a&#xA;Google Form), so the page stays static and the form provider does the catching.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Privacy &amp; Colophon</title>
				<link>https://demo.crofty.site/legal/</link>
				<pubDate>Thu, 01 Jan 2026 09:00:00 +0900</pubDate>
				<guid>https://demo.crofty.site/legal/</guid>
				<description>&lt;p&gt;There is little to say here, which is rather the point. This site sets no&#xA;cookies, runs no analytics, and ships no third-party scripts that watch you&#xA;read. Nothing phones home. The host logs what any static host logs to serve a&#xA;file, and no more.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Colophon.&lt;/strong&gt; Written in Markdown, built with&#xA;&lt;a href=&#34;https://github.com/ShiroDoromoto/crofty&#34;&gt;crofty&lt;/a&gt; on top of Hugo, and published&#xA;as static files to a domain its author owns. The theme is frozen but ejectable;&#xA;the content is just a folder of text. A site that sells something, or collects&#xA;more than this one does, would put its fuller privacy policy and terms here too.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Links</title>
				<link>https://demo.crofty.site/links/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://demo.crofty.site/links/</guid>
				<description>&lt;p&gt;A few sites I read. This is a blogroll in the old sense — a one-way list of&#xA;places worth your time. Linking to a public page needs no permission, and&#xA;nobody here is claiming we are friends; these are just good corners of the web.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
