<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>McMizzle Blog</title>
    <link>https://mcmizzle.com/blog/</link>
    <description>Engineering notes from building McMizzle's apps — tvOS, watchOS, HealthKit, BLE, and the parts the documentation leaves out.</description>
    <language>en-us</language>
    <atom:link href="https://mcmizzle.com/blog/feed.xml" rel="self" type="application/rss+xml"/>

    <!-- ITEMS: newest first. Add each new post as the first <item>.
         pubDate must be RFC-822, e.g. Fri, 07 Aug 2026 12:00:00 +0000 -->
    <item>
      <title>Watertight, on the bed, and the wrong shape</title>
      <link>https://mcmizzle.com/blog/watertight-mesh-wrong-shape/</link>
      <guid isPermaLink="true">https://mcmizzle.com/blog/watertight-mesh-wrong-shape/</guid>
      <pubDate>Tue, 01 Sep 2026 12:00:00 +0000</pubDate>
      <description>A plate printed with 4 mm tongues of material reaching into openings that should have had a 1.4 mm border, and every printability check was green. Offsetting a polygon by moving its vertices spikes at sharp corners and folds through itself at tight curves — and an even-odd fill closes a folded ring as happily as a good one, so the mesh comes out watertight, island-free and slicing clean.</description>
    </item>
    <item>
      <title>VideoToolbox emits keyframes early, and my HLS segments came out twice as long</title>
      <link>https://mcmizzle.com/blog/videotoolbox-early-keyframes-hls-segments/</link>
      <guid isPermaLink="true">https://mcmizzle.com/blog/videotoolbox-early-keyframes-hls-segments/</guid>
      <pubDate>Tue, 25 Aug 2026 12:00:00 +0000</pubDate>
      <description>One segment a minute came out at double length on a real camera, and never once on synthetic test video. The max keyframe interval is a ceiling, not a schedule — encoders spend keyframes early on scene changes — and it counts the timestamps you supply rather than wall clock. Half of that is documented, on a page about a different property.</description>
    </item>
    <item>
      <title>Your tvOS Top Shelf tile is cached, and reinstalling won't clear it</title>
      <link>https://mcmizzle.com/blog/tvos-top-shelf-stale-cache/</link>
      <guid isPermaLink="true">https://mcmizzle.com/blog/tvos-top-shelf-stale-cache/</guid>
      <pubDate>Mon, 03 Aug 2026 12:00:00 +0000</pubDate>
      <description>The tile drew a placeholder for hours after the code was correct again. The Home screen caches the rendered tile, dedupes incoming content against it, and that cache survives uninstalling the app — only a reboot cleared it. Plus what actually works for getting logs out of a tvOS extension, and what an extension can and can't do with an App Group.</description>
    </item>
    <item>
      <title>Why your HealthKit widget shows zero every morning</title>
      <link>https://mcmizzle.com/blog/healthkit-widget-shows-zero/</link>
      <guid isPermaLink="true">https://mcmizzle.com/blog/healthkit-widget-shows-zero/</guid>
      <pubDate>Mon, 27 Jul 2026 12:00:00 +0000</pubDate>
      <description>The widget was wrong every morning and right the moment I opened the app — but its timestamp was fresh, so it wasn't stale, it was freshly wrong. HealthKit's store is encrypted while the phone is locked, and a query that fails for that reason is indistinguishable from a day with no data unless you read the error.</description>
    </item>
    <!-- END ITEMS -->
  </channel>
</rss>
