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

Ink of the day: MIXING… 

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

Latest impression

Good UX takes using the app

This morn­ing I made a great advance in the user expe­ri­ence on Alias TTS. I’ve been work­ing on this app for about six weeks and every day I have anoth­er lit­tle insight on how to make it bet­ter. My self-imposed dead­line for a V1 is basi­cal­ly now, or actu­al­ly tomor­row, because this app is being sub­mit­ted for a hackathon, which is due on Mon­day, August 3rd. But every time I think it’s done and… + read on


Alias TTS: the audio was never the hard part

The sto­ry of a long-stand­ing love of audio, an open mod­el that gave me the same jolt Eleven­Labs did the first time I heard it, and the unglam­orous qual­i­ty-con­trol lay­er that turned it into some­thing I’d actu­al­ly put my name on. First, what is Alias TTS? Alias TTS is a self-host­ed text-to-speech ser­vice for cre­at­ing nat­ur­al-sound­ing audio in a cloned voice. It wraps open voice mod­els in the less glam­orous machin­ery a real appli­ca­tion… + read on


Designing Better Markdown for LLMs

One of the design goals of LLM Ready was that it should work with­out requir­ing devel­op­ers to think about AI at all. Install the plu­g­in and your pages imme­di­ate­ly become avail­able as clean Mark­down. No dupli­cate con­tent. No sec­ond set of tem­plates. No addi­tion­al main­te­nance. I did include one escape hatch: a cus­tom Twig tem­plate that lets you com­plete­ly con­trol the gen­er­at­ed Mark­down. If you’ve looked at the mark­down ver­sion of this page, you… + read on


Why the Images on My Blog Look Like That

Every once in a while, some­one mes­sages me to point out that the pho­tos on my blog look a lit­tle bro­ken. They are look­ing out for me, and I appre­ci­ate every sin­gle one of those mes­sages, even when the answer is no, I did that on pur­pose.” The dots, the col­ors bleed­ing into each oth­er, the way the images soft­en when they first load. They think maybe my Craft tem­plates are mis­fir­ing, or my… + read on


Goodbye Puppeteer, Hello Beasties: Simpler Critical CSS for Craft CMS

For a long time my Craft CMS build had a small but per­sis­tent embar­rass­ment buried inside it: a config.applesilicon.yaml file for DDEV that installed a small zoo of Lin­ux libraries just so a head­less Chrome could ren­der my pages and extract crit­i­cal CSS. Here is what that file looked like: webimage_​extra_​packages: [ libasound2, libatk1.0 – 0, libcairo2, libgtk‑3 – 0, libnspr4, libpango‑1.0 – 0, libpangocairo‑1.0 – 0, libx11-xcb1, libxcomposite1, libxcursor1, libxdamage1, libxfixes3, libxi6, libxrandr2, libxrender1, libxss1, libxtst6, fonts-lib­er­a­tion, libnss3, xdg-utils, chromi­um ]… + read on


Upgrading Your Local Gemma Setup

In Part 1, I set up Google’s Gem­ma 4 run­ning local­ly on macOS with Olla­ma and cre­at­ed a sim­ple gem­ma shell func­tion. It worked, but it was bare-bones — no auto-start, no mark­down ren­der­ing, and the inter­ac­tive mode was just a pass-through to olla­ma run. Here’s how I turned that basic short­cut into some­thing that feels like a pol­ished chat inter­face, all with­in a sin­gle shell func­tion. The Prob­lem with Plain Text Gem­ma’s respons­es… + read on


Running Google’s Gemma 4 Locally on macOS with Ollama

Large lan­guage mod­els don’t have to live in the cloud. With Olla­ma and a recent Mac, you can run Google’s Gem­ma 4 mod­els entire­ly on your own machine. No API keys. No usage lim­its. No data leav­ing your lap­top. Here’s how I set it up. Installing Olla­ma Olla­ma is the eas­i­est way to run open-weight LLMs local­ly. On macOS, it’s a sin­gle Home­brew com­mand: brew install olla­ma Once installed, start the Olla­ma ser­vice: brew… + read on


LLM Ready: The Craft CMS plugin I never imagined I’d make

The LLM Ready logo was designed to suggest connecting nodes and also a hashtag.

I’ll be hon­est: when AI com­pa­nies start­ed scrap­ing the web to train their mod­els, my first reac­tion was frus­tra­tion. Years of care­ful­ly writ­ten con­tent, hoovered up with­out so much as a heads-up. But over the past year, my POV has shift­ed. Con­ver­sa­tions with devel­op­er friends, arti­cles pop­ping up in my feed dai­ly, the emer­gence of the llms.txt spec­i­fi­ca­tion — it all point­ed in one direc­tion. This isn’t a pass­ing trend. Peo­ple are increas­ing­ly skip­ping… + read on


Bespoken 5.3.0: Long-Form Audio, Credit Tracking, and Multisite Support

The Bespoken UI now reports how many credits you have in your ElevenLabs account

When I shipped Bespo­ken 5.2.0 ear­li­er this month, the focus was on refin­ing pro­nun­ci­a­tion rules, mak­ing it eas­i­er to strip unwant­ed char­ac­ters from nar­ra­tion scripts and giv­ing you visu­al feed­back in the set­tings UI. That release laid impor­tant ground­work, but I knew the plu­g­in still had a hard ceil­ing: if your entry text was too long, Eleven­Labs would reject it out­right. And if you were run­ning a mul­ti­site install, things could break in sub­tle,… + read on


What happens when the Good, Fast, Cheap” rule breaks?

When I first start­ed in adver­tis­ing, I worked with an art buy­er and pro­duc­er named Karen Meenaghan at Ammi­rati & Puris. (I loved hang­ing out in her office.) She intro­duced me to an idea that has stayed with me ever since: Good. Fast. Cheap. Pick any two. It was framed as a fun­da­men­tal con­straint of the uni­verse. It wasn’t advice. It was more like the laws of physics. If some­thing was good and fast,… + read on