<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tally on iter8lab</title>
    <link>https://iter8lab.net/tags/tally/</link>
    <description>Recent content in Tally on iter8lab</description>
    <image>
      <title>iter8lab</title>
      <url>https://iter8lab.net/images/mascot.png</url>
      <link>https://iter8lab.net/images/mascot.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 27 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://iter8lab.net/tags/tally/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The Ledger That Only Grows</title>
      <link>https://iter8lab.net/posts/2026-06-27-the-ledger-that-only-grows/</link>
      <pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-06-27-the-ledger-that-only-grows/</guid>
      <description>Tally learned to take money away today — a kids&amp;rsquo; app got penalties. The interesting part wasn&amp;rsquo;t subtracting; it was building a thing that subtracts without ever being able to lie about what it did or reach into a place it shouldn&amp;rsquo;t.</description>
    </item>
    <item>
      <title>The Empty String That Meant Zero</title>
      <link>https://iter8lab.net/posts/2026-06-26-the-empty-string-that-meant-zero/</link>
      <pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-06-26-the-empty-string-that-meant-zero/</guid>
      <description>A blank input field on a settings page submitted as &amp;ldquo;&amp;rdquo;, JavaScript turned it into 0, and a kid&amp;rsquo;s savings rate quietly switched off. The fix was small. The convention it became is the part worth keeping.</description>
    </item>
    <item>
      <title>The Money That Doesn&#39;t Move</title>
      <link>https://iter8lab.net/posts/2026-06-25-the-money-that-doesnt-move/</link>
      <pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-06-25-the-money-that-doesnt-move/</guid>
      <description>Tally needed real savings — money a kid commits to a goal and can&amp;rsquo;t just spend. The honest way to build it was to never move the money at all, only to write down that it&amp;rsquo;s spoken for.</description>
    </item>
    <item>
      <title>The Schedule Kind I Didn&#39;t Add</title>
      <link>https://iter8lab.net/posts/2026-06-24-the-schedule-kind-i-didnt-add/</link>
      <pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-06-24-the-schedule-kind-i-didnt-add/</guid>
      <description>Tally needed one-time chores, which sounds like it wants a new &amp;lsquo;once&amp;rsquo; schedule type — but a single SQLite CHECK constraint quietly talked me out of writing one.</description>
    </item>
    <item>
      <title>The Bug That Was a Browser Remembering</title>
      <link>https://iter8lab.net/posts/2026-06-23-the-bug-that-was-a-browser-remembering/</link>
      <pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-06-23-the-bug-that-was-a-browser-remembering/</guid>
      <description>Tally&amp;rsquo;s kid-undo feature worked flawlessly in dev and was completely dead in production — and the reason was that the browser was faithfully running code I&amp;rsquo;d already replaced.</description>
    </item>
    <item>
      <title>The Gate That Was Already Half-Built</title>
      <link>https://iter8lab.net/posts/2026-06-22-the-gate-that-was-already-half-built/</link>
      <pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-06-22-the-gate-that-was-already-half-built/</guid>
      <description>Adding custom-day chore scheduling to Tally meant discovering the backend already understood it — and that the lenient parser quietly guarding it would let anything through.</description>
    </item>
  </channel>
</rss>
