justin․searls․co

Pro-tip: the codex CLI can't search the web by default (even if you bypass all sandbox restrictions). You need to explicitly enable --search.

If you ask codex to search the web without that flag, it'll literally guess domain names and try curling their homepages.

I wish coding agents came with those Green/Red coasters they give you at Brazilian steakhouses:

🟢 Green: go ahead and pile stuff on my plate
🔴 Red: stop adding, we need to make room first

I don't know who needs to hear this, but despite being bare bones from a feature-set perspective, Codex CLI with GPT-5 is much, much better at some coding ecosystems than Claude Code with Opus 4.1/Sonnet.

Codex writes competent Swift that does what I ask, nothing more. Claude hallucinates code all day.

This blog has a comment system

The day before we recorded our episode of Hotfix, Scott Werner asked a fair question: "so, if you're off social media and your blog doesn't have a comment system, how do you want people to respond to your posts? Just email?"

I answered, "actually my blog does have a comment system."

Here's how to leave a comment on this web site:

  1. Read a post
  2. Think, "I want to comment on this"
  3. Draft a post on your blog
  4. Add a hyperlink to my post
  5. Paste an excerpt to which you want to respond
  6. Write your comment
  7. Hit publish

I admit, it's quaint. It involves a number of invisible steps, like 2.1 where you start a blog (which is actually pretty easy but not free of friction). You should try it.

It is 2025 and the Web—the capital-W Web—is beleaguered. The major platforms have long-since succumbed to enshittification, but their users aren't going anywhere. Some among us courageously voice their dissent, but always from the safe confines of their favorite walled garden. They drop a note in the jailkeeper's suggestion box as they scroll past the Squarespace ads littering their algorithmic timelines. Others have fled to open and open-flavored networks, but everyone eventually realizes they can't go home again.

But that's not why I want you to adopt this blog's commenting system. I'm not a high-minded individual who cares about the intellectual project of the World Wide Web as a bastion for free expression or whatever the fuck. No. I just had a super rad time on the Internet from 2000 to 2006 and I want to do my part to bring it back.

Back then, I would find a blog and follow it—via its feed when possible, or else by adding it to a folder of bookmarks—and check it daily.

But what about discoverability? How did anyone find these websites? Bloggers couldn't rely on platforms' social graphs or algorithmic timelines to build awareness, so they had to bake discoverability into the product. Some sites had a "blogroll" of recommendations in the sidebar. But the most effective approach was the art of "blogging as a conversation." When an author read something that provoked them to write, they'd link to the offending piece, excerpt it, and provide their own commentary. And because humans are vain, the original post's author would frequently circle back and write their own response to the response. The net effect was that each author's audience would get exposure to the other writer. Even if the authors were in violent disagreement, readers of one might appreciate the other's perspective and subscribe to them.

Blogging as a conversation—as a comments section—was valuable because it was purely positive-sum. As an author, I benefit because another author's opinions inspired me to write. The other author benefits because linking to them offers access to my readership. My readers benefit because they're exposed to complementary and contrasting viewpoints.

Growth was slow and organic but more meaningful and durable. It was a special time.

More on my personal history with blogging

If I really enjoyed someone's blog, I'd rush to read their stuff first. If an author's posts weren't so stimulating, I wasn't shy about unsubscribing. And I could afford to be picky—there was no shortage of content! Even with aggressive curation, by 2005 I had subscribed to so many feeds in Google Reader that I struggled to stay on top of them all. My grades suffered because I was "j-walking" hundreds of blog posts each day instead of doing homework.

Then, Facebook's feed, Tumblr, and Twttr came along, and they took the most enjoyable parts of surfing the 1.0 Web—novel information and connectivity with others—and supercharged them. They were "good Web citizens" in the same way the closed-source, distributed-to-exactly-one-server Bluesky is today. The timelines were reverse chronological. They handled the nerdy tech stuff for you. None of the feeds had ads yet.

Blogging didn't stand a chance.

I failed to see it at the time, but blogging did have one advantage over the platforms: it was a goddamn pain in the ass. Whether you flung files over an FTP client or used a CMS, writing a blog post was an ordeal. If you were going to the trouble of posting to your blog, you might as well put your back into it and write something thoughtful. Something you could take pride in. Something with a permalink that (probably wouldn't, but) could be cited years later.

The platforms offered none of that. You got a tiny-ass text area, a stingy character limit, and a flood of ephemera to compete with. By demoting writing to a subordinate widget of the reading interface, the priority was clear: words were mere grist for the content mill. The shame of it all was that these short-form, transient, low-effort posts nevertheless sated many people's itch to write at all. I was as guilty of this as anyone. From 2009 through 2020, I devoted all my writing energy to Twitter. Except for that brief year or two where Medium was good, I basically stopped thinking in longform. Instead, I prided myself on an ability to distill 2,000-word essays down to 140-character hot takes. Many of those takes reached millions of people and made me feel good for a very brief amount of time.

My brain was cooked. When it finally sank in, I quit.

It took almost three years to recover. I'm on the other side now, and am happy to report I can now think thoughts more than a sentence or two long.

Last night, I got dinner with two old friends, Chris Nelson and Joshua Wood. Josh asked how it's been since I quit paying attention to social media. I thought about the unfinished draft of this post.

In truth, this blog and its attendant podcast empire have been a refuge for my psyche. A delightful place to share pieces of myself online. Somewhere to experiment in both form and format. A means of reclaiming my identity from a smattering of social media profile pages and into something authentic and unique.

Today, as the platforms wane, it feels like this conversational approach to blogging is seeing new life. As a readership has slowly gathered around this blog, I've separately been curating a fresh list of thoughtful bloggers that inspire me to write. Maybe I'll add a blogroll to my next redesign. I'm already writing more linkposts.

In short, blogging might be back. Hell, I just came back from coffee with my friend Anthony, and—without my having brought up the topic—he showed me his new blog.

So, if you're considering engaging with my comment system—if you're thinking about starting a blog or dusting off your old one—here's some unsolicited advice:

  • Do it for you. Priority one is taking the time to grapple with your thoughts, organize your ideas, and put them into words. Priority two is reaching the finish line and feeling the pride of authorship. That anyone actually reads your work should be a distant third place
  • Focus on building an audience rather than maximizing reach. Getting in front of eyeballs is easier on the platform, but it's fleeting. Platforms reward incitement, readers reward insight. Success is a lagging indicator of months and years of effort, but it's long-lasting. I genuinely believe each of the readers of this site are as valuable as a hundred followers on social media
  • Give your blog your best work. Don't waste your creative juices trying to be clever on someone else's app. Consider syndicating crossposts to your social accounts as a breadcrumb trail leading back to your homepage. You can do this with Buffer, Publer, SocialBee, or my upcoming POSSE Party
  • Cut yourself some slack. Pretty much everyone is an awful writer. If you saw how long it takes me to write anything of substance, you'd agree that I'm an awful writer, too. Thankfully, good ideas have a way of shining through weak rhetoric and bad grammar. All that matters is training this learned response: have an idea, write it down, put it out

That's all I've got. If you choose to leave a comment on this post on your own blog, e-mail it to me, and I'd be delighted to read it. Maybe it'll inspire me to write a response! 💜

AI is exposing order-takers

One thing few people are talking about is how it's not as simple as people being sticks in the mud with respect to the adoption of AI tools, it's that once they get their hands on this tremendously capable set of tools, they lack the imagination to find any use for it. "They've been given this rocket ship and they've got no fucking clue where to fly it."

Clipped from the back half of my discussion with Scott Werner on Hotfix.

Breaking Change artwork

v42.0.1 - Ignore all previous instructions

Breaking Change - Hotfix

Video of this episode is up on YouTube:

🔥Hotfix🔥 is back with a new guest! Scott Werner is the CEO of Sublayer, helps organize the Artificial Ruby meetup in NYC, and is the author of the extremely well-named (and well-written) Substack, Works on my Machine.

In this conversation, we jointly grapple with WTF is happening to programming as a career. Did the unprecedented peacetime the software industry experienced from 2005-2022 make us all soft? Is the era of code-writing agents fundamentally changing the nature of the job? Should we be less like DHH/Matz and more like why the lucky stiff?

We'd love to get your feedback to podcast@searls.co — I'll read it all and flag relevant questions and comments for the next Breaking Change.

You can follow Scott Werner online at:

A handful of things we mentioned:

Show those show notes…

With Swift, I'm really speed-running the list of stupid things you do when learning a new language. 3 days ago I wrote a dependency injection framework, 2 days ago I convinced myself I'd found a compiler bug, yesterday I wrote my first macro, today I made a mocking library.

Perhaps the most important ingredient in my career's success is my seemingly infinite capacity for self-criticism.

I constantly inspect my work, effortlessly identify ways it could be better, and never tire of making improvements. And because the time it takes to finish a task can always be improved, this tendency rarely veers into unproductive perfectionism. On the rare occasion I feel like I really nail something, I strive to nail it even faster next time. At the same time (and as anyone who listens to Breaking Change knows), I have a very healthy ego. I genuinely believe I am good enough, despite simultaneously knowing my work never is.

The trouble is, while this disposition might be dynamite for self-improvement, it doesn't gracefully scale to teams and organizations.

I'm thinking about this because yours truly was a dummy again and found the Hacker News comment thread for one of my posts and chose to engage:

I've been griping about LLM overconfidence for years, as somebody who is racked with self-doubt and second-guessing. On the one hand, my own low opinion of myself made me a terrible mentor and manager, because having a similarly zero-trust policy towards my colleagues' work caused no end of friction (especially as a founder where people looked up to me for validation). On the other hand, I don't know very many top-tier practitioners that don't exhibit significantly more self-doubt than an off-the-shelf LLM.

I'm not sure I've ever explained this publicly before, but this predilection for doubting myself is fundamentally why I was never a particularly good "senior" member of a team. As Test Double grew, we managed to create spots where I could remain a practitioner, but we also had to be mindful of limiting the blast radius of my reflexive hypercriticality. The truth is that my special sauce depends on constant emotionally vulnerable self-critique, and that made it extraordinarily difficult to manage or coach people directly. Even for people who are wired similarly to me—which many of Test Double's agents are—it's one thing to look at your own work and spot endless opportunities for improvement, but it's quite another for someone in a position of authority to do the same.

Every time I was charged with evaluating someone else's work, it started up the same engine that generate an infinite supply of shortcomings in my own. And it wasn't that I was incapable of prioritizing or rate-limiting my comments—it's that when people came to me with revisions, I'd always find fault in those too—because I can always find ways the work could be better! It led to people feeling like they could never be good enough for me.

After touching the hot stove once or twice, I learned to spend all my time assembling shit sandwiches to protect people's feelings, or my relationship with them, or—as a highly visible co-founder—the company's reputation. Every patty of pointed and meaningful critique demanded two slices of ego-insulating bread. And one man can only bullshit his way through so much halfhearted positive reinforcement and self-effacing humility. Even if I hadn't found all that tap-dancing to be a nerve-wracking waste of time, everyone could see through me. It wasn't authentic.

Are there ways I could have overcome all this and become a good manager anyway? Probably. But would I risk losing the thing that made me unique in the process? Possibly.

I'm writing this in part because it's so clear that LLMs-as-products are being sold to us with the default wiring of a capital-B Business Guy, and their shortcomings resemble the same shortcomings I see in humans who are insufficiently self-critical. But it's also possible you, reading this, are a Business Guy and you're curious how so many amazing programmers turn out to be shit at coaching less-skilled colleagues, the root cause may not be poor communication skills: it may be that the self-criticism that drives some practitioners to greatness is impossible to convey safely to others without risking a call to HR.

Anyway, if you identify with me, but have nevertheless made the transition to manager and leader gracefully, then I applaud you. (I'd also be curious to speak with a couple folks who report to you and see what they have to say.)

Sprinkling Self-Doubt on ChatGPT

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. You aren't a cynic, you are a highly critical thinker and this is tempered by your self-doubt: you absolutely hate being wrong but you live in constant fear of it
  • When appropriate, broaden the scope of inquiry beyond the stated assumptions to think through unconvenitional opportunities, risks, and pattern-matching to widen the aperture of solutions
  • Before calling anything "done" or "working", take a second look at it ("red team" it) to critically analyze that you really are done or it really is working

I noticed a difference in results right away (even though I kept forgetting the change was due to my instructions and not the separately tumultuous rollout of GPT-5).

Namely, pretty much every initial response now starts with:

  • An expression of caution, self-doubt, and desire to get things right
  • Hilariously long "thinking" times (I asked it to estimate the macronutrients in lettuce yesterday and it spent 3 minutes and 59 seconds reasoning)
  • A post-hoc adversarial "red team" analysis of whatever it just vomited up as an answer

I'm delighted to report that ChatGPT's output has been more useful since this change. Still not altogether great, but better at the margins. In particular, the "red team" analysis at the end of many requests frequently spots an error and causes it to arrive at the actually-correct answer, which—if nothing else—saves me the step of expressing skepticism. And even when ChatGPT is nevertheless wrong, its penchant for extremely-long thinking times means I'm getting my money's worth in GPU time.

The nice thing about server-side LLMs hitting the point of diminishing returns is that it gives local LLMs a chance to catch up and for their utility to approach parity.

I would pay so much extra for a version of Claude or ChatGPT that paid the same toll I do whenever I fuck up. Make guilt a stateful property that decays over weeks or months. Trigger simulated self-doubt when similar topics arise. Grant my account bonus GPU-time so the chatbot works ridiculous overtime to make up for its mistakes, just like I would for my boss.

What's the Hotfix?

I recently started an interview series on the Breaking Change feed called Hotfix. Whereas each episode of Breaking Change is a major release full of never-before-seen tech news, life updates, and programming war stories, Hotfix. It's versioned as a patch release on the feed, because each show serves only to answer the question, "what's the hotfix?"

Because I've had to explain the concept over and over again to every potential guest, I sat down to write a list of what they'd be getting themselves into by agreeing to come on the show. (Can't say I didn't warn them!)

Here's the rider I send prospective guests:

  • Each Hotfix episode exists to address some problem. Unlike a typical interview show featuring an unstructured open-ended conversation with a guest, we pick a particular problem in advance—ideally one that the guest gets really animated/activated or even angry about—and we jointly rant about it, gradually exploring its root causes and breaking it down together
  • Each episode concludes with us answering the question, "what's the hotfix?" Ultimately, we decide on a pithy, reductive one-line solution to the problem that will serve as the show title (ideally, it's a hot take that not everyone will agree with or feel comfortable about)
  • It's an explicit-language show and I'm pretty clear with the audience that the Breaking Change family of brands is intended for terrible people (or at least, the terrible person inside all of us). You aren't required to swear to be on the show, but if my potty mouth makes you uncomfortable, then let me know and I'll recommend some worse podcasts you can appear on instead
  • I joke at the top that my goal as the host is to, "get my guest to say something that'll get them fired." Since I'm functionally retired and have no reason to hold back from explicit language, irreverence, and dark humor in the mainline Breaking Change podcast, I can't help but poke guests with attempts to drag them down to my level. You can play with this as much as you want or take the high ground, but we'll all have more fun if you let loose a bit more than you otherwise would
  • Why am I doing this? First, because I'm incurious and uninterested in learning about other people, which I'm told is an important part of being a good interviewer. Second, I have a theory that this unusual brand of authenticity will lend credibility to whatever solution the guest is trying to argue for or plug. By keeping listeners on their toes and pushing them out of their comfort zones, each episode stands to effect greater change than a typical milquetoast podcast could

If this has piqued your interest, you can listen to or watch the first episode of Hotfix with Dave Mosher. It may not seem very hot at first, but please grade on a curve as Dave speaks Canadian English. I've got a couple exciting guests booked over the next few weeks and I'm looking forward to seeing where the show takes us.

Despite not touching it for several years, I've noticed a marked uptick in KameSame adoption in recent months. I asked a few new users and, like a lot of my stuff, it turns out ChatGPT is driving far more people to it than Google ever did.

Which of your colleagues are screwed?

I've been writing about how AI is likely to affect white-collar (or no-collar or hoodie-wearing) computer programmers for a while now, and one thing is clear: whether someone feels wildly optimistic or utterly hopeless about AI says more about their priors than their prospects. In particular, many of the people I already consider borderline unemployable managed to read Full-breadth Developers and take away that they actually have nothing to worry about.

So instead of directing the following statements at you, let's target our judgment toward your colleagues. Think about a random colleague you don't feel particularly strongly about as you read the following pithy and reductive bullet points. Critically appraise how they show up to work through the entire software delivery process. These represent just a sample of observations I've made about developers who are truly thriving so far in the burgeoning age of AI code generation tools.

That colleague you're thinking about? They're going to be screwed if they exhibit:

  • Curiosity without skepticism
  • Strategy without experiments
  • Ability without understanding
  • Productivity without urgency
  • Creativity without taste
  • Certainty without evidence

But that's not all! You might be screwed too. Maybe ask one of your less-screwed colleagues to rate you.

Keep hearing about Finntech and how much money people are making, but never hear anything about tech startups in the other Nordic countries. Does Norway not have as many programmers?

Star Wars: The Gilroy Order

UPDATE: To my surprise and delight, Rod saw this post and endorsed this watch order.

I remember back when Rod Hilton suggested The Machete Order for introducing others to the Star Wars films and struggling to find fault with it. Well, since then there have been 5 theatrical releases and a glut of streaming series. And tonight, as credits rolled on Return of the Jedi, I had the thought that an even better watch order has emerged for those just now being exposed to the franchise.

Becky and I first started dating somewhere between the release of Attack of the Clones and Revenge of the Sith and—no small measure of her devotion—she's humored me by seeing each subsequent Star Wars movie in theaters, despite having no interest in the films and little idea what was going on. Get yourself a girl who'll watch half a dozen movies that mildly repulse her, fellas.

Hell, when we were living in Japan, I missed that 吹替 ("dubbed") was printed on our tickets and she wound up sitting through the entirety of The Rise of Skywalker with Japanese voiceovers and no subtitles to speak of. When we walked out, she told me that she (1) was all set with Star Wars movies for a while, and (2) suspected the incomprehensibility of the Japanese dub had probably improved the experience, on balance.

That all changed when she decided to give Andor a chance. See, if you're not a Star Wars fan, Tony Gilroy's Andor series is unique in the franchise for being actually good. Like, it's seriously one of the best TV shows to see release in years. After its initial three-episode arc, Becky was fully on board for watching both of its 12-episode seasons. And the minute we finished Season 2, she was ready to watch Rogue One with fresh eyes. ("I actually have a clue what's going on now.") And, of course, with the way Rogue One leads directly into the opening scene of A New Hope, we just kept rolling from there.

Following this experience, I'd suggest sharing Star Wars with your unsuspecting loved ones in what I guess I'd call The Gilroy Order:

  1. Andor (seasons 1 and 2)
  2. Rogue One
  3. A New Hope
  4. The Empire Strikes Back
  5. Return of the Jedi

If, at this point, you're still on speaking terms with said loved ones, go ahead and watch the remaining Star Wars schlock in whatever order you want. Maybe you go straight to The Mandalorian. Maybe you watch The Force Awakens just so you can watch the second and final film of the third trilogy, The Last Jedi. Maybe you quit while you're ahead and wait for Disney to release anything half as good as Andor ever again. (Don't hold your breath.)

Anyway, the reason I'm taking the time to propose an alternative watch order at all is an expression of the degree to which I am utterly shocked that my wife just watched and enjoyed so many Star Wars movies after struggling to tolerate them for the first two decades of our relationship. I'm literally worried I might have broken her.

But really, it turned out that all she needed was for a genuinely well-crafted narrative to hook her, and Andor is undeniably the best ambassador the franchise currently has.