# SuperGeekery

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

## Blog

- [Upgrading Your Local Gemma Setup](https://supergeekery.com/blog/upgrading-your-local-gemma-setup.md): Upgrading Your Local Gemma Setup
- [Running Google’s Gemma 4 Locally on macOS with Ollama](https://supergeekery.com/blog/running-googles-gemma-4-locally-on-macos-with-ollama.md): Running Google’s Gemma 4 Locally on macOS with Ollama
- [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): LLM Ready: The Craft CMS plugin I never imagined I'd make
- [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.0: Long-Form Audio, Credit Tracking, and Multisite Support
- [What happens when the "Good, Fast, Cheap" rule breaks?](https://supergeekery.com/blog/good-fast-cheap-and-what-happens-when-the-rule-breaks.md): What happens when the "Good, Fast, Cheap" rule breaks?
- [Login Lockdown: an AI-created Craft CMS plugin](https://supergeekery.com/blog/login-lockdown-an-ai-created-craft-cms-plugin.md): Login Lockdown: an AI-created Craft CMS plugin
- [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): Unlocking real-time reactive search in Craft CMS with Datastar
- [Tips on getting great voice clones from ElevenLabs](https://supergeekery.com/blog/tips-on-getting-great-voice-clones-from-elevenlabs.md): Tips on getting great voice clones from ElevenLabs
- [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: A one-day app build challenge
- [Create mathematically generated CSS color schemes with OKLCh.](https://supergeekery.com/blog/create-mathematically-generated-css-color-schemes-with-oklch.md): Create mathematically generated CSS color schemes with OKLCh.
- [Reset the forge sudo password in Laravel Forge](https://supergeekery.com/blog/reset-the-forge-sudo-password-in-laravel-forge.md): Reset the forge sudo password in Laravel Forge
- [Craft CMS and chat-oriented programming, CHOP](https://supergeekery.com/blog/craft-cms-and-chat-oriented-programming-chop.md): Craft CMS and chat-oriented programming, CHOP
- [End of the Twitter party](https://supergeekery.com/blog/end-of-the-twitter-party.md): End of the Twitter party
- [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): Set Up Redis Caching in Craft CMS with DDEV: A Step-by-Step Guide
- [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): Never mistake your production, staging and local environments with Craft CMS
- [Customizing the CKEditor in Craft CMS](https://supergeekery.com/blog/customizing-the-ckeditor-in-craft-cms.md): Customizing the CKEditor in Craft CMS
- [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): Fixing a SQL database to have only one type of collation, a Craft CMS story
- [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): Deter Clickjacking When You Can't Set Security Headers By Using Javascript
- [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): Dark patterns by example. The inability to cancel the StatusCake service.
- [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): Sound like an audio professional with AI using Adobe Enhance Audio.
- [Run your own uptime service: Uptime Kuma with Traefik on Laravel Forge](https://supergeekery.com/blog/uptime-kuma-with-traefik-on-laravel-forge.md): Run your own uptime service: Uptime Kuma with Traefik on Laravel Forge
- [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): AI and your content. How to opt to opt-out.
- [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): Analytics a different way. Plausible Analytics on Laravel Forge with Traefik and Docker.
- [Entry Editor Links, a new Craft CMS plugin](https://supergeekery.com/blog/entry-editor-links-a-new-craft-cms-plugin.md): Entry Editor Links, a new Craft CMS plugin
- [Learning the FileMaker Data API by trial and error.](https://supergeekery.com/blog/learning-the-filemaker-data-api-by-trial-and-error.md): Learning the FileMaker Data API by trial and error.
- [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): Make Javascript module creation easier with Vite and automated GitHub Pages and npm publishing
- [Remaking Twitter thoughts](https://supergeekery.com/blog/remaking-twitter-thoughts.md): Remaking Twitter thoughts
- [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): Stable Diffusion: Exploring trained models and unique tokens for more accurate text-to-image results
- [RSS feeds and unbound prefix errors](https://supergeekery.com/blog/rss-feed-and-an-unbound-prefix-error.md): RSS feeds and unbound prefix errors
- [npm in a box: Containerizing package managers for security.](https://supergeekery.com/blog/containerizing-npm-and-package-managers-for-security.md): npm in a box: Containerizing package managers for security.
- [Containerizing a workflow: using Docker to “Build A Banner”](https://supergeekery.com/blog/containerizing-a-workflow-using-docker-to-build-a-banner.md): Containerizing a workflow: using Docker to “Build A Banner”
- [Configuring Craft CMS with Redis for use on Heroku](https://supergeekery.com/blog/heroku-redis-sll-configuration.md): Configuring Craft CMS with Redis for use on Heroku
- [Build a basic Docker image](https://supergeekery.com/blog/making-a-basic-docker-image.md): Build a basic Docker image
- [OneTrust blocking video playback due to privacy setting](https://supergeekery.com/blog/onetrust-blocking-video-playback-privacy-tracking.md): OneTrust blocking video playback due to privacy setting
- [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): Video with transparency in Chrome, Edge, Firefox, Safari, iOS and Android, circa 2022 (updated in late 2024)
- [Tweaking site performance and configuring AWS](https://supergeekery.com/blog/tweaking-site-performance-amazon-aws.md): Tweaking site performance and configuring AWS
- [The HTML email template in Craft CMS](https://supergeekery.com/blog/craftcms-html-email-template-missing-documenation.md): The HTML email template in Craft CMS
- [Docker, Craft, Forge, Arcustech, and Heroku](https://supergeekery.com/blog/docker-craftcms-forge-arcustech-heroku.md): Docker, Craft, Forge, Arcustech, and Heroku
- [So long, Craft Link List, and hello again, Craft Link List](https://supergeekery.com/blog/craft-link-list.md): So long, Craft Link List, and hello again, Craft Link List
- [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): Adding Date Validation Logic when Creating an Event in Craft CMS 3
- [A critical error: Chromium revision is not downloaded.](https://supergeekery.com/blog/a-critical-error-chromium-revision-is-not-downloaded.md): A critical error: Chromium revision is not downloaded.
- [Installing Imagick in Valet](https://supergeekery.com/blog/installing-imagick-in-valet.md): Installing Imagick in Valet
- [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): Fixing a MariaDB database that has a corrupted root user password.
- [Synology, Plex, ports and missing URLs](https://supergeekery.com/blog/synology-plex-port-and-url.md): Synology, Plex, ports and missing URLs
- [Setting up Laravel Forge and DeployBot.](https://supergeekery.com/blog/laravel-forge-and-deploy-bot.md): Setting up Laravel Forge and DeployBot.
- [Yeoman generators, the file system and symlinks.](https://supergeekery.com/blog/yeoman-generator-locations.md): Yeoman generators, the file system and symlinks.
- [Removing Craft CMS plugins that you can't uninstall](https://supergeekery.com/blog/removing-craft-cms-plugins-that-you-cant-uninstall.md): Removing Craft CMS plugins that you can't uninstall
- [Using aliases on the command line.](https://supergeekery.com/blog/using-aliases-on-the-command-line.md): Using aliases on the command line.
- [A Checklist for the Craft Plugin Store](https://supergeekery.com/blog/getting-into-the-craft-plugin-store.md): A Checklist for the Craft Plugin Store
- [An S3 bucket policy to allow full-access for a single bucket.](https://supergeekery.com/blog/s3-bucket-policy.md): An S3 bucket policy to allow full-access for a single bucket.

## Standalone Page

- [Now](https://supergeekery.com/now.md)
- [Search](https://supergeekery.com/search.md)
- [Link List](https://supergeekery.com/links.md)
- [Contact](https://supergeekery.com/contact.md)
- [Uses](https://supergeekery.com/uses.md)
