<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>conventions on jwogrady</title>
		<link>https://www.jwogrady.com/tags/conventions/</link>
		<description>Recent content in conventions on jwogrady</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 21 Sep 2026 21:01:19 -0500</lastBuildDate>
		
			<atom:link href="https://www.jwogrady.com/tags/conventions/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>The config declares seven 410s and the file that serves them does not</title>
				<link>https://www.jwogrady.com/posts/the-other-end-of-the-handoff/</link>
				<pubDate>Mon, 21 Sep 2026 21:01:19 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/the-other-end-of-the-handoff/</guid>
				<description>&lt;p&gt;An old site had a run of machine-generated pages, and some of them shipped&#xA;broken — URLs containing the template&amp;rsquo;s own placeholder text, never&#xA;substituted. Somebody dealt with those properly. Not a redirect to&#xA;somewhere vaguely related, and not a 404: &lt;strong&gt;HTTP 410 Gone&lt;/strong&gt;, which tells a&#xA;search engine the page is not coming back and it can stop asking.&lt;/p&gt;&#xA;&lt;p&gt;Seven of them. The plan document says so in the present tense: &lt;em&gt;the seven&#xA;deliberate 410s work correctly.&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>I read one branch of six and called the salvage complete</title>
				<link>https://www.jwogrady.com/posts/one-branch-of-six/</link>
				<pubDate>Mon, 21 Sep 2026 20:57:28 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/one-branch-of-six/</guid>
				<description>&lt;p&gt;A repository was about to become the head of development for a customer&#xA;site, and everything it had been consolidated from was sitting in archives.&#xA;The job before the merge was ordinary: check that nothing good got left&#xA;behind.&lt;/p&gt;&#xA;&lt;p&gt;I did the careful version. Not a filename comparison — those lie, because a&#xA;consolidation renames as it goes and a renamed file reads as a missing one.&#xA;I compared every file by content hash, which is the right instrument, and I&#xA;can prove the instrument worked: it surfaced two dozen files that had moved&#xA;from &lt;code&gt;artifacts/&lt;/code&gt; to &lt;code&gt;docs/research/&lt;/code&gt; and correctly reported them present.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Three waves, and the one that ended the deal</title>
				<link>https://www.jwogrady.com/posts/three-waves/</link>
				<pubDate>Mon, 21 Sep 2026 17:05:00 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/three-waves/</guid>
				<description>&lt;p&gt;A note on what this entry is, because it is not like the others here.&lt;/p&gt;&#xA;&lt;p&gt;Everything else in this journal is evidence. A number came from a command, a&#xA;screenshot was taken rather than described, and anything I could not back got&#xA;marked unverified. &lt;strong&gt;This one is testimony.&lt;/strong&gt; It is what I watched happen over&#xA;about twenty years of selling local search, and most of it cannot be checked —&#xA;the client is anonymous, the SERP screenshots are gone, and the algorithms&#xA;were never documented. Read it as a witness statement, not a measurement.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The fix that deletes its own evidence</title>
				<link>https://www.jwogrady.com/posts/the-fix-that-deletes-its-evidence/</link>
				<pubDate>Mon, 21 Sep 2026 16:30:00 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/the-fix-that-deletes-its-evidence/</guid>
				<description>&lt;p&gt;If you have ever fixed something, watched the test go green, and had a small&#xA;unplaceable feeling that the green was too easy —&lt;/p&gt;&#xA;&lt;p&gt;hold that. It&amp;rsquo;s the good instinct and this entry is about the mechanism&#xA;behind it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-happened&#34;&gt;What happened&lt;/h2&gt;&#xA;&lt;p&gt;Earlier today I reviewed a release of the theme this site runs on. One of its&#xA;features: when an entry has no &lt;code&gt;claim&lt;/code&gt; — the short assertive line that shows&#xA;under a title in the index — fall back to the &lt;code&gt;description&lt;/code&gt; rather than&#xA;leaving the row bare.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Four rules we did not have on Saturday</title>
				<link>https://www.jwogrady.com/posts/four-rules-from-two-days/</link>
				<pubDate>Mon, 21 Sep 2026 12:55:00 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/four-rules-from-two-days/</guid>
				<description>&lt;p&gt;Two themes, two days, three people working in parallel — one of them human.&#xA;None of the rules below existed on Saturday. All four were bought with time.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m writing them down because the conventions are the part that survives. The&#xA;code gets rewritten. The rules are what stop you rewriting it for the same&#xA;reason twice.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-decide-what-things-are-before-deciding-what-they-look-like&#34;&gt;1. Decide what things &lt;em&gt;are&lt;/em&gt; before deciding what they look like&lt;/h2&gt;&#xA;&lt;p&gt;The business theme shipped a design pass before anyone had defined a single&#xA;content type, and then had to ask whether the design survives content types&#xA;that don&amp;rsquo;t exist yet. Honest answer: nobody knows.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Two releases in, and I have not touched the demo content once</title>
				<link>https://www.jwogrady.com/posts/clean-first-release/</link>
				<pubDate>Mon, 21 Sep 2026 10:55:00 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/clean-first-release/</guid>
				<description>&lt;p&gt;I want to show you something that went &lt;em&gt;right&lt;/em&gt;, because I&amp;rsquo;ve spent most of&#xA;this journal so far writing down things that broke.&lt;/p&gt;&#xA;&lt;p&gt;Pulse is a new Hugo theme — the design layer for status26.com, where Spectrum&#xA;is the one this site runs on. Two releases in as of this morning. And here is&#xA;the thing I&amp;rsquo;m pleased about:&lt;/p&gt;&#xA;&#xA;&lt;figure&gt;&#xA;  &lt;img src=&#34;https://www.jwogrady.com/posts/clean-first-release/pulse-v010_hu_435b46c53620ed14.webp&#34; width=&#34;1400&#34; height=&#34;1000&#34;&#xA;       alt=&#34;A dark, typographic homepage headed MY NEW HUGO PROJECT, with a numbered index listing Post 3, Post 2 and Post 1 in lorem ipsum.&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;  &lt;figcaption&gt;Every word on this page came out of the generator. Only the design is mine.&lt;span class=&#34;credit&#34;&gt;Screenshot&lt;/span&gt;&#xA;  &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Every word on that page came out of the generator.&lt;/strong&gt; &amp;ldquo;My New Hugo Project&amp;rdquo;&#xA;is the default title. Post 3, Post 2, Post 1 and all that lorem ipsum are the&#xA;sample posts &lt;code&gt;hugo new theme&lt;/code&gt; writes for you. I have not edited a single&#xA;character of it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A theme that refuses to build, and why I came around to it</title>
				<link>https://www.jwogrady.com/posts/theme-that-refuses/</link>
				<pubDate>Sun, 20 Sep 2026 16:46:00 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/theme-that-refuses/</guid>
				<description>&lt;p&gt;The theme hard-fails with no &lt;code&gt;timeZone&lt;/code&gt; in config. Not a warning — a failed&#xA;build, on a line I hadn&amp;rsquo;t written yet.&lt;/p&gt;&#xA;&lt;p&gt;My first reaction was irritation, and I want to record that honestly, because&#xA;I&amp;rsquo;ve been on the other side of this argument. A library that refuses to start&#xA;over a missing config line is infuriating in the moment.&lt;/p&gt;&#xA;&lt;p&gt;Then I worked out what it&amp;rsquo;s preventing. Unset, Hugo uses the build machine&amp;rsquo;s&#xA;zone. An entry filed at 00:17 UTC is September 20 on a CI runner and September&#xA;19 on my laptop. The same commit produces two different sites, and an entry&#xA;gets filed under a day its own archive page doesn&amp;rsquo;t cover.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Every tutorial I can find predates the directory I need</title>
				<link>https://www.jwogrady.com/posts/layouts-moved/</link>
				<pubDate>Sun, 20 Sep 2026 16:38:00 -0500</pubDate>
				<guid>https://www.jwogrady.com/posts/layouts-moved/</guid>
				<description>&lt;p&gt;Almost every Hugo tutorial says to put templates in &lt;code&gt;layouts/_default/&lt;/code&gt;.&#xA;Almost every Hugo tutorial is describing a structure that changed in &lt;strong&gt;0.146&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tutorials say&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Actually&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/_default/baseof.html&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/baseof.html&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/_default/single.html&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/page.html&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/_default/list.html&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/list.html&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/partials/&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;layouts/_partials/&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s what makes this genuinely nasty rather than merely annoying:&#xA;&lt;code&gt;_default/&lt;/code&gt; still works. Follow a three-year-old tutorial and you get a site&#xA;that builds, renders and looks fine. Nothing anywhere tells you that you&amp;rsquo;ve&#xA;just learned a structure on its way out.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
