<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Simplicity on oceanheart.ai</title>
    <link>https://www.oceanheart.ai/tags/simplicity/</link>
    <description>Recent content in Simplicity on oceanheart.ai</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Fri, 20 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.oceanheart.ai/tags/simplicity/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The simple thing is the right thing</title>
      <link>https://www.oceanheart.ai/blog/2026-02-20-simple-thing/</link>
      <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.oceanheart.ai/blog/2026-02-20-simple-thing/</guid>
      <description>&lt;p&gt;I needed a cron job to rebuild my Vercel site daily. Scheduled publishing. Posts with a future &lt;code&gt;publishDate&lt;/code&gt; become visible when their date passes.&lt;/p&gt;&#xA;&lt;p&gt;I asked the agent how to set this up.&lt;/p&gt;&#xA;&lt;p&gt;It gave me a bash script with environment variable handling, HTTP response code parsing, a separate log file, multi-step setup instructions, and a deploy hook approach that required going into the Vercel dashboard.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c0caf5;background-color:#1a1b26;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HOOK_URL&lt;span style=&#34;color:#9ece6a;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#9ece6a&#34;&gt;${&lt;/span&gt;VERCEL_DEPLOY_HOOK&lt;span style=&#34;color:#bb9af7&#34;&gt;:-&lt;/span&gt;&lt;span style=&#34;color:#9ece6a&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LOG_FILE&lt;span style=&#34;color:#9ece6a;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;/tmp/vercel-rebuild.log&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb9af7&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#9ece6a;font-weight:bold&#34;&gt;[&lt;/span&gt; -z &lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;$HOOK_URL&lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#9ece6a;font-weight:bold&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#bb9af7&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#9ece6a&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#bb9af7&#34;&gt;$(&lt;/span&gt;date &lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#39;+%Y-%m-%d %H:%M:%S&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#bb9af7&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#9ece6a&#34;&gt; ERROR: VERCEL_DEPLOY_HOOK not set&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;$LOG_FILE&lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#9ece6a&#34;&gt;exit&lt;/span&gt; &lt;span style=&#34;color:#e0af68&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb9af7&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;response&lt;span style=&#34;color:#9ece6a;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#bb9af7&#34;&gt;$(&lt;/span&gt;curl -s -X POST &lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt;$HOOK_URL&lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;&lt;/span&gt; -w &lt;span style=&#34;color:#9ece6a&#34;&gt;&amp;#34;%{http_code}&amp;#34;&lt;/span&gt; -o /tmp/vercel-response.json&lt;span style=&#34;color:#bb9af7&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#414868;font-style:italic&#34;&gt;# ... and so on&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I asked: why these choices, over a simple &lt;code&gt;at time, exec vercel --prod in this dir&lt;/code&gt;?&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
