<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Journal — hire-web-dev.com</title>
    <link>https://www.hire-web-dev.com/journal/</link>
    <atom:link href="https://www.hire-web-dev.com/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Notes on frontend engineering, WebGL, motion and web performance.</description>
    <language>en-gb</language>
    <lastBuildDate>Fri, 11 Sep 2026 09:00:00 +0000</lastBuildDate>
    <item>
      <title>Scroll-driven Animation</title>
      <link>https://www.hire-web-dev.com/journal/scroll-driven-animation/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/scroll-driven-animation/</guid>
      <description>Why trigger-based scroll animation accumulates bugs, and why treating scroll position as a pure input fixes an entire class of them at once.</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Shaders for App Developers</title>
      <link>https://www.hire-web-dev.com/journal/shaders-for-app-developers/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/shaders-for-app-developers/</guid>
      <description>What I wish someone had told me before my first fragment shader. Not a tutorial — a list of the assumptions from application code that you need to put down.</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Render Budgets as Design Material</title>
      <link>https://www.hire-web-dev.com/journal/render-budgets/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/render-budgets/</guid>
      <description>A frame is sixteen milliseconds. Spending it is a design decision, and it belongs in the design conversation rather than in a bug ticket three weeks after…</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Motion That Means Something</title>
      <link>https://www.hire-web-dev.com/journal/motion-with-meaning/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/motion-with-meaning/</guid>
      <description>A single test for whether an animation should exist, and what I got wrong for the first two years of doing this professionally.</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Accessible Motion is a Design Problem</title>
      <link>https://www.hire-web-dev.com/journal/accessible-motion/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/accessible-motion/</guid>
      <description>Wrapping everything in a media query that disables animation is compliance, not design. The people who need it deserve a considered alternative rather than a…</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
    <item>
      <title>State That Survives a Bad Network</title>
      <link>https://www.hire-web-dev.com/journal/state-on-bad-networks/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/state-on-bad-networks/</guid>
      <description>Most interfaces are built as though requests succeed quickly. They usually do, which is exactly why the failure paths are where the embarrassing bugs live.</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Typography on the Web</title>
      <link>https://www.hire-web-dev.com/journal/web-typography/</link>
      <guid isPermaLink="true">https://www.hire-web-dev.com/journal/web-typography/</guid>
      <description>The part of frontend work where the defaults are most wrong and the fixes are cheapest. Also the thing I keep having to relearn every couple of years.</description>
      <pubDate>Fri, 11 Sep 2026 09:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>
