<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Fortizan Journal</title><description>Architecture and engineering notes from Fortizan.</description><link>https://www.fortizan.com/</link><item><title>Read models without a second database</title><link>https://www.fortizan.com/journal/read-models-without-a-second-database/</link><guid isPermaLink="true">https://www.fortizan.com/journal/read-models-without-a-second-database/</guid><description>CQRS is usually sold with a second datastore attached. It does not need one — and for most teams the second datastore is the part that breaks.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><category>Architecture</category><category>PostgreSQL</category><category>CQRS</category></item><item><title>PHP attributes are a registration mechanism, not decoration</title><link>https://www.fortizan.com/journal/attributes-are-a-registration-mechanism/</link><guid isPermaLink="true">https://www.fortizan.com/journal/attributes-are-a-registration-mechanism/</guid><description>Attributes look like annotations. Treated as a compile-time registry instead, they remove an entire category of &quot;I forgot to wire it up&quot; bugs.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>PHP</category><category>Framework</category><category>Architecture</category></item><item><title>Expand and contract, or why your deploy needs a maintenance window</title><link>https://www.fortizan.com/journal/expand-and-contract/</link><guid isPermaLink="true">https://www.fortizan.com/journal/expand-and-contract/</guid><description>Renaming a column in one release is the most common reason a deploy needs downtime. Splitting it across two removes the need entirely.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>Databases</category><category>Deployment</category><category>PostgreSQL</category></item></channel></rss>