<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Docs on jwogrady</title>
		<link>https://www.jwogrady.com/docs/</link>
		<description>Recent content in Docs on jwogrady</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<atom:link href="https://www.jwogrady.com/docs/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>The publish loop</title>
				<link>https://www.jwogrady.com/docs/publishing/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.jwogrady.com/docs/publishing/</guid>
				<description>&lt;p&gt;Five commands. Everything else is writing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;new-entry&#34;&gt;New entry&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hugo new posts/what-i-learned-today.md&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fills the front matter from &lt;code&gt;archetypes/posts.md&lt;/code&gt; — tags, archives, citation&#xA;handle, description. Three things still need hand-editing: &lt;code&gt;tags&lt;/code&gt;, the&#xA;&lt;code&gt;resolves&lt;/code&gt;/&lt;code&gt;aliases&lt;/code&gt; number, and &lt;code&gt;draft&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For an entry with its own image, make it a &lt;strong&gt;page bundle&lt;/strong&gt; instead:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir content/posts/my-entry&#xA;hugo new posts/my-entry/index.md&#xA;# drop images in content/posts/my-entry/ alongside index.md&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A bundle is what lets the theme resize and convert images. It is the&#xA;difference between shipping a 1.7 MB PNG and a 37 KB WebP.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Front matter that the index depends on</title>
				<link>https://www.jwogrady.com/docs/front-matter/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.jwogrady.com/docs/front-matter/</guid>
				<description>&lt;p&gt;The theme carries no content types. What an entry &lt;em&gt;is&lt;/em&gt; comes entirely from&#xA;its front matter, and three fields are load-bearing: an entry missing them&#xA;renders correctly and appears nowhere.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-three-that-matter&#34;&gt;The three that matter&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;tags&lt;/span&gt;     = [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hugo&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;workflow&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;archives&lt;/span&gt; = [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2026&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2026-09&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2026-09-20&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;resolves&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;JRN 26-007&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;aliases&lt;/span&gt;  = [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/r/26-007/&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/strong&gt; are subjects, not decoration. Frequency sets each tag&amp;rsquo;s colour in&#xA;the index, so a table of fifty entries is legible as a field before a word is&#xA;read. This only works if terms are &lt;em&gt;reused&lt;/em&gt; — a new tag per entry gives fifty&#xA;identical grey labels. Reuse what exists; invent sparingly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Images and embeds</title>
				<link>https://www.jwogrady.com/docs/embeds/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.jwogrady.com/docs/embeds/</guid>
				<description>&lt;p&gt;Two shortcodes live in &lt;code&gt;layouts/shortcodes/&lt;/code&gt;. Both are mine, not the theme&amp;rsquo;s&#xA;— the theme ships no shortcodes at all.&lt;/p&gt;&#xA;&lt;h2 id=&#34;images&#34;&gt;Images&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{&amp;lt; image src=&amp;#34;my-screenshot.png&amp;#34; &amp;gt;}}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Resolves the name as a &lt;strong&gt;page resource&lt;/strong&gt; first (a file sitting next to&#xA;&lt;code&gt;index.md&lt;/code&gt; in a bundle), then falls back to a global asset. It hands off to&#xA;the theme&amp;rsquo;s own &lt;code&gt;figure.html&lt;/code&gt;, so an inline image is styled identically to a&#xA;featured one and gets the same treatment: anything wider than 1400px is&#xA;resized and converted to WebP at q82.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Zed, for this repo</title>
				<link>https://www.jwogrady.com/docs/zed/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.jwogrady.com/docs/zed/</guid>
				<description>&lt;h2 id=&#34;the-one-that-cost-an-afternoon&#34;&gt;The one that cost an afternoon&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Autosave is off by default.&lt;/strong&gt; Edits live in the buffer until you press&#xA;&lt;code&gt;ctrl-s&lt;/code&gt;, and an unsaved tab shows a filled dot instead of its close button.&#xA;A build that does not reflect what is on screen is almost always this.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// settings.json — ctrl-shift-p → &amp;#34;zed: open settings&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;autosave&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;on_focus_change&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;worth-setting-for-prose&#34;&gt;Worth setting for prose&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;soft_wrap&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;editor_width&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;file_types&amp;#34;&lt;/span&gt;: { &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Markdown&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;md&amp;#34;&lt;/span&gt;] },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;languages&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Markdown&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;soft_wrap&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;editor_width&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;remove_trailing_whitespace_on_save&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Trailing whitespace is off deliberately for Markdown: two trailing spaces is&#xA;a hard line break, and stripping them on save silently rewrites the text.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The theme, and where it ends</title>
				<link>https://www.jwogrady.com/docs/theme/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.jwogrady.com/docs/theme/</guid>
				<description>&lt;p&gt;The theme is &lt;a href=&#34;https://github.com/jwogrady/hugo-spectrum&#34;&gt;hugo-spectrum&lt;/a&gt;,&#xA;vendored as a git submodule at &lt;code&gt;themes/hugo-spectrum&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-it-does-and-does-not-own&#34;&gt;What it does and does not own&lt;/h2&gt;&#xA;&lt;p&gt;It owns presentation. It carries &lt;strong&gt;no content types, no taxonomy and no URL&#xA;structure&lt;/strong&gt; — those are declared in &lt;code&gt;hugo.toml&lt;/code&gt; here. That is why the&#xA;&lt;code&gt;[taxonomies]&lt;/code&gt; and &lt;code&gt;[menus]&lt;/code&gt; blocks live in this repo.&lt;/p&gt;&#xA;&lt;p&gt;The journal is not a content type. &lt;code&gt;layouts/home.html&lt;/code&gt; filters&#xA;&lt;code&gt;where site.RegularPages &amp;quot;Section&amp;quot; &amp;quot;posts&amp;quot;&lt;/code&gt; — an exact string match, so an&#xA;entry outside &lt;code&gt;content/posts/&lt;/code&gt; renders at its own URL and never appears in&#xA;the index.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
