<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel>
<title>Dead Robots</title>
<link>https://deadrobots.me/</link>
<description>Counterglow is a small, fast, flat-file CMS. Pages are folders, content is plain text, and the panel is a few kilobytes of vanilla JavaScript.</description>
<atom:link href="https://deadrobots.me/feed.xml" rel="self" type="application/rss+xml"/>
<item>
<title>Why flat files outlive databases</title>
<link>https://deadrobots.me/notes/why-flat-files</link>
<guid isPermaLink="true">https://deadrobots.me/notes/why-flat-files</guid>
<pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
<description><![CDATA[Ask anyone who has migrated a ten-year-old site and they will describe the same afternoon: an export that half worked, entities that meant something in 2016, and a foreign key nobody remembers adding. The failure mode is silence Databases fail quietly. A dropped column does not raise an alarm; it simply stops appearing. A folder of text files fails loudly and locally — you open the file and the…]]></description>
</item>
<item>
<title>Fluid type without the guesswork</title>
<link>https://deadrobots.me/notes/typography</link>
<guid isPermaLink="true">https://deadrobots.me/notes/typography</guid>
<pubDate>Thu, 22 Jan 2026 00:00:00 +0000</pubDate>
<description><![CDATA[Breakpoint typography optimises for five screen sizes and ignores the thousands in between. Fluid typography optimises for the range. The pattern :root { --step-0: clamp(1rem, 0.96rem + 0.2vw, 1.125rem); --step-2: clamp(1.45rem, 1.3rem + 0.72vw, 1.95rem); } Each step is minimum, preferred, maximum. The preferred value mixes a rem base with a viewport unit, so text scales but never becomes…]]></description>
</item>
<item>
<title>The cheapest performance win is doing less</title>
<link>https://deadrobots.me/notes/speed</link>
<guid isPermaLink="true">https://deadrobots.me/notes/speed</guid>
<pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
<description><![CDATA[A page that ships 40 KB of CSS and no JavaScript will beat a page that ships 300 KB of framework and a service worker to make up for it. This is not a controversial claim, but it is an unpopular one, because the second page is more fun to build. An audit that takes ten minutes Open the network tab, disable cache, reload. Sort by size, descending. For each of the top five: what would break if it…]]></description>
</item>
</channel></rss>