I make things that nobody's asking for.
I used to post things that nobody was asking for, but then I stopped. Learn about me at justin.searls.co
Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Justin Searls
People jumped to conclusions about this RubyGems thing
Thursday, Oct 9, 2025 [TL;DR, Ruby Central has alleged that after he was notified that the board had voted to remove his production access to RubyGems.org, Andre Arko accessed the Ruby Central AWS account without authorization and proceeded to change the root password. ] For context, last week I wrote a post bringing to light a number of things Andre Arko had said and done in the past as a way to provide some context.
Why I'm not rushing to take sides in the RubyGems fiasco
Sunday, Sep 28, 2025 We are in the midst of a Ruby drama for the ages. I'm sure a bunch of people figured we were all too old for this shit, but apparently we are not. This debate has been eating at me ever since the news first broke, but I've tried to keep the peace by staying out of it.
Distributing your own scripts via Homebrew
Saturday, Sep 6, 2025 I use Homebrew all the time. Whenever I see a new CLI that offers an npm or uv install path alongside a brew one, I choose brew every single time. And yet, when it comes time to publish a CLI of my own, I usually just ship it as a Ruby gem or an npm package, because I had (and have!) no fucking clue how Homebrew works. I'm not enough of a neckbeard to peer behind the curtain as soon as root directories like /usr and /opt are involved, so I never bothered before today.
Sprinkling Self-Doubt on ChatGPT
Friday, Aug 22, 2025 I replaced my ChatGPT personalization settings with this prompt a few weeks ago and promptly forgot about it: Be extraordinarily skeptical of your own correctness or stated assumptions.
Why agents are bad pair programmers
Friday, May 30, 2025 LLM agents make bad pairs because they code faster than humans think. I'll admit, I've had a lot of fun using GitHub Copilot's agent mode in VS Code this month. It's invigorating to watch it effortlessly write a working method on the first try. It's a relief when the agent unblocks me by reaching for a framework API I didn't even know existed. It's motivating to pair with someone even more tirelessly committed to my goal than I am.
Something has been stuck in my craw for several years/decades and I'm finally ready to do something about it. Most software companies start from a place of, "let's make a simple useful thing and charge a fair price for it." And everything goes great for about fifteen minutes before they eventually concede all that simplicity and utility in order to establish additional revenue streams, or achieve planet-wide scale, or return an obscene multiple to their investors.
The looming demise of the 10x developer
I’ve recently been telling anyone who will listen that I am excited to be on the precipice of using Sorbet to write a type-checked edition of Mocktail that has the potential to unlock productivity workflows never before possible in Ruby. I’m not there yet. I don’t want to say it’s been a “quagmire,” but I’m over 150 commits in, and there’s a lot left to button up before release. It’s been a real challenge. Learning Sorbet at all takes a good chunk of time, to be sure.
How to tell if AI threatens YOUR job
As a young lad, I developed a habit of responding to the enthusiasm of others with fear, skepticism, and judgment. While it never made me very fun at parties, my hypercritical reflex has been rewarded with the sweet satisfaction of being able to say “I told you so” more often than not. Everyone brings a default disposition to the table, and for me that includes a deep suspicion of hope and optimism as irrational exuberance.
What I learned from pairing by default
An introduction For the vast majority of my career, I rarely pair-programmed. I’d even tried it a couple of times, but it was awkward and clunky and slow. I wasn’t sold. It became something I only did if I or somebody else was really (really) stuck on something, but never in the regular course of things. Then I worked with a client who practiced extreme programming and paired by default. That is, the expectation was that you didn’t work on code by yourself.
How to build a search engine with Ruby on Rails
You don’t hear this one every day: I just made a critical database query 10x faster by moving the bulk of the complexity out of SQL and back into Ruby. This post will explain how I did it, plus how you can apply a similar approach to rethinking search in your own application. (In a hurry? .) I maintain an app for studying Japanese called KameSame that’s built with Rails and Postgres (I talked about it in The Selfish Programmer).
Announcing Standard Ruby 1.0
One of the open source projects Test Double maintains is called Standard Ruby. No, it’s not Ruby’s standard library and it doesn’t implement any industry standards. Instead, Standard—like the JavaScript library of the same name—is a set of static analysis (“linting”) and code style rules for your Ruby code. Because it’s built on top of RuboCop, Standard is also able to automatically lint and format your source code from the command line or even right in your editor.
The Failures of "Intro to TDD"
I’m now halfway through teaching a two-week crash course on “agile development stuff” to a team of very traditional enterprise Java developers. Condensing fifteen years of our community’s progress into 8 half-day workshops has presented an obvious challenge: given the clear time constraints, what set of ideas and practices could conceivably have the biggest positive impact on these developers’ professional lives?
Remote, but not alone
You already know what this post is and what prompted me to write it. But if you know me, you also know I wouldn’t be sharing this unless I felt there were things worth saying about remote work that weren’t being said elsewhere. Test Double has been completely remote since we started in 2011. And while we’re proud to have helped dozens of companies improve how their teams collaborate over distance, we’ve never shied away from the fact that remote makes a lot of things really hard.
Giving the iPad a full-time job
by Justin Searls [A translation of this post is available in Chinese] Programmers often describe their ideal tools with adjectives like “powerful”, “feature-rich”, and “highly-configurable”. Few users are seen as wanting more from their computers than programmers. This popular notion agrees with our general intuition that more capability intrinsically yields greater productivity.
How to program.
Transcript The video above was recorded as a keynote at RailsConf 2017. It was also presented at the inaugural DeconstructConf, which means the talk’s design benefited richly from my fear of disappointing the masterful Gary Bernhardt. Programmers are really good at talking about what programs are. Most people will invest a decade just to get a handle on the massive compendium of jargon and metaphors we have created for describing the structure and behavior of finished programs.
Warm Takes on Microsoft’s Surface Pro 4
I embarked on a spiritual journey this week to answer these questions: do all the developers I see switching (or threatening to switch) to Windows see something that I don’t? Has Microsoft actually turned the Windows user experience around? Is the combination of Microsoft’s hardware & software superior to Apple’s on the Mac? At the heart of these questions: hope.
How-to: Thanksgiving for Millennials
My wife & I have been returning to my parents house for Thanksgiving every year since we graduated college. Customarily, people stop schlepping home to exploit the free labor of their parents’ holiday cheer around the time they have kids—but for a growing number of millennials who aren’t interested in bringing children into the world, this presents a dilemma: do I expect my mom to cook me turkeys until she is physically unable? Short answer: mostly, sure.
Happier TDD with testdouble.js
Our Values at Test Double An important aspect of our culture at Test Double are the values that all of our agents share. We’ve done a good job hiring to this mysterious fit in the past, but until recently we never laid out exactly what those values are and why they are important in the people that we work with on a daily basis. Time An icon of a clock Publish Date February 24, 2016
How to stop hating your tests.
Healthy migration habits. ActiveRecord migrations are a killer feature of Ruby on Rails. The feature is very well-implemented, it’s easy to use, and countless teams have benefited from it. Before Rails, most teams I encountered were in the habit of making incredibly error-prone ad hoc changes to each of their application’s databases. Time An icon of a clock Publish Date November 4, 2014 Category An icon of a paper organzier Categories Ruby
How-to make your iPhone Dimmer than Dim
Background When I’m trying to read my iPhone (or iPad) in bed, I’m liable to wake up my spouse with the device’s backlight, even when the screen is set to its lowest brightness setting. Moreover, it’s hard for me to fall asleep immediately after staring at a relatively bright screen. Up until last night I thought I was just out of luck unless I installed flux, which would never be worth the security and stability issues raised by jailbreaking a device.
Breaking up (with) your test suite.
Transcript In this day and age, we have a thousand ways and reasons to test our code. On it’s face, this is great! But the sword is double-edged: when I open a test that I’m not familiar with, I have to determine why it exists from any of a thousand possible reasons. If I want to add my own tests, I must decide how to implement it from any of a thousand possible methods. The most immediate abstraction we have for wrangling the motivations and implementations of our tests is the “test suite”.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Justin
Contact Justin, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack