<?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>PIM on Knoden</title>
    <link>https://knoden.com/tech/pim/</link>
    <description>Recent content in PIM on Knoden</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Sat, 19 Sep 2026 16:40:00 -0400</lastBuildDate>
    <atom:link href="https://knoden.com/tech/pim/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Trying to Find Out If Anyone&#39;s Using PIM</title>
      <link>https://knoden.com/tech/pim/finding-out-if-anyone-uses-pim/</link>
      <pubDate>Sat, 19 Sep 2026 16:40:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/finding-out-if-anyone-uses-pim/</guid>
      <description>We wanted a simple answer to a simple question — is anyone actually downloading and running PIM? — and found that neither GitLab nor Ollama Cloud can tell us.</description>
    </item>
    <item>
      <title>When &#39;Seen&#39; Forgets What It Saw</title>
      <link>https://knoden.com/tech/pim/rss-seen-tracking-fix/</link>
      <pubDate>Sat, 19 Sep 2026 16:40:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/rss-seen-tracking-fix/</guid>
      <description>RSS&amp;rsquo;s beat-the-market review flagged a real resurfacing risk in how PIM tracks which articles you&amp;rsquo;ve already seen. Here&amp;rsquo;s the actual fix, and the two other flagged gaps that turned out not to be gaps at all.</description>
    </item>
    <item>
      <title>A Form Whose Only Job Is to Become an Event</title>
      <link>https://knoden.com/tech/pim/forms-unification/</link>
      <pubDate>Sat, 19 Sep 2026 16:35:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/forms-unification/</guid>
      <description>Why PIM&amp;rsquo;s form contract lives in the shared events module instead of a JavaFX widget library, and how a sealed interface makes forgetting to teach the GUI a new field type a compile error instead of a runtime gap.</description>
    </item>
    <item>
      <title>A Quote Character in a Project Name</title>
      <link>https://knoden.com/tech/pim/xss-shaped-bug-pattern/</link>
      <pubDate>Sat, 19 Sep 2026 16:30:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/xss-shaped-bug-pattern/</guid>
      <description>The same XSS-shaped bug showed up three times in one week — once pre-existing, once freshly reintroduced while building a new feature, and once finally caught before it shipped at all.</description>
    </item>
    <item>
      <title>Not Everything That Looks Alike Should Be Shared</title>
      <link>https://knoden.com/tech/pim/mail-im-thread-unification/</link>
      <pubDate>Sat, 19 Sep 2026 16:25:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/mail-im-thread-unification/</guid>
      <description>Asked to fully share Mail and IM&amp;rsquo;s thread-handling code, we found the two were genuinely alike in some places and genuinely different in others — and only unified the parts that were actually the same.</description>
    </item>
    <item>
      <title>Mail Wasn&#39;t Actually Extracted Yet</title>
      <link>https://knoden.com/tech/pim/mail-second-extraction/</link>
      <pubDate>Sat, 19 Sep 2026 15:15:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/mail-second-extraction/</guid>
      <description>The August extraction moved Mail&amp;rsquo;s code out of PIM core. A second pass, a few weeks later, found most of what moved didn&amp;rsquo;t actually belong there.</description>
    </item>
    <item>
      <title>The Output Area&#39;s First Visualization Also Fixed a Dead Command</title>
      <link>https://knoden.com/tech/pim/calendar/</link>
      <pubDate>Thu, 06 Aug 2026 16:15:50 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/calendar/</guid>
      <description>Building Calendar&amp;rsquo;s day/month view settled what the output area is for, chose HTML over native widgets on purpose, and along the way fixed a command that had never actually worked.</description>
    </item>
    <item>
      <title>RSS Closes Out the Extraction Series</title>
      <link>https://knoden.com/tech/pim/rss/</link>
      <pubDate>Tue, 04 Aug 2026 17:00:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/rss/</guid>
      <description>The simplest of the three comm extractions, and the one that finally emptied PIM core&amp;rsquo;s generated-entity pipeline.</description>
    </item>
    <item>
      <title>Where Core Ends and a Pimi App Begins</title>
      <link>https://knoden.com/tech/pim/pimi_policy/</link>
      <pubDate>Tue, 04 Aug 2026 16:40:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/pimi_policy/</guid>
      <description>The rule for what stays in PIM core, what moves into a pimi module, and how to leave room for a second variant of the same app.</description>
    </item>
    <item>
      <title>Extracting Mail Exposed a Real Architectural Wrinkle</title>
      <link>https://knoden.com/tech/pim/mail/</link>
      <pubDate>Tue, 04 Aug 2026 16:25:49 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/mail/</guid>
      <description>Why pulling Mail out of PIM core needed a trick no earlier app extraction did.</description>
    </item>
    <item>
      <title>IM Was the First App to Leave comm</title>
      <link>https://knoden.com/tech/pim/im/</link>
      <pubDate>Tue, 04 Aug 2026 15:30:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/im/</guid>
      <description>Extracting IM turned out lighter than expected — no third-party dependency, no generated persistence, and one bug from the previous extraction along for the ride.</description>
    </item>
    <item>
      <title>Notes Set the Pattern for Everything After It</title>
      <link>https://knoden.com/tech/pim/notes/</link>
      <pubDate>Tue, 04 Aug 2026 15:00:00 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/notes/</guid>
      <description>The simplest possible extraction, chosen first on purpose — and the point where the plan changed from finishing one module to moving everything.</description>
    </item>
    <item>
      <title>Switching to a Better Local Model</title>
      <link>https://knoden.com/tech/pim/ai_models/</link>
      <pubDate>Sun, 02 Aug 2026 19:56:11 -0400</pubDate>
      <guid>https://knoden.com/tech/pim/ai_models/</guid>
      <description>Why PIM&amp;rsquo;s default AI model is moving from gemma4 to mistral-nemo.</description>
    </item>
  </channel>
</rss>
