Remaking Twitter thoughts
I created my Twitter account in 2007. It’s been my favorite social platform. The content and connections to people I get from Twitter aren’t replicated on any other platform that I’ve tried.There’s an obvious problem with my love of Twitter, and I’m not talking about the bad things it may or may not do to society. Twitter’s financials have never been good, and a company that regularly loses money is unsustainable.I want someone to… + read on
Stable Diffusion: Exploring trained models and unique tokens for more accurate text-to-image results

Before I get started, I’ve got a preamble to this post. I’m only in the early discovery process of AI-powered text-to-image technology. There’s a good chance you know more than I do about this topic! I’m writing this to document what I’ve learned. If you’re reading this, you might be on the same journey. If so, I hope you find this helpful. If you peaked ahead in this post, you’d see all kinds of… + read on
RSS feeds and unbound prefix errors
I recently was asked to add an image to an existing RSS feed that had been working for a client for years. This is the simplified version, with only a single item, of what I was starting with. <?xml version=“1.0” encoding=“utf‑8”?> <rss version=“2.0” xmlns:atom=“http://www.w3.org/2005/Atom”> <channel> <title>Example Site Name</title> <atom:link href=“http://example.com/feed” rel=“self” type=“application/rss+xml” /> <link>http://example.com/</link> <description>News from Example</description> <language>en-us</language> <pubDate>Fri, 08 Apr 2022 09:53:25 ‑0500</pubDate> <lastBuildDate>Fri, 08 Apr 2022 09:53:25 ‑0500</lastBuildDate> <item> <title>My Example Entry… + read on
npm in a box: Containerizing package managers for security.

I’ve written about Docker quite a bit recently. This flurry of activity about Docker is directly related to a post by Andrew Welch, Dock Life: Using Docker for All The Things! He describes how to use aliases and Docker containers to run apps typically installed on a developer’s computer without needing to install software directly on the machine. I have wholeheartedly embraced the methodology. The idea of running development tools in Docker containers for… + read on
Containerizing a workflow: using Docker to “Build A Banner”

We use a custom-built animation workflow at JMX2 that we’ve containerized with Docker to ensure it runs consistently on any machine we work on. We’ll go over that process in this post. The background At JMX2, we build a lot of animated advertising banners. (You’re welcome! :winking_face:) In 2015, we created a Yeoman generator called “Build A Banner” to quickly create a consistent starting point for each project. This required having Yeoman, Node, Gulp.js,… + read on
Configuring Craft CMS with Redis for use on Heroku
This post is about connecting a Heroku app built in Craft CMS to Heroku Redis with an SSL connection. I’ve recently taken an app from the free tier to a paid tier on Heroku and was presented with a problem with connecting my Craft CMS app to Redis. I hope this post is helpful to someone else who’s found themselves in this situation. Upgrading Heroku Redis from the free tier to a paid tier… + read on
Build a basic Docker image

In this post, we’ll dissect a small Docker image I have on Docker Hub: johnfmorton/tree-cli. It’s not a complex image, but its simplicity is good because it is fairly easy to understand. Once you understand the basics, you can create your own more complex Docker images. The tree-cli image is based on an official Node image and has one customization: I’ve installed tree-cli from npm, which is a package that allows us to list… + read on
OneTrust blocking video playback due to privacy setting

I have several clients that use OneTrust for cookie consent. Each organization has different configurations for its OneTrust implementation. Today we encountered a tricky situation that I wanted to share. This particular organization’s OneTrust configuration is set to “auto” which means OneTrust will actively enforce the user’s cookie preferences without much configuration. The “auto” setting makes implementing OneTrust much easier, but we hit a roadblock when it came to allowing video playback for users… + read on
Video with transparency in Chrome, Edge, Firefox, Safari, iOS and Android, circa 2022 (updated in late 2024)

This post on using video with a transparent background will probably not age well. At least, I hope that is the case! Ideally, in the future, you can use a single .webm video file with an alpha channel and it will work everywhere.But, as I write this post in January 2022, and have updated in 2024, after much research and trying different approaches, I have a <video> tag that will play a video with… + read on
Tweaking site performance and configuring AWS

I’ve recently updated jmx2.com. The site worked as it was and I didn’t really have the spare time to get to the ever-growing list of updates I’d accumulated. I had a week of relative quiet appear and I’ve finally worked on the site again. Here’s what I’ve been doing. General clean up of the code in the Craft Twig templates. Built a new server with PHP 8 and moved the site. I had already… + read on