<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Informal Engineer · Lab Notes</title><description>Short dated notes from the bench. 400 words max, one real number minimum.</description><link>https://informalengineer.com/</link><item><title>[SHIPPED] Rebuilt the whole web presence: 2 sites, 5 repos, $0 a month</title><link>https://informalengineer.com/notes/2026-07-07-site-rebuild-shipped/</link><guid isPermaLink="true">https://informalengineer.com/notes/2026-07-07-site-rebuild-shipped/</guid><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The old setup was one Ghost blog on a DigitalOcean droplet doing everything
badly at once. The new setup is two static sites: stories at
&lt;a href=&quot;https://meshrahman.com&quot;&gt;meshrahman.com&lt;/a&gt;, procedures here.&lt;/p&gt;
&lt;p&gt;Numbers from the rebuild:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 sites, built from markdown in git, deployed to Cloudflare Pages on merge&lt;/li&gt;
&lt;li&gt;5 repos in the new org (sites, redirect worker, telemetry service, ops)&lt;/li&gt;
&lt;li&gt;20 redirect rules covering every URL the old site ever published, running
in log-only mode until every destination checks out (a validation script
asserts 301 to 200 on all of them before the flip)&lt;/li&gt;
&lt;li&gt;8 essays and 2 guides migrated to their new homes so far&lt;/li&gt;
&lt;li&gt;$0 per month hosting, down from a ~$12 droplet (the droplet retires after
a quarantine period, snapshots verified first)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The part nobody tells you: the actual build was the fast part. The slow part
was the redirect map, because &quot;no link dies&quot; is a one-line principle and a
multi-day audit. (Worth it. Some of those URLs have been collecting search
traffic since 2022.)&lt;/p&gt;
&lt;p&gt;Next step: Newsletter platform decision, then the re-introduction email to the old list.&lt;/p&gt;</content:encoded></item></channel></rss>