{
	"version": "https://jsonfeed.org/version/1",
	"title": "Cowlibob",
	"icon": "https://cdn.micro.blog/Cowlibob/avatar.jpg",
	"home_page_url": "https://blog.cowlibob.co.uk/",
	"feed_url": "https://blog.cowlibob.co.uk/feed.json",
	"items": [
			{
				"id": "http://cowlibob.micro.blog/2026/04/12/lively-description-in-this-post.html",
				
				"content_html": "<p>Lively description in this post from <a href=\"https://micro.blog/bsag\">@bsag</a>.</p>\n<p><a href=\"https://www.rousette.org.uk/archives/sparrowhawk/\">www.rousette.org.uk/archives/&hellip;</a></p>\n",
				
				"date_published": "2026-04-12T16:38:26+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/04/12/lively-description-in-this-post.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/04/10/love-this-our-atmosphere-is.html",
				
				"content_html": "<p>Love this. Our atmosphere is amazingly thin.\n<a href=\"https://www.nasa.gov/image-article/hello-world/\">Hello, World - NASA</a></p>\n",
				
				"date_published": "2026-04-10T12:33:40+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/04/10/love-this-our-atmosphere-is.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/04/08/theyll-don-entry-suits-and.html",
				
				"content_html": "<blockquote>\n<p>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.</p>\n</blockquote>\n<p><a href=\"https://www.theatlantic.com/science/2026/04/artemis-ii-naming-crater/686719/\">www.theatlantic.com/science/2&hellip;</a></p>\n",
				
				"date_published": "2026-04-08T21:15:12+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/04/08/theyll-don-entry-suits-and.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/03/10/this-looks-really-interesting-activecanvas.html",
				
				"content_html": "<p>This looks really interesting <a href=\"https://www.active-canvas.com/\">ActiveCanvas — AI-Powered CMS Engine for Rails</a></p>\n",
				
				"date_published": "2026-03-10T09:05:49+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/03/10/this-looks-really-interesting-activecanvas.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/02/20/color-game-how-well-can.html",
				
				"content_html": "<p><a href=\"https://dialed.gg/\">Color Game — How Well Can You Remember Colors? | Dialed</a></p>\n<blockquote>\n<p>My color memory is a 41.0/50. Please do worse so I feel better.</p>\n</blockquote>\n",
				
				"date_published": "2026-02-20T21:19:31+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/02/20/color-game-how-well-can.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/02/12/im-sure-this-is-documented.html",
				
				"content_html": "<p>I&rsquo;m sure this is documented somewhere, but it&rsquo;s wild that Claude/Claude Code has a 10GB VM image for running sandboxed code.</p>\n<blockquote>\n<p>Common operations:</p>\n</blockquote>\n<ul>\n<li>Git commands (git status, git diff, git commit, etc.)</li>\n<li>Package managers (npm install, brew, pip, etc.)</li>\n<li>Build tools (make, cargo build, npm run build)</li>\n<li>Running tests (pytest, npm test, cargo test)</li>\n<li>File operations that require shell commands</li>\n<li>Any custom scripts or commands you ask me to run</li>\n</ul>\n<p>Sadly, it does not have cowsay installed.</p>\n",
				
				"date_published": "2026-02-12T00:00:41+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/02/12/im-sure-this-is-documented.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/02/11/a-note-for-later-showboat.html",
				
				"content_html": "<p>A note for later, showboat sounds useful.</p>\n<p>Run &ldquo;uvx showboat &ndash;help&rdquo; and then use showboat to create a demo.md document describing the feature you just built</p>\n<p><a href=\"https://simonwillison.net/2026/Feb/10/showboat-and-rodney\">simonwillison.net/2026/Feb/&hellip;</a></p>\n",
				
				"date_published": "2026-02-11T15:12:08+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/02/11/a-note-for-later-showboat.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2026/01/01/a-really-thorough-guide-to.html",
				
				"content_html": "<p>A really thorough guide to using Claude Code. I’m still working through this, but it’s been really instructive so far.</p>\n<p><a href=\"https://sankalp.bearblog.dev/my-experience-with-claude-code-20-and-how-to-get-better-at-using-coding-agents/?utm_source=tldrnewsletter\">A Guide to Claude Code 2.0 and getting better at using coding agents | sankalp&rsquo;s blog</a></p>\n",
				
				"date_published": "2026-01-01T16:34:41+00:00",
				"url": "https://blog.cowlibob.co.uk/2026/01/01/a-really-thorough-guide-to.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/12/04/rs-for-sale.html",
				"title": "RS300 478 For Sale",
				"content_html": "<p>I&rsquo;ve loved sailing this boat over the last 12 or so years, but it&rsquo;s a one-in-one-out policy!</p>\n<p>😁 RS300 478 has been professionally repaired, having had a couple of thumb-sized holes punched underneath by protruding stones (Thanks Josh at <a href=\"http://www.moranmarine.co.uk\">www.moranmarine.co.uk</a>).</p>\n<p>😁 RS300 478 had a new mast in 2017, so has an aluminium track, much easier on the sails than the original carbon track.</p>\n<p>😁 RS300 478 has several main sails:</p>\n<ul>\n<li>1 Black Sail (9/10 - Official by Hyde, 2024)</li>\n<li>1 Black Sail (7/10 - Training by Morgan Sails, 2022)</li>\n<li>1 White Sail (3/10 - Loose batten pocket, seemingly impervious to glue!)</li>\n<li>1 White Sail (2/10 - repaired yet re-shredded bolt rope due to original carbon mast track)</li>\n</ul>\n<p>😁 RS300 478 has new toe straps and control lines in 2024, including continuous kicker, cunningham and outhaul.</p>\n<p>☹️ RS300 478 does have a tatty cover (Rain and Sun)</p>\n<p>😁 RS300 478 does have a pristine undercover for trailing (Rain and Sun).</p>\n<p>☹️ RS300 478 does not have a trailer.</p>\n<p>☹️ RS300 478 does have some gelcoat chips on the cockpit floor, to give you something to do. No covering up the dodgy bits here.</p>\n<p>☹️ RS300 478 does not have a name. I couldn&rsquo;t settle on one, even after all these years. Probably mental scaring from my first tattoo (I haven&rsquo;t chosen that yet, either).</p>\n<p>🤔 I&rsquo;m looking for £1,900. Perhaps it&rsquo;s down the sides of your sofa?</p>\n<p>🏴󠁧󠁢󠁥󠁮󠁧󠁿The boat is in Sheffield.</p>\n<p>Contact me for more flattering photos 😅</p>\n<img src=\"https://cdn.uploads.micro.blog/9261/2025/b9601cb743.jpg\" width=\"600\" height=\"285\" alt=\"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!\">\n",
				
				"date_published": "2025-12-04T21:54:24+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/12/04/rs-for-sale.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/11/26/beautiful-httpsxkcdcom.html",
				
				"content_html": "<p>Beautiful.\n<a href=\"https://xkcd.com/3172/\">xkcd.com/3172/</a></p>\n",
				
				"date_published": "2025-11-27T00:06:23+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/11/26/beautiful-httpsxkcdcom.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/10/14/just-as-i-was-getting.html",
				
				"content_html": "<p>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.</p>\n<p><a href=\"https://steipete.me/posts/just-talk-to-it/\">steipete.me/posts/jus&hellip;</a></p>\n",
				
				"date_published": "2025-10-14T23:47:23+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/10/14/just-as-i-was-getting.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/10/11/today-i-learned-that-deleted.html",
				
				"content_html": "<p>Today I learned that deleted google calendars can be retrieved via the Google API Explorer tool, even if not visible in the trash.</p>\n<p>Use the API Explorer tool query the calendars list, including deleted items. Paste the returned id into the Add Calendar search box.</p>\n",
				
				"date_published": "2025-10-11T19:46:56+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/10/11/today-i-learned-that-deleted.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/10/11/superpowers-for-claude.html",
				"title": "Superpowers for Claude",
				"content_html": "<p>There is some fascinating work going on in AI and it doesn’t even require models to be retrained.\n<a href=\"https://blog.fsck.com/2025/10/09/superpowers/\">Superpowers: How I&rsquo;m using coding agents in October 2025</a></p>\n<p>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).</p>\n",
				
				"date_published": "2025-10-11T19:01:54+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/10/11/superpowers-for-claude.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/08/28/i-dont-do-x-but.html",
				
				"content_html": "<p>I don&rsquo;t &ldquo;do&rdquo; X, but so many others do, I find myself there after <a href=\"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\">community newsletters</a> point the way to interesting tidbits.</p>\n<p>For example, <a href=\"https://x.com/RubyCademy/status/1958949581040845121?utm_source=shortrubynews&amp;utm_medium=newsletter&amp;utm_campaign=short-ruby-newsletter-edition-147&amp;_bhlid=30ad90882aa840d5decbfdc69043585851aeaa09\">Avoid passing lists of IDs from one ActiveRecord query into another</a></p>\n",
				
				"date_published": "2025-08-28T09:50:43+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/08/28/i-dont-do-x-but.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/08/16/im-excited-to-get-started.html",
				"title": "I'm excited to get started with Raspberry Pi Pico ",
				"content_html": "<p>I&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.</p>\n<p>The aim will be met by an &ldquo;embedded&rdquo; device of some sort, so I started researching. <a href=\"www.pimoroni.com\">Pimoroni</a> is a local company providing high quality components for electronic makers, so I went with one of their <a href=\"https://shop.pimoroni.com/products/pimoroni-pico-lipo-2-xl-w?variant=55447911006587\">Pimoroni Pico LiPo 2 XL W</a> boards, which integrates battery controller and WiFi/Blutooth. At around £22, it seems good value and low hassle.</p>\n<p>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.</p>\n<p>My first step to GPS success is to get the battery, pico and bmp280 working together. This was via <a href=\"https://micropython.org\">micropython</a> (I did c/c++ a long time ago, but the toolchain for this feels a much quicker start).</p>\n<p>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&rsquo;t light up, I had no way of debugging, not even &lsquo;print()&rsquo; messages!</p>\n<p>Enter WiFi and Blutooth. I chose to print debug messages to the Blutooth Low Energy(BLE) device. That entailed a <a href=\"https://electrocredible.com/raspberry-pi-pico-w-bluetooth-ble-micropython/\">tutorial and code</a> to activate and send data to the BLE device, quickly diverging from the topic of that tutorial.</p>\n<p>Connecting to the BLE device from my macbook was amazingly easy with the <a href=\"https://www.decisivetactics.com/products/serial/\">Serial</a> software from Decisive Tactics.</p>\n<p>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.</p>\n<p>I&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&rsquo;t need to deal with.</p>\n",
				
				"date_published": "2025-08-16T11:48:04+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/08/16/im-excited-to-get-started.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/06/19/ai-chat-vs-claude-code.html",
				"title": "AI Chat vs Claude Code",
				"content_html": "<p>I&rsquo;ve used both Claude and ChatGPT as tools to shortcut StackOverflow searches, and to validate ideas and approaches.</p>\n<p>More recently, I&rsquo;ve used Copilot inside RubyMine IDE for useful autocomplete (often but not always guesses correctly for several lines or statements ahead).</p>\n<p>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.</p>\n<p>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&rsquo;s dependencies, right up to loading and serving pages (errors actually) on a modern install of macOS.</p>\n<p>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.</p>\n<p>The only downside was when Claude Code started patching installed gems directly. A polite suggestion to vendor or wrap the gems by answering <code>3</code> solved this brittle approach.</p>\n<p>Amazing, this really is the 10x we&rsquo;ve been looking for; even if it&rsquo;s only for easily verifiable steps forward.</p>\n",
				
				"date_published": "2025-06-19T09:01:55+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/06/19/ai-chat-vs-claude-code.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/02/24/dokku-server-running-low-on.html",
				"title": "Dokku server running low on disk space? ",
				"content_html": "<p>It was getting pretty bad (read undeployable):</p>\n<pre tabindex=\"0\"><code>df -h\r\nFilesystem      Size  Used Avail Use% Mounted on\r\ntmpfs           392M  2.2M  390M   1% /run\r\n/dev/vda1        78G   78G  309M 100% /\r\n</code></pre><p>Running <code>dokku cleanup</code> did nearly nothing for my server. However, running this command did:</p>\n<pre tabindex=\"0\"><code>sudo docker system prune -af\r\nDeleted Containers:\r\n993bb582beeca872d0592c6222d5fc82d232219f6d540a30cc804b864b753bcf\r\n2b74be847ccd32f757acf81e82ce363422ff5878749150bf2dee340f498c4747\r\n\r\nDeleted Images:\r\n...\r\n...\r\nDeleted build cache objects:\r\n8nkuyfvjh8txgumdwgjgiqmib\r\nxlm1mbz7kd4cswd17jubfhoyd\r\n...\r\n...\r\nTotal reclaimed space: 1.542GB\r\n</code></pre><p>Don&rsquo;t listen to the total reclaimed space, mine was a huge under estimate:</p>\n<pre tabindex=\"0\"><code>df -h\r\nFilesystem      Size  Used Avail Use% Mounted on\r\ntmpfs           392M  2.2M  390M   1% /run\r\n/dev/vda1        78G   18G   61G  23% /\r\n</code></pre>",
				
				"date_published": "2025-02-24T07:29:45+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/02/24/dokku-server-running-low-on.html",
				"tags": ["Computing"]
			},
			{
				"id": "http://cowlibob.micro.blog/2025/02/15/i-built-one-of-these.html",
				
				"content_html": "<p>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.</p>\n<p><a href=\"https://kottke.org/25/02/0046222-i-love-this-week-by-week-\">kottke.org/25/02/004&hellip;</a></p>\n",
				
				"date_published": "2025-02-15T14:41:07+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/02/15/i-built-one-of-these.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/02/03/postgres-query-management.html",
				"title": "Postgres Query Management",
				"content_html": "<p>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&rsquo;s client app has ended.</p>\n<p>Fetching a list of running queries:</p>\n<pre tabindex=\"0\"><code>SELECT pid, age(clock_timestamp(), query_start), usename, query FROM pg_stat_activity ORDER BY query_start desc;\n</code></pre><p>Asking a query to end (or killing it):</p>\n<pre tabindex=\"0\"><code>SELECT pg_cancel_backend(pid);\n</code></pre><p>or for &ldquo;those stubborn stains&rdquo;:</p>\n<pre tabindex=\"0\"><code>SELECT pg_terminate_backend(pid);\n</code></pre>",
				
				"date_published": "2025-02-03T15:19:54+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/02/03/postgres-query-management.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/01/30/theres-no-chance-ill-read.html",
				
				"content_html": "<p>There’s no chance I’ll read all these, but it’s worth saving the link here anyway.  <a href=\"https://dev.to/devmount/a-cheatsheet-of-128-cheatsheets-for-developers-f4m\">A CheatSheet of 128 CheatSheets for Developers - DEV Community</a></p>\n",
				
				"date_published": "2025-01-30T11:52:55+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/01/30/theres-no-chance-ill-read.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/01/10/a-useful-summary-of-newupcoming.html",
				
				"content_html": "<p>A useful summary of new/upcoming HTML features, <a href=\"https://frontendmasters.com/blog/bone-up-html-2025/?utm_source=tldrwebdev\">including popover and styles selects</a>.</p>\n",
				
				"date_published": "2025-01-10T15:04:08+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/01/10/a-useful-summary-of-newupcoming.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/01/09/a-superuseful-reminder-of-the.html",
				
				"content_html": "<p><a href=\"https://impactahead.com/dev/useful-things-you-can-do-with-rails-console\">A super-useful reminder of the power behind <code>irb</code> and Rails console.</a></p>\n",
				
				"date_published": "2025-01-09T20:29:03+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/01/09/a-superuseful-reminder-of-the.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2025/01/04/yk-imagining-of-coke-created.html",
				
				"content_html": "<p><a href=\"https://www.coca-cola.com/us/en/brands/coca-cola/products/coca-cola-creations?ref=labnotes.org\">Y3K imagining of coke</a>, created with AI.\nAnd yet a plastic bottle is still the best they can do?</p>\n<img src=\"https://cdn.uploads.micro.blog/9261/2025/86b63cbe2e.png\" width=\"277\" height=\"600\" alt=\"\">\n",
				
				"date_published": "2025-01-04T19:17:29+00:00",
				"url": "https://blog.cowlibob.co.uk/2025/01/04/yk-imagining-of-coke-created.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2024/12/17/changing-the-domain.html",
				
				"content_html": "<p>Changing the domain of a ghost instance:</p>\n<pre tabindex=\"0\"><code>ghost config url www.example.com\nghost setup nginx\nghost restart\n</code></pre>",
				
				"date_published": "2024-12-17T08:35:28+00:00",
				"url": "https://blog.cowlibob.co.uk/2024/12/17/changing-the-domain.html"
			},
			{
				"id": "http://cowlibob.micro.blog/2024/12/16/amazing-that-the.html",
				
				"content_html": "<p>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.</p>\n<p><a href=\"https://apod.nasa.gov/apod/ap241214.html\">APOD: 2024 December 14 - Apollo 17&rsquo;s Moonship</a></p>\n",
				
				"date_published": "2024-12-16T08:33:54+00:00",
				"url": "https://blog.cowlibob.co.uk/2024/12/16/amazing-that-the.html"
			}
	]
}
