<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>Long-time geek. I love Web dev, Craft CMS, audio and accessibility. I’m also an elected voter registrar in Warren, CT. Go Democracy! &#xA;&#xA;Blog: supergeekery.com</description><link>https://bsky.app/profile/johnfmorton.bsky.social</link><title>@johnfmorton.bsky.social - John F Morton</title><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3muktdsxzzk2h</link><description>Bespoken 5.4.0 for Craft CMS is out: narrate your entries with ElevenLabs or your own self-hosted Alias TTS server (open source, voice cloning, pay per use), and edit the narration script before generating.&#xA;&#xA;▶️ youtu.be/O2-0vwSqUMg&#xA;🔗 https://github.com/johnfmorton/alias-tts&#xA;Plugin: plugins.craftcms.com/bespoken&#xA;https://youtu.be/O2-0vwSqUMg</description><pubDate>02 Sep 2026 21:00 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3muktdsxzzk2h</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3ms4dqbpvds2s</link><description>LLM Ready 1.6.0 for #craftcms: AI-bot User-Agent detection now defaults to off — varying a canonical URL&#39;s response by UA is how shared caches get poisoned. Crawlers still get Markdown via /llms.txt + .md URLs. Also: SEOmatic/Ether SEO noindex respected.&#xA;&#xA;plugins.craftcms.com/llm-ready&#xA;https://plugins.craftcms.com/llm-ready</description><pubDate>02 Aug 2026 15:53 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3ms4dqbpvds2s</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mqca2iu5ek26</link><description>LLM Ready for @craftcms.com turns your pages into clean Markdown for AI. The question I keep circling: should that Markdown say anything different than the HTML? &#34;No, but maybe...&#34; https://supergeekery.com/blog/designing-better-markdown-for-llms</description><pubDate>10 Jul 2026 13:13 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mqca2iu5ek26</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mo3tfodejc24</link><description>LLM Ready 1.5.0 for Craft CMS is out. Refreshed the built-in AI bot list (thanks Dario!): added Claude-SearchBot, Claude-User, Perplexity-User and Meta&#39;s agents, dropped stale ones. New settings let you fully customize the list. https://plugins.craftcms.com/llm-ready?craft5</description><pubDate>12 Jun 2026 13:20 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mo3tfodejc24</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mnq2totkok23</link><description>LLM Ready 1.4.0 for Craft CMS. Serve Markdown versions to AI crawlers. &#xA;&#xA;NEW FEATURES: pull descriptions natively from SEOmatic, Ether SEO, SEOmate, or SEO Fields. Plus a dashboard widget, front-matter overrides, and HTTP Link header injection. #craftcms&#xA;&#xA;https://plugins.craftcms.com/llm-ready?craft5</description><pubDate>07 Jun 2026 21:01 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mnq2totkok23</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mnpemuobgs2v</link><description>I dropped Pupeteer like it was hot. It was actually just my server overheating while generating some Critical CSS for my Craft CMS site. &#xA;&#xA;https://supergeekery.com/blog/critical-css-without-chrome-how-i-traded-puppeteer-for-beasties-craft-cms</description><pubDate>07 Jun 2026 14:24 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mnpemuobgs2v</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mivpofabl22i</link><description>I wrote up how I&#39;m running Google&#39;s Gemma 4 entirely on my Mac with Ollama. Five minute setup, no API keys, no data leaving my laptop.&#xA;&#xA;Turns out &#34;just run it locally&#34; is a pretty good answer for sensitive docs and spotty Wi-Fi.&#xA;&#xA;https://supergeekery.com/blog/running-googles-gemma-4-locally-on-macos-with-ollama</description><pubDate>07 Apr 2026 11:51 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mivpofabl22i</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mhqn5zplvc2u</link><description>AI crawlers are reading your site right now — and they&#39;re getting a noisy mess of HTML instead of your actual content.&#xA;&#xA;I built LLM Ready for Craft CMS to fix that. Clean Markdown endpoints, automatic llms.txt, zero config required.&#xA;&#xA;Blog post + plugin details 👇&#xA;https://supergeekery.com/blog/llm-ready-the-craft-cms-plugin-i-never-imagined-id-make</description><pubDate>23 Mar 2026 17:58 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mhqn5zplvc2u</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mhdrvbvkbc2t</link><description>Bespoken 5.3.0 is out! Big update to my Craft CMS text-to-speech plugin.&#xA;&#xA;Now handles long-form content — auto-chunks text, generates audio via ElevenLabs, and stitches it into one seamless MP3. &#xA;&#xA;Plus: credit usage display, cost estimates, + multisite support.&#xA;&#xA;https://plugins.craftcms.com/bespoken?craft5</description><pubDate>18 Mar 2026 15:18 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mhdrvbvkbc2t</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mg5t7jlj7c27</link><description>I made a web component that turns any image into half-tone, duotone, and Technicolor effects using WebGL. One HTML tag, real-time rendering, fully customizable.&#xA;&#xA;Try the playground: johnfmorton.github.io/some-shade-web-component/&#xA;https://johnfmorton.github.io/some-shade-web-component/</description><pubDate>03 Mar 2026 13:00 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mg5t7jlj7c27</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mg3sydw4bs2x</link><description>“Good. Fast. Cheap. Pick any two.” That rule shaped my career. AI coding tools have bent it — not by replacing skill, but by amplifying it. Maybe the rule didn’t disappear. But it feels negotiable. https://supergeekery.com/blog/good-fast-cheap-and-what-happens-when-the-rule-breaks</description><pubDate>02 Mar 2026 17:51 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mg3sydw4bs2x</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mfjzsvdojc2k</link><description>Movie Finger Prints turns any video into a single poster — frames extracted across the full runtime, composed into a grid or quadtree mosaic. Part data viz, part artwork. Open source, cross-platform.&#xA;github.com/johnfmorton/movie-finger-prints&#xA;https://github.com/johnfmorton/movie-finger-prints</description><pubDate>23 Feb 2026 16:05 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mfjzsvdojc2k</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3me4kvfriqk2d</link><description>I just published Login Lockdown, an AI-built Craft CMS plugin. It&#39;s free. My post is about building things quickly and letting AI amplify, not replace, developer judgment. If you’re a seasoned developer wondering where AI fits in your world, I share my thoughts.&#xA;&#xA;https://supergeekery.com/blog/login-lockdown-an-ai-created-craft-cms-plugin #ai</description><pubDate>05 Feb 2026 14:08 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3me4kvfriqk2d</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mcmqrwa4qk2c</link><description>I finally published my first TRMNL plugin: Metro North Trip Status&#xA;&#xA;It shows the status of the trip you take all the time, right on your TRMNL display—because that’s usually the only train info need.&#xA;&#xA;If you’re using TRMNL and commuting on Metro-North, here it is: usetrmnl.com/recipes/225668&#xA;https://usetrmnl.com/recipes/225668</description><pubDate>17 Jan 2026 13:46 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mcmqrwa4qk2c</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3mcmpjqznuk2s</link><description>Just shipped v1.0.4 of Progressive Share Button 🚀 A zero-dependency Web Component for native OS share buttons via Web Share API.&#xA;&#xA;Demo: johnfmorton.github.io/progressive-share-button/              &#xA;NPM: npmjs.com/package/progressive-share-button                   &#xA;&#xA;#webdev #javascript #webcomponents&#xA;https://johnfmorton.github.io/progressive-share-button/</description><pubDate>17 Jan 2026 13:24 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3mcmpjqznuk2s</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3maa435fylk2z</link><description>What’s with the yelling?</description><pubDate>18 Dec 2025 02:13 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3maa435fylk2z</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3m7alpjwnns25</link><description>I&#39;ve just completed the Kiro Laravel Skeleton. It&#39;s a starter kit for working with #laravel and #kiro. It includes refined spec docs to make your Laravel code clean, organized and well-documente. I&#39;ve entered this into the Kiroween hackathon. https://devpost.com/software/kiro-laravel-skeleton</description><pubDate>05 Dec 2025 13:28 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3m7alpjwnns25</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3m4xtw26ox22y</link><description>I won the top spot in the Code with Kiro Hackathon with Upload Drive-In.&#xA;&#xA;It solves a common friction point: collecting files from people who aren’t inside your system.&#xA;&#xA;Simple upload page → files go right to Google Drive. Interested? Get in touch!&#xA;&#xA;https://devpost.com/software/upload-drive-in</description><pubDate>06 Nov 2025 15:10 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3m4xtw26ox22y</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3lyvpbubvpk2m</link><description>Just wrapped my final hackathon sprint: Upload Drive-In.&#xA;A Laravel app that makes big file uploads as easy as drag &amp; drop, landing straight in your Google Drive.&#xA;&#xA;Hackathon project page: https://devpost.com/software/upload-drive-in&#xA;&#xA;No more email attachments. No more “link expired.” Just drop it off at the Drive-In.</description><pubDate>15 Sep 2025 21:01 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3lyvpbubvpk2m</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3lxmqhdaahc2j</link><description>I&#39;ve been working on an app using Kiro - kiro.dev. If you&#39;re a dev friend of mine, you&#39;ll know this already. Sorry for the constant kiro talk! I&#39;m working on an app I call Upload Drive-In. I will share it here soon. @kirodotdev #hookedonkiro&#xA;https://kiro.dev/</description><pubDate>30 Aug 2025 14:03 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3lxmqhdaahc2j</guid></item><item><link>https://bsky.app/profile/johnfmorton.bsky.social/post/3lvvdbretfs2t</link><description>New release: Bespoken 5.0.9 adds Redactor field support for Craft 5 sites that haven&#39;t updated to CKEditor fields. Create professional narrated audio from your content with a click of a button with ElevenLabs. #craftcms https://plugins.craftcms.com/bespoken?craft5</description><pubDate>08 Aug 2025 13:11 +0000</pubDate><guid isPermaLink="false">at://did:plc:oljozcbtu6tryerwllkubdcb/app.bsky.feed.post/3lvvdbretfs2t</guid></item></channel></rss>