It Started with a Skateboard Video
Three things I love: making videos, writing Ruby, and my family. It took me almost thirty years — and one broken Dazzle capture card — to get all three into the same project.
I’m Jonathan, the CTO of Loyal, with over two decades of experience in software development for startups. This space is where I share my experiences, insights, and opinions—both popular and unconventional.
My ramblings will be on mobile and web applications, startup launches, favorite books, user acquisition, user experience, (maybe parenting) and most importantly, driving revenue.
Three things I love: making videos, writing Ruby, and my family. It took me almost thirty years — and one broken Dazzle capture card — to get all three into the same project.
Fable 5 is the most capable model I've got, and most people waste it. Here's the routing system, the loop structure, and the CLAUDE.md config I use to spend it only where being wrong is expensive.
Every cross-platform promise — PhoneGap, Cordova, Flutter, React Native — traded a small early saving for a large later cost. Here's why we build native Swift and Kotlin, with real numbers from our own portfolio, and why AI agents just killed the one objection that used to matter.
A disk-space tool showed me 141 GB in com.docker.docker. My cleanup.sh had been running weekly for two years and barely touched it. The culprit wasn't images, containers, or volumes — it was a buildx builder Kamal created and never cleaned up. Here's the script that actually works.
Last month I built a Claude Code skill that produces JJG product plans. This month I built the loop that turns those plans into shipped features — one at a time, with persona QA, agent reviews, and a CEO email at the end.
Level Up Your Leadership
Join CTO Academy for world-class coaching and resources to accelerate your tech leadership career.
Get 10% OffThis blog is proudly hosted on American Cloud—fast, reliable, and 100% US-based infrastructure.
Try American Cloud