<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>BarclayXP · Articles</title><description>Writing by Barclay Ibejiako on building software.</description><link>https://barclayxp.com/</link><item><title>Put the tenant check in the data layer, not the view</title><link>https://barclayxp.com/articles/put-the-tenant-check-in-the-data-layer/</link><guid isPermaLink="true">https://barclayxp.com/articles/put-the-tenant-check-in-the-data-layer/</guid><description>In Brevia, every law firm must only ever see its own cases. Here&apos;s why I enforce that in the queryset instead of trusting each view to remember.</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate><category>Django</category><category>Architecture</category><category>Security</category></item><item><title>Ship before the data exists</title><link>https://barclayxp.com/articles/ship-before-the-data-exists/</link><guid isPermaLink="true">https://barclayxp.com/articles/ship-before-the-data-exists/</guid><description>Vice Index is a GTA VI hub for a game that isn&apos;t out yet. Building it taught me to separate structure from data, and to never fake the numbers.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate><category>Product</category><category>Next.js</category><category>Supabase</category></item></channel></rss>