Giant Robots Smashing Into Other Giant Robots
PII filtering for RubyLLM with Top Secret
The AI stack I developed to help me context switch
Giant Robots Podcast Ep 608: Project Updates with Will, Chad and Sami
The age of snarky UI
AI in Focus: A new Claude Skill for Rails code audits
You, too, can make a boilerplate
Sixty-six commits and the commands that didn't survive
Attending and speaking at Haggis Ruby
Enhancing job reliability with Sidekiq Pro's super fetch strategy
How strategic product design reduces risk before you write code
The Opinionated thoughtbotter: Bootstrap is the Superior Front-End Toolkit
Giant Robots Podcast Ep 606: AI layoffs are BS
Meet Duck Typer: your new duck typing friend
I copied a prompt and built a management system in a week
Observability for your LLM-powered apps: OTel Instrumentation for RubyLLM
Introducing Test Budget: a linter for test performance
The Bike Shed Ep 498: Season 2 Recap
How to launch a Lovable MVP in 2026
The Bike Shed Ep 497: Diagrams we love
Claude Skill incoming! Generating Postman collections with AI
Combine Capybara selectors to avoid the sequential timeout trap
The Bike Shed Ep 496: Test suite performance
Your chat bot needs a better rate limit strategy
How to choose and implement an LLM for your healthcare product
The Opinionated thoughtbotter: Linting is Non-Negotiable
48 companies you didn't know were using Rails in 2026
Claude Code skills: Automating FDA-required documentation for software as a medical device
The Bike Shed Ep 495: A shortcut to years of experience
Giant Robots Podcast Ep 603: The product we are going to build
Going beyond vibe coding with ReadySetGo
Going beyond vibe coding with ReadySetGo
Giant Robots Podcast Ep 603: The product we are going to build
A JavaScript developer's guide to Rails: Authorization with Pundit
Our first Tech Leaders Meetup in Bristol, UK
Our first Tech Leaders Meetup in Bristol, UK
A JavaScript developer's guide to Rails: Authorization with Pundit
The Bike Shed Ep 494: Primitive Obsession
The Bike Shed Ep 494: Primitive Obsession
props_template 1.0: A high performance, more opinionated jbuilder replacement
props_template 1.0: A high performance, more opinionated jbuilder replacement
A JavaScript developer's guide to Rails: What is Polymorphic Rails Model?
Claude Code: Production ready code in a two-week sprint
Teach your models to act, not just be
Announcing Michel: A scheduling gem for health tech
A JavaScript developer's guide to Rails: ActiveRecord Fundamentals
The Bike Shed Ep 492: Defining value within your team
What do our workspaces look like? (2026 Edition)
Giant Robots Podcast Ep 601: The thing that makes us human
A JavaScript developer's guide to Rails: What does Composition Over Inheritance mean?
The Bike Shed Ep 491: Influences that shaped our thinking
What Shoulda Matchers Is Actually Doing For You
Giant Robots Podcast Ep 600: The Special One
A JavaScript developer's guide to Rails: Where Does Everything Come From?
Code Audits in the Days of AI
The Bike Shed Ep 490: Large Language Misadventure
This week in #dev (Jan 9, 2026)
Our UK Tech Leader Tour
Giant Robots Podcast Ep 599: Be Bold
A JavaScript Developer's Guide to Rails - Series Introduction
Building programmable QA with AI
Rapid prototyping with Claude Code: How we transformed our design sprint process
The Bike Shed Ep 489: What makes a codebase welcoming
Prevent the Robocalypse with Claude Code and TDD
ChatGPT agent: Experimenting with QA automation
Wrapping up 2025 with our thanks
Your legacy software is a ticking bomb
Working across time zones: When async becomes the default
Your End-of-Year Software Audit Checklist (for Technical Product Teams)
How a £20 mirror solved a £35,000 engineering problem (and why you, a Product Founder, CTO or Head of R&D should care)
How fast can you go?
The Arrange/Act/Assert pattern
Testing is software engineering
How to review AI generated PRs
Giant Robots Podcast Ep 598: Animals and AI Accounting with Sam Landsberg
Turn Any Idea Into a Validated MVP
You cannot not lead
Querying encrypted data in Rails using Deterministic Encryption
Git 3.0 will use main as the default branch
We're a fully-remote company. Why host concurrent In-Person and Remote Summits?
AI in Focus: Pair programming with AI
Giant Robots Podcast Ep 597: Say Yes with Nick Merwin
Presenting at tiny ruby on Friday, November 21, 2025!
How to use LLMs without driving your team mad
My Favorite Mac VoiceOver commands
How to design a join code system
thoughtbot at Just Product 2025
Extending factory_bot with custom strategies at thoughtbot Open Summit
The Bike Shed Ep 480: The President's Doctor with Jared Turner
Rethinking CSS with Roux - debuting at thoughtbot Open Summit
Bridging the gap between Rails and React with Superglue at thoughtbot Open Summit
Announcing the thoughtbot Open Summit 2025 full schedule
Finding Your Niche as a Full Stack Designer
Putting our values to work: rethinking expenses
Giant Robots Podcast Ep 594: AI is Draining with Pablo Curell
Releasing v 1.0 of Administrate LIVE at thoughtbot Open Summit
Fear isn’t the enemy in teamwork — silence is.
New thoughtbot merch store just launched!
thoughtbot’s internal consulting course is now public
What sets thoughtbot designers apart?
🎙️ Free Resource: Product Design Sprint FigJam Template