Set Up Redis Caching in Craft CMS with DDEV: A Step-by-Step Guide
Starting a Craft CMS project is easy if you follow the Quick Start Guide in the documentation. You’ll quickly be up and running with a basic server setup for local development with DDEV.In this post, I’ll expand on this starter setup by including Redis to handle your cache.Why Would You Want Redis in Your Local Dev Environment?Redis does caching in memory and reduces the load on your database. While this might not significantly impact… + read on
Never mistake your production, staging and local environments with Craft CMS
Have you ever accidentally changed something in your staging environment when you meant to make the change in production? Let’s make sure that never happens again. In this post, I’ll share how I use Control Panel CSS, a free Craft 5 plugin, and some garish design choices to make it blatantly obvious which Craft CMS environment I am working in.Just how distressing can these designs be? Take a look at the screenshots below. The… + read on
Customizing the CKEditor in Craft CMS
When I create a new rich text field in Craft CMS, I use the first-party CKEditor plugin. My nest task is to configure the field with some standard updates which is what we’ll cover in this post. Before diving in to my customizations, check out the plugin’s official documentation to understand the basic usage of the field type and learn about one of its superpowers, nested entries, which I won’t cover here. You’re not… + read on
Fixing a SQL database to have only one type of collation, a Craft CMS story
I’m in the process of updating a site from Craft CMS 4 to Craft CMS 5. As I read through the detailed upgrade guide, I noticed some database related items that deserved close attention. The character set and collation of the database will change during the upgrade. Before I did the upgrade, I discovered an issue with the collation type issue in my existing database. I had a mixture of two different collations and… + read on
Deter Clickjacking When You Can’t Set Security Headers By Using Javascript
In this post we’ll talk about clickjacking, how to protect your site visitor’s with robust soltuions, and a fallback method when you’re unable to do it the normal way. The need for this fallback solution is what inspired by a real-world scenario that I faced when a client needed a quick fix while the longer-term solution was implemented. What is clickjacking How do you protect your users from clickjacking? First, you have to be… + read on
Dark patterns by example. The inability to cancel the StatusCake service.
This post has two purposes. I want to help you understand a “dark pattern” in UX design. I also want to use a real-world example of a dark pattern in active use. This post is inspired by personal experience. I stumbled upon this dark pattern when trying to cancel the auto-renewal of StatusCake, a service I no longer need. Exposing the use of dark patterns is one of the only ways consumers have to… + read on
Sound like an audio professional with AI using Adobe Enhance Audio.
I record a lot of videos for my clients. For example, for a legal compliance review, I recently had to demonstate how a form worked based on the user’s country of origin. That was a difficult thing to communicate in an email, but the screencast made the review go through easily. I don’t have a professional recording studio in my office, but I like to make my recording sound as good as possible. There’s… + read on
Run your own uptime service: Uptime Kuma with Traefik on Laravel Forge
In this post, I will show you how to install Uptime Kuma, an open-source monitoring service, on your server. The post assumes you’re using Laravel Forge, but you can adapt them for other services. The basic workflow will stay the same. Uptime Kuma can monitor a variety of services. I use it to watch this site for downtime. If there is an issue, Uptime Kuma will sends a notification to my phone via the… + read on
AI and your content. How to opt to opt-out.
TLDR: This post will show you how to opt out of OpenAI’s large language model (LLM) used for ChatGPT by updating the robots.txt file. We’ll also discuss ways to opt out of other LLMs and web scrapers. The article starts by discussing how the value exchange is broken between content creators and big tech after the introduction of AI. If you create content for a living or just as a hobby, and that content… + read on
Analytics a different way. Plausible Analytics on Laravel Forge with Traefik and Docker.
Nearly everyone uses Google Analytics. It’s the industry standard for a reason. It’s an extremely powerful tool, but legal and privacy issues may concern you. Want to try a different route? Come along with me. TLDR: Install a self-hosted instance of Plausible Analytics in a Docker container with routing by Traefik Proxy. Laravel Forge is used to provision the server and deploy code. Where we’re headed We’re going to use Laravel Forge to create… + read on