How to write good epics

Before we dig in, you will benefit most from this piece if you first understand the benefits of grouping things and have a good feel for what bad looks like. After that, this post shouldn’t be surprising. But because repetition is memory’s friend, let’s explicitly cover off some … | Continue reading


@thoughtbot.com | 2 months ago

Can Auto-Playing Videos be Accessible?

Auto-playing videos are used on many websites to add visual interest to the page. These videos are typically short, muted videos that supplement the text content on the page. They can be engaging, entertaining, or informative, but, they can also be overwhelming or even dangerous … | Continue reading


@thoughtbot.com | 2 months ago

SRE: The Next Big Thing from thoughtbot's Platform Engineering team

thoughtbot is proud to add Site Reliability Engineering to our DevOps, SRE & Cloud Platform team. Site Reliability Engineering, or SRE, is a different approach to maintenance. It focuses on keeping a product running smoothly through better metrics and increased observability. Our … | Continue reading


@thoughtbot.com | 2 months ago

PDS Kit - What happens on Day 3?

If you are following along with our Design Sprint Kit video playlist, this blog will shine a light on the activities you will be doing on Day 3 of your Product Design Sprint. Goal of Day 3: While Day 2 is about diverging and coming up with as many solutions as possible, Da … | Continue reading


@thoughtbot.com | 2 months ago

DevOps 101 - Intro to DevOps, SRE & Cloud Platform

An overview of DevOps and how thoughtbot’s Platform Engineering team works together with the other teams to delight clients. What is DevOps? The conjunction of Development and Operations, the term became popular over 10 years ago in tech startups with small teams where the … | Continue reading


@thoughtbot.com | 2 months ago

Monitoring PostgreSQL on AWS RDS for slow queries

Databases serve as the backbone for countless applications and systems that drive modern businesses. Efficient database performance is critical for ensuring seamless user experiences, rapid response times, and overall system reliability. However, even the most robust database sys … | Continue reading


@thoughtbot.com | 2 months ago

How We Help Startups Choose a Tech Stack

My team at thoughtbot works with founders, entrepreneurs and early-stage start-ups. Often they don’t have a technical team member, let alone staff developers or a codebase. Many of these folks look to thoughtbot to play a CTO role: guiding them in their technology choices while b … | Continue reading


@thoughtbot.com | 2 months ago

Linear Regression using dataframes in Ruby

This article will introduce data science by presenting an essential method: linear regression. It’s a method used when two types of continuous numeric data correlate. Typical examples of data that correlate are the size of a flat and its price, the amount of time spent studying a … | Continue reading


@thoughtbot.com | 2 months ago

PDS Kit - What happens on Day 2?

If you are following along with our Design Sprint Kit video playlist, this blog will shine a light on the activities you will be doing on Day 2 of your Product Design Sprint. Goal of Day 2: Day 2 is, perhaps, the most important day of the Sprint. It serves as the pivotal b … | Continue reading


@thoughtbot.com | 2 months ago

This Week in Open Source (December 22, 2023)

Welcome to 2024! Oh… It’s already February? I’m still playing end of the year catch up but there’s plenty of updates to get updated on! Contained within this edition includes updates between November 3rd and December 22, 2023. Thank you to all our many contributors! I especiall … | Continue reading


@thoughtbot.com | 2 months ago

How To Ask Good Questions Online

So, you have a question about programming. You want to reach out for help online. Understanding how to ask a good question is essential: the best way to receive a good answer is by asking a good question. This guide will help you with that! This applies to forums, Slack, Discord, … | Continue reading


@thoughtbot.com | 2 months ago

This Week in #dev (Feb 9, 2024)

Welcome to another edition of This Week in #dev, a series of posts where we bring some of our most interesting Slack conversations to the public. Inverting where Clauses in Rails Fer Perales learned about the invert_where method in Rails’ Active Record. class User scope :a … | Continue reading


@thoughtbot.com | 2 months ago

PDS Kit - What happens on Day 1?

Goal of Day 1: Day 1 of a Product Design Sprint is all about gaining a really in-depth understanding of the problem we are trying to solve on the Sprint, of our potential customers and their pain points. We are essentially trying to get into the heads of potential customers or … | Continue reading


@thoughtbot.com | 2 months ago

A review of FOSDEM 2024 ruby talks

I will present the talks in order of appearance. They were organized in such an order, from the most accessible to the most complex. The first one was The best case scenario by Sandjiv. Sandvij introduced everything about pattern matching in Ruby, from it’s implementation in the … | Continue reading


@thoughtbot.com | 2 months ago

Get consistent data from your LLM with JSON Schema

We recently started an internal project to gain experience with Large Language Models (LLMs) and generate content for a role play-based application. If you are unfamiliar with LLM or AI in general, a good starting point could be Mike and Steffani’s article on the topic. One of ou … | Continue reading


@thoughtbot.com | 2 months ago

How to use an open source LLM model locally and remotely

When I first started researching how we can use an open source AI model, it seemed daunting initially. There is a lot of fragmented information on the internet from many different sources, making it difficult to start your project quickly. The goal of this post is to have one eas … | Continue reading


@thoughtbot.com | 3 months ago

How not to deploy an LLM

The context of this story is me, joining an experiment by colleagues with LLMs . They have Mac computers; I have a computer that runs on PopOS. By now, this is very rarely an issue; we have tools to handle different environments. This is not entirely the case with LLMs, for some … | Continue reading


@thoughtbot.com | 3 months ago

Live Pitch Deck Review Event

Pitch decks are essential tools for any entrepreneur seeking funding or aiming to attract investors. They provide a concise overview of your business, showcasing your products, services, goals, and strategies. thoughtbot is teaming up with other early stage startup experts from … | Continue reading


@thoughtbot.com | 3 months ago

This Week in #dev (Jan 26, 2024)

Welcome to another edition of This Week in #dev, a series of posts where we bring some of our most interesting Slack conversations to the public. Loading Data into MySQL Quickly Matheus Richard shared a video about loading 100,000,000 rows into a MySQL database. In particul … | Continue reading


@thoughtbot.com | 3 months ago

New Workshop: Intro to Site Reliability Engineering

There are a few paths that lead a developer or engineering manager to reach for their favorite search engine or forum to learn more about Site Reliability Engineering. One route may be the curious practitioner who loves understanding the latest best practices in development proce … | Continue reading


@thoughtbot.com | 3 months ago

Introducing the Product Design Sprint Kit by thoughtbot!

Have you got the next game changing idea? Do you think it could become a great product? Have you always wanted to start your own business but you just don’t know where to begin? Well look no further! We are delighted to introduce the Product Design Sprint Kit by thoughtbot! This … | Continue reading


@thoughtbot.com | 3 months ago

Rails advanced routing constraints

I’m on a client project that’s using Devise. In an effort to prevent anonymous users from accessing admin routes, we wrap those routes with an authenticated constraint. This constraint also ensures only authenticated users who are admins are allowed access. # config/routes.rb aut … | Continue reading


@thoughtbot.com | 3 months ago

Rails advanced routing contraints

I’m on a client project that’s using Devise. In an effort to prevent anonymous users from accessing admin routes, we wrap those routes with an authenticated constraint. This constraint also ensures only authenticated users who are admins are allowed access. # config/routes.rb aut … | Continue reading


@thoughtbot.com | 3 months ago

Handling external API errors: A transactional approach

Error handling and fault tolerance are often neglected aspects of development. How much does it cost to fix errors due to a poorly implemented error handling strategy or a complete lack thereof? How many API integrations are poorly put together, disregarding what can go wrong? Ho … | Continue reading


@thoughtbot.com | 3 months ago

3 Question Framework – How to Respond Without Reacting

Last year, in 2023, I applied internally for a Development Team Lead position – and got the job . Basically that means that I manage wonderful folks on top of continuing to work as a developer and consultant. My add-on focus, so to say, is that I work with my teammates to identif … | Continue reading


@thoughtbot.com | 3 months ago

Upcoming Ruby and Rails Conferences in 2024

We’ve always found the Ruby community to be one of the most welcoming, diverse, brilliant and newcomer friendly groups around. Any chance to meet new #rubyfriends (it’s a thing), learn about new developments in the ecosystem and grow our skills as rubyists is one we won’t pass up … | Continue reading


@thoughtbot.com | 3 months ago

This week in #dev (Jan 5, 2024)

Welcome to another edition of This Week in #dev, a series of posts where we bring some of our most interesting Slack conversations to the public. Fuzzy Finding Rails Routes Neil Carvalho mentions fzf, an interactive command-line fuzzy finder that can be used with any list ( … | Continue reading


@thoughtbot.com | 3 months ago

Update from RubyConf 2023

If you missed out on RubyConf 2023 or just want to relive the action, video recordings of thoughtbot’s presentations are now available on YouTube. Please check them out! Which Time Is It? By Joël Quenneville Can you add two time values together? Yes. No. Not so fast! Rese … | Continue reading


@thoughtbot.com | 4 months ago

Introducing Superglue: React ❤️ Rails

At thoughtbot, we rely on Rails to build applications at high velocities. When faced with adding modern client-side interactivity, we may have many forms of progressive enhancement to turn to. In particular, gaining popularity within the team are the trio of companion libraries: … | Continue reading


@thoughtbot.com | 4 months ago

Green Tech - BeeOdiversity Live Stream

BeeOdiversity: thoughtbot recently worked with an innovative, Belgium-based company; BeeOdiversity. BeeOdiversity provide a range of software solutions that allow companies to monitor their impact on the biodiversity and wildlife around their sites. Their clients include large … | Continue reading


@thoughtbot.com | 4 months ago

Turn Your Code Into Pixel Art

In 2022, I found out what the average programming language color was. Today, I want to transform code itself into pixel art (in less than 100 LOC). What? The plan is very simple: I’ll parse a Ruby file to collect all token types, assign each token a color, and then render e … | Continue reading


@thoughtbot.com | 4 months ago

Using a design sprint to find focus for an AI solution

As the AI/ML industry continues to grow, thoughtbot has turned its gaze internally to evaluate our own processes. In particular, we recently came to scrutinize the product design sprint and how it may evolve with the new tools available to us. For two weeks a cross-functional tea … | Continue reading


@thoughtbot.com | 4 months ago

Rubber Duck Debugging in public

What is Rubber Duck Debugging? Rubber Duck Debugging is a debugging technique based on describing out loud to a rubber duck, or anything or anyone, what your program is supposed to do, which usually makes you realize what you’re doing wrong. As rubberduckdebugging.com describes … | Continue reading


@thoughtbot.com | 4 months ago

Route-Based Scaling on Kubernetes for Rails Monoliths

Opinions on monoliths, microservices, and modularization vary widely throughout the Rails community, but one thing is certain: we still encounter a lot of monoliths out there. This is a comfortable style for many developers when building Rails applications, but some discomfort ca … | Continue reading


@thoughtbot.com | 4 months ago

Do you really need that new feature?

I recently caught this gem while tuning in to an Adam’s Grant podcast episode on bureaucracy. There’s this original experiment they talked about: when tasked with enhancing a Lego masterpiece,everybody tend to throw more blocks in the mix and almost never strip some away. Even if … | Continue reading


@thoughtbot.com | 4 months ago

cargo-generate: The Consultant's Secret Superpower

We have two teams dedicated to new apps, so it’s no surprise that we’re drawn to Rust’s cargo-generate tool. The project’s documentation is a good starting point. We’d like to pass on some guidelines and lessons we’ve learned while using it. Always specify the cargo-generate … | Continue reading


@thoughtbot.com | 4 months ago

Incubator Update 3 with Josh at Knect: Rapid Iterations Towards Insight

Sometimes you need more than one smart person — we needed a team of the right people ready to dive in quickly. These senior engineers didn’t just tackle technical issues, they opened up a whole new way of looking at problems. It was fast, it was intense, and it totally changed th … | Continue reading


@thoughtbot.com | 4 months ago

How I Have Fun With Rust

Ruby is my main programming language, but in the last few months, I’ve been playing with Rust on side projects. Sometimes it was super fun, sometimes it was ultimately frustrating. To ensure I always break even, I came up with a few guidelines for myself. Take the easy way ou … | Continue reading


@thoughtbot.com | 4 months ago

Rails: When Changing Code Doesn't Change Behavior

We’ve all been there. We’re updating the code, but nothing changes (either in the UI or in the back-end). Here’s a list of things to check to figure out what’s wrong. Check Your Environment I’m particularly guilty of this one. I’ve spent time figuring out why my changes wer … | Continue reading


@thoughtbot.com | 4 months ago

Code for unity: join the remote icebreaker challenge ✨

You’re in the weekly rhythm of planning, stand-ups, and retros. It’s all going fine, but you can’t help but feel that something’s missing – that spark in the team. Cultivating a vibrant culture is even more challenging when your team is scattered across remote locations. But fear … | Continue reading


@thoughtbot.com | 4 months ago

React-Native Push Notifications with Firebase Cloud Messaging

Push notifications remain one of the main ways to interact with users and attract their attention when your application is not opened. Although sending a message to a user or group of users seems like a straightforward action, there are multiple nuances, conditions and challenges … | Continue reading


@thoughtbot.com | 4 months ago

Why Do Rubyists Test So Completely? (2009)

The Ruby community, according to some data I am making up, has the strongest... | Continue reading


@thoughtbot.com | 1 year ago

Booleans don't exist in Ruby by Mike Burns

An investigation into Ruby’s C, stdlib, interfaces, libraries, tooling, and ecosystem into what, exactly, Ruby thinks a Boolean is. | Continue reading


@thoughtbot.com | 1 year ago

The opportunity will find you

Learning makes magic happen. | Continue reading


@thoughtbot.com | 2 years ago

Manage Team and Personal Dotfiles Together with Rcm (2014)

How to have your individual dotfilesand your company’s dotfiles live in harmony together. | Continue reading


@thoughtbot.com | 2 years ago

Fundamentals of TDD

Continue reading


@thoughtbot.com | 2 years ago

Pipelining Without Pipes

Ruby, functional programming, how to build operation pipelines, and the average programming language color. | Continue reading


@thoughtbot.com | 2 years ago

Working in my native language requires empathy

It’s exhausting to communicate all day in your non-native language, but we can practice kindness and understanding to relieve some of that mental load. | Continue reading


@thoughtbot.com | 2 years ago