Rails World 2026 Opening Keynote - DHH ![rw-book-cover](https://i.ytimg.com/vi/vDjW_dRyKXY/sddefault.jpg) ๐Ÿ”— **Source:** [Rails World 2026 Opening Keynote - DHH](https://www.youtube.com/watch?v=vDjW_dRyKXY) > [!note]+ Document Notes > tags: [ai-coding-agents, rails-governance, developer-productivity-claims, agent-evals, cli-first-design, technology-forecasting] > author: David Heinemeier Hansson > source: Ruby on Rails (YouTube) > reference: https://www.youtube.com/watch?v=vDjW_dRyKXY > date created: 2026-09-24 12:26 > > > [!info] Generated analysis โ€” not the author's words. Sections below are machine-written > > from the captured source. Only text inside `> [!quote]` blocks is verbatim from the author. > > Do not quote or attribute any other line to the named author. > > # ๐Ÿท๏ธ Title: Rails World 2026 Opening Keynote - DHH > <!-- deep-read:sections start --> ## ๐Ÿงญ Table of contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning styles assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility assessment](#-accessibility-assessment) - [๐ŸŒ DEIB assessment](#-deib-assessment) - [โœ… Logical validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO analysis](#๏ธ-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) - [๐Ÿ”„ Refactor appendix](#-refactor-appendix--rails-world-2026-opening-keynote---dhh) ## ๐Ÿ“ Summary - **What happened.** The Ruby on Rails channel published the 1:03:07 opening keynote from Rails World 2026 in Austin on 2026-09-24. David Heinemeier Hansson (DHH), creator of Rails and co-owner of 37signals, argues that coding agents crossed a usability threshold on November 24, 2025, that 37signals has stopped writing code by hand as normal practice, and that the correct response to the uncertainty is what he calls total optimism. Shopify sponsored the editing and post-production. The description ships 23 chapter markers, which this analysis follows. - **The claim.** Hand-written code is no longer economically productive for most programmers at most companies as of today, and will be so for "virtually all" by the end of 2026 (00:40:13 to 00:40:57). Supporting claims: a 1,000x gap between the worst programmer without agents and the best with them (00:17:52), 150,000 lines of code written by DHH in August 2026 against a 21-year average of 30,000 per year (00:37:12), and a Rust rewrite of the HEY backend that needs 99% less CPU and 95% less memory (00:30:35). - **Why it matters.** The speaker controls the roadmap of a framework used by a large share of the web, owns a company that just changed its engineering policy, and is raising money for an operating system (Omarchy, about $20 million at 00:48:22). When a BDFL announces "pencils down" from the conference stage, that is both a product decision and a governance signal for every downstream shop that takes cues from Rails. - **Key stakeholders.** DHH and 37signals (Basecamp, HEY, the unreleased HEY successor, Omarchy). The Rails Foundation and Evil Martians, who run the agent evals referenced at 00:34:18. Shopify, cited as an example (Shop app rewrite, 00:27:39) and the sponsor of the video. Anthropic, OpenAI, Moonshot, and DeepSeek, whose model releases form his timeline. Rails developers in the room, about five of whom raised a hand when asked who still writes material code weekly (00:21:35). - **Risks and tradeoffs.** This is a keynote by the vendor of the framework being praised, delivered at that framework's own conference, with the company's products as the case studies. The three headline numbers (1,000x, 150,000 lines, 99% CPU) arrive with no counting method, no audit, and in the last case an explicit "back of the envelope" label. The historical anchors carry errors: US ATMs date to 1969 not the 1950s, and the teller figures he quotes are off by roughly a factor of ten from the published source. The talk uses the words "loser" and "black pill" for people who disagree, which constrains dissent in the room. - **Bottom line.** The verifiable core is narrow and real: 37signals changed its policy, HEY is being rebuilt as six native clients plus a Rust server, the Rails Foundation is funding agent evals that saturated at 95% and were made harder. Everything about the rate of change for the rest of the industry is forecast, argued mostly by analogy and by mood, and the speaker's own portrait-painter analogy predicts decades-long plateaus that his three-month forecast ignores. ## ๐Ÿ“– Main content **The argument in one line.** A new tool has made a craft uneconomic; the craftspeople who thrive are the ones who pivot to what the tool cannot do, and the time to pivot is now. DHH runs this argument three times at increasing scale: painters and the Kodak Brownie (00:01:39 to 00:11:14), himself and Ruby (00:36:28 to 00:40:57), and the whole profession (00:40:57 onward). **The portrait-painter frame.** He walks from Joshua Reynolds's 1781 group portrait (rendered "ladies Valdigra" by the captions; the painting is *The Ladies Waldegrave*), through Goya's 1801 Spanish royal family, to a Danish royal family portrait finished in 1886 by a painter the captions call "Law Tuken" or "Laitz Tuken," his own great-great-grandfather Laurits Tuxen. The Kodak Brownie arrives in 1900 at about one dollar (00:05:20); photography then plateaus for roughly 80 years until smartphones push the count to about 2 trillion per year (00:10:29). His reading: painters realized "depicting reality as perfectly as possible was no longer really an economically viable skill" (00:06:04) and moved to Cubism and Impressionism. **The timeline of models.** November 24, 2025 is his inflection point, when "Opus 45" (Claude Opus 4.5) shipped inside a harness ordinary developers could afford (00:11:14). He then narrates a "trough of disillusionment" from February to May 2026 (a Gartner term, unattributed), a June release the captions render as "Fable 5 and Myths," and September releases the captions render as "GPT6 Astra" and "Deep Seek 41 Flash" (00:14:55). An open-weight model the captions call "Kimmy K25" at 200 tokens per second also appears (00:12:42). All of these are caption renderings; check the vendor release notes before repeating any of them. **From 10x to 1,000x.** He traces the 10x programmer to a 1968 ACM paper (this is Sackman, Erikson, and Grant, *Communications of the ACM*, January 1968, which reported performance ratios up to about 28:1 among experienced programmers). He then asserts a 100x gap between the worst programmer without agents and the best with them is "not a very controversial statement," and extends it to 1,000x with the words "That sounds about right" (00:17:52). No study, no task set, no measurement. This is the weakest number in the talk and he offers it as a feeling. **The self-reported production numbers.** Three figures, all from DHH about DHH, none with a counting method: half as much code in the past 20 months as in the previous 21 years (00:17:52); Ruby falling from over half of his output to about 3% this year (00:36:28); 150,000 lines in August 2026 versus a career average of 30,000 per year, which he computes as roughly 60x (00:37:12). He volunteers two deflators himself: lines of code are "a weird fuzzy malleable size," and most of the new volume is agent-generated Rust he tolerates being verbose and never reads. So the 60x is partly an artifact of the measure. **The 37signals decisions (verifiable claims).** Four product and policy facts are stated as facts and can be checked against 37signals's public output over the coming months: - "Pencils down" on hand-written code as normal practice, decided "a couple of weeks ago" (00:20:50). Hand-writing code is now "an exceptional state," compared to seeing a bug in Sentry. - Basecamp 5 shipped after a spring experiment where designers vibe-coded 20 to 30 PRs and left the architecture "like a Swiss cheese" (00:22:17). He now calls the decision to pull back from that "the wrong conclusion." - The HEY successor drops the web app for six native applications, kicked off about a week before the talk (00:25:20), with a Windows client going from unshippable first prompt to a usable version 20 minutes later (00:26:52). - The HEY backend moves to Rust, claimed at 99% less CPU and 95% less memory, with 10 hosts kept only for redundancy and a "back of the envelope" estimate that peak traffic fits on one Raspberry Pi (00:30:35). He states he does not know Rust and evaluates the output as a black box (00:35:02). **The Rails Foundation eval work (verifiable, and the most governance-relevant item).** Evil Martians run agent evals on behalf of the Rails Foundation that score agents on implementing feature cards against reference applications. The first version saturated at about 95% completion "quite quickly," so the Foundation instituted a harder measure (00:34:18 to 00:35:02). This is the one place the talk points at an external, fundable, repeatable artifact rather than an anecdote. Whether the eval, the feature cards, and the scoring rubric are public determines whether the "Rails is well positioned for agents" claim is testable by anyone outside the Foundation. **Architecture and product prescriptions.** Three concrete positions: abstractions become "choke points" when thousands of agent processes mutate a codebase, and DRY loses its economic basis because the price of repetition is near zero (00:43:07 to 00:43:51); applications should expose a CLI so users bring their own agent rather than use an embedded chatbot, with a rhetorical deadline of "next Friday" (00:45:21 to 00:46:07); and the productivity dividend should be spent on performance, citing his Hype presentation tool at half a megabyte against Spotify at 1.2 GB (00:53:30 to 00:54:13). **The P(bloom) close.** Predictions about technology and society have been wrong (ATMs and bank tellers, Oppenheimer and the Cold War), therefore forecasters should be humble, therefore the rational stance is optimism, framed as a game-theory argument: if things turn out well, worry was wasted; if catastrophe arrives, you should have enjoyed the interval (01:00:07 to 01:00:52). The talk ends by calling the pessimistic stance "the black pill" and its holders "losers" (01:02:18). **Contested or wrong in this source.** The ATM anecdote places US ATMs in the 1950s; the first US ATM opened in 1969. The teller counts (30,000 rising to 40,000) do not match the standard source for this story, James Bessen's 2015 analysis, which reports roughly 250,000 tellers in 1970 rising to about 500,000 by 2010. He attributes the ATM story to William Stanley Jevons and "Jevons's paradox," but Jevons's 1865 work was about coal consumption, not ATMs. The Truman quote about Oppenheimer is reported secondhand via Dean Acheson and phrased slightly differently in the historical record. ## ๐Ÿ—’๏ธ Notes #### โฑ๏ธ [00:00:10](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=10) Welcome and the AI euphoria framing - Opens by naming the obvious objection to his own enthusiasm: "AI psychosis." He prefers "AI delirium" or "AI euphoria" (00:00:56). - Sets the tension for the whole talk: the most exciting thing computers have done in his career, and also unnerving because "whenever we try to make a prediction, it is out of date about 20 minutes later" (00:01:39). - Note for later: that admission about predictions is in direct tension with the specific forecast he makes at 00:40:57. #### โฑ๏ธ [00:01:39](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=99) What portrait painters can teach us about AI - Reynolds 1781 (captions: "ladies Valdigra"), an anecdote about a rejected version because "a piece of ankle was showing," played as a joke about client statements of work (00:03:07). The anecdote is unsourced. - Goya's royal Spanish family, 1801. Then an 80-year gap to the Danish royal family portrait by "Law Tuken" (Laurits Tuxen), three years of work, still hanging in Copenhagen (00:04:35). Tuxen is his great-great-grandfather; his great-grandmother Yvonne is the figure in pink at 00:06:49. - Kodak Brownie, 1900, about one dollar: the painters "pivoted" to Cubism and Impressionism (00:06:04). Tuxen's own 1921 photographic portrait is shown as his embrace of the new technology (00:07:32). - The plateau: color photography in the 1960s, his own three childhood photos at 00:08:15 to 00:09:00 as "about 10% of my stockpile," a 1925 Leica I as the reference camera, then the smartphone inflection and "2 trillion photos" per year (00:10:29). The 2 trillion figure matches common industry estimates but is an estimate. #### โฑ๏ธ [00:11:14](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=674) November 24, 2025: the Kodak Brownie of our era - The inflection date is tied to "Opus 45" arriving in an affordable harness (00:11:14). Captions render the model name without a decimal. - "There was everything before November 24 and then there was everything after." He predicts history books will mark it as the start of the Age of Agents (00:11:58). - Open-weight models followed "a few months later"; he drove "Kimmy K25" in fast mode at 200 tokens per second (00:12:42). #### โฑ๏ธ [00:12:42](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=762) The trough of disillusionment and the leap that followed - February to May 2026: new models "kind of sucked," a market dip after an OpenAI release that "didn't punch that much better on the benchmarks" (00:13:26). No release or index is named. - June: captions read "Fable 5 and Myths." He says this is where he went from asking an agent to do a task to giving it a problem and merging the result (00:14:12). - September: "GPT6 Astra" and, a week later, "Deep Seek 41 Flash," which he frames as ending fears of an Anthropic monopoly and of frontier intelligence being only American (00:14:55). All four names are caption renderings. #### โฑ๏ธ [00:15:40](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=940) From the 10x to the 1,000x programmer - The 10x programmer traced to a 1968 ACM article with a 5x to 30x range averaging 10x, followed by "the next 45 years arguing whether this was actually real" (00:16:24). The paper is Sackman, Erikson, and Grant, CACM January 1968. - 100x between worst-without and best-with is offered as "not a very controversial statement" (00:17:08). No source. - 1,000x: "That sounds about right. A thousand times." (00:17:52). Speaker claim with no method. > [!quote] [00:17:52] > What I know to be true is that in the past 20 months, I have written half as much code as I did in the previous 21 years. #### โฑ๏ธ [00:18:38](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=1118) "Look at all the things I'm not doing": the Rails moment - Plays a clip from his 2005 Brazil talk, the original Rails pitch about configuration you don't write (00:18:38 to 00:19:21). - Claims "writing no code for probably five months at this point" while still being "able to fix everything" (00:20:03). #### โฑ๏ธ [00:20:50](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=1250) 37signals goes pencils down on hand-written code - The decision was made "a couple of weeks ago." Hand-written code becomes an exception handled like a Sentry bug: fix the factory, not the output (00:20:50 to 00:21:35). - Live poll: "How many people here are still writing material amounts of code by hand on a weekly basis?" He counts about five hands (00:21:35). > [!quote] [00:20:50] > Writing code by hand at 37 signals is now an exceptional state. #### โฑ๏ธ [00:22:17](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=1337) What vibe-coding Basecamp 5 taught us - Spring 2026: designers vibe-coded the final features. Individually reasonable PRs; 20 or 30 together left the architecture "like a Swiss cheese" (00:22:17 to 00:23:03). - The team retreated to manual review and programmer-only agent use. He now calls that "the wrong conclusion," both because a better model arrived weeks later and because the only question worth asking is "how do you get the most out of this intelligence explosion" (00:23:03). - Basecamp 5 shipped "agent accelerated" but with substantial hand-written code (00:23:50). #### โฑ๏ธ [00:23:50](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=1430) Rebuilding HEY as native apps - The HEY successor (working names "hey next, hey new, hey there") will not be a web app. Web was the small-team compromise; React Native and Hotwire Native existed to make that compromise cheaper (00:24:37 to 00:25:20). - Six native apps kicked off about a week earlier; a demo plays behind him (00:25:20). Windows client: first prompt unshippable, redirected version 20 minutes later (00:26:52). - Precedent cited: Shopify's Shop app rewritten natively by about six people, replacing React Native (00:27:39). Shopify is also the video's sponsor. #### โฑ๏ธ [00:28:24](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=1704) Rethinking HEY's backend with agents - Rust, which he calls "the ugliest programming language that has been invented in probably the last 40 years" and "inhumane" for humans to write (00:29:06). He loves it as long as agents write it and he never reads it (00:29:50). - Claimed outcomes: 99% less CPU, 95% less memory, 10 hosts for redundancy only, peak traffic on one Raspberry Pi as a back-of-the-envelope estimate (00:30:35). - Working model: asynchronous delegation, "like you would a co-worker," not a chat window (00:32:04). An agent product name inside Basecamp is rendered "chef Marie" by the captions; the real name is unclear from the transcript. #### โฑ๏ธ [00:32:50](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=1970) Where does this leave Ruby and Rails? - HEY's answer is native front end plus Rust back end. But the web wins wherever users won't install anything, and "a million businesses are built on that premise" (00:33:34). - The Rails pitch for the agent era: convention over configuration becomes token efficiency; the one-developer framework matches what agents let single developers do (00:33:34 to 00:34:18). > [!quote] [00:33:34] > Everything that we've worked on for the past 25 years, convention over configuration leads directly to things like token efficiency. #### โฑ๏ธ [00:34:18](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2058) Agent evals with Evil Martians and the Rails Foundation - Evil Martians run the evals for the Rails Foundation. The evals score implementation of feature cards against reference applications (00:34:18 to 00:35:02). - Version 1 saturated near 95% completion; a harder version replaced it. He expects continual "elevation" of the bar. - Advice: don't be "overly prescriptive"; a "beginner's mindset" prompts at a higher level (00:35:02). He treats the Rust output as a black box "as any business owner in history who's ever commissioned a group of programmers" (00:35:45). > [!quote] [00:34:18] > we quickly had to update our evals because the agents were saturating the first version of it and reaching 95% completion rates quite quickly. #### โฑ๏ธ [00:36:28](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2188) 150,000 lines of code in a month - Over 21 years, more than half his work was Ruby; this year about 3% (00:36:28). - Career average about 30,000 lines of production Ruby per year; August 2026 was 150,000 lines, "about 60 times more" (00:37:12). - His own caveats: Rust is verbose, and he lets the agent emit more than he would tolerate in Ruby. No statement of how lines were counted, whether generated code was deduplicated, or whether tests and vendored code count. > [!quote] [00:37:12] > Well, in uh August last month, I wrote 150,000 lines of code in one month. #### โฑ๏ธ [00:37:56](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2276) English: the programming language DHH likes better than Ruby - "English is a better programming language than Ruby," more expressive, "a little more vague," "less deterministic," and "an absolute joy" (00:37:56 to 00:38:40). #### โฑ๏ธ [00:38:40](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2320) Retiring from hand-written code, with joy - "I have retired from being a professional programmer," dated to roughly March 2026 (00:39:25). - The emotional frame: a quarter century of chiseling code by hand should be remembered "with joy," not regret (00:40:13). - The forecast: hand-written code is "no longer an economically productive enterprise for the vast majority" today, and "by the end of the year, it will be virtually all domains, virtually all programmers, virtually all companies" (00:40:13 to 00:40:57). > [!quote] [00:40:13] > Writing code by hand is no longer an economically productive enterprise for the vast majority of programmers working at the vast majority of companies. #### โฑ๏ธ [00:42:24](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2544) Rethinking software architecture for the age of agents - Abstractions become choke points when "hundreds or thousands or tens of thousands" of processes mutate an application (00:43:07). - DRY loses its rationale: the price of repetition and of keeping copies in sync "has dropped just the same" (00:43:51). - "No one yet has the blueprint." He frames the audience as present at a moment like the arrival of object orientation, with methodology, cycle length, and "who should be specifying what" all open (00:44:35). > [!quote] [00:43:51] > The reason we did abstractions was in part not to repeat ourselves. Well, now the price of repetition has gone to near zero. #### โฑ๏ธ [00:45:21](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2721) Bring your own agent: every app needs a CLI - Rejects embedded chatbots ("I don't want to use your concierge") in favor of a personal agent that drives many apps through CLIs (00:45:21). - The one explicit prescription in the talk: "if your app doesn't have a CLI, I want to see it by next Friday" (00:46:07). - Case: the HEY CLI plus an agent found a five-year-old email about "sneakers and a podcast" that Elasticsearch keyword search could not, by searching "in concepts now, not keywords" (00:46:52 to 00:47:36). He does not know how the agent did it. > [!quote] [00:45:21] > Let me bring my own butler to the party. Let me interact with your applications through a CLI. #### โฑ๏ธ [00:47:36](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=2856) Omarchy: fixing the whole computer - Omarchy (captions: "Amachi"), his Linux distribution, has been his only topic on X for three months. "We've raised about $20 million for this adventure" (00:48:22). - Install times: 3:33 at Rails World 2025; 35 seconds by "Anush from AMD" on a Halo laptop; 9 seconds in the lab (00:49:07 to 00:49:50). - Stock answer borrowed from Mitchell Hashimoto (creator of HashiCorp and Ghostty): "The pursuit of excellence does not need justification" (00:50:32). #### โฑ๏ธ [00:51:17](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=3077) One-shot apps: calculator, writing app, video editor, Hype - Calculator in C++ and Qt from one screenshot, about 7 minutes to a working app and 15 more to a public repo and a new ISO (00:51:17 to 00:52:01). - A writing app modeled on iA Writer, where he "didn't look at a single line of the code" (00:52:01). A video trimmer. Hype, the presentation software this keynote runs on, started the prior Thursday (00:52:46 to 00:53:30). #### โฑ๏ธ [00:53:30](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=3210) The performance payoff: half a megabyte - Hype's binary is half a megabyte, built on Markdown (00:53:30). - The argument: 20 years of hardware gains were spent on human productivity, so apps got "slow, bulky, fat and lazy." Spotify at 1.2 GB is the example. Now "every optimization is now within reach" because a model "can run overnight and deliver 10 30x improvements" (00:54:13). #### โฑ๏ธ [00:55:00](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=3300) AI concerns, security, and why predictions fail - Concerns "deserve airing out" and are "maybe a little overstated. I mean, maybe, but probably not." Security is the one he grants: agents that "maybe know their expiration date" may "try to do bad things" (00:55:00 to 00:55:46). - Economists can't predict the stock market six months out, so they can't predict a shift the size of AI and agents (00:55:46). - ATM anecdote: "1950s," 30,000 tellers expected to lose their jobs, banks opened more branches instead (00:56:28). Both the date and the counts are wrong against the published record (see Main content). #### โฑ๏ธ [00:57:56](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=3476) P(bloom) over P(doom) - Oppenheimer and Truman; the Cold War as "the best kind of war"; nuclear power as an unforeseen side effect that humanity then "pissed away for 40 years" (00:57:12 to 00:58:38). - If Oppenheimer couldn't forecast the bomb's consequences, forecasters of AI should be humble, and the probability of "abundance and joy" is "so vastly greater" than doom (00:58:38). No basis for the probability is given. - Security is where he grants real work: a recent Rails CVE in a C image library, a quarantine approach, and a later talk by "Mike" on something the captions render as "hot cell" (00:59:23). - Jevons and the ATM numbers restated: 30,000 tellers then "40,000 bank tellers" in 2010 (01:00:07). Misattributed and off by roughly 10x. #### โฑ๏ธ [01:00:52](https://www.youtube.com/watch?v=vDjW_dRyKXY&t=3652) The case for total optimism - The game-theory close: if things go well, sadness was wasted; if catastrophe comes, you should have been cheerier. "Pure game theory. There's only one play here" (01:00:07 to 01:00:52). - "Agent Luther is going to disintermediate the cleric class" and make everyone a programmer; Rails programmers are "the best of the best," "Top Gun" (01:00:52 to 01:01:36). - Closes with a clip of a child using a kids' version of Omarchy saying "Future's now, old man," then "take the white pill," "The black pill is for losers. Don't be a loser" (01:01:36 to 01:03:05). The video ends there. ## ๐Ÿ“š References The transcript itself contains no links; the following come from the video description or are primary sources for named entities. - [Rails World 2026 Opening Keynote - DHH](https://www.youtube.com/watch?v=vDjW_dRyKXY): the source video, 1:03:07, uploaded 2026-09-24 by the Ruby on Rails channel. - [Shopify Engineering](https://shopify.engineering/): the only link in the video description; Shopify sponsored editing and post-production and is cited at 00:27:39. - [Rails Foundation](https://rubyonrails.org/foundation): funds the agent evals described at 00:34:18. - [Evil Martians](https://evilmartians.com): runs the evals on the Foundation's behalf. The eval repository and rubric are not named in the talk. - [37signals](https://37signals.com): Basecamp, HEY, and the "pencils down" policy at 00:20:50. - [Omarchy](https://omarchy.org): DHH's Linux distribution; captions render it "Amachi." - Sackman, Erikson, and Grant, "Exploratory experimental studies comparing online and offline programming performance," *Communications of the ACM* 11(1), January 1968: the origin of the 10x programmer figure cited at 00:16:24. - James Bessen, "Toil and Technology," *Finance & Development*, IMF, March 2015: the standard source for the ATM and bank-teller story told at 00:56:28 and 01:00:07; its figures differ from the talk's by roughly 10x. - William Stanley Jevons, *The Coal Question*, 1865: the actual origin of Jevons's paradox, which concerns fuel efficiency and consumption, not ATMs. - Gartner Hype Cycle: source of the "trough of disillusionment" phrase used at 00:12:42, unattributed in the talk. - Joshua Reynolds, *The Ladies Waldegrave*, 1780โ€“81 (National Galleries of Scotland); Francisco Goya, *Charles IV of Spain and His Family*, 1800โ€“01 (Museo del Prado); Laurits Tuxen, the Danish royal family group portrait, 1883โ€“86: the three paintings at 00:02:24 to 00:05:20. - Kodak Brownie, introduced February 1900 at one dollar: the technology pivot at 00:05:20. - Mitchell Hashimoto, creator of HashiCorp and Ghostty: source of the quote at 00:50:32. ## ๐Ÿ—ฃ๏ธ Paraphrase DHH's case runs like this. Portrait painters spent centuries perfecting likeness, then a one-dollar camera made likeness cheap, and the painters who mattered afterward were the ones who moved to what a camera couldn't do. Programmers are the painters. The camera arrived on November 24, 2025, when a frontier model shipped inside a harness ordinary developers could afford, and after a short dip in the spring the models kept getting better through the summer. His own output tells the story: 150,000 lines in one month against a career average of 30,000 a year, almost none of it Ruby, most of it Rust he never reads. So 37signals has stopped writing code by hand, is rebuilding HEY as six native apps on a Rust server that fits on a Raspberry Pi, and he considers himself retired from programming as of roughly March. What follows for everyone else, in his telling: abstractions and DRY were about saving human effort, and that effort is now nearly free, so architecture needs rethinking. Apps should ship CLIs so users can bring their own agent. The performance dividend of 20 years of hardware should finally be collected, and a half-megabyte presentation tool is his proof. Rails is well placed because convention over configuration is token efficiency, and the Rails Foundation is funding evals to keep the framework honest as agents improve. As for the fear: every prediction about technology's social effects has been wrong, so pick the stance that costs least if you're wrong, which is optimism. Anyone who picks otherwise is, in his words, taking the black pill. ## ๐Ÿ“ฐ Newsletter **The Rails BDFL says pencils down. What that means for a WordPress shop.** DHH opened Rails World 2026 with an hour-long argument that hand-written code stopped being economically productive sometime this year, and that 37signals has made it an exception rather than the norm. The verifiable bits are worth your attention regardless of how you feel about the rhetoric: Basecamp 5 shipped with heavy agent assistance after a spring where designer-written PRs punctured the architecture; the next HEY is six native clients on a Rust server; and the Rails Foundation is paying Evil Martians to run agent evals that already saturated at 95% and had to be made harder. Three things translate directly. First, the eval. WordPress has no equivalent public measure of how well agents implement features against a reference site, and "our framework is agent-friendly" is a claim anyone can make until one exists. Second, the CLI. His only concrete prescription was "if your app doesn't have a CLI, I want to see it by next Friday." WordPress has had WP-CLI for over a decade, and plugins that don't register commands are leaving the bring-your-own-agent door shut. Third, the caveat he gave himself: 150,000 lines a month, mostly verbose Rust he never reads, measured by a unit he called "weird fuzzy malleable." When the number and the deflator come from the same speaker, cite the deflator. Also on the record: US ATMs date to 1969, not the 1950s, and the teller numbers he quoted are about a tenth of the published ones. A keynote that asks you to distrust forecasters should survive a fact check. Links: [the keynote](https://www.youtube.com/watch?v=vDjW_dRyKXY), [Rails Foundation](https://rubyonrails.org/foundation), [Evil Martians](https://evilmartians.com). ## โœ… Action items #### DevRel - Developer advocacy: build one talk or post that separates the four verifiable 37signals decisions (00:20:50, 00:22:17, 00:25:20, 00:30:35) from the forecasts, and use it as a model for how to cover vendor keynotes. - Education: run an office hour on "what an agent eval for your framework would measure," using the feature-card-against-reference-app design at 00:34:18 as the seed. - Developer experience: audit whether the quickstarts you own can be completed end to end by an agent from a CLI alone, with no browser step. Log the first blocker. - Developer marketing: do not repeat 1,000x, 60x, or 99% less CPU in any material. Cite the policy change and the eval; those are checkable. - Community management: the talk labels dissenters "losers" (01:02:18). Add a norm to your channel guidelines that disagreement about agent adoption is on-topic and not a status marker. - Internal/external/cross-project: ask the Rails Foundation and Evil Martians whether the eval harness, feature cards, and rubric are public, and whether a WordPress or FAIR variant could reuse the design. #### OSPO - Policy and governance: write down what "pencils down" would mean for contribution policy in your projects: who reviews agent-generated PRs, what provenance is recorded, and whether a human author-of-record is required. The Basecamp 5 Swiss-cheese episode (00:22:17) is the failure case to design against. - License compliance: agent-generated Rust and C++ at 150,000 lines a month (00:37:12) raises the question of training-data provenance at volume. Decide whether your projects require a statement of tooling on PRs. - Security management: the talk grants security as the real concern (00:55:46, 00:59:23) and points to a quarantine approach for a Rails CVE in a C image library. Track that work and compare it to your own dependency isolation policy. - Software inventory: a CLI for every app (00:46:07) is a new attack surface per app. Add CLI entry points to the SBOM and to the scope of security review. - Developer support: publish guidance on when lines-of-code metrics are meaningless for agent output, so internal reports don't inherit the 60x framing. - Community engagement: the Rails Foundation funding a third party to run evals is a governance pattern worth documenting as a case study for other foundations. - Strategic alignment: set a KPI that measures agent-completed feature work by acceptance rate and defect rate, not by volume. #### Community - Maintainers: pilot a "reference application plus feature cards" eval for one project and publish the first saturation point, following 00:34:18. - Contributors: document what a first-time contributor should do when a maintainer says the project no longer accepts hand-written code as normal practice. The talk gives no onboarding story for newcomers. - Sponsors: if a sponsor funds agent tooling, require that the eval and its results be public, as the Rails Foundation example implies but the talk does not confirm. - Ecosystem: the "bring your own agent through a CLI" model (00:45:21) needs a shared convention for auth scopes and destructive-action confirmation across projects. Start that conversation before every project invents its own. #### WordPress - Core: evaluate whether Core's coding standards and abstractions read as "choke points" for agents (00:43:07). Pick one subsystem and count how many files an agent touches to add a feature. - Core Performance: the half-megabyte argument (00:53:30) is a performance-budget argument. Add "agent-driven optimization sweep" as a candidate for one release's performance program. - Core AI: WordPress has no public agent eval. Propose one modeled on feature cards against a reference site, with a saturation-refresh policy from day one. - **Core Program Team:** if agent-authored contributions grow, retrospectives need a field for "agent-assisted" so trends are visible. Add it. - Mobile: no direct action from this source; nearest relevance is the native-over-web claim at 00:26:52. - Playground: a Playground blueprint that boots a reference site for agent evals would make the Core AI proposal above concrete. - Community: meetup organizers will get "should I stop learning to code" questions after this talk. Prepare a one-page answer that separates his verifiable claims from his forecast. - Training: Learn WordPress needs a lesson on reading agent output as a black box versus reviewing it, using his Rust-as-black-box stance (00:35:45) as the discussion prompt. - Marketing: no action from this source; nearest relevance is not amplifying unsourced multipliers. - Support: no direct action from this source; nearest relevance is incoming agent-generated plugin code in forums. - Design: the Basecamp 5 episode had designers shipping code (00:22:17). Discuss whether WordPress design contributors want a similar path and what review it needs. - Documentation: a CLI-first documentation pass (does every documented action have a WP-CLI equivalent?) follows from 00:46:07. - Photos: no direct action from this source; nearest relevance is the 2 trillion photos per year figure at 00:10:29 as context for volume. - TV: caption quality on this very video garbles a dozen proper nouns. Use it as a specimen when arguing for human-corrected captions on WordPress.tv. - Polyglots: no direct action from this source; nearest relevance is that agent-driven translation would need the same eval discipline as agent-driven code. - Accessibility: no direct action from this source; nearest relevance is that agent-generated UI needs the same WCAG review as any other. - Meta: WordPress.org contributor tooling should expose CLIs for the bring-your-own-agent case (00:45:21). Inventory which tools do. - CLI: WP-CLI is the WordPress answer to 00:46:07. Audit command coverage against the most common admin tasks and publish the gaps. - Hosting: no direct action from this source; nearest relevance is the resource-footprint claim at 00:30:35. - Tide: no direct action from this source; nearest relevance is that agent-generated plugins will change the distribution of coding-standards findings. - Openverse: no direct action from this source. - Themes: agent-generated themes will arrive in the review queue. Decide whether the review process asks about tooling. - Plugins: same as Themes, with provenance and security checks weighted higher for agent-generated code at volume. #### The WPOCC - Programs: if The WP Open Community Collective funds maintainer time, a public agent eval for WordPress is a bounded, fundable project with a clear deliverable, following the Rails Foundation model at 00:34:18. - Projects: a governance clinic on "what does an agent-first contribution policy look like" would draw from the 37signals decision at 00:20:50 and the failure case at 00:22:17. - Funding experiments: require that any funded agent-tooling work publish its eval and saturation data as a condition of payment. ### FAIR - Technical independence: the bring-your-own-agent model (00:45:21) is compatible with FAIR's independence goal only if the CLI does not assume one agent vendor. Write that into the spec. - Policies and covenants: an agent eval funded by a foundation and run by a vendor (00:34:18) needs an anti-capture clause: who owns the feature cards and who can change the bar. - Productized governance artifacts: add "agent-readiness eval, public, with saturation history" as a scorecard row for any framework or distribution FAIR endorses. ## ๐Ÿงช Hypotheses 1. 37signals's public repositories and changelogs from October 2026 onward show a measurable drop in human-authored commits (by author metadata or stated tooling) relative to the same period in 2025, consistent with the "pencils down" policy at 00:20:50. 2. The Rails Foundation agent eval, if published, shows the version-2 completion rate below 70% at launch and rising past 90% within six months, reproducing the saturation pattern described at 00:34:18. 3. DHH's 150,000 lines in August 2026 (00:37:12), when re-measured excluding generated Rust boilerplate, tests, and vendored code, falls below 30,000 lines of hand-equivalent logic, meaning the 60x figure is mostly a units artifact. 4. Among conference-audience developers in late 2026, the share who report writing "material amounts of code by hand weekly" exceeds 50% when surveyed anonymously, against the roughly five hands at 00:21:35, indicating the live poll understated hand-coding due to social pressure. 5. A Rails application with a first-class CLI is completed by a coding agent from a feature card at a higher rate than the same application without a CLI, supporting the 00:46:07 prescription with data rather than assertion. 6. The "by the end of the year, virtually all" forecast at 00:40:57 fails: published developer surveys for Q4 2026 and Q1 2027 show a majority of professional developers still authoring code by hand as a routine activity. ## ๐Ÿ“Š Methodology - **Design for H1.** Pull commit metadata from public 37signals repositories (Rails, Hotwire, Kamal, Omarchy) for July to December 2025 and July to December 2026. Classify commits by stated tooling in the message or trailer, and by co-author fields. Report the share of human-authored commits per quarter. Limitation: private product repos are invisible; state it. - **Design for H2.** Obtain the Evil Martians eval harness and feature cards. Run the same frontier models monthly against version 2. Plot completion rate over time and record the date at which the Foundation announces a version 3. Pre-register 90% as the saturation threshold. - **Design for H3.** Request or reconstruct the August 2026 line count from public commits authored by DHH. Apply three deflators: strip generated files by path convention, strip tests, and normalize Rust to Ruby using a published tokens-per-function ratio. Report all three. - **Design for H4.** Run an anonymous survey at two developer conferences with the exact question from 00:21:35. Compare the anonymous share to a hand-raise count taken in the same room ten minutes earlier. - **Design for H5.** Build two variants of one reference Rails app, one with a CLI covering all admin actions and one without. Give the same 20 feature cards to three agents. Score completion by the eval rubric. Run three seeds each. - **Design for H6.** Use Stack Overflow, JetBrains, and GitHub Octoverse survey questions on daily hand-coding for Q4 2026 and Q1 2027. Define "virtually all" as at least 90% reporting hand-coding is exceptional. Anything below falsifies the forecast as stated. - **Controls throughout.** Fix model versions by release date. Record token spend per completion. Keep the rubric fixed within a version. ## โ“ Questions - Is the Evil Martians eval harness public, and who owns the feature cards and the decision to raise the bar? - How were the 150,000 lines counted at 00:37:12, and how much of it is generated Rust boilerplate that would never exist in a hand-written codebase? - What does "pencils down" mean operationally for code review at 37signals: who reads the diff, and is a human still the author of record? - If abstractions are choke points for thousands of agent processes (00:43:07), what replaces them for humans who still need to understand the system during an incident? - Which Rails CVE and which C image library is meant at 00:59:23, and what does the "quarantine" look like in practice? - What is the exact 37signals agent product the captions render as "chef Marie" at 00:31:21? - Given his own 80-year photography plateau (00:07:32 to 00:09:45), what evidence supports "virtually all" companies converting within three months? - Who bears the security cost when every app exposes a CLI to third-party agents, and what auth scope model does the HEY CLI use? ## ๐Ÿ”ฎ Future research - **Public agent evals per framework.** The Rails Foundation model (foundation funds, vendor runs, bar rises on saturation) has no published equivalent for WordPress, Django, Laravel, or Next.js. A cross-framework comparison using the same feature-card method would turn "our framework is agent-friendly" into a measurement. - **Lines of code as an agent-era metric.** No agreed deflator exists for generated code. Work that proposes and validates a "hand-equivalent lines" normalization would let claims like 60x be compared. - **Architecture under many concurrent mutators.** His claim that DRY and abstraction lose their basis (00:43:51) is testable: measure merge-conflict rate, defect rate, and incident time-to-understand on codebases with high versus low abstraction under agent-heavy contribution. - **CLI as agent interface.** Nobody has measured whether a CLI beats a REST API or MCP server as the agent integration surface. A controlled comparison across the three on the same app would settle the "next Friday" prescription. ## ๐Ÿ’ก Implications - **Practice.** The one prescription you can act on tomorrow is a CLI for everything you ship (00:46:07). For WordPress that means WP-CLI command coverage. The one practice to avoid is the Basecamp 5 mistake in either direction: neither unreviewed designer PRs nor a retreat from agents entirely. - **Policy.** A BDFL announcing a company-wide policy change from a community conference stage collapses the distance between vendor decision and community norm. Foundations that want independent governance need their own evals and their own statements, not the vendor's keynote. - **Security.** He grants security as the real risk and points at dependency quarantine (00:59:23). A CLI per app multiplies the surface. Treat "bring your own agent" as a threat-model change, not a feature. - **Education.** The talk tells newcomers nothing about how to learn when the seniors have "retired" from hand-coding. Curricula need an explicit answer to "what do I learn if I never write the code," and "read Rust as a black box" (00:35:45) is not it. - **Funding.** The Rails Foundation eval is the fundable artifact here. Foundations and collectives can copy the shape: fund a third party, publish the harness, raise the bar on saturation. - **Rhetoric literacy.** Calling dissent "the black pill" and dissenters "losers" (01:02:18) at a conference you control is a psychological-safety cost. Communities that want honest reports of agent failures need to protect the people who give them. ## ๐Ÿง  Learning styles assessment - **Reading level estimate.** Flesch-Kincaid Grade Level computed on the 8,309-word transcript body: 6.4. Flesch Reading Ease: 73.2. Conversational spoken English with short sentences; the difficulty lies in unexplained references (Jevons, Oppenheimer, Sackman 1968, Hotwire Native, Elasticsearch) rather than in syntax. #### ๐Ÿ‘€ Visual learners - Present: a slide sequence of paintings and photographs across 200 years (00:02:24 to 00:10:29), a 2005 video clip, a live demo of six native HEY clients (00:25:20), before-and-after Windows screenshots (00:26:52), an eval saturation chart (00:34:18), and a child on video at the close. - Improve: no diagram of the proposed architecture shift (native clients, Rust server, CLI, personal agent). The eval chart is never described aloud, so its axes are lost to anyone not watching. #### ๐Ÿ”Š Aural learners - Present: a single energetic speaker for 63 minutes, with an embedded 2005 clip and a closing child's voice. - Improve: bleeped profanity ([ __ ] appears more than 20 times in the transcript) breaks the audio flow; a clean cut would help. A 5-minute audio summary of the four verifiable decisions would serve listeners who skip the history. #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: strong analogies (portrait painters, Kodak Brownie, punch cards, Agent Luther), memorable lines ("Look at all the things I'm not doing," "English is a better programming language than Ruby"). - Improve: no definitions for Hotwire Native, Elasticsearch, feature cards, or "harness." Jevons's paradox is invoked and misapplied; a correct one-sentence definition would fix it. #### ๐Ÿงฉ Kinesthetic learners - Present: the "CLI by next Friday" challenge (00:46:07) is a concrete task. The one-shot app stories (00:51:17) describe a repeatable loop: screenshot, prompt, build, push, ISO. - Improve: no repository links, no prompt text, no eval harness link. The viewer cannot reproduce anything shown. #### ๐Ÿง  Logical learners - Present: a stated chronology with dates (1781, 1801, 1886, 1900, 1925, 1979, November 24, 2025), a cited origin for the 10x figure, and an explicit game-theory close. - Improve: the 1,000x leap has no derivation; the 60x figure uses a unit the speaker calls fuzzy; the ATM numbers are wrong. Logical learners will notice all three and discount the rest. #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: a live poll (00:21:35), an invitation to "come help figure it out" (00:44:35), a shared conference room. - Improve: the poll has a social-pressure problem and the close labels dissenters. A moderated Q&A or a public forum thread for disagreement would balance it. #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: the retirement reflection (00:39:25 to 00:40:57) models a personal reckoning a viewer can repeat for their own career. - Improve: no reflection prompt. "What share of your last month's output did you write by hand, and how did you count it?" would convert the anecdote into an exercise. #### ๐ŸŒฟ Naturalistic learners - Present: the resource-footprint claims (99% less CPU, one Raspberry Pi, half a megabyte) are an energy story told without the word energy. - Improve: name the watt-hours. The nuclear-power aside (00:58:38) opens the door to an energy discussion the talk doesn't walk through. ## ๐Ÿ“Š Accessibility assessment #### Screen reader semantics - Present: YouTube supplies landmarks and controls. The description carries 23 chapter markers with timestamps, which is the best structural affordance in the package. - Improve: paintings, screenshots, the eval chart, and the closing video are never described aloud. WCAG 2.2 AA 1.1.1 (Non-text Content) and 1.2.5 (Audio Description, Prerecorded) are unmet for the visual evidence. #### Keyboard navigation - Present: the player is keyboard operable; chapters are reachable via the progress bar. - Improve: nothing in the content adds barriers. 2.1.1 and 2.4.7 pass via the platform. #### Contrast and readability - Present: unverifiable from a transcript. Slides appear to be full-bleed images and large text in Hype. - Improve: the 2005 clip and the Windows screenshots at 00:26:52 are likely small on a phone. Zoom key regions or narrate them. 1.4.3 risk only. #### Text resizing and reflow - Present: the player scales; caption tracks resize independently of burned-in text. - Improve: on-screen slide text does not reflow. 1.4.4 and 1.4.10 fail for any text baked into frames. #### Media and captions - Present: metadata lists uploaded subtitle tracks in four languages (en, ja, pt, es) alongside auto-captions, which is above the norm for conference video. - Improve: the transcript used here garbles at least twelve proper nouns: "Valdigra" (Waldegrave), "Law Tuken" and "Laitz Tuken" (Laurits Tuxen), "Amachi" (Omarchy), "Kimmy K25," "Fable 5 and Myths," "GPT6 Astra," "Deep Seek 41 Flash," "chef Marie," "hot cell," "Javon" (Jevons), "Oenheimer" (Oppenheimer). If the English subtitle track shares these errors, 1.2.2 (Captions, Prerecorded) fails in substance. Verify the uploaded track and correct it. #### Forms and interactions - Present: none in the video. - Improve: not applicable. The only call to action is spoken ("CLI by next Friday") and needs no form. #### Standards reference - Primary gaps against WCAG 2.2 AA: **1.2.5** (no audio description for slides, chart, and demo), **1.1.1** (visual evidence with no text equivalent), **1.4.4 / 1.4.10** (burned-in text), and a conditional **1.2.2** pending verification of the uploaded English track. ## ๐ŸŒ DEIB assessment #### Cultural breadth - Present: European art history (British, Spanish, Danish), an American conference, a Danish speaker, a nod to Chinese open-weight models as ending American dominance (00:14:55). - Improve: every business example is 37signals or Shopify. The "web is for people who won't install anything" point (00:33:34) is where a Global South or low-bandwidth example belongs and none appears. #### Inclusive language - Present: no gendered generics. The audience is addressed as "you" throughout. - Improve: "loser," "losers," and "black pill" (01:02:18 to 01:03:05) as labels for the opposing view; "that dude's got a screw loose" (00:22:17); "psychosis" and "delirium" used as jokes about enthusiasm (00:00:56). Profanity is bleeped in the upload but frequent. Replace status labels with the argument they stand in for. #### Neurodiversity support - Present: a clear three-act structure (history, 37signals, industry), chapter markers every 2 to 5 minutes, and one recurring refrain ("Look at all the things I'm not doing"). - Improve: rapid topic switches after 00:42:24 (architecture, CLI, Omarchy, one-shot apps, performance, security, history, optimism) with no signposting. The bleeps are an auditory-processing obstacle. #### Representation - Present: one speaker. A child appears at the close; "Anush from AMD" and Mitchell Hashimoto are named. His great-grandmother appears in a painting. - Improve: no woman or non-founder is quoted on the technical substance. The Evil Martians engineers who run the evals are not named. #### Psychological safety - Present: he volunteers his own errors (the Basecamp 5 retreat as "the wrong conclusion," not knowing Rust, not knowing how the agent found the email). - Improve: the close frames disagreement as personal failure at a conference the speaker controls. Developers who have seen agents fail will have less incentive to report it publicly. A stated welcome for negative results would cost one sentence. ## โœ… Logical validity #### Strong reasoning - **Concession against interest, 00:22:17 to 00:23:03.** The Basecamp 5 story reports a failure (designer PRs punctured the architecture) and a second-order mistake (retreating too far). Reporting both raises the credibility of the surrounding claims and gives listeners a real failure mode to design against. - **Mechanism-level claim, 00:33:34.** "Convention over configuration leads directly to things like token efficiency" is a checkable mechanism: fewer configuration files means fewer tokens in context per task. It's the one framework-advocacy claim in the talk with a testable causal path, and the Foundation eval at 00:34:18 is the right instrument for it. - **Eval design that anticipates saturation, 00:34:18 to 00:35:02.** Recognizing that a 95% completion rate means the benchmark is exhausted, and raising the bar rather than declaring victory, is sound measurement practice. - **Self-reported deflators, 00:18:38 and 00:37:12.** He states that lines of code are a fuzzy measure and that his Rust output is verbose before giving the 60x figure. The reasoning is honest even if the number isn't useful. - **Economic argument for architecture change, 00:43:51.** If DRY exists to reduce the cost of repetition and of keeping copies in sync, and both costs fall toward zero, the case for DRY weakens. The premise is arguable but the inference is valid. - **The portrait-painter analogy, 00:01:39 to 00:11:14, graded.** As an analogy for "a tool makes a craft uneconomic and the craft's practitioners move to what the tool can't do," it is apt and vivid, and the Tuxen family history gives it a personal anchor. It fails as a *forecasting* instrument on three counts. Chronology: French Impressionism dates from the 1870s and the Skagen painters from the same decade, both decades before the 1900 Brownie, so the causal arrow from Brownie to pivot is compressed. Selection: the painters we remember are the ones who pivoted successfully; the analogy is silent on those who didn't. Timeline: the analogy's own middle act is an 80-year plateau, which is evidence against the speaker's three-month forecast at 00:40:57, not for it. Grade: strong as illustration, weak as prediction, and internally inconsistent with the talk's conclusion. - **The P(bloom) argument, 00:55:46 to 01:00:52, graded.** Structure: (1) forecasts of technology's social effects have been wrong; (2) therefore forecasters should be humble; (3) therefore optimism is the rational stance; (4) by game theory, optimism dominates because worry is wasted if things go well and pointless if they don't. Step 2 follows from step 1. Step 3 does not: if forecasting is unreliable, the optimistic forecast ("the utopia is almost here," 01:00:52) is undermined exactly as much as the pessimistic one, so the argument for humility cuts against its own conclusion. Step 4 is an argument about mood, not policy; it says nothing about whether to invest in security, quarantine, or evals, and the speaker himself argues for those at 00:59:23, which means his actions don't follow his game theory. The supporting history is also faulty (see Fallacies). Grade: the humility premise is sound; the inference to optimism is invalid; the game-theory close is a claim about how to feel dressed as a claim about what to do. #### Fallacies - **Bare assertion, 00:17:52.** "That sounds about right. A thousand times." No study, task, or measurement. *Fix:* cite a measured comparison or present it as a guess. - **Appeal to consensus, 00:17:08.** The 100x gap is "not a very controversial statement." Whether a claim is controversial has no bearing on whether it's true. *Fix:* same as above. - **Units artifact presented as magnitude, 00:37:12.** 150,000 lines versus 30,000 per year, with the speaker's own admission that the new lines are verbose Rust he never reads. *Fix:* report accepted features or merged PRs, not lines. - **Hasty generalization, 00:21:35 and 00:40:57.** Five hands in a room of self-selected Rails World attendees becomes "the vast majority of programmers working at the vast majority of companies," then "virtually all" by year end. *Fix:* cite a survey with a sampling frame. - **Factual error in supporting history, 00:56:28 and 01:00:07.** ATMs in "the 1950s" (1969); "30,000" tellers rising to "40,000" (published figures are roughly 250,000 to 500,000); attribution to Jevons (Bessen 2015 is the source; Jevons wrote about coal in 1865). *Fix:* correct the date, the numbers, and the attribution. The direction of the anecdote survives; the credibility of the speaker's history doesn't. - **Cherry-picked precedents, 00:56:28 to 00:58:38.** ATMs and the Cold War are chosen because they turned out better than feared. Technologies that displaced trades permanently (horse-drawn transport, typesetting, switchboard operation) are omitted. *Fix:* present both kinds of precedent and argue why this case resembles one more than the other. - **False dilemma, 01:02:18 to 01:03:05.** "White pill" or "black pill," optimist or "loser." Skeptical engagement, conditional optimism, and "build the safeguards first" are all excluded. *Fix:* name the middle positions and argue against them. - **Ad hominem by label, 01:02:18.** Opponents of the thesis are "losers." This attacks the person's status rather than the argument. *Fix:* engage the strongest skeptical argument by name. - **Undisclosed interest, throughout.** The speaker created the framework, owns the company whose products are the case studies, is raising money for Omarchy (00:48:22), and is speaking at the framework's own conference sponsored by a company he cites as a precedent (00:27:39). None of this is stated as a disclosure. *Fix:* one sentence at the top. - **Self-undermining forecast, 00:01:39 versus 00:40:57.** "Whenever we try to make a prediction, it is out of date about 20 minutes later," followed 39 minutes later by a dated forecast for the entire industry. *Fix:* state the forecast with a confidence level and a falsification date. #### Tone of voice - Exuberant, profane, first-person, and confessional by turns. He calls his own state "delirium" and "psychosis" as jokes (00:00:56) and means the enthusiasm sincerely. The register shifts three times: reflective and family-historical in the painting section (00:01:39 to 00:11:14), operational and specific in the 37signals section (00:20:50 to 00:37:56), and hortatory in the close (00:55:00 onward), where the profanity density peaks and the labels for dissent appear. The most careful reasoning sits in the middle third; the weakest numbers and the most aggressive rhetoric sit in the opening (1,000x) and the close (P(bloom), "losers"). ## ๐Ÿ›ก๏ธ DARVO analysis Not applicable to this source in the strict sense. DARVO describes a response to accusation, and no one accuses the speaker of anything in the talk. There is, though, a pre-emptive move at the open that resembles the pattern: he names the likely criticism ("AI psychosis," 00:00:56) before anyone makes it and reframes it as "euphoria," which inoculates the room against the diagnosis rather than answering it. For completeness across the three prongs: **Deny**: no denial of a charge, but a minimization of concerns as "maybe a little overstated. I mean, maybe, but probably not" (00:55:00), which concedes and dismisses in the same breath. **Attack**: critics are not named, but the opposing stance is labeled "the black pill" and its holders "losers" (01:02:18), a credibility attack on a position rather than a person. **Reverse victim/offender**: none. The nearest analogue is casting programmers as the beneficiaries of history's forgiveness ("we can fix those mistakes," 00:58:38) rather than as parties responsible for any harm agents might cause. Emotional cues: euphoria as identity, profanity as intensity marker, and a closing child's voice ("Future's now, old man") as an appeal that forecloses reply. ## ๐ŸŽฏ Conclusion Strip the keynote to what can be checked and four claims remain: 37signals made hand-written code an exception a couple of weeks before September 24, 2026 (00:20:50); Basecamp 5 shipped after a partial agent experiment that punctured its architecture and a retreat the speaker now regrets (00:22:17); the HEY successor is six native clients on a Rust server with a claimed 99% CPU reduction that he labels back-of-the-envelope (00:30:35); and the Rails Foundation is paying Evil Martians to run agent evals that saturated at 95% and were made harder (00:34:18). Each of those will be confirmed or contradicted by 37signals's and the Foundation's public output over the next two quarters. The rest is forecast, and the forecast is weaker than the delivery. The 1,000x programmer is offered as a feeling. The 150,000 lines a month are counted in a unit the speaker calls fuzzy and inflated by verbose generated Rust he never reads. The ATM history is wrong on date, count, and attribution. The portrait-painter analogy, taken seriously, predicts an 80-year plateau and undercuts the three-month conversion he announces. The P(bloom) argument establishes that forecasters should be humble and then forecasts utopia. And a BDFL calling the opposing view "the black pill" from his own conference stage, at a talk sponsored by a company he cites as evidence, is a governance signal as much as a technical one. **Next steps for readers:** find out whether the Evil Martians eval harness, feature cards, and rubric are public, because that artifact is the only thing in the talk that lets someone outside 37signals test the "Rails is built for agents" claim. Audit your own projects for CLI coverage, since that prescription is sound regardless of the rhetoric around it. And when the 60x and 1,000x numbers show up in your channels, cite the speaker's own deflators alongside them. ## ๐Ÿ”„ Refactor Appendix โ€” Rails World 2026 Opening Keynote - DHH > Density: 2โ€“5 Literature atoms (H3 pad), 0โ€“3 Permanent candidates (H4 pad). > Emitted: 5 Literature, 2 Permanent. Resonance filter applied โ€” the 1,000x figure and the > 150,000-lines figure were kept out of the Literature pad as unmeasured speaker claims; they > live in Logical validity and the Fleeting queue instead. > > Konik claim-header rules: present tense, declarative, โ‰ค10 words, searchable, unique. > > Atomicity: one declarative sentence per atom. "and"/"also" โ†’ split. > > Tag pool: #bmf ยท #addendum ยท #xref ยท #articleseed ยท #storystem ยท #share ยท #aphorisms ### ๐Ÿ“š Literature Split Pad #### [H1] 37signals makes hand-written code an exceptional state > [!quote] [00:20:50] > Writing code by hand at 37 signals is now an exceptional state. **Context & use**: - 00:20:50, announcing the "pencils down" decision made "a couple of weeks ago," compared to seeing a bug in Sentry. - The most verifiable claim in the talk: a company policy, dated, with an observable consequence in public repositories. Use it as the anchor for tracking whether the forecast that follows it holds. **Tags**: #xref #share <!-- atomicity: 1 idea โœ“ --> #### [H2] Convention over configuration converts into token efficiency > [!quote] [00:33:34] > Everything that we've worked on for the past 25 years, convention over configuration leads directly to things like token efficiency. **Context & use**: - 00:33:34, the one framework-advocacy claim with a mechanism: fewer configuration files means fewer tokens per agent task. - Vendor claim from the framework's creator, but testable with the eval at 00:34:18. Pair with H3 whenever cited. **Tags**: #xref #articleseed <!-- atomicity: 1 idea โœ“ --> #### [H3] Agent evals saturate at 95% and need harder versions > [!quote] [00:34:18] > we quickly had to update our evals because the agents were saturating the first version of it and reaching 95% completion rates quite quickly. **Context & use**: - 00:34:18, describing the Evil Martians evals funded by the Rails Foundation: feature cards implemented against reference applications. - The governance artifact in the talk. A foundation funding a third party to run a public-facing eval, with a bar that rises on saturation, is a pattern WordPress and FAIR can copy. **Tags**: #xref #share <!-- atomicity: 1 idea โœ“ --> #### [H4] Every app needs a CLI so users bring their own agent > [!quote] [00:45:21] > Let me bring my own butler to the party. Let me interact with your applications through a CLI. **Context & use**: - 00:45:21, rejecting embedded chatbots in favor of a personal agent driving many apps; followed at 00:46:07 by the "next Friday" deadline. - The one prescription in the talk that stands on its own. For WordPress it maps to WP-CLI command coverage; for FAIR it raises the vendor-neutrality and auth-scope questions. **Tags**: #xref #articleseed <!-- atomicity: 1 idea โœ“ --> #### [H5] Near-zero repetition cost weakens the case for abstractions > [!quote] [00:43:51] > The reason we did abstractions was in part not to repeat ourselves. Well, now the price of repetition has gone to near zero. **Context & use**: - 00:43:51, inside the architecture section, after calling abstractions "choke points" for thousands of concurrent agent processes. - The inference is valid if the premise holds; the premise (repetition is free) ignores incident-time comprehension by humans. Record the counterweight with the atom. **Tags**: #xref <!-- atomicity: 1 idea โœ“ --> ### ๐Ÿง  Atomic Split Pad #### [P1] Agent-readiness is an eval, not a keynote claim **Claim** (one sentence, Courtney's voice): A framework's fitness for coding agents is established by a public, versioned eval with a saturation-refresh policy, not by its maintainer's assertion from a stage. **Evidence pointer**: [[#H3]] ยท [[#H2]] **Scope & conditions**: Holds for any framework, CMS, or distribution whose advocates claim agent-friendliness. Requires the harness, feature cards, and rubric to be public; a private eval is testimony with a chart. Breaks as evidence of independence when the vendor both funds and scores the eval without a third party. **Links**: - [[Open source governance]] โ€” because applies-in foundation-funded measurement - [[FAIR technical independence]] โ€” because extends the scorecard with an agent-readiness row - [[Vendor keynote literacy]] โ€” because contrasts on what counts as evidence <!-- atomicity: 1 idea โœ“ --> #### [P2] A speaker's analogy sets a timeline their forecast must respect **Claim** (one sentence, Courtney's voice): When a forecast leans on a historical analogy, the analogy's own pace of change is a constraint the forecast has to meet or explain away. **Evidence pointer**: [[#H1]] and the portrait-painter section at 00:01:39 to 00:11:14 against the three-month forecast at 00:40:57 **Scope & conditions**: Applies to any argument of the form "this is like X, therefore Y will happen by date Z." Does not apply when the speaker argues explicitly that the analogy's pace doesn't transfer. The tell is an analogy with a long middle (here, an 80-year plateau) attached to a short-horizon prediction. **Links**: - [[Technology forecasting]] โ€” because extends - [[Every claim carries a fact]] โ€” because applies-in reviewing talks and memos - [[Reading vendor benchmarks]] โ€” because contrasts on the kind of evidence being checked (narrative pace versus numbers) <!-- atomicity: 1 idea โœ“ --> ### โœ๏ธ Fleeting Queue - [F1] Confirm the real model names behind the caption renderings "Opus 45," "Opus 46," "Kimmy K25," "Fable 5 and Myths," "GPT6 Astra," and "Deep Seek 41 Flash" (00:11:14 to 00:14:55) before citing the timeline โ€” https://www.youtube.com/watch?v=vDjW_dRyKXY #fleeting #inbox - [F2] Identify the 37signals agent product the captions render as "chef Marie" (00:31:21) and the later talk topic rendered "hot cell" by "Mike" (00:59:23) #fleeting #inbox - [F3] Check Bessen 2015 for the exact ATM-era teller counts and note that the talk's 30,000 to 40,000 figures (00:56:28, 01:00:07) are roughly a tenth of the published ones and misattributed to Jevons #fleeting #inbox - [F4] Open question: how does 37signals count lines for the 150,000-in-August claim (00:37:12), and what does the number look like after stripping generated Rust boilerplate and tests? #fleeting #inbox - [F5] Article seed: "The keynote's analogy argued against its own forecast" โ€” the 80-year photography plateau at 00:07:32 versus "virtually all" by year end at 00:40:57 #fleeting #inbox #articleseed - [F6] Article seed: "A BDFL says pencils down: what changes for downstream governance when the vendor's policy becomes the community's expectation" #fleeting #inbox #articleseed - [F7] Verify whether the uploaded English subtitle track shares the auto-caption garbles listed in the Accessibility section, since metadata lists en, ja, pt, es tracks #fleeting #inbox ### โ†’ Things 3 (max 2 actions) - [ ] Locate the Evil Martians / Rails Foundation agent eval harness and read its feature cards and rubric, then note whether a WordPress variant is feasible โ€” governance research, 30 min #things - [ ] Audit WP-CLI command coverage in Outpost, Post Kinds, and Post Formats for Block Themes and log the admin actions with no CLI equivalent โ€” plugin maintenance #things <!-- deep-read:sections end --> ๐Ÿ“„ **Full text:** [[Full Document Contents/Articles/Rails World 2026 Opening Keynote - DHH.md|Rails World 2026 Opening Keynote - DHH by Ruby on Rails]] ## Highlights - [00:20:50] the decision that it clearly means we're done writing code by hand. We are going and have gone pencils down on the idea that we were going to write code by hand as a normal course of business creating things. Writing code by hand at 37 signals is now an exceptional state. It is like seeing a bug in sentry. Something here went wrong. Why was the agents not able to produce what we wanted? Okay, maybe for a little while we'll still get the old pencil out and dot it down for them. But then we fix [00:21:35] the machine. We fix the factory. We get things going again. This is a recognition of what's already happening. If we were to pull this room, I'd probably actually let's pull this room. How many people here are still writing material amounts of code by hand on a weekly basis? Show our hands. Holy [ \_\_ ] That's about five. If id put this slide up two months ago, three months ago, and made the same ([View Highlight](https://read.readwise.io/read/01m3a4en10em3qbn8g0bfmwtma)) - Note: [H1] 37signals makes hand-written code an exceptional state - Tags: atom/literature/h1 - [00:32:50] intelligence that allows us to assign outcomes, problems rather than tasks, is only a couple of months old. So, of course, we don't know exactly what it's going to be like, but it's still fair to then ask the question, where does that leave Ruby? Where does it leave Rails? Where does it leave any of these tools that we use? What is the future going to look like? Well, for hey, we have our answer. It looks like native applications on the front end and Rust on the back end. But there's plenty of other applications that don't fit that shape. The web is an enormously wonderful platform [00:33:34] partly because it never asks anyone to install anything and a million businesses are built on that premise. More ephemeral customers who are not going to indulge an installation on their device to use a service. The web is wonderful for those things and Rails is particularly well positioned to still be in play there. Everything that we've worked on for the past 25 years, convention over configuration leads directly to things like token efficiency. Our focus on the one developer framework squares perfectly with what the age of agents is demanding that single developers can go much ([View Highlight](https://read.readwise.io/read/01m3a4eqdysfaezk696na9cn5n)) - Note: [H2] Convention over configuration converts into token efficiency - Tags: atom/literature/h2 - [00:34:18] further than they were able to do before. We've started doing these agent evals or evil martians have started doing it on behalf of the Rails Foundation and a finding that we quickly had to update our evals because the agents were saturating the first version of it and reaching 95% completion rates quite quickly. Now we've instituted a harder measure for it. But amazing how quickly these agents are moving forward and up the stack and up the ranks. This is an agent eval looking at actual implementation of feature cards against some of these reference applications that we have in the wild. Wonderful. We're leaning in towards that. That was [00:35:02] the old benchmark, the old reference. As you can see, it was getting saturated already. So, we made it harder. There's going to be a lot of that, a lot of elevation of the things we ask the agents to do because they continuously get more capable. And in fact, it's one of the pitfalls I would warn anyone who knows too much about how computers work is to not be overly prescriptive in what you're trying to get out of these systems. In fact, having a bit of a beginner's mindset and a bit of a dummy approach to this works even better because you ask questions and you post prompts at a higher level. is one of the reasons I love working in Rust. I don't know any Rust at all. I consider that a feature ([View Highlight](https://read.readwise.io/read/01m3a4esrdk2wpn3zxk9nwe2jk)) - Note: [H3] Agent evals saturate at 95% and need harder versions - Tags: atom/literature/h3 - [00:43:07] about software architecture. everything we think and know about how to structure code bases in a way that we can mutate them easily and move forward. The main tool that we've used for a very long time is abstractions. I love abstractions. Abstractions include naming things. That's one of my favorite things is to name things. Um, abstractions don't make quite the same sense in the age of agents. If you suddenly have hundreds or thousands or tens of thousands of conscious processes trying to mutate an application, you kind of don't want these choke points that abstractions represent because the [00:43:51] trade-offs are very different. The reason we did abstractions was in part not to repeat ourselves. Well, now the price of repetition has gone to near zero. The price of keeping things in sync has dropped just the same. These are some of the fundamental re-evaluations of computer science really that we have to make and no one yet has the blueprint. We have pointers to things that aren't working quite as well as they used to and need to change. You get to be there right now as we're defining these things. Again, imagine you were there when object orientation first entered the consciousness of ([View Highlight](https://read.readwise.io/read/01m3a4ey9kxc15s83q08vh9r04)) - Note: [H5] Near-zero repetition cost weakens the case for abstractions - Tags: atom/literature/h3 - [00:44:35] computer programmers. Holy [ \_\_ ] That would have been amazing, wouldn't it? Now you're here. How we work, what is a software methodology look like, how long should our cycles be, who should be specifying what? All of this is changing and none of us have the answers yet. and you're invited to come help figure it out. It's a new birth for a new industry and you're at the ground floor. Holy [ \_\_ ] you are so damn lucky. Another thing, for example, is more tangible. The first rush when AI and chat bots came to be was, can we just shove it [00:45:21] into our application? Can we shove a chatbot in over here and shove another one in over there? Yeah. I mean, you could. People did. No, thank you. I I I I don't want to use your concier. I have my own personal butler who's able to use CLIs to connect base camp to Hey, across a million other apps. I don't I don't [ \_\_ ] need your concier. Thank you. Save your tokens, bro. Let me bring my own butler to the party. Let me interact with your applications through a CLI. That's probably about practical and as ([View Highlight](https://read.readwise.io/read/01m3a4ew187gkbzkkhc7993fm5)) - Note: [H4] Every app needs a CLI so users bring their own agent - Tags: atom/literature/h3