RSS.Social

Giant Robots Smashing Into Other Giant Robots

follow: @[email protected]

Posts

Can’t touch the DOM? Reach for :has() to style any element

Buying Time, Choosing Words: Consulting Through Diplomatic Communication

thoughtbot around the world, meet us at upcoming events

Modeling State Transitions in Postgres

Humid 1.0: React server-side rendering in Rails can be easy!

A prototype is not a product. It's a conversation.

New: The State of Software Delivery in Healthcare

Sign in with Google for React Native

What founders told us about working with AI tools for startups

Join us: Building Secure Healthcare Systems

Upcase has retired, but the learning continues

The Bike Shed Ep 506: The Muppet Software Team

Migrating to native stack navigation, with a surprise from iOS 26

Past and present thoughtbotters at LRUG this Monday

The Bike Shed Ep 505: What is a “principal” or “staff” engineer?

Your vibe coded website is going to get you fined

Roux’s New Component Library

Why we're choosing stewardship over an exit

The Bike Shed Ep 503: Seeing the Graph for the Trees

Announcing Shoulda Matchers 8.0: validate multiple attributes in one line

AI's "overnight" solution for our flaky tests took two weeks to adopt

The Playwright debugging tool Rails devs aren't using

Meet thoughtbot at Brighton Ruby 2026

Giant Robots Podcast Ep 614: AI Code Audits

The mistake I didn't realise I was making when designing workshops

AI crawlers are inflating your view counts

The Bike Shed Ep 502: Apps That Make Our Work Go

Toast: the 2-minute test that reveals how you think about building products

How I Built a Chrome Extension Wrapper (and Everything That Tried to Stop Me)

Enforcing Your Ruby Style Guide on AI-Generated Code

Copy as Markdown: AI-friendly blog posts

The Bike Shed Ep 501: What makes for good technical writing?

The Four Signals of AI Observability

Can you really launch a tech business with a no-code app builder?

This week in #dev (May 15, 2026)

Giant Robots Podcast Ep 612: Do fish drink?

Lost, forgotten, and unfamiliar HTML

Why Duck Typer?

The Bike Shed Ep 500: Celebrating with past hosts

Biometrics authentication for your mobile app

Claude Code + Figma for non-technical designers

Why thoughtbot is joining the Ruby Alliance

Summer Special: We’re Taking London Tech Leaders Outdoors

AI and minority languages

6 key insights from Startup Grind Global 2026

When to use (and not use) CSS shorthand properties

Reflections on my conversation with Lord Chris Holmes MBE

Illusions Of Fluency

The Pace Of Feedback

A Conversation With The Situation

The TEXTSIZE trap: how TDS silently truncates your binary data in Rails

The output must be cleaned (with skill)

Austin Tech Leaders is growing, thoughtfully (and we have the photos to prove it)

Simple, affordable unsupervised agentic coding from my phone with Claude Code in Github Actions

Your carousel might not be accessible: designing for reduced motion

Reviewing Dependabot PRs is boring. Let Claude do it for you.

Retro-driven development

Trimming our CSS with sibling-index() and sibling-count()

Seven commands and the communication layer that emerged

Human vs Machine: the Bug

Let's enable MFA for all Ruby gems

Ship faster: How to unlock development speed in regulated industries

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