- 2026
- Introducing Letterbird 2.0
- How We Configure Our Rails Local CI
- 2025
- Good Enough Is Reorganizing
- We’re Shutting Down Yay.Boo and Ponder
- TIL: Rails, CloundFront CDN, and imgproxy
- Prettier Email Headers
- How LRUG uses Jelly to remove confusion and simplify organisation
- You Need Customers to Succeed in Small Business
- James is Good Enough
- Barry is Good Enough
- There’s no “A” or “I” in “Jelly”
- TIL: Tiptap Excerpt Extension with Rails
- 2024
- You Complete Me
- Jelly was #1 on Hacker News
- TIL: Fixing Broken Social Share Images in Twitter/X
- TIL: Overriding Permalink Generation in FriendlyId
- Say hello to Jelly: the simplest way to jam on email as a team
- TIL: Fixing Broken Action Text Images in Atom Feeds
- Grassroots
- Let’s talk about conversations
- TIL: Easily Support Gravatars in Rails
- How We Built Unique Social Preview Images for Pika
- Pika: Start Your Happy Blog
- 2023
- TIL: Listen for JavaScript events only once!
- Why We’re Writing Blog Software
- Lettini is Good Enough
- Good Enough Marketing: The Preparation
- Adding Social Preview Images To Our 11ty Blog
- How We Made A Good Enough Zine
- TIL: Tapback Keyboard Shortcuts
- TIL: Use touch-action: manipulation; to avoid double-tap-to-zoom
- Thoughts On Thoughts
- Bad Ideas Are Fun
- The Space Between Us
- Having Trouble Getting Started? Pair Up!
- Fixing Things
- TIL: Rails has_one Nested Attributes Tweaking
- TIL: System Colors are supported in CSS, but they’re unreliable
- TIL: Turbo Stream and personalised content
- TIL: Blocking Password App Autocomplete on Form Fields
- Yes, Facebook Is Terrible, but Also…
- TIL: Managing Raspberry Pi software with a bit less pain
- Cool Songs Don’t Die
- How We Built Quack (Beta)
- Why We Built Quack (Beta)
- That time Marvel secretly endorsed my podcast with “the greatest comic book cover of all time”
- Our Favorite Video Games Right Now
- Cosmic Maelstrom
- TIL: Don’t forget your Web Manifest file
- Cool URLs Don’t Die
- TIL: Deploying a Sinatra app to Render.com
- My Tears of the Kingdom Addiction
- Beware of Free Software
- TIL: Turbo Stream broadcasting needs default_url_options to be set
- The Element of Surprise
- Strong Prototypes, Weakly Held
- Our ChatGPT Mission Statement
- Actual Customer Support Is Remarkable
- PEOs are Good Enough (for us)
- TIL: Use randomness to prevent email trimming
- Asking the Right Question
- Good Enough, A Serious Business
- TIL: Merge nested attributes in Rails permit params
- TIL: JavaScript Turbo Stream Requests
- All About CSS: Alphabetize, Normalize, and Dark-mode-itize
- TIL: Rails Testing
- TIL: Victory Symbol
- TIL: Turbo Frames