<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>illari blog</title>
    <link>https://illari.dev/blog</link>
    <description>Notes on monitoring scheduled jobs.</description>
    <language>en</language>
    <item>
      <title>The pipeline that got slower every week</title>
      <link>https://illari.dev/blog/the-pipeline-that-got-slower-every-week</link>
      <guid isPermaLink="true">https://illari.dev/blog/the-pipeline-that-got-slower-every-week</guid>
      <pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate>
      <description>Four minutes in January, forty in April, a clean exit every night in between. Why gradual slowdown hides from monitoring, how to record run duration where a trend is visible, and how to alert on slower-than-usual.</description>
    </item>
    <item>
      <title>Cron monitoring without a dedicated tool: PagerDuty, Opsgenie, Sentry Crons compared</title>
      <link>https://illari.dev/blog/cron-monitoring-without-a-dedicated-tool</link>
      <guid isPermaLink="true">https://illari.dev/blog/cron-monitoring-without-a-dedicated-tool</guid>
      <pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate>
      <description>What PagerDuty, Opsgenie, and Sentry Crons actually do out of the box for a missed cron job, and where each one falls short of a dedicated monitor: pricing, native detection, alert gating, and Opsgenie&apos;s sunset date.</description>
    </item>
    <item>
      <title>Keep cron monitoring in the same repo as the cron jobs</title>
      <link>https://illari.dev/blog/keep-cron-monitoring-in-the-same-repo</link>
      <guid isPermaLink="true">https://illari.dev/blog/keep-cron-monitoring-in-the-same-repo</guid>
      <pubDate>Wed, 16 Sep 2026 12:00:00 GMT</pubDate>
      <description>Monitoring that lives in a dashboard drifts away from the jobs it watches: new jobs ship without a monitor, and changed jobs keep a stale one. Define the monitor as code, next to the schedule.</description>
    </item>
    <item>
      <title>Your scheduled AI agent can finish clean and still be wrong</title>
      <link>https://illari.dev/blog/your-ai-agent-can-finish-clean-and-still-be-wrong</link>
      <guid isPermaLink="true">https://illari.dev/blog/your-ai-agent-can-finish-clean-and-still-be-wrong</guid>
      <pubDate>Thu, 03 Sep 2026 12:00:00 GMT</pubDate>
      <description>An agent can post a confident summary and still have updated nothing, run out of turns mid-task, or burned the budget for no result. What to measure so the run&apos;s own numbers tell you.</description>
    </item>
    <item>
      <title>Watching dbt models without a data-observability platform</title>
      <link>https://illari.dev/blog/dbt-tests-without-a-data-observability-platform</link>
      <guid isPermaLink="true">https://illari.dev/blog/dbt-tests-without-a-data-observability-platform</guid>
      <pubDate>Tue, 01 Sep 2026 12:00:00 GMT</pubDate>
      <description>dbt already has tests and source freshness. What they cover, where they stop, and how to get a scheduled dbt build to page you when a test fails or the run goes missing, without adopting a profiling platform.</description>
    </item>
    <item>
      <title>The Airflow DAG succeeded and the table is three days stale</title>
      <link>https://illari.dev/blog/airflow-dag-succeeded-but-the-table-is-stale</link>
      <guid isPermaLink="true">https://illari.dev/blog/airflow-dag-succeeded-but-the-table-is-stale</guid>
      <pubDate>Mon, 31 Aug 2026 12:00:00 GMT</pubDate>
      <description>Every task in the DAG is green, and the model it builds hasn&apos;t updated since Tuesday. Why Airflow&apos;s success is orthogonal to data freshness, and how to check freshness without a data-observability platform.</description>
    </item>
    <item>
      <title>Catching the pipeline run that processed zero rows</title>
      <link>https://illari.dev/blog/catching-the-pipeline-that-processed-zero-rows</link>
      <guid isPermaLink="true">https://illari.dev/blog/catching-the-pipeline-that-processed-zero-rows</guid>
      <pubDate>Fri, 28 Aug 2026 12:00:00 GMT</pubDate>
      <description>A dbt build, an Airflow DAG, or a plain cron ETL can finish green and load nothing. How to make a zero-row run a failed run, without a data-observability platform.</description>
    </item>
    <item>
      <title>Scheduled job monitoring compared: illari, Healthchecks, Cronitor, Dead Man&apos;s Snitch</title>
      <link>https://illari.dev/blog/scheduled-job-monitoring-tools-compared</link>
      <guid isPermaLink="true">https://illari.dev/blog/scheduled-job-monitoring-tools-compared</guid>
      <pubDate>Fri, 21 Aug 2026 12:00:00 GMT</pubDate>
      <description>A comparison of the main heartbeat monitoring services for scheduled jobs, workers, and agent runs: pricing models, free tiers, self-hosting, whether they check the run or just the check-in, and where each one fits.</description>
    </item>
    <item>
      <title>Exit code 0 but the backup was empty: catching cron jobs that lie</title>
      <link>https://illari.dev/blog/exit-code-0-but-the-backup-was-empty</link>
      <guid isPermaLink="true">https://illari.dev/blog/exit-code-0-but-the-backup-was-empty</guid>
      <pubDate>Fri, 17 Jul 2026 12:00:00 GMT</pubDate>
      <description>A job can finish with exit code 0 and still have done the wrong thing: an empty dump, a partial sync, a half-written report. How to catch the runs that succeed on paper.</description>
    </item>
    <item>
      <title>How to know if your cron job silently failed</title>
      <link>https://illari.dev/blog/how-to-know-if-your-cron-job-silently-failed</link>
      <guid isPermaLink="true">https://illari.dev/blog/how-to-know-if-your-cron-job-silently-failed</guid>
      <pubDate>Fri, 12 Jun 2026 12:00:00 GMT</pubDate>
      <description>Cron won&apos;t tell you when a job stops running. Here&apos;s why scheduled jobs fail silently, and the practical ways to find out before it costs you.</description>
    </item>
    <item>
      <title>How cron handles timezones and daylight saving time</title>
      <link>https://illari.dev/blog/cron-timezones-and-daylight-saving</link>
      <guid isPermaLink="true">https://illari.dev/blog/cron-timezones-and-daylight-saving</guid>
      <pubDate>Wed, 08 Apr 2026 12:00:00 GMT</pubDate>
      <description>Cron runs in the system timezone. What that means at the spring-forward and fall-back transitions, how CRON_TZ and systemd timers change it, and why UTC is the safe default for scheduled jobs.</description>
    </item>
    <item>
      <title>Cron syntax: how to read and write a cron expression</title>
      <link>https://illari.dev/blog/cron-expression-syntax</link>
      <guid isPermaLink="true">https://illari.dev/blog/cron-expression-syntax</guid>
      <pubDate>Wed, 21 Jan 2026 12:00:00 GMT</pubDate>
      <description>The five fields, what each one accepts, the operators (* , - /), the day-of-month vs day-of-week trap, the @macros, and where other tools&apos; cron dialects differ. With worked examples.</description>
    </item>
    <item>
      <title>A brief history of cron</title>
      <link>https://illari.dev/blog/a-brief-history-of-cron</link>
      <guid isPermaLink="true">https://illari.dev/blog/a-brief-history-of-cron</guid>
      <pubDate>Tue, 14 Oct 2025 12:00:00 GMT</pubDate>
      <description>Cron has scheduled Unix jobs since 1975. How it went from a single system table read once a minute to Vixie cron, cronie, systemd timers, and Kubernetes, and why the crontab format has barely changed.</description>
    </item>
  </channel>
</rss>
