<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Daniel Hadaway — Blog</title>
    <link>https://danielhadaway.dev/blog/</link>
    <atom:link href="https://danielhadaway.dev/feed.xml" rel="self" type="application/rss+xml" />
    <description>Software Engineer with 10+ years shipping production systems — from C# / .NET microservices and cloud infrastructure to React front-ends and mobile apps. I take features from inception to monitoring in production.</description>
    <language>en-GB</language>
    <item>
      <title>Split Lip Adventures is live</title>
      <link>https://danielhadaway.dev/blog/split-lip-adventures-is-live/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/split-lip-adventures-is-live/</guid>
      <pubDate>Mon, 20 Jul 2026 15:00:00 GMT</pubDate>
      <description>Split Lip Adventures is up: the new home of firefighter and world-record adventurer Scott Butler, rebuilt from a 2007-era site builder into a fast Next.js site on Cloudflare. And a note on how this kind of work is becoming my bread and butter.</description>
    </item>
    <item>
      <title>286 MB down to 39 MB: fixing a slow photo gallery</title>
      <link>https://danielhadaway.dev/blog/webp-image-optimisation-split-lip/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/webp-image-optimisation-split-lip/</guid>
      <pubDate>Mon, 20 Jul 2026 12:00:00 GMT</pubDate>
      <description>A client&apos;s gallery page was crawling. The cause wasn&apos;t the code — it was 286 MB of untouched phone photos, one of them loaded as a thumbnail. Here&apos;s the twenty-line fix.</description>
    </item>
    <item>
      <title>A fresh coat of paint for Darras Index</title>
      <link>https://danielhadaway.dev/blog/darras-index-new-look/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/darras-index-new-look/</guid>
      <pubDate>Mon, 20 Jul 2026 07:44:52 GMT</pubDate>
      <description>Darras Index has swapped its dark, pink-accented look for something lighter and calmer. Here is the thinking behind it, and why such a dramatic change turned out to be easy to ship.</description>
    </item>
    <item>
      <title>Why I&apos;ve started writing (and joined the /now movement)</title>
      <link>https://danielhadaway.dev/blog/why-ive-started-writing/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/why-ive-started-writing/</guid>
      <pubDate>Sun, 19 Jul 2026 09:00:00 GMT</pubDate>
      <description>I&apos;ve started writing things down: achievements, struggles and the odd professional opinion. Along the way I found the /now page movement and got myself listed on nownownow.com. Here&apos;s the why.</description>
    </item>
    <item>
      <title>Built to run without me: my first client handovers</title>
      <link>https://danielhadaway.dev/blog/built-to-run-without-me/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/built-to-run-without-me/</guid>
      <pubDate>Thu, 16 Jul 2026 10:00:00 GMT</pubDate>
      <description>Three client sites, built, handed over, and now running without me: client-owned, editable by them, zero ongoing cost. What I&apos;m learning about the difference between shipping code and delivering a product.</description>
    </item>
    <item>
      <title>How my job changed in a year of AI</title>
      <link>https://danielhadaway.dev/blog/how-my-job-changed-in-a-year-of-ai/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/how-my-job-changed-in-a-year-of-ai/</guid>
      <pubDate>Thu, 16 Jul 2026 09:00:00 GMT</pubDate>
      <description>A little over a year ago AI was a clever chatbot I asked the odd question. Now it runs most of my day. An honest look at what genuinely changed, what&apos;s overhyped, and what it means for juniors.</description>
    </item>
    <item>
      <title>My first IRONMAN 70.3: not quite the race I expected</title>
      <link>https://danielhadaway.dev/blog/my-first-ironman-70-3/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/my-first-ironman-70-3/</guid>
      <pubDate>Sun, 12 Jul 2026 09:00:00 GMT</pubDate>
      <description>Months of worrying about cut-offs, a cancelled swim, 33°C heat — and a finish line in Luxembourg. My first IRONMAN 70.3 wasn&apos;t the race I planned for.</description>
    </item>
    <item>
      <title>London to Brighton: my longest bike ride yet</title>
      <link>https://danielhadaway.dev/blog/london-to-brighton-my-longest-ride/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/london-to-brighton-my-longest-ride/</guid>
      <pubDate>Sun, 21 Jun 2026 09:00:00 GMT</pubDate>
      <description>A couple of weeks before my first IRONMAN 70.3, I took on the London to Brighton Bike Ride — the longest ride I&apos;d ever done. It went better than I dared hope. (I did lose four bottles.)</description>
    </item>
    <item>
      <title>Minimal APIs should be minimal</title>
      <link>https://danielhadaway.dev/blog/keep-the-endpoint-boring/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/keep-the-endpoint-boring/</guid>
      <pubDate>Sat, 20 Jun 2026 09:00:00 GMT</pubDate>
      <description>The best API endpoint does almost nothing. How keeping endpoints minimal — and finessing it with the Result pattern at Covertime — made every handler read the same way.</description>
    </item>
    <item>
      <title>Why I built this site</title>
      <link>https://danielhadaway.dev/blog/why-i-built-this-site/</link>
      <guid isPermaLink="true">https://danielhadaway.dev/blog/why-i-built-this-site/</guid>
      <pubDate>Tue, 16 Jun 2026 19:52:00 GMT</pubDate>
      <description>Almost none of the developers I interview have a website. That&apos;s most of the reason this one exists, plus a hedge against a harder job market, and a bit of fun.</description>
    </item>
  </channel>
</rss>
