# SuperGeekery

> SuperGeekery is a technical blog by John F Morton covering Craft CMS, Laravel, web development, AI tools, and server infrastructure.

## Blog

- [Designing Better Markdown for LLMs](https://supergeekery.com/blog/designing-better-markdown-for-llms.md): The LLM Ready plugin turns Craft CMS pages into clean Markdown for AI, no second set of templates required.
- [Why the Images on My Blog Look Like That](https://supergeekery.com/blog/why-the-images-on-my-blog-look-like-that.md): Why the images on my blog look like halftones and old Technicolor prints, and the case for keeping a public playground where weird, half-formed ideas can ship...
- [Goodbye Puppeteer, Hello Beasties: Simpler Critical CSS for Craft CMS](https://supergeekery.com/blog/critical-css-without-chrome-how-i-traded-puppeteer-for-beasties-craft-cms.md): Generate critical CSS for a Craft CMS + Vite site without Puppeteer or headless Chrome. How I replaced rollup-plugin-critical with Beasties for a simpler local...
- [Upgrading Your Local Gemma Setup](https://supergeekery.com/blog/upgrading-your-local-gemma-setup.md): Take your local Gemma 4 setup to the next level with live streaming, Glow markdown rendering, conversation history, PDF support, and @filename references — all...
- [Running Google’s Gemma 4 Locally on macOS with Ollama](https://supergeekery.com/blog/running-googles-gemma-4-locally-on-macos-with-ollama.md): Learn how to run Google’s Gemma 4 locally on macOS with Ollama. No API keys, no usage limits, no data leaving your laptop. Full setup in under five minutes.
- [LLM Ready: The Craft CMS plugin I never imagined I'd make](https://supergeekery.com/blog/llm-ready-the-craft-cms-plugin-i-never-imagined-id-make.md): Take control of how AI sees your Craft CMS site. LLM Ready automatically serves clean Markdown to AI crawlers, generates your llms.txt, and requires zero...
- [Bespoken 5.3.0: Long-Form Audio, Credit Tracking, and Multisite Support](https://supergeekery.com/blog/bespoken-530-long-form-audio-credit-tracking-and-multisite-support.md): Bespoken 5.3 adds automatic text chunking for long-form content, ElevenLabs credit tracking with cost estimates, multisite support, and smarter progress...
- [What happens when the "Good, Fast, Cheap" rule breaks?](https://supergeekery.com/blog/good-fast-cheap-and-what-happens-when-the-rule-breaks.md): Has AI broken the “Good, Fast, Cheap” rule? A look at how AI coding amplifies creativity and reshapes how I build apps and ideas.
- [Login Lockdown: an AI-created Craft CMS plugin](https://supergeekery.com/blog/login-lockdown-an-ai-created-craft-cms-plugin.md): An AI-built Craft CMS plugin that locks down failed login attempts—and a look at how AI is reshaping real-world development workflows.
- [Unlocking real-time reactive search in Craft CMS with Datastar](https://supergeekery.com/blog/unlocking-real-time-reactive-search-in-craft-cms-with-datastar.md): This blog post showcases creating a reactive search page in Craft CMS using the Datastar plugin. Datastar, a lightweight JavaScript framework, provides...
- [Tips on getting great voice clones from ElevenLabs](https://supergeekery.com/blog/tips-on-getting-great-voice-clones-from-elevenlabs.md): Learn how to create a natural-sounding ElevenLabs voice clone using your own writing. Get better TTS results with this simple, effective recording tip.
- [Text-a-Mess: A one-day app build challenge](https://supergeekery.com/blog/text-a-mess-a-one-day-app-build-challenge.md): Text-a-Mess was a vibe-coding app test built with AI using React 12. The challenge tested the viability of making an app with limited time and knowledge of the...
- [Create mathematically generated CSS color schemes with OKLCh.](https://supergeekery.com/blog/create-mathematically-generated-css-color-schemes-with-oklch.md): Learn how to generate dynamic, daily color palettes using CSS OKLCh color space and JavaScript, creating vibrant, accessible designs with modern techniques.
- [Reset the forge sudo password in Laravel Forge](https://supergeekery.com/blog/reset-the-forge-sudo-password-in-laravel-forge.md): Use a recipe in Laravel Forge to reset the sudo password for any user.
- [Craft CMS and chat-oriented programming, CHOP](https://supergeekery.com/blog/craft-cms-and-chat-oriented-programming-chop.md): Discover CHOP (Chat-Oriented Programming) and its impact on Craft CMS development. See how AI boosts productivity by assisting in plugin creation and...
- [End of the Twitter party](https://supergeekery.com/blog/end-of-the-twitter-party.md): A reflection on Twitter's post-Musk decline and an exploration of alternatives like Mastodon, Threads, and BlueSky.
- [Set Up Redis Caching in Craft CMS with DDEV: A Step-by-Step Guide](https://supergeekery.com/blog/set-up-redis-for-local-development-with-craft-cms.md): This step-by-step guide teaches you how to integrate Redis caching into your Craft CMS project using DDEV.
- [Never mistake your production, staging and local environments with Craft CMS](https://supergeekery.com/blog/never-mistake-your-production-staging-and-local-environments-with-craft-cms.md): Have you ever acci­den­tal­ly changed some­thing in your stag­ing envi­ron­ment when you meant to do it on pro­duc­tion? A few tweaks and this will never...
- [Customizing the CKEditor in Craft CMS](https://supergeekery.com/blog/customizing-the-ckeditor-in-craft-cms.md): Learn how to customize CKEditor in Craft CMS with this step-by-step guide. From configuring fonts and sizes to enabling video embeds and link options,...
- [Fixing a SQL database to have only one type of collation, a Craft CMS story](https://supergeekery.com/blog/fixing-a-sql-file-to-have-only-one-type-of-collation.md): Guide to changing collation type in Craft CMS database. Ensure a smooth upgrade from Craft CMS 4 to 5 with practical solutions and essential tools.
- [Deter Clickjacking When You Can't Set Security Headers By Using Javascript](https://supergeekery.com/blog/deter-clickjacking-when-you-cant-access-headers-iframe-javascript.md): Learn what clickjacking is, how the X-Frame-Options and Content-Security-Policy headers stop it, and a JavaScript fallback to deter iframe embedding when you...
- [Dark patterns by example. The inability to cancel the StatusCake service.](https://supergeekery.com/blog/dark-patterns-by-example-the-inability-to-cancel-a-service-statuscake.md): Analysis of deceptive UX design, specifically focusing on the difficult cancellation process of StatusCake, exemplifying common dark patterns in user...
- [Sound like an audio professional with AI using Adobe Enhance Audio.](https://supergeekery.com/blog/sound-like-an-audio-pro-with-ai-using-adobe-enhance-audio.md): Take an average audio recording and use AI to enhance the speech to professional quality.
- [Run your own uptime service: Uptime Kuma with Traefik on Laravel Forge](https://supergeekery.com/blog/uptime-kuma-with-traefik-on-laravel-forge.md): Install Uptime Kuma using Traefik for routing on a server configured with Laravel Forge, Ploi or ServerPilot.
- [AI and your content. How to opt to opt-out.](https://supergeekery.com/blog/ai-and-your-content-how-to-opt-to-opt-out.md): How to opt out of AI scrapers like OpenAI's GPTBot, ChatGPT-User, Google-Extended, and CCBot using robots.txt, plus why the old value exchange between creators...
- [Analytics a different way. Plausible Analytics on Laravel Forge with Traefik and Docker.](https://supergeekery.com/blog/plausible-analytics-on-laravel-forge-with-traefik-and-docker.md): Install a self-hosted instance of Plausible Analytics in a Docker container with routing by Traefik Proxy.
- [Entry Editor Links, a new Craft CMS plugin](https://supergeekery.com/blog/entry-editor-links-a-new-craft-cms-plugin.md): The "Entry Editor Links" plugin streamlines content editing in Craft CMS. The plugin lets authorized users quickly access an entry's editing page in the...
- [Learning the FileMaker Data API by trial and error.](https://supergeekery.com/blog/learning-the-filemaker-data-api-by-trial-and-error.md): Learn from one developer’s experience learning the FileMaker Data API through trial and error. Use PHP and a proxy to integrate FileMaker with other systems.
- [Make Javascript module creation easier with Vite and automated GitHub Pages and npm publishing](https://supergeekery.com/blog/make-javascript-module-creation-easier-with-vite-and-automated-github-pages-and-npm-publishing.md): Discover an efficient workflow template for JavaScript module creation with Vite Module Builder, automated GitHub Pages, and npm publishing.
- [Remaking Twitter thoughts](https://supergeekery.com/blog/remaking-twitter-thoughts.md): Reflections on Elon Musk's takeover of Twitter, the cruelty of his rebuild, and why a great product people genuinely like is in the strongest position to...
- [Stable Diffusion: Exploring trained models and unique tokens for more accurate text-to-image results](https://supergeekery.com/blog/stable-diffusion-prompts-and-model-exploration.md): Exploring Stable Diffusion, DALL-E, DreamBooth-trained models, and unique style tokens to show how both your prompt and your chosen model shape text-to-image...
- [RSS feeds and unbound prefix errors](https://supergeekery.com/blog/rss-feed-and-an-unbound-prefix-error.md): The unbound prefix error can occur when adding media to an RSS feed without the correct declaration line.
- [npm in a box: Containerizing package managers for security.](https://supergeekery.com/blog/containerizing-npm-and-package-managers-for-security.md): Use Docker containers to harden the security of your development environment when using npm and other package managers.
- [Containerizing a workflow: using Docker to “Build A Banner”](https://supergeekery.com/blog/containerizing-a-workflow-using-docker-to-build-a-banner.md): How we use a Docker image to containerize an animation-creation workflow we use at JMX2.
- [Configuring Craft CMS with Redis for use on Heroku](https://supergeekery.com/blog/heroku-redis-sll-configuration.md): How to configure Craft CMS to work with Heroku Redis using an SSL connection. We'll also discuss a debugging issue when using Heroku ps:exec and environmental...
- [Build a basic Docker image](https://supergeekery.com/blog/making-a-basic-docker-image.md): A detailed overview of building a simple Docker image from a Dockerfile, including passing arguments, listing Docker images, updating the default cmd, and more.
- [OneTrust blocking video playback due to privacy setting](https://supergeekery.com/blog/onetrust-blocking-video-playback-privacy-tracking.md): OneTrust will block video playback automatically depending on how it's set up. This post discusses how to handle privacy settings on a tag-level basis when...
- [Video with transparency in Chrome, Edge, Firefox, Safari, iOS and Android, circa 2022 (updated in late 2024)](https://supergeekery.com/blog/transparent-video-in-chrome-edge-firefox-and-safari-circa-2022.md): Create a cross-browser video tag with transparency. Using webm and mp4 + the H.265 codec, video plays in all major browsers, on desktop and mobile.
- [Tweaking site performance and configuring AWS](https://supergeekery.com/blog/tweaking-site-performance-amazon-aws.md): How I raised a Craft CMS site's PageSpeed score into the high 90s with WebP images, Vite, critical CSS, and AWS CloudFront caching, plus a WAF rule to stop...
- [The HTML email template in Craft CMS](https://supergeekery.com/blog/craftcms-html-email-template-missing-documenation.md): A review of the options for the HTML Email Tem­plate in Craft CMS, including Twig variables, conditionals, MJML, and debugging errors.
- [Docker, Craft, Forge, Arcustech, and Heroku](https://supergeekery.com/blog/docker-craftcms-forge-arcustech-heroku.md): A journal of a transition to Docker for local development with Craft CMS. Includes deployment tips for Laravel Forge, Arcustech, and Heroku.
- [So long, Craft Link List, and hello again, Craft Link List](https://supergeekery.com/blog/craft-link-list.md): John Morton hands off Craft List list to the Craft CMS after 5 plus years of writing the newsletter.
- [Adding Date Validation Logic when Creating an Event in Craft CMS 3](https://supergeekery.com/blog/adding-date-validation-logic-when-creating-an-event-in-craft-cms-3.md): Validate event start and end dates in Craft CMS 3 with a custom module and the EVENT_BEFORE_SAVE event, plus a jQuery datepicker tweak to improve the authoring...
- [A critical error: Chromium revision is not downloaded.](https://supergeekery.com/blog/a-critical-error-chromium-revision-is-not-downloaded.md): How to fix the "Chromium revision is not downloaded" Puppeteer error when generating critical CSS with webpack, caused by skipped Docker and Chromium...
- [Installing Imagick in Valet](https://supergeekery.com/blog/installing-imagick-in-valet.md): Step-by-step instructions for installing and wiring up the Imagick PHP extension in Laravel Valet using Homebrew and PECL after upgrading to a new version of...
- [Fixing a MariaDB database that has a corrupted root user password.](https://supergeekery.com/blog/fixing-a-mariadb-database-that-has-a-corrupted-root-user-password.md): How to reset a corrupted MariaDB root password on macOS using mysqld_safe and mysqladmin, with the exact terminal commands that finally worked.
- [The Winding Down of Pic Puller](https://supergeekery.com/blog/the-winding-down-of-pic-puller.md): SuperGeekery is a blog of interest only to nerds by John Morton.
- [Synology, Plex, ports and missing URLs](https://supergeekery.com/blog/synology-plex-port-and-url.md): Can't find the URL for Plex or other apps on your Synology? Use the hidden Main Menu shortcut and the netstat command to track down the ports and local URLs of...
- [Setting up Laravel Forge and DeployBot.](https://supergeekery.com/blog/laravel-forge-and-deploy-bot.md): A detailed walkthrough of setting up atomic deployments for a Craft CMS site with Laravel Forge and DeployBot, covering config files, symlinks, and post-deploy...
- [Yeoman generators, the file system and symlinks.](https://supergeekery.com/blog/yeoman-generator-locations.md): Understand where global and local Yeoman generators live in your file system, and how to use npm link and symlinks to develop a generator while still using it...

## Standalone Page

- [Now](https://supergeekery.com/now.md): A now page from John Morton: a regularly updated snapshot of what he's focused on at the moment across work, community, and hobbies.
- [Search](https://supergeekery.com/search.md): Search SuperGeekery blog posts and saved links with a simple text search.
- [Link List](https://supergeekery.com/links.md): A collection of links of interest to nerds and geeks. Webdev, generative art, math, CraftCMS, PHP, Javascript, CSS, frontend and more. Geeks rule.
- [Contact](https://supergeekery.com/contact.md): How to reach John Morton from SuperGeekery.com.
- [Uses](https://supergeekery.com/uses.md): A uses page from John Morton: the editors, terminal, apps, gear, and hardware he relies on for development and running SuperGeekery.
