<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on RadarModel.com</title>
    <link>https://radarmodel.com/posts/</link>
    <description>Recent content in Posts on RadarModel.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 17 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://radarmodel.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Database Schema Drift Starts With One Manual ALTER</title>
      <link>https://radarmodel.com/database-schema-drift-starts-with-one-manual-alter/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/database-schema-drift-starts-with-one-manual-alter/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s 2 a.m. and checkout is timing out. Someone finds the slow query, adds an index on production by hand, and the graphs go green. Nobody writes a migration for it. Three weeks later a deploy runs a migration that drops and rebuilds that table, the index is gone, and checkout times out again. Or the other way round: a hotfix makes a column &lt;code&gt;NOT NULL&lt;/code&gt; on production only, and the next release, which was tested against staging, fails every insert that leaves it empty.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RadarModel Schema Launches to Catch Database Drift</title>
      <link>https://radarmodel.com/radarmodel-schema-launches-to-catch-database-drift/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/radarmodel-schema-launches-to-catch-database-drift/</guid>
      <description>&lt;p&gt;RadarModel 0.2 adds a second command, &lt;code&gt;radarmodel-schema&lt;/code&gt;. It reads the live schema of a Postgres, MySQL, MariaDB or SQLite database, keeps it, reads it again later and tells you what changed. A column dropped by hand, a type changed on production only, an index lost in a rebuild. It&amp;rsquo;s in the same download as RadarModel AI, open source under the Apache License 2.0, and the code is on &lt;a href=&#34;https://github.com/radarmodel/radarmodel&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Migration tools know what they applied. They don&amp;rsquo;t look at what&amp;rsquo;s actually in the database, and a change made around them stays invisible until something fails. RadarModel Schema looks. &lt;a href=&#34;https://radarmodel.com/database-schema-drift-starts-with-one-manual-alter/&#34;&gt;Why schema drift happens&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How RadarModel Schema Was Tested Against Real Databases</title>
      <link>https://radarmodel.com/how-radarmodel-schema-was-tested-against-real-databases/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/how-radarmodel-schema-was-tested-against-real-databases/</guid>
      <description>&lt;p&gt;A drift detector earns trust slowly and loses it in one night. Report a dropped table that&amp;rsquo;s still there and the alert channel gets muted. So RadarModel Schema&amp;rsquo;s tests spend as much effort on what it must not report as on what it must.&lt;/p&gt;&#xA;&lt;p&gt;None of them use a fake database. SQLite runs on Linux, macOS and Windows. Postgres 12, 16 and 17, MySQL 8.0 and 8.4, and MariaDB 10.6 and 11.4 run in containers on every push. Each test creates its own database on the server, does real DDL to it, and drops it afterwards.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Models Drift Under Your App and Nobody Tells You</title>
      <link>https://radarmodel.com/ai-models-drift-under-your-app-and-nobody-tells-you/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/ai-models-drift-under-your-app-and-nobody-tells-you/</guid>
      <description>&lt;p&gt;Your app calls an AI model by name. It&amp;rsquo;s a string in a config file, &lt;code&gt;gpt-4o&lt;/code&gt; or &lt;code&gt;claude-sonnet-4-5&lt;/code&gt;, and it was right the day someone typed it. The model behind that string lives on somebody else&amp;rsquo;s servers, on somebody else&amp;rsquo;s schedule.&lt;/p&gt;&#xA;&lt;p&gt;Providers retire models. They rename them, or point an alias at a newer one. They cut a context window, add a retirement date, move a model from active to deprecated, raise the price per token. None of that is a secret. It goes into a changelog, a deprecations page, maybe an email to whoever signed up for the account three years ago. And the team that owns the app finds out from a stack trace.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RadarModel AI Launches as Open Source Under the Apache License</title>
      <link>https://radarmodel.com/radarmodel-ai-launches-as-open-source-under-the-apache-license/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/radarmodel-ai-launches-as-open-source-under-the-apache-license/</guid>
      <description>&lt;p&gt;RadarModel AI 0.1 is out. It reads the model lists of OpenAI, Anthropic, Google and OpenRouter, compares each with the last one it saw, and tells you when a model your app calls is gone, retiring, or changed its limits or price. It&amp;rsquo;s open source under the Apache License 2.0, one binary per system, and the code is on &lt;a href=&#34;https://github.com/radarmodel/radarmodel&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It exists because providers change models on their own schedule, and the first sign is usually a failed request. The model lists are public through each provider&amp;rsquo;s API, so a small tool can read them every hour and say what moved. &lt;a href=&#34;https://radarmodel.com/ai-models-drift-under-your-app-and-nobody-tells-you/&#34;&gt;Why it matters&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How RadarModel AI Was Tested Against Broken Provider Answers</title>
      <link>https://radarmodel.com/how-radarmodel-ai-was-tested-against-broken-provider-answers/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/how-radarmodel-ai-was-tested-against-broken-provider-answers/</guid>
      <description>&lt;p&gt;A tool that watches for removed models has one way to be useless: telling you a model is gone when it isn&amp;rsquo;t. Do it twice and the alerts get muted, and then the real removal goes by unseen. So most of RadarModel AI&amp;rsquo;s tests aren&amp;rsquo;t about finding changes. They&amp;rsquo;re about not inventing them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-fake-provider&#34;&gt;The fake provider&lt;/h2&gt;&#xA;&lt;p&gt;The tests run against a fake API that answers like all four providers at once: OpenAI&amp;rsquo;s list, Anthropic&amp;rsquo;s with its cursor paging, Google&amp;rsquo;s with page tokens, OpenRouter&amp;rsquo;s with prices and limits. Each test takes a baseline, then breaks the next answer from one provider in one specific way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why the Project Is Called RadarModel</title>
      <link>https://radarmodel.com/why-the-project-is-called-radarmodel/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://radarmodel.com/why-the-project-is-called-radarmodel/</guid>
      <description>&lt;p&gt;Two words, both doing their plain jobs.&lt;/p&gt;&#xA;&lt;p&gt;A radar doesn&amp;rsquo;t look once. It sweeps, round and round, and what it&amp;rsquo;s good at is noticing that something moved since the last pass. That&amp;rsquo;s the whole method here: read the list, keep it, read it again, compare.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://radarmodel.com/images/radarmodel-name.png&#34; alt=&#34;A radar screen with blips labelled gpt-4o, claude-sonnet, gemini-pro and llama-70b, and one red blip marked &amp;ldquo;gone?&amp;rdquo;, next to the two words of the name explained.&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
