<rss xmlns:source="http://source.scripting.com/" version="2.0">
  <channel>
    <title>Cowlibob</title>
    <link>https://blog.cowlibob.co.uk/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Sun, 12 Apr 2026 16:38:26 +0000</lastBuildDate>
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/04/12/lively-description-in-this-post.html</link>
      <pubDate>Sun, 12 Apr 2026 16:38:26 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/04/12/lively-description-in-this-post.html</guid>
      <description>&lt;p&gt;Lively description in this post from &lt;a href=&#34;https://micro.blog/bsag&#34;&gt;@bsag&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.rousette.org.uk/archives/sparrowhawk/&#34;&gt;www.rousette.org.uk/archives/&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>Lively description in this post from [@bsag](https://micro.blog/bsag).

[www.rousette.org.uk/archives/...](https://www.rousette.org.uk/archives/sparrowhawk/)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/04/10/love-this-our-atmosphere-is.html</link>
      <pubDate>Fri, 10 Apr 2026 12:33:40 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/04/10/love-this-our-atmosphere-is.html</guid>
      <description>&lt;p&gt;Love this. Our atmosphere is amazingly thin.
&lt;a href=&#34;https://www.nasa.gov/image-article/hello-world/&#34;&gt;Hello, World - NASA&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>Love this. Our atmosphere is amazingly thin.
 [Hello, World - NASA](https://www.nasa.gov/image-article/hello-world/)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/04/08/theyll-don-entry-suits-and.html</link>
      <pubDate>Wed, 08 Apr 2026 21:15:12 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/04/08/theyll-don-entry-suits-and.html</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;They’ll don entry suits and point Integrity’s heat shield at Earth’s fast-approaching atmosphere. The friction and burn will surround them in a placenta of superheated plasma. When it nears 3,000 degrees Fahrenheit, the astronauts will lose contact with ground control. Parachutes will shoot out of the spacecraft to slow it down and stabilize it. According to NASA, the fabric will have been packed tight, to the density of oak wood.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://www.theatlantic.com/science/2026/04/artemis-ii-naming-crater/686719/&#34;&gt;www.theatlantic.com/science/2&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>&gt; They’ll don entry suits and point Integrity’s heat shield at Earth’s fast-approaching atmosphere. The friction and burn will surround them in a placenta of superheated plasma. When it nears 3,000 degrees Fahrenheit, the astronauts will lose contact with ground control. Parachutes will shoot out of the spacecraft to slow it down and stabilize it. According to NASA, the fabric will have been packed tight, to the density of oak wood.

[www.theatlantic.com/science/2...](https://www.theatlantic.com/science/2026/04/artemis-ii-naming-crater/686719/)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/03/10/this-looks-really-interesting-activecanvas.html</link>
      <pubDate>Tue, 10 Mar 2026 09:05:49 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/03/10/this-looks-really-interesting-activecanvas.html</guid>
      <description>&lt;p&gt;This looks really interesting &lt;a href=&#34;https://www.active-canvas.com/&#34;&gt;ActiveCanvas — AI-Powered CMS Engine for Rails&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>This looks really interesting [ActiveCanvas — AI-Powered CMS Engine for Rails](https://www.active-canvas.com/)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/02/20/color-game-how-well-can.html</link>
      <pubDate>Fri, 20 Feb 2026 21:19:31 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/02/20/color-game-how-well-can.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://dialed.gg/&#34;&gt;Color Game — How Well Can You Remember Colors? | Dialed&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My color memory is a 41.0/50. Please do worse so I feel better.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
      <source:markdown>[Color Game — How Well Can You Remember Colors? | Dialed](https://dialed.gg/)

&gt; My color memory is a 41.0/50. Please do worse so I feel better.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/02/12/im-sure-this-is-documented.html</link>
      <pubDate>Thu, 12 Feb 2026 00:00:41 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/02/12/im-sure-this-is-documented.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;m sure this is documented somewhere, but it&amp;rsquo;s wild that Claude/Claude Code has a 10GB VM image for running sandboxed code.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Common operations:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Git commands (git status, git diff, git commit, etc.)&lt;/li&gt;
&lt;li&gt;Package managers (npm install, brew, pip, etc.)&lt;/li&gt;
&lt;li&gt;Build tools (make, cargo build, npm run build)&lt;/li&gt;
&lt;li&gt;Running tests (pytest, npm test, cargo test)&lt;/li&gt;
&lt;li&gt;File operations that require shell commands&lt;/li&gt;
&lt;li&gt;Any custom scripts or commands you ask me to run&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sadly, it does not have cowsay installed.&lt;/p&gt;
</description>
      <source:markdown>I&#39;m sure this is documented somewhere, but it&#39;s wild that Claude/Claude Code has a 10GB VM image for running sandboxed code.

&gt;   Common operations:
  - Git commands (git status, git diff, git commit, etc.)
  - Package managers (npm install, brew, pip, etc.)
  - Build tools (make, cargo build, npm run build)
  - Running tests (pytest, npm test, cargo test)
  - File operations that require shell commands
  - Any custom scripts or commands you ask me to run

Sadly, it does not have cowsay installed.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/02/11/a-note-for-later-showboat.html</link>
      <pubDate>Wed, 11 Feb 2026 15:12:08 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/02/11/a-note-for-later-showboat.html</guid>
      <description>&lt;p&gt;A note for later, showboat sounds useful.&lt;/p&gt;
&lt;p&gt;Run &amp;ldquo;uvx showboat &amp;ndash;help&amp;rdquo; and then use showboat to create a demo.md document describing the feature you just built&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://simonwillison.net/2026/Feb/10/showboat-and-rodney&#34;&gt;simonwillison.net/2026/Feb/&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>A note for later, showboat sounds useful.

Run &#34;uvx showboat --help&#34; and then use showboat to create a demo.md document describing the feature you just built

[simonwillison.net/2026/Feb/...](https://simonwillison.net/2026/Feb/10/showboat-and-rodney)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2026/01/01/a-really-thorough-guide-to.html</link>
      <pubDate>Thu, 01 Jan 2026 16:34:41 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2026/01/01/a-really-thorough-guide-to.html</guid>
      <description>&lt;p&gt;A really thorough guide to using Claude Code. I’m still working through this, but it’s been really instructive so far.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://sankalp.bearblog.dev/my-experience-with-claude-code-20-and-how-to-get-better-at-using-coding-agents/?utm_source=tldrnewsletter&#34;&gt;A Guide to Claude Code 2.0 and getting better at using coding agents | sankalp&amp;rsquo;s blog&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>A really thorough guide to using Claude Code. I’m still working through this, but it’s been really instructive so far.

[A Guide to Claude Code 2.0 and getting better at using coding agents | sankalp&#39;s blog](https://sankalp.bearblog.dev/my-experience-with-claude-code-20-and-how-to-get-better-at-using-coding-agents/?utm_source=tldrnewsletter)
</source:markdown>
    </item>
    
    <item>
      <title>RS300 478 For Sale</title>
      <link>https://blog.cowlibob.co.uk/2025/12/04/rs-for-sale.html</link>
      <pubDate>Thu, 04 Dec 2025 21:54:24 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/12/04/rs-for-sale.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve loved sailing this boat over the last 12 or so years, but it&amp;rsquo;s a one-in-one-out policy!&lt;/p&gt;
&lt;p&gt;😁 RS300 478 has been professionally repaired, having had a couple of thumb-sized holes punched underneath by protruding stones (Thanks Josh at &lt;a href=&#34;http://www.moranmarine.co.uk&#34;&gt;www.moranmarine.co.uk&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;😁 RS300 478 had a new mast in 2017, so has an aluminium track, much easier on the sails than the original carbon track.&lt;/p&gt;
&lt;p&gt;😁 RS300 478 has several main sails:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 Black Sail (9/10 - Official by Hyde, 2024)&lt;/li&gt;
&lt;li&gt;1 Black Sail (7/10 - Training by Morgan Sails, 2022)&lt;/li&gt;
&lt;li&gt;1 White Sail (3/10 - Loose batten pocket, seemingly impervious to glue!)&lt;/li&gt;
&lt;li&gt;1 White Sail (2/10 - repaired yet re-shredded bolt rope due to original carbon mast track)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;😁 RS300 478 has new toe straps and control lines in 2024, including continuous kicker, cunningham and outhaul.&lt;/p&gt;
&lt;p&gt;☹️ RS300 478 does have a tatty cover (Rain and Sun)&lt;/p&gt;
&lt;p&gt;😁 RS300 478 does have a pristine undercover for trailing (Rain and Sun).&lt;/p&gt;
&lt;p&gt;☹️ RS300 478 does not have a trailer.&lt;/p&gt;
&lt;p&gt;☹️ RS300 478 does have some gelcoat chips on the cockpit floor, to give you something to do. No covering up the dodgy bits here.&lt;/p&gt;
&lt;p&gt;☹️ RS300 478 does not have a name. I couldn&amp;rsquo;t settle on one, even after all these years. Probably mental scaring from my first tattoo (I haven&amp;rsquo;t chosen that yet, either).&lt;/p&gt;
&lt;p&gt;🤔 I&amp;rsquo;m looking for £1,900. Perhaps it&amp;rsquo;s down the sides of your sofa?&lt;/p&gt;
&lt;p&gt;🏴󠁧󠁢󠁥󠁮󠁧󠁿The boat is in Sheffield.&lt;/p&gt;
&lt;p&gt;Contact me for more flattering photos 😅&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/9261/2025/b9601cb743.jpg&#34; width=&#34;600&#34; height=&#34;285&#34; alt=&#34;A man in a sailing dinghy on the verge of a capsize. He looks scared, and should be. He’ll never win that race now!&#34;&gt;
</description>
      <source:markdown>I&#39;ve loved sailing this boat over the last 12 or so years, but it&#39;s a one-in-one-out policy!

😁 RS300 478 has been professionally repaired, having had a couple of thumb-sized holes punched underneath by protruding stones (Thanks Josh at [www.moranmarine.co.uk](http://www.moranmarine.co.uk)).

😁 RS300 478 had a new mast in 2017, so has an aluminium track, much easier on the sails than the original carbon track.

😁 RS300 478 has several main sails:
-  1 Black Sail (9/10 - Official by Hyde, 2024)
-  1 Black Sail (7/10 - Training by Morgan Sails, 2022)
-  1 White Sail (3/10 - Loose batten pocket, seemingly impervious to glue!)
-  1 White Sail (2/10 - repaired yet re-shredded bolt rope due to original carbon mast track)

😁 RS300 478 has new toe straps and control lines in 2024, including continuous kicker, cunningham and outhaul.

☹️ RS300 478 does have a tatty cover (Rain and Sun)

😁 RS300 478 does have a pristine undercover for trailing (Rain and Sun).

☹️ RS300 478 does not have a trailer.

☹️ RS300 478 does have some gelcoat chips on the cockpit floor, to give you something to do. No covering up the dodgy bits here.

☹️ RS300 478 does not have a name. I couldn&#39;t settle on one, even after all these years. Probably mental scaring from my first tattoo (I haven&#39;t chosen that yet, either).

🤔 I&#39;m looking for £1,900. Perhaps it&#39;s down the sides of your sofa?

🏴󠁧󠁢󠁥󠁮󠁧󠁿The boat is in Sheffield.

Contact me for more flattering photos 😅

&lt;img src=&#34;https://cdn.uploads.micro.blog/9261/2025/b9601cb743.jpg&#34; width=&#34;600&#34; height=&#34;285&#34; alt=&#34;A man in a sailing dinghy on the verge of a capsize. He looks scared, and should be. He’ll never win that race now!&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/11/26/beautiful-httpsxkcdcom.html</link>
      <pubDate>Thu, 27 Nov 2025 00:06:23 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/11/26/beautiful-httpsxkcdcom.html</guid>
      <description>&lt;p&gt;Beautiful.
&lt;a href=&#34;https://xkcd.com/3172/&#34;&gt;xkcd.com/3172/&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>Beautiful.
[xkcd.com/3172/](https://xkcd.com/3172/)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/10/14/just-as-i-was-getting.html</link>
      <pubDate>Tue, 14 Oct 2025 23:47:23 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/10/14/just-as-i-was-getting.html</guid>
      <description>&lt;p&gt;Just as I was getting excited  about plugins and sub-agents in Claude, along comes a blog post that once again upturns the apple cart. Time to look at OpenAI Codex.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://steipete.me/posts/just-talk-to-it/&#34;&gt;steipete.me/posts/jus&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>Just as I was getting excited  about plugins and sub-agents in Claude, along comes a blog post that once again upturns the apple cart. Time to look at OpenAI Codex.

[steipete.me/posts/jus...](https://steipete.me/posts/just-talk-to-it/)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/10/11/today-i-learned-that-deleted.html</link>
      <pubDate>Sat, 11 Oct 2025 19:46:56 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/10/11/today-i-learned-that-deleted.html</guid>
      <description>&lt;p&gt;Today I learned that deleted google calendars can be retrieved via the Google API Explorer tool, even if not visible in the trash.&lt;/p&gt;
&lt;p&gt;Use the API Explorer tool query the calendars list, including deleted items. Paste the returned id into the Add Calendar search box.&lt;/p&gt;
</description>
      <source:markdown>Today I learned that deleted google calendars can be retrieved via the Google API Explorer tool, even if not visible in the trash. 

Use the API Explorer tool query the calendars list, including deleted items. Paste the returned id into the Add Calendar search box.
</source:markdown>
    </item>
    
    <item>
      <title>Superpowers for Claude</title>
      <link>https://blog.cowlibob.co.uk/2025/10/11/superpowers-for-claude.html</link>
      <pubDate>Sat, 11 Oct 2025 19:01:54 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/10/11/superpowers-for-claude.html</guid>
      <description>&lt;p&gt;There is some fascinating work going on in AI and it doesn’t even require models to be retrained.
&lt;a href=&#34;https://blog.fsck.com/2025/10/09/superpowers/&#34;&gt;Superpowers: How I&amp;rsquo;m using coding agents in October 2025&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At this point, I’d like the AI companies to stop pushing toward AGI and realise the benefits these techniques could have for society (without the exponential data centre builds going on).&lt;/p&gt;
</description>
      <source:markdown>There is some fascinating work going on in AI and it doesn’t even require models to be retrained.
[Superpowers: How I&#39;m using coding agents in October 2025](https://blog.fsck.com/2025/10/09/superpowers/)

At this point, I’d like the AI companies to stop pushing toward AGI and realise the benefits these techniques could have for society (without the exponential data centre builds going on).
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/08/28/i-dont-do-x-but.html</link>
      <pubDate>Thu, 28 Aug 2025 09:50:43 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/08/28/i-dont-do-x-but.html</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t &amp;ldquo;do&amp;rdquo; X, but so many others do, I find myself there after &lt;a href=&#34;https://newsletter.shortruby.com/p/edition-147?utm_source=shortrubynews&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=short-ruby-newsletter-edition-147&amp;amp;_bhlid=d07f95f387e4a92e6ff8165a61e764c63cd2ac7d&amp;amp;last_resource_guid=Post%3A5255ae88-68a3-49cf-9d1e-c2009ada5a7b&#34;&gt;community newsletters&lt;/a&gt; point the way to interesting tidbits.&lt;/p&gt;
&lt;p&gt;For example, &lt;a href=&#34;https://x.com/RubyCademy/status/1958949581040845121?utm_source=shortrubynews&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=short-ruby-newsletter-edition-147&amp;amp;_bhlid=30ad90882aa840d5decbfdc69043585851aeaa09&#34;&gt;Avoid passing lists of IDs from one ActiveRecord query into another&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>I don&#39;t &#34;do&#34; X, but so many others do, I find myself there after [community newsletters](https://newsletter.shortruby.com/p/edition-147?utm_source=shortrubynews&amp;utm_medium=newsletter&amp;utm_campaign=short-ruby-newsletter-edition-147&amp;_bhlid=d07f95f387e4a92e6ff8165a61e764c63cd2ac7d&amp;last_resource_guid=Post%3A5255ae88-68a3-49cf-9d1e-c2009ada5a7b) point the way to interesting tidbits.

For example, [Avoid passing lists of IDs from one ActiveRecord query into another](https://x.com/RubyCademy/status/1958949581040845121?utm_source=shortrubynews&amp;utm_medium=newsletter&amp;utm_campaign=short-ruby-newsletter-edition-147&amp;_bhlid=30ad90882aa840d5decbfdc69043585851aeaa09)
</source:markdown>
    </item>
    
    <item>
      <title>I&#39;m excited to get started with Raspberry Pi Pico </title>
      <link>https://blog.cowlibob.co.uk/2025/08/16/im-excited-to-get-started.html</link>
      <pubDate>Sat, 16 Aug 2025 11:48:04 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/08/16/im-excited-to-get-started.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been taking my phone on the water to track my dinghy racing with GPS. But for obvious reasons, taking a £600+ phone on the water is less than ideal. I wanted a cheap GPS device I could control, automate and integrate with.&lt;/p&gt;
&lt;p&gt;The aim will be met by an &amp;ldquo;embedded&amp;rdquo; device of some sort, so I started researching. &lt;a href=&#34;www.pimoroni.com&#34;&gt;Pimoroni&lt;/a&gt; is a local company providing high quality components for electronic makers, so I went with one of their &lt;a href=&#34;https://shop.pimoroni.com/products/pimoroni-pico-lipo-2-xl-w?variant=55447911006587&#34;&gt;Pimoroni Pico LiPo 2 XL W&lt;/a&gt; boards, which integrates battery controller and WiFi/Blutooth. At around £22, it seems good value and low hassle.&lt;/p&gt;
&lt;p&gt;The electronics will need to be in a watertight container, which means control will initially be limited to a barometric pressure sensor (bmp280), from Amazon for about £1.20.&lt;/p&gt;
&lt;p&gt;My first step to GPS success is to get the battery, pico and bmp280 working together. This was via &lt;a href=&#34;https://micropython.org&#34;&gt;micropython&lt;/a&gt; (I did c/c++ a long time ago, but the toolchain for this feels a much quicker start).&lt;/p&gt;
&lt;p&gt;Hooking up the barometric sensor as a switch to turn on the integrated LED was a very cool first step. However, to test I had to unplug the USB cable, screw the lid on the bottle and squeeze. If it didn&amp;rsquo;t light up, I had no way of debugging, not even &amp;lsquo;print()&amp;rsquo; messages!&lt;/p&gt;
&lt;p&gt;Enter WiFi and Blutooth. I chose to print debug messages to the Blutooth Low Energy(BLE) device. That entailed a &lt;a href=&#34;https://electrocredible.com/raspberry-pi-pico-w-bluetooth-ble-micropython/&#34;&gt;tutorial and code&lt;/a&gt; to activate and send data to the BLE device, quickly diverging from the topic of that tutorial.&lt;/p&gt;
&lt;p&gt;Connecting to the BLE device from my macbook was amazingly easy with the &lt;a href=&#34;https://www.decisivetactics.com/products/serial/&#34;&gt;Serial&lt;/a&gt; software from Decisive Tactics.&lt;/p&gt;
&lt;p&gt;I can now log barometric pressure to the Serial app on my MacBook allowing me to fine-tune the pressure difference required to trigger the LED and, eventually, the GPS tracking.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll also look to build a companion mobile app to exfiltrate the GPS data from the device, making WiFi configuration something the user won&amp;rsquo;t need to deal with.&lt;/p&gt;
</description>
      <source:markdown>I&#39;ve been taking my phone on the water to track my dinghy racing with GPS. But for obvious reasons, taking a £600+ phone on the water is less than ideal. I wanted a cheap GPS device I could control, automate and integrate with.

The aim will be met by an &#34;embedded&#34; device of some sort, so I started researching. [Pimoroni](www.pimoroni.com) is a local company providing high quality components for electronic makers, so I went with one of their [Pimoroni Pico LiPo 2 XL W](https://shop.pimoroni.com/products/pimoroni-pico-lipo-2-xl-w?variant=55447911006587) boards, which integrates battery controller and WiFi/Blutooth. At around £22, it seems good value and low hassle.

The electronics will need to be in a watertight container, which means control will initially be limited to a barometric pressure sensor (bmp280), from Amazon for about £1.20.

My first step to GPS success is to get the battery, pico and bmp280 working together. This was via [micropython](https://micropython.org) (I did c/c++ a long time ago, but the toolchain for this feels a much quicker start).

Hooking up the barometric sensor as a switch to turn on the integrated LED was a very cool first step. However, to test I had to unplug the USB cable, screw the lid on the bottle and squeeze. If it didn&#39;t light up, I had no way of debugging, not even &#39;print()&#39; messages!

Enter WiFi and Blutooth. I chose to print debug messages to the Blutooth Low Energy(BLE) device. That entailed a [tutorial and code](https://electrocredible.com/raspberry-pi-pico-w-bluetooth-ble-micropython/) to activate and send data to the BLE device, quickly diverging from the topic of that tutorial.

Connecting to the BLE device from my macbook was amazingly easy with the [Serial](https://www.decisivetactics.com/products/serial/) software from Decisive Tactics.

I can now log barometric pressure to the Serial app on my MacBook allowing me to fine-tune the pressure difference required to trigger the LED and, eventually, the GPS tracking.

I&#39;ll also look to build a companion mobile app to exfiltrate the GPS data from the device, making WiFi configuration something the user won&#39;t need to deal with.
</source:markdown>
    </item>
    
    <item>
      <title>AI Chat vs Claude Code</title>
      <link>https://blog.cowlibob.co.uk/2025/06/19/ai-chat-vs-claude-code.html</link>
      <pubDate>Thu, 19 Jun 2025 09:01:55 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/06/19/ai-chat-vs-claude-code.html</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve used both Claude and ChatGPT as tools to shortcut StackOverflow searches, and to validate ideas and approaches.&lt;/p&gt;
&lt;p&gt;More recently, I&amp;rsquo;ve used Copilot inside RubyMine IDE for useful autocomplete (often but not always guesses correctly for several lines or statements ahead).&lt;/p&gt;
&lt;p&gt;These tools have been a game changer for my software development, in the same way moving from paper manuals and no network to always-on internet was.&lt;/p&gt;
&lt;p&gt;This evening, I installed and ran Claude Code (hello Anthropic subscription, again!). Wow. It worked through the upgrade, patching and wrapping of an old rails 3.2 app (running only on ruby 1.9.3) and it&amp;rsquo;s dependencies, right up to loading and serving pages (errors actually) on a modern install of macOS.&lt;/p&gt;
&lt;p&gt;There is still more work to be done on the app, but Claude Code took the initiative, asked for permissions to install dependencies and run specific tools (sed anyone?) and apply code changes. All I had to do was answer with keys 1, 2 or 3 to allow, always allow or suggest something else.&lt;/p&gt;
&lt;p&gt;The only downside was when Claude Code started patching installed gems directly. A polite suggestion to vendor or wrap the gems by answering &lt;code&gt;3&lt;/code&gt; solved this brittle approach.&lt;/p&gt;
&lt;p&gt;Amazing, this really is the 10x we&amp;rsquo;ve been looking for; even if it&amp;rsquo;s only for easily verifiable steps forward.&lt;/p&gt;
</description>
      <source:markdown>I&#39;ve used both Claude and ChatGPT as tools to shortcut StackOverflow searches, and to validate ideas and approaches.

More recently, I&#39;ve used Copilot inside RubyMine IDE for useful autocomplete (often but not always guesses correctly for several lines or statements ahead).

These tools have been a game changer for my software development, in the same way moving from paper manuals and no network to always-on internet was.

This evening, I installed and ran Claude Code (hello Anthropic subscription, again!). Wow. It worked through the upgrade, patching and wrapping of an old rails 3.2 app (running only on ruby 1.9.3) and it&#39;s dependencies, right up to loading and serving pages (errors actually) on a modern install of macOS.

There is still more work to be done on the app, but Claude Code took the initiative, asked for permissions to install dependencies and run specific tools (sed anyone?) and apply code changes. All I had to do was answer with keys 1, 2 or 3 to allow, always allow or suggest something else.

The only downside was when Claude Code started patching installed gems directly. A polite suggestion to vendor or wrap the gems by answering `3` solved this brittle approach.

Amazing, this really is the 10x we&#39;ve been looking for; even if it&#39;s only for easily verifiable steps forward.
</source:markdown>
    </item>
    
    <item>
      <title>Dokku server running low on disk space? </title>
      <link>https://blog.cowlibob.co.uk/2025/02/24/dokku-server-running-low-on.html</link>
      <pubDate>Mon, 24 Feb 2025 07:29:45 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/02/24/dokku-server-running-low-on.html</guid>
      <description>&lt;p&gt;It was getting pretty bad (read undeployable):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           392M  2.2M  390M   1% /run
/dev/vda1        78G   78G  309M 100% /
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Running &lt;code&gt;dokku cleanup&lt;/code&gt; did nearly nothing for my server. However, running this command did:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo docker system prune -af
Deleted Containers:
993bb582beeca872d0592c6222d5fc82d232219f6d540a30cc804b864b753bcf
2b74be847ccd32f757acf81e82ce363422ff5878749150bf2dee340f498c4747

Deleted Images:
...
...
Deleted build cache objects:
8nkuyfvjh8txgumdwgjgiqmib
xlm1mbz7kd4cswd17jubfhoyd
...
...
Total reclaimed space: 1.542GB
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don&amp;rsquo;t listen to the total reclaimed space, mine was a huge under estimate:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           392M  2.2M  390M   1% /run
/dev/vda1        78G   18G   61G  23% /
&lt;/code&gt;&lt;/pre&gt;</description>
      <source:markdown>It was getting pretty bad (read undeployable):

```
df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           392M  2.2M  390M   1% /run
/dev/vda1        78G   78G  309M 100% /
```

Running `dokku cleanup` did nearly nothing for my server. However, running this command did:

```
sudo docker system prune -af
Deleted Containers:
993bb582beeca872d0592c6222d5fc82d232219f6d540a30cc804b864b753bcf
2b74be847ccd32f757acf81e82ce363422ff5878749150bf2dee340f498c4747

Deleted Images:
...
...
Deleted build cache objects:
8nkuyfvjh8txgumdwgjgiqmib
xlm1mbz7kd4cswd17jubfhoyd
...
...
Total reclaimed space: 1.542GB
```
Don&#39;t listen to the total reclaimed space, mine was a huge under estimate:

```
df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           392M  2.2M  390M   1% /run
/dev/vda1        78G   18G   61G  23% /
```
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/02/15/i-built-one-of-these.html</link>
      <pubDate>Sat, 15 Feb 2025 14:41:07 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/02/15/i-built-one-of-these.html</guid>
      <description>&lt;p&gt;I built one of these for myself in numbers. A rigid grid though, coloured by school/uni/emploer, with future milestones marked, such as mortgage paid off.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kottke.org/25/02/0046222-i-love-this-week-by-week-&#34;&gt;kottke.org/25/02/004&amp;hellip;&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>I built one of these for myself in numbers. A rigid grid though, coloured by school/uni/emploer, with future milestones marked, such as mortgage paid off.

[kottke.org/25/02/004...](https://kottke.org/25/02/0046222-i-love-this-week-by-week-)
</source:markdown>
    </item>
    
    <item>
      <title>Postgres Query Management</title>
      <link>https://blog.cowlibob.co.uk/2025/02/03/postgres-query-management.html</link>
      <pubDate>Mon, 03 Feb 2025 15:19:54 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/02/03/postgres-query-management.html</guid>
      <description>&lt;p&gt;While debugging some very long running queries in PostgreSQL (processing geographic data) is great, I find myself sometimes cancelling the query. However, in analytics the query is still running, even though it&amp;rsquo;s client app has ended.&lt;/p&gt;
&lt;p&gt;Fetching a list of running queries:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SELECT pid, age(clock_timestamp(), query_start), usename, query FROM pg_stat_activity ORDER BY query_start desc;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Asking a query to end (or killing it):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SELECT pg_cancel_backend(pid);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;or for &amp;ldquo;those stubborn stains&amp;rdquo;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SELECT pg_terminate_backend(pid);
&lt;/code&gt;&lt;/pre&gt;</description>
      <source:markdown>While debugging some very long running queries in PostgreSQL (processing geographic data) is great, I find myself sometimes cancelling the query. However, in analytics the query is still running, even though it&#39;s client app has ended.

Fetching a list of running queries:

```
SELECT pid, age(clock_timestamp(), query_start), usename, query FROM pg_stat_activity ORDER BY query_start desc;
```

Asking a query to end (or killing it):

```
SELECT pg_cancel_backend(pid);
```

or for &#34;those stubborn stains&#34;:

```
SELECT pg_terminate_backend(pid);
```

</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/01/30/theres-no-chance-ill-read.html</link>
      <pubDate>Thu, 30 Jan 2025 11:52:55 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/01/30/theres-no-chance-ill-read.html</guid>
      <description>&lt;p&gt;There’s no chance I’ll read all these, but it’s worth saving the link here anyway.  &lt;a href=&#34;https://dev.to/devmount/a-cheatsheet-of-128-cheatsheets-for-developers-f4m&#34;&gt;A CheatSheet of 128 CheatSheets for Developers - DEV Community&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>There’s no chance I’ll read all these, but it’s worth saving the link here anyway.  [A CheatSheet of 128 CheatSheets for Developers - DEV Community](https://dev.to/devmount/a-cheatsheet-of-128-cheatsheets-for-developers-f4m)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/01/10/a-useful-summary-of-newupcoming.html</link>
      <pubDate>Fri, 10 Jan 2025 15:04:08 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/01/10/a-useful-summary-of-newupcoming.html</guid>
      <description>&lt;p&gt;A useful summary of new/upcoming HTML features, &lt;a href=&#34;https://frontendmasters.com/blog/bone-up-html-2025/?utm_source=tldrwebdev&#34;&gt;including popover and styles selects&lt;/a&gt;.&lt;/p&gt;
</description>
      <source:markdown>A useful summary of new/upcoming HTML features, [including popover and styles selects](https://frontendmasters.com/blog/bone-up-html-2025/?utm_source=tldrwebdev).
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/01/09/a-superuseful-reminder-of-the.html</link>
      <pubDate>Thu, 09 Jan 2025 20:29:03 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/01/09/a-superuseful-reminder-of-the.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://impactahead.com/dev/useful-things-you-can-do-with-rails-console&#34;&gt;A super-useful reminder of the power behind &lt;code&gt;irb&lt;/code&gt; and Rails console.&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>[A super-useful reminder of the power behind `irb` and Rails console.](https://impactahead.com/dev/useful-things-you-can-do-with-rails-console)
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2025/01/04/yk-imagining-of-coke-created.html</link>
      <pubDate>Sat, 04 Jan 2025 19:17:29 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2025/01/04/yk-imagining-of-coke-created.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.coca-cola.com/us/en/brands/coca-cola/products/coca-cola-creations?ref=labnotes.org&#34;&gt;Y3K imagining of coke&lt;/a&gt;, created with AI.
And yet a plastic bottle is still the best they can do?&lt;/p&gt;
&lt;img src=&#34;https://cdn.uploads.micro.blog/9261/2025/86b63cbe2e.png&#34; width=&#34;277&#34; height=&#34;600&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>[Y3K imagining of coke](https://www.coca-cola.com/us/en/brands/coca-cola/products/coca-cola-creations?ref=labnotes.org), created with AI. 
And yet a plastic bottle is still the best they can do? 

&lt;img src=&#34;https://cdn.uploads.micro.blog/9261/2025/86b63cbe2e.png&#34; width=&#34;277&#34; height=&#34;600&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2024/12/17/changing-the-domain.html</link>
      <pubDate>Tue, 17 Dec 2024 08:35:28 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2024/12/17/changing-the-domain.html</guid>
      <description>&lt;p&gt;Changing the domain of a ghost instance:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ghost config url www.example.com
ghost setup nginx
ghost restart
&lt;/code&gt;&lt;/pre&gt;</description>
      <source:markdown>Changing the domain of a ghost instance:

```
ghost config url www.example.com
ghost setup nginx
ghost restart
```
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://blog.cowlibob.co.uk/2024/12/16/amazing-that-the.html</link>
      <pubDate>Mon, 16 Dec 2024 08:33:54 +0000</pubDate>
      
      <guid>http://cowlibob.micro.blog/2024/12/16/amazing-that-the.html</guid>
      <description>&lt;p&gt;Amazing that the USA managed to send people to the moon with the tech of the time. It looks like the Apollo 17 module wouldn’t survive a DHL delivery, never mind a moon landing and ascent.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://apod.nasa.gov/apod/ap241214.html&#34;&gt;APOD: 2024 December 14 - Apollo 17&amp;rsquo;s Moonship&lt;/a&gt;&lt;/p&gt;
</description>
      <source:markdown>Amazing that the USA managed to send people to the moon with the tech of the time. It looks like the Apollo 17 module wouldn’t survive a DHL delivery, never mind a moon landing and ascent.

[APOD: 2024 December 14 - Apollo 17&#39;s Moonship](https://apod.nasa.gov/apod/ap241214.html)
</source:markdown>
    </item>
    
  </channel>
</rss>
