<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
  <title>Workshop Notes</title>
  <link>https://blog.liamj.dev</link>
  <description>A Cloudflare-hosted project blog for build notes, experiments, infrastructure work, and lessons learned.</description>
  <item>
  <title>Building TradeFinder, an NBA trade sandbox</title>
  <link>https://blog.liamj.dev/posts/building-tradefinder-an-nba-trade-sandbox/</link>
  <guid>https://blog.liamj.dev/posts/building-tradefinder-an-nba-trade-sandbox/</guid>
  <pubDate>Sat, 25 Apr 2026 12:00:00 GMT</pubDate>
  <description>TradeFinder started as a way to test NBA trade ideas against a useful subset of roster and salary rules without turning it into a giant cap simulator.</description>
</item>
<item>
  <title>Launching the workshop</title>
  <link>https://blog.liamj.dev/posts/launching-the-workshop/</link>
  <guid>https://blog.liamj.dev/posts/launching-the-workshop/</guid>
  <pubDate>Fri, 24 Apr 2026 12:00:00 GMT</pubDate>
  <description>A clean starting point for future project writeups, experiments, and infrastructure notes.</description>
</item>
<item>
  <title>Format sports by city, not by league</title>
  <link>https://blog.liamj.dev/posts/sportsschedule-replaced-the-dinner-question/</link>
  <guid>https://blog.liamj.dev/posts/sportsschedule-replaced-the-dinner-question/</guid>
  <pubDate>Fri, 24 Apr 2026 12:00:00 GMT</pubDate>
  <description>Schedule started as a practical replacement for the same dinner-table question I kept getting asked over and over.</description>
</item>
</channel>
</rss>