SuperGeekery: A blog probably of interest only to nerds by John F Morton.

A blog prob­a­bly of inter­est only to nerds by John F Mor­ton.

Fixing a SQL database to have only one type of collation, a Craft CMS story

Spiderman database collation

I’m in the process of updat­ing a site from Craft CMS 4 to Craft CMS 5. As I read through the detailed upgrade guide, I noticed some data­base relat­ed items that deserved close atten­tion. The char­ac­ter set and col­la­tion of the data­base will change dur­ing the upgrade. Before I did the upgrade, I dis­cov­ered an issue with the col­la­tion type issue in my exist­ing data­base. I had a mix­ture of two dif­fer­ent col­la­tions and… + read on

    Deter Clickjacking When You Can’t Set Security Headers By Using Javascript

    Dont clickjack me

    In this post we’ll talk about click­jack­ing, how to pro­tect your site vis­i­tor’s with robust sol­tu­ions, and a fall­back method when you’re unable to do it the nor­mal way. The need for this fall­back solu­tion is what inspired by a real-world sce­nario that I faced when a client need­ed a quick fix while the longer-term solu­tion was imple­ment­ed. ## What is click­jack­ing How do you pro­tect your users from click­jack­ing? First, you have to… + read on

    The Art of Writing Effective GPT Prompts: A Step-by-Step Workflow

    Meta ai prompt creation

    I’m end­ing the year with a meta post. Over the course of 2023, just like the rest of the world, I’ve been exper­i­ment­ing with Chat­G­PT and oth­er LLMs. I’ll share a prompt I wrote and the con­tent that it cre­at­ed as an exam­ple of how I’m inter­act­ing with AI mod­els. ## The human-writ­ten intro­duc­tion The prompt that gen­er­at­ed the body of this post is what I’d like for you to focus on as you… + read on

    Dark patterns by example. The inability to cancel the StatusCake service.

    Dark patterns no exit

    This post has two pur­pos­es. I want to help you under­stand a dark pat­tern” in UX design. I also want to use a real-world exam­ple of a dark pat­tern in active use. This post is inspired by per­son­al expe­ri­ence. I stum­bled upon this dark pat­tern when try­ing to can­cel the auto-renew­al of Sta­tus­Cake, a ser­vice I no longer need. Expos­ing the use of dark pat­terns is one of the only ways con­sumers have to… + read on

    Sound like an audio professional with AI using Adobe Enhance Audio.

    Transforming audio
    A microphone transforming into a digital waveform surrounded by AI circuits and gears.

    I record a lot of videos for my clients. For exam­ple, for a legal com­pli­ance review, I recent­ly had to demon­state how a form worked based on the user’s coun­try of ori­gin. That was a dif­fi­cult thing to com­mu­ni­cate in an email, but the screen­cast made the review go through eas­i­ly. I don’t have a pro­fes­sion­al record­ing stu­dio in my office, but I like to make my record­ing sound as good as pos­si­ble. There’s… + read on

    Run your own uptime service: Uptime Kuma with Traefik on Laravel Forge

    robot-staring-at-computer
    A robot staring intently at a website. the robots has wide eyes like it has been staring at the screen all night long. (Stable Diffusion)

    In this post, I will show you how to install Uptime Kuma, an open-source mon­i­tor­ing ser­vice, on your serv­er. The post assumes you’re using Lar­avel Forge, but you can adapt them for oth­er ser­vices. The basic work­flow will stay the same. Uptime Kuma can mon­i­tor a vari­ety of ser­vices. I use it to watch this site for down­time. If there is an issue, Uptime Kuma will sends a noti­fi­ca­tion to my phone via the… + read on

    AI and your content. How to opt to opt-out.

    A robot stealing an apple
    A robot stealing an apple from an apple cart, generated by AI.

    > TLDR: This post will show you how to opt out of Ope­nAI’s large lan­guage mod­el (LLM) used for Chat­G­PT by updat­ing the robots.txt file. We’ll also dis­cuss ways to opt out of oth­er LLMs and web scrap­ers. The arti­cle starts by dis­cussing how the val­ue exchange is bro­ken between con­tent cre­ators and big tech after the intro­duc­tion of AI. If you cre­ate con­tent for a liv­ing or just as a hob­by, and that… + read on

    Analytics a different way. Plausible Analytics on Laravel Forge with Traefik and Docker.

    Out into the desert

    Near­ly every­one uses Google Ana­lyt­ics. It’s the indus­try stan­dard for a rea­son. It’s an extreme­ly pow­er­ful tool, but legal and pri­va­cy issues may con­cern you. Want to try a dif­fer­ent route? Come along with me. > TLDR: Install a self-host­ed instance of Plau­si­ble Ana­lyt­ics in a Dock­er con­tain­er with rout­ing by Trae­fik Proxy. Lar­avel Forge is used to pro­vi­sion the serv­er and deploy code. ## Where we’re head­ed We’re going to use Lar­avel Forge… + read on

      Entry Editor Links, a new Craft CMS plugin

      Entry editor link example
      Example of the Entry Editor Links plugin. For authorized users, each entry title includes a link to edit the post.

      I have pub­lished a new plu­g­in on the Craft CMS plu­g­in store: Entry Edi­tor Links. This plu­g­in is designed to help devel­op­ers quick­ly cre­ate links to an entry’s edit page in the con­trol pan­el for autho­rized users on the front end of a Craft site. ## Use Twig instead If you’re not sta­t­i­cal­ly caching your site, you can achieve a link in your Twig tem­plates and avoid adding anoth­er plu­g­in. One Darn­ley Road­’s starter… + read on

      Learning the FileMaker Data API by trial and error.

      I’ve recent­ly com­plet­ed work on inte­grat­ing the File­Mak­er Data API into a Javascript appli­ca­tion. I fum­bled around dur­ing the process and want­ed to doc­u­ment my thoughts while my impres­sions were still fresh. ## The most sig­nif­i­cant issue: find­ing the cor­rect doc­u­men­ta­tion I’ll start with the con­clu­sion. My search­es did­n’t sur­face the cor­rect doc­u­men­ta­tion when I began the process, so I’ll share some URLs to begin. The Claris File­Mak­er Data API doc­u­men­ta­tion: https://​help​.claris​.com/​e​n​/​d​a​t​a​-​a​p​i​-​g​u​i​d​e​/​c​o​n​t​e​n​t​/​i​n​d​e​x​.html … + read on