Justin Searls
@searls.bsky.social
1.9K followers 82 following 380 posts
Co-founded @testdouble.bsky.social in 2011, currently building https://posseparty.com Most of what you see here are crossposts from https://justin.searls.co -- email me at [email protected]
Posts Media Videos Starter Packs
Pinned
searls.bsky.social
I'm ready to announce my next thing: POSSE Party! 🎉

It's a new service to reach your people—regardless of which social network they use—by crossposting your content from any RSS/Atom feed. Read the announcement to learn more and RSVP to be among the first to try it at launch: posseparty.com
You're invited to my POSSE party!
Nice
posseparty.com
searls.bsky.social
This post is both correct and irrelevant. If you get paid to write "good enough" code, agents are already faster—so it's rational for employers to expect you use them. I get 3x more done with agents, but the experience is so frustrating I hate coding now hojberg.xyz/…
searls.bsky.social
Any Fastmail users have advice on managing spam? I've always heard that its spam filter is "nearly as good as Gmail", but in practice I get ~10-15 cold-call B2B drip campaign emails get through me today, even though I always banish them to the Junk folder to train it.
searls.bsky.social
Coding agents have really improved my self esteem. It used to be that I'd get mad at myself when I couldn't get my code to work. Now I get mad at the computer when it can't get my code to work.
searls.bsky.social
TIL that you the macOS Terminal app has a shortcut to open URLs. Mouse over the URL and hold command + double-click.

Been there for over 20 years. Damn.
searls.bsky.social
Got a few more Sora invites. Email me justin at searls dot co if you want one and tell me what you'd make with it.
searls.bsky.social
TFW your friend accidentally jailbreaks Sora to reveal your human verification recording blog.davemo.com/…
searls.bsky.social
Good post by Dave Mosher. It'd be great if leaders always provided the necessary clarity, but that's out of your control. Instead, equip yourself with the tools & mindset to gain alignment early rather than learn you actually had things wrong much later blog.davemo.com/…
searls.bsky.social
Is Sora the future of fiction?
Is Sora the future of fiction?
I made this yesterday by typing a few words and uploading a couple of pictures to Sora (https://openai.com/sora/): https://www.youtube.com/embed/p7P_jH-TjqM When Sora 2 was announced on Tuesday, I immediately saw it as exactly what I've wanted from AI ever since I first saw Stable Diffusion (https://en.wikipedia.org/wiki/Stable_Diffusion) in the Summer of 2022. For years, I've fantasized about breaking free from the extremely limited vocabulary of stock video libraries (as a Descript (http://descript.com) subscriber, I've long had access to Storyblocks (https://www.storyblocks.com)' library). Stitching together stock content to make explainer videos like this one (https://www.youtube.com/watch?v=EUrIK6YREmU) is fun, but the novelty wears off as you quickly burn through all three clips for "child throws spaghetti at family member." Stock video is great if you only talk about mundane household and business topics, but my twisted brain thinks up some pretty weird shit, and conveying my imagination in video would be a lot more labor-intensive than starting yet another banal YouTube channel covering economics or something. Despite being invite-only, I got access within 24 hours (maybe because I'm a ChatGPT Pro subscriber?), and it confirmed that Sora was exactly what I'd been waiting for: • 10-second short-form video • 16:9 or 9:16 aspect ratios • Downloadable and re-uploadable elsewhere (watermarked) • Sound, including dialog (provide an exact script or let the model riff) • Can portray your likeness and consenting collaborators' • "Good enough" results within 3-5 prompt iterations • Understands simple direction: film styles, camera angles, scene cuts The only surprise was that Sora 2 shows up as a social network, not yet another chat interface or infinite search pane. You sign up, you wait, you get four invites, you and your friends have a good time, and you get notified as more friends follow you. We've seen this rollout a dozen times. In hindsight, Sora had to be a social network. As Meta has demonstrated, nobody wants to stare at an AI Slop Feed (https://about.fb.com/news/2025/09/introducing-vibes-ai-videos/) if it doesn't feature people they know and recognize. In the abstract, "people you know and recognize" would be off the table without opt-in consent. But durable consent more or less requires a social graph paired with platform-level verification and permission settings. "Deepfakes" have dominated the broader discussion around image generation, not only because they pose a vexing problem to civilization, but also because existing tools lack any built-in chain of trust mechanic—which limited our collective imagination to their use for political disinformation and revenge porn. But when you're on a social network and your videos can only star you and your close friends who've given you permission to use their likeness, OpenAI was actually able to strengthen the app's other guardrails in the process. That means that while other image and video generators let you get away with posting images of real people as a starting point to work from, Sora disallows naming any person or uploading any image of a human into a prompt. Instead, you can only @mention users on the network, who have created a "cameo" avatar, who have given you permission to use it, and for which your specific prompt isn't disallowed by their preferences. Suddenly, AI deepfakes are (relatively) safe and fun. They star you and your consenting friends. If you piss your friends off, they can delete the videos you put them in. If you keep doing it, they won't be your friends for very long. The platform will surely be under-moderated, but by defaulting to a mutual-follower consent scheme, many of the abuse vectors will be self-policing in practice. (I'm emphatically not saying here that Sora won't result in a raft of psychosis diagnoses and teen suicides, by the way. We are super-duper cooked.) As for the success of the platform, only time will tell if the novelty of unreality wears off, or if the presence of likenesses we know and recognize paired with imagery that previously required blockbuster movie budgets will be enough to hold our attention. Based on the success of 4o image generation (https://openai.com/index/introducing-4o-image-generation/), OpenAI is betting on the latter. I suspect that the platform will only pick up steam following substantial improvements to both the model (improved temporal consistency, complex directorial technique) and the interface (longer videos, sharing tools, storyboarding, series/playlists). ## Trust in truth giving way to trust in falsity (https://justin.searls.co/posts/is-sora-the-future-of-fiction/#trust-in-truth-giving-way-to-trust-in-falsity) Influencer-dominated video platforms have been broken for a long time, in part because their economics depend on winning an audience's trust to influence people towards doing or buying things that reward the influencer. That trust is built on the assumption that the influencer's videos are based in reality. After all, it's a real camera, pointed at a real product, from a real person the viewer has followed for months or years. Besides, why would they lie? They lie, it turns out, because making any kind of money on these platforms is an exhausting, tenuous hustle. Maintaining an audience large enough to make a living as an influencer requires constantly feeding the beast with content. The sponsors that pay the most are the ones whose products won't get as much reach without a high-trust endorsement, which results in the most scammy products and services offering the highest rates. This pushes influencers to make not-so-truthful claims, even if it means selling their audience down the river in the process. Sora sidesteps all of this because it's all lies all the time. People's trust in institutions and the veracity of what we see on screens is already at an all-time low, and the spread of AI-generated video that's this good will only erode that trust further. Sora-the-platform doesn't accept real videos, but videos generated by Sora-the-model will quickly begin infecting "real" spaces like YouTube, TikTok, and Instagram—causing people's trust in what they see on those platforms to fall even further. This dynamic gives OpenAI an absolutely diabolical epistemic edge, where the Sora app can be authoritatively false while the other platforms can never be authoritatively true. Users will be able to let their guard down using Sora, but they'll have to be more vigilant than ever on Instagram. If this strikes you as ridiculous, consider that we're simply talking about works of fiction versus works of nonfiction. Right now, every video you consume online is assumed to be nonfiction until you read the comments and learn the video was staged, the creator's body was enhanced with AI post-processing, or the sponsored product causes rectal cancer. So even without Sora, we're currently trapped in this uncanny valley where every video platform is perceived as hosting fictional nonfiction, which results in nothing ever being fully entertaining or fully informative. Sora, meanwhile, is a platform that can only host fiction by definition. And given that about half of media consumption (https://variety.com/2022/digital/news/cta-user-generated-content-study-1235146175/) is scripted content from legacy media companies, there's still a pretty good market for fiction out there! So if you're just looking to kill a few minutes on your phone while you wait in line at the bank, you're probably going to take the path of least resistance—it's why you open Instagram or TikTok in the first place. But those apps offer a slurry that's part-entertainment, part-information, and part-commerce—a feed that has some funny videos, sure, but also sells you bullshit supplements, radicalizes your father, and exacerbates your daughter's body image issues. Sora might offer a path of even less resistance: mindless entertainment that allows you to safely turn your brain off. Because all the content is fake, you don't have to be on guard against being fooled. The upshot here is that when there's no platform you can trust to be real, the next best thing is a platform where you can trust everything is fake. ## What kind of content will succeed (https://justin.searls.co/posts/is-sora-the-future-of-fiction/#what-kind-of-content-will-succeed) Let's get this out of the way: lots of content won't work on Sora—especially most influencer niches. If you're famous on Instagram for flaunting your lavish lifestyle and using it to sell garbage-tier sponsored products, what would you even do with Sora? Show off a fake house? Hawk a fake product? You can't upload "real" video to Sora, so what are your sponsors going to do when your gas station energy drink collab is made to look more like a Red Bull once it passes through the AI model? Even if you could place the products perfectly, entire categories of content that influencers have made profitable won't find much to do on Sora. Who wants fake lifestyle videos, cooking recipes, beauty/fashion tips, fitness routines, gameplay footage, or political ragebait? What does that leave? Entertainment. The creativity and production value of Hollywood scripted entertainment, crossed with the potential for virality of democratized user-generated content. It's as if Quibi (https://en.wikipedia.org/wiki/Quibi) and Vine (https://en.wikipedia.org/wiki/Vine_%28service%29) had an AI baby. What this adds up to is Sora is less a tool for influencers and more well-suited for out-of-work Hollywood script writers. One reason Sora is unlikely to take off until it supports longer-form video and is more adherent to script-like prompts, is that engaging fiction depends on preserving authorial intent. It can already do some pretty wild shit, but Sora doesn't give creators enough to work with to compete with a TV series. We'll get some funny cutaways and creative images, but there's only so much you can do in ten seconds. But if Sora can get any kind of foothold and stick around, those limitations will be lifted. People forget this, but YouTube only supported videos shorter than 10 minutes for its first five years and 15 minutes for its first ten. Today, user-generated YouTube content is giving legacy media a run for their money on widescreen televisions (https://www.fastcompany.com/91288106/youtube-tv-living-room-what-that-means-for-creators-and-viewers) and you can barely find a video shorter than 20 minutes on the platform anymore. But Sora doesn't need to become an overnight cultural sensation to be valuable. OpenAI will keep funding it, because the research suggests that video generation will unlock the future of general-purpose vision models (https://simonwillison.net/2025/Sep/27/video-models-are-zero-shot-learners-and-reasoners/#atom-everything), and those vision models are the key to autonomous robotics in the real world. And that's the ultimate promise of all these trillion dollar valuations. ## What can people use Sora for now? (https://justin.searls.co/posts/is-sora-the-future-of-fiction/#what-can-people-use-sora-for-now) Setting aside speculation as to what all this means and where things are going, what OpenAI shipped this week is nothing short of extraordinary exactly as it is. For the first time, a platform can bring visual ideas to life with shockingly little effort. By boxing out "real" content, the platform will reward ingenuity and cleverness over social status and superficial aesthetics. Here are a few ways Sora shines today: • Short-form comedy in the spirit of Vine • Meme/GIF generation • Inside jokes and skits among friends • Design inspiration (like Pinterest or Behance (https://www.behance.net)) • Stock video for B-roll and cutaways for use in other videos • The visual equivalent of lo-fi hip-hop (the feed even has a "mood" filter) • Visual prototyping and virtual screen tests for traditional video production • Fan edits and shipping (https://en.wikipedia.org/wiki/Shipping_%28fandom%29) of known characters (note OpenAI changed its intellectual property policy to an explicit opt-out (https://www.digitalmusicnews.com/2025/09/30/sora-2-opt-out-option/)) Weirder ideas that come to mind: • Capturing dreams (this morning I typed what I remembered into Sora before it faded) • Lore and world-building videos and remixes • Synthetic nostalgia and retro-futurism • Visualizing an alternate life (with kids (https://arresteddevelopment.fandom.com/wiki/Mommy,_What_Will_I_Look_Like%3F), without kids, with pets, being more attractive, speaking another language) • False childhood tapes and future video postcards • Public hallucination challenges (e.g., the Tide Pod, cinnamon, or ice bucket challenges, but expressed through prompts and remixes) • Psychological horror and grotesque/absurd glitch art • Ghost messages from someone who published a cameo but has since passed away in real life • Private messaging: • Families sending video greeting cards of imagined gatherings for birthdays or holidays • Asynchronous role-play between friends • Long-distance relationships visualizing co-located experiences Is all this stuff creepy as shit? Yep. Will people actually do any of this? No clue. I'm a sicko, so I will. But the safe money is always on nothing ever changing and people sticking to whatever they're already doing. What's less debatable is that the world has never seen anything like this, and it's unlikely we'll be able to fully process its impact until humanity has a chance to catch up (by which point, the tools will only be better). Hold your loved ones close, everybody! Shit's getting weird. 🫠
justin.searls.co
searls.bsky.social
For anyone who wants to be deepfake buddies, here's my Sora profile. 🫠 sora.chatgpt.com/…
searls.bsky.social
Without this post, it would require a conspiracy on the scale of a mass corporate takeover to explain Ruby Central's actions. In context, Occam's razor suggests a much smaller incident represented the last straw following a decade of unresolved conflict justin.searls.co/…
searls.bsky.social
New episode of Breaking Change is live! It's a time for builders
It's a time for builders
If you know who José Valim is, then you know he probably made a mistake by joining me for our third installment of 🔥Hotfix (/posts/whats-the-hot-fix/)🔥. The inventor of the Elixir programming language (https://elixir-lang.org) is at it again with his colleagues at Dashbit (https://dashbit.co) and they've got a new product called Tidewave (https://tidewave.ai). It's a coding agent with a twist: it has such a deep level of integration with your web framework that it can get the executable feedback it needs to tackle the entire feature development lifecycle. I do eventually let him plug the tool (and our conversation genuinely makes me want to try it—I logged a todo and everything!), but to be on Hotfix you gotta bring a thorny problem to the table, and he picked a great one: marketing hype aside, nobody has a clue what the future of AI agents looks like. Like always, we totally 100% and A+ solved the problem by correctly predicting the future. You gotta listen to find out. Every time I talk to José, I get ideas for what I should be doing instead of what I'm actually doing. If you feel so inspired, write into [email protected] and I'll read it on the next mainline version release of Breaking Change. You can follow José on Bsky (https://bsky.app/profile/josevalim.bsky.social), X (https://x.com/josevalim), and Mastodon (https://genserver.social/josevalim). Pick your poison. ☠️
justin.searls.co
searls.bsky.social
Zach couldn't have asked for a better pull-quote from me for his new Calendearing product. calendearing.com/…/
searls.bsky.social
Updated yesterday's post, adding a link to a contemporaneously-uploaded copy of the leaked Ruby Together board minutes that proposed charging for access to install RubyGems www.scribd.com/…
searls.bsky.social
Why I'm not rushing to take sides in the RubyGems fiasco
Why I'm not rushing to take sides in the RubyGems fiasco
We are in the midst of a Ruby drama for the ages (https://www.theregister.com/2025/09/25/open_source_to_closed_doors/). 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. Unlike most discourse about what's going on, my discomfort stems less from the issue at hand—what Ruby Central did, how they did it, and how poorly it was communicated (https://rubycentral.org/news/strengthening-the-stewardship-of-rubygems-and-bundler/)—and more to do with how one-sided the public discussion has been. Beneath the surface of this story are the consequences of a decade-old conflict that was never fully resolved. Then and now, one side—Andre Arko (https://arko.net) and many people associated with him—has availed itself of public channels to voice their perspective, while the other—which includes a surprisingly wide swath of well-known Ruby and Rails contributors—has chosen to stay silent. The losers in this dynamic are the vast majority normal everyday Ruby developers, most of whom are operating on very little information and who understandably feel confused and concerned. People whose livelihood depends on the health of the Ruby ecosystem deserve more information than they're getting, especially now that its operational stability has come under threat. The future of that ecosystem is once again uncertain, but—just like last time—the outcome is being shaped by a history that's been kept from the public, widening the rift between its key decision-makers and the communities they serve. I don't have the answers to what's going on in 2025. A few details have been shared with me—details that would contradict fact-checks and timelines others have pieced together and published—but I can't pretend to have a clear picture of what actually happened, why no one is setting the record straight, or when we'll have clarity on what the future holds. All I can do is offer a little bit of context to explain why I'm dubious of the dominant narrative that has taken shape online. Namely, I don't believe this is a cut-and-dry case of altruistic open-source maintainers being persecuted by oppressive corporate interests. After you read this, perhaps your perspective will shift as well. ## The relevant proper nouns to know (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#the-relevant-proper-nouns-to-know) Before anything else can make sense, it's important to understand how weird the governance of the Ruby ecosystem is. There are three moving parts involved that are ostensibly managed by three different groups, but whose members have such broadly overlapping systems access that it has now led to disputes over who owns what: • Ruby itself , created by Matz and maintained by a large group of (mostly Japanese) committers, who host https://www.ruby-lang.org/, control the @ruby GitHub organization (https://github.com/ruby), and are supported by the Ruby Association (https://www.ruby.or.jp/en/) • RubyGems , specifically the gem and bundler CLI tools distributed with the Ruby language, which is hosted under @rubygems on GitHub (https://github.com/rubygems) • RubyGems.org , the website, API, and host (https://rubygems.org) from which gem dependencies are installed and which has been run by Ruby Central (https://rubycentral.org) for ages If Ruby were invented today, a single party would probably control all three of these things, but it took nearly fifteen years for today's status quo to take shape. Ruby was invented by someone in Japan in the 1990s. RubyGems was created at a conference in Texas (https://www.linuxjournal.com/article/8967) by a few Americans in the early 2000s. RubyGems.org only became the de facto canonical host for gems six years later (https://web.archive.org/web/20120220191344/http://update.gemcutter.org/2009/10/26/transition.html). My impression is that at no point was communication and coordination particularly fluent between the various parties. Adding to this, Bundler (https://bundler.io)—a meta tool for resolving the correct versions of all of a project's gem dependencies and which quickly became vital to nearly all Ruby application development—was created independently of the above players by Yehuda Katz and Carl Lerche. Andre Arko later became the lead maintainer of Bundler, and in 2015 he founded a 501(c)(6) nonprofit called Ruby Together. In 2019, Bundler was folded into RubyGems (https://github.com/rubygems/rubygems/releases/tag/v3.1.0). In 2022, Ruby Together was absorbed by Ruby Central (https://rubycentral.org/news/a-new-chapter-for-rubygems-how-ruby-central-is-building-a-sustainable-future/). Those last two events—the merging of Bundler and the unwinding of Ruby Together—came about after years of bitter conflict and simmering discord that I hope to shed some light on below. My direct involvement with any of these events was extremely minimal, but I had contemporaneous discussions with dozens of the principals involved. I never donated to Ruby Together and have never materially contributed to Bundler or RubyGems. That said, simply being made aware of several incidents as they were playing out in private was enough to leave behind a scar that has never fully healed. I can only imagine how others are feeling right now. Based on how badly things are playing out this time, it seems they were deeply impacted, too. ## The things people told me (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#the-things-people-told-me) The earliest recollection I have of someone telling me about Andre Arko was in the summer of 2015, after getting dinner with a friend who happened to be a Ruby Together board member. The friend explained that Andre believed programmers working on open source tools deserve to earn an income that's commensurate with what salaried engineers earn at the companies who benefit from those tools. As such, Andre's goal with Ruby Together was characterized as an effort to fund development activities—initially his own, but eventually others—by paying themselves a market hourly rate. I remember being extremely sympathetic to this perspective, having also wasted countless hours of my life maintaining open source for free only for others to benefit from it. I also recall a figure like either $200 or $250 per hour being mentioned as the rate he was effectively paying himself. Whatever the rate actually was, I distinctly remember thinking, "holy shit, that's a lot higher than individual donors would probably assume." The first time I remember meeting Andre in person was at Ruby on Ales 2016 (https://www.rubyevents.org/events/ruby-on-ales-2016). I remember trying to make a good impression, because growing my network in the community was the primary reason I spoke at conferences. I was presenting with my beloved 12-inch MacBook (/posts/the-12-macbook-was-announced-10-years-ago/), which meant I was traveling with the first iteration of this cursed dongle (https://www.apple.com/shop/product/MW5M3AM/A/usb-c-digital-av-multiport-adapter). Andre needed an adapter, so I ran up to lend him mine. As he was giving it back, I recall him making a half-joking, flippant remark about either his dongle or his computer, saying that "Ruby Together will just buy me another one." It really rubbed me the wrong way. Over the years to follow, more than one person told me stories of Andre paying for shared meals on behalf of Ruby Together without an apparent legitimate justification. They told those stories, I assume, because the attitude he exhibited made them uncomfortable. If I had donated money to Ruby Together and heard the same stories, I would have been upset. For how little has been said about this publicly, a lot of different people told me a lot of concerning stories about Ruby Together over the years, often providing evidence to back it up. I'll do my best to stick to the highlights in this post. Hopefully they will explain why I have not joined the rush to defend the maintainers whose access was recently removed. What Ruby Central did was undoubtedly handled very poorly, but I don't think their bungling of its execution and communication alone is enough to answer the question of what should happen to the future custody and direction of Bundler, RubyGems, and RubyGems.org. ### 2015 (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#2015) When Ruby Together first launched in 2015, the website suggested donations went to pay "our team" (https://web.archive.org/web/20150425040538/http://RubyTogether.org/), which initially linked to a list of the board members (https://github.com/rubytogether/rubytogether.org/blob/9a03c4c/app/views/home/team.html.erb) without any explanation of how the money was being allocated. This resulted in a nonzero number of donors believing they were funding the work of people like Steve Klabnik, Aaron Patterson, and Sarah Mei, when in fact only Andre was being paid at the time. Shortly after the wording was raised as misleading (https://news.ycombinator.com/item?id=9222549), the team page was updated (https://github.com/rubytogether/rubytogether.org/blob/0136e9f/app/views/home/team.html.erb) accordingly. In May of 2015, Andre suggested making support for older versions of Bundler contingent on Heroku paying Ruby Together (https://github.com/heroku/heroku-buildpack-ruby/pull/385/commits/6b3f3c71f4a98309e29748132be8e84b41d890de), which was interpreted as leveraging his control over Bundler as a pay-to-play scheme. Because Heroku (https://www.heroku.com) serves other people's Ruby apps—many of which aren't updated for very long stretches—the security of their service depends on clear and predictable support windows for Ruby's core technologies, it seems reasonable they would interpret this sudden revocation of support as a pressure tactic, aimed to solicit corporate sponsorship for Ruby Together. (Years later, Andre responded to a feature request from a Heroku engineer (https://github.com/rubygems/rubygems/issues/1811#issuecomment-270788204), which was interpreted at the time as indicating the feature would be withheld from Bundler because Heroku had failed to pay Ruby Together.) ### 2016 (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#2016) The minutes of a December 2016 Ruby Together board meeting were leaked. The document acknowledged who was paying for the RubyGems.org service at the time: "Fastly is comping us something like $35k worth of CDN service per month. And that's on top of Ruby Central paying for $5k of servers and Ruby Together paying for about $15k of dev work every month." The use of "us" in that sentence suggests that Ruby Together was responsible for hosting RubyGems.org, which Ruby Central later went on to publicly dispute (https://blog.rubygems.org/2017/03/15/rubygems-funding.html). Additionally, one presumes the number of hours and rate paid for development work was determined by Ruby Together itself, rather than being a hard operational cost. Later in the document was a discussion of potential strategies to increase revenue after "new memberships [had] flatlined." Several ideas were discussed, culminating in a proposal to rate-limit access to RubyGems.org as the apparent best option: Rate limiting RubyGems.org seems like the option that scales most linearly with our costs. Companies that cost us money need to pay more (or stop costing us money), and companies that don't cost us money can continue to have a free ride. To be clear, this would not mean cutting off anyone's access to RubyGems.org. I'm imagining that it would work something like GitHub's model: anonymous access has a low limit, registered accounts have a higher limit, and even higher limits are available at each Ruby Together membership level. There are a lot of implementation details that would need to be worked out, but in general I feel like this is probably the most effective option to make companies feel like they are paying money for something they use and that covers our costs well. The leaked minutes were widely circulated in private at the time, due largely to outrage over the document's presupposition that Ruby Together was paying to host RubyGems.org (citing "our costs" as scaling with usage), as opposed to paying for developer effort (the costs of which do not scale with usage). The leak left myself and others worried that Andre might leverage his systems access to effectively hold the Ruby ecosystem hostage for the financial benefit of Ruby Together and—since it was compensating his own development efforts—Andre himself. ### 2017 (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#2017) In January 2017, Andre added a "post-install message" imploring users to fund Ruby Together (https://github.com/rubygems/bundler/pull/5308/commits/072f9ab80bb1e2d4992962e59b42d479ac37a4c0), which would be displayed every time anyone installed Bundler. Unlike the aforementioned board meeting, this happened in the open and triggered an immediate backlash before eventually being rolled back. In one comment, Andre defended the action and pointed to Shopify's failure to pay Ruby Together (https://github.com/rubygems/bundler/issues/5311#issuecomment-271477520), publicly conflating Ruby Together's sponsorship of development effort with "~$40k/mo worth of servers." But, as Ruby Together's own board minutes from the month prior directly stated, money sent to Ruby Together wasn't going to pay server expenses—server costs were covered by Fastly (https://www.fastly.com) and Ruby Central. In February 2017, following protracted discussion of the post-install message and the threat of rate-limiting access to gem installs, I agreed to put my name on a letter alongside 18 others (including one of Bundler's creators). The letter requested Ruby Together stop misleading the community in this way. My understanding is that some private one-on-one communication followed, that none of it was particularly productive, and that no formal communication occurred between the two groups afterward. In March 2017, Ruby Central went on the record, attempting to clear up confusion and reassure users that https://blog.rubygems.org/2017/03/15/rubygems-funding.html, stating that Ruby Together donations were immaterial to its continued operation: Unfortunately, this past year has also given rise to some misunderstandings about this relationship in some quarters: chiefly, that by donating to Ruby Together, companies were paying for the operations of RubyGems. And in turn, that if enough companies didn't donate to Ruby Together, RubyGems would subsequently be in a perilous situation. This isn't so. No one in the Ruby community should worry about the availability or security of RubyGems being connected in any way to the fundraising of Ruby Together. Funds raised by Ruby Together go primarily towards paying developers to add features and fix bugs. Ruby Central, on the other hand, is wholly responsible for the operations and baseline stability of the system. While these two efforts go hand-in-hand, it's vitally important to understand that they are two different things. Ruby Together's requests for donations do not mean that there is any reason for concern about RubyGems' continued existence or operation. Later, in August 2017, Andre accused Google Cloud Platform (https://github.com/GoogleCloudPlatform/google-cloud-gemserver/issues/36) of wholesale copying gemstash (https://github.com/rubygems/gemstash)'s codebase, going so far as to threaten legal action in his opening message. He juxtaposed the accusation with the complaint that Google had, "repeatedly declined to support Ruby Together." The incident appeared to fit a pattern of behavior to pair high-conflict messaging with an admonition of the target's failure to fund the organization that paid him. Ultimately, Andre's claim turned out to be factually baseless—Google hadn't copied gemstash's code, after all (https://github.com/GoogleCloudPlatform/google-cloud-gemserver/issues/36#issuecomment-324503159). ### 2018–2024 (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#20182024) Things quieted down and I didn't hear much about any of this stuff anymore. Eventually, Bundler became part of RubyGems and many folks from Ruby Together migrated to analogous roles at Ruby Central. ### 2025 (https://justin.searls.co/posts/why-im-not-rushing-to-take-sides-in-the-rubygems-fiasco/#2025) In August 2025, and seemingly out of nowhere, someone pointed me to the project spinel-coop/rv-ruby (https://github.com/spinel-coop/rv-ruby), an apparent fork of homebrew/homebrew-portable-ruby (https://github.com/homebrew/homebrew-portable-ruby). I say "apparent", because rather than using GitHub's fork button (https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo)—which would have maintained clear attribution of who created the upstream project—it looks like it was instead cloned and re-pushed by Andre. Specifically, I was sent this commit replacing references to Homebrew (https://github.com/spinel-coop/rv-ruby/commit/2234bdb7db4e41bfe883a01f06d7d0aff3188997) from late July. As evidence of Homebrew's authorship was being erased and obscured, no additional acknowledgement was added to credit Homebrew for having created and maintained Portable Ruby since 2016. It immediately reminded me of Andre's baseless accusation against Google (https://github.com/GoogleCloudPlatform/google-cloud-gemserver/issues/36). "Not only did you not credit the Gemstash project in any way," Andre wrote, "from an ethical standpoint, this is also super gross." His blatant copying of Portable Ruby (a project significant enough that the lead maintainer gave a talk about how they did it (https://rubykaigi.org/2019/presentations/MikeMcQuaid.html)) struck me as brazenly hypocritical, given Andre's previous litigious and mistaken accusation against Google. In fairness to Andre, the rv-ruby repo continues to retain a copy of (https://github.com/spinel-coop/rv-ruby/blob/main/LICENSE.txt) Homebrew's LICENSE.txt (https://github.com/homebrew/homebrew-portable-ruby/blob/HEAD/LICENSE.txt) which names "Homebrew contributors" as the copyright holder. Andre also later added an explicit acknowledgement to the README (https://github.com/spinel-coop/rv-ruby/commit/76e96c9d9f74ea89eed9d34ff11491bb6c365d54), but that attribution came more than a month later, and (I'm told) only after he was directly asked to credit the original project. Andre wrote this week (https://andre.arko.net/2025/09/25/bundler-belongs-to-the-ruby-community/) that, "Ruby Together did not ever, at any point, demand any form of governance or control over the existing open source projects. Maintainers did their thing in the RubyGems and Bundler GitHub orgs, while Ruby Together staff and board members did their thing in the rubytogether GitHub org." However, while he was leading Ruby Together, he moved to restrict committer access to RubyGems in rubygems/rubygems (https://github.com/rubygems/rubygems/pull/1518), unilaterally erased the original authorship from Bundler's gemspec in bundler/bundler (https://github.com/bundler/bundler/commit/524add155d6b90c679db21b03f0bd9f877f21ab0), and oversaw a number of contributors being removed from bundler/bundler-site (https://github.com/bundler/bundler-site/commit/03d331ac8a0a05a5b4225319fb3783a8d1eb1c9b#diff-efb5113d13615a3e1c5706cd6f316ee73f5db628f8c5c06b450a51e537cf9ec6) in a redesign of Bundler's website. As a result of this broader historical context and in spite of the serious claims and grave implications being thrown around this month, I'm trying my best not to rush to judgment about who's at fault in the current conflict and would urge others to do the same. The future of the Ruby ecosystem may depend on it.
justin.searls.co
searls.bsky.social
Proposal: move RubyGems (the gem and bundler CLI tools) to the same Ruby org that governs the language itself.

It's an accident of history that Ruby, its dependency tools, and its dependency hosting are managed by three separate entities. (And it hasn't gone great.)
searls.bsky.social
The only difference between GPT-5 and GPT-5-codex is that the codex variant is capable of deleting code without leaving a comment like # removed code in its place.
searls.bsky.social
One year ago today, I gave my final conference talk.

And, you know what? Wouldn't change a thing. justin.searls.co/…
searls.bsky.social
I keep thinking about the guy who dismissed coding agents by postulating there ought to be a flood of shovelware that hasn't materialized. A huge number of developers are still in denial these tools are useful. That's why I've started badging my agent-coded projects as Certified Shovelw... continued
searls.bsky.social
How to automatically add chapters to your podcast
How to automatically add chapters to your podcast
A frequent request from listeners of my Breaking Change (/casts/breaking-change/) podcast has been for chapter (https://podcasters.apple.com/support/5482-using-chapters-on-apple-podcasts) support. At one point, I tried to manually incorporate this into my (extremely light) editing workflow, but it was fiddly and error-prone to do manually. That is, until yesterday, when I had the thought, "what if I had a script that could detect each time the audio switched from mono to stereo?" See, like most podcasts, I record my voice in mono, but the music jingles (or "stingers (https://en.wikipedia.org/wiki/Sting_(musical_phrase))") are all in stereo. And because each mono segment is punctuated by a stereo stinger, the resulting timestamps would indicate exactly where the chapter markers ought to go. So, an hour later, some new shovelware (/links/2025-09-08-i-ve-got-your-shovelware-right-here/) was born! I call it autochapter (https://github.com/searlsco/autochapter), and you can install it with homebrew: brew install searlsco/tap/autochapter Once installed, just pass autochapter your chapter names as a text file or a list of flags, like this: autochapter \ -s Intro \ -s Follow-up \ -s "Aaron's Pun" \ -s News \ -s Recommendations \ -s Mailbag \ -s Outro \ v44.mp3 And you'll get a remuxed version of the audio file (e.g. v44-chapters.mp3), as well as textual readout of the chapters, ready to be pasted into your YouTube description: Chapters: 0:00 Intro 24:11 Follow-up 53:45 Aaron's Pun 56:14 News 1:49:03 Recommendations 2:03:52 Mailbag 2:33:11 Outro As you might surmise from the examples, v44 of the show (/casts/breaking-change-v44-cant-get-it-up/) is the first version to ship with chapters. And that's about all there is to it. I wrote autochapter with Codex CLI (https://developers.openai.com/codex/cli/) in one shot, and it's a great example of a project I would have never bothered building if it weren't for a coding agent to do the gruntwork for me. That makes autochapter Certified Shovelware (/shovelware/).
justin.searls.co
searls.bsky.social
So much for OpenAI running out of money by the end of the year. nvidianews.nvidia.com/…
searls.bsky.social
Use chatbots as tools, not friends. If you use ChatGPT or Claude, turn off memory and the ability to reference past chats. It only wastes context, assuming present-you wants what past-you wants.

Turned it off months ago and responses are way better. When you have memory enabled you eff... continued