O mito de 1968
ACM mediu 5×–30× entre o pior e o melhor programador. 45 anos de briga. Debate morto.
Austin · Rails World 2026 · Opening Keynote
DHH passou uma hora dizendo que escrever código à mão acabou — e que a próxima carreira é fabricar coisas com inteligência de aluguel.
Tese em uma frase. O Kodak Brownie da nossa era chegou em 24 de novembro de 2025 (Opus 4.5). Desde então, programar deixou de ser cinzelar linhas e passou a ser dirigir agentes. Na 37signals, escrever código à mão virou estado excepcional. Inglês venceu o Ruby. Rust ficou aceitável porque ninguém precisa olhar. O web app sobrevive onde instalação é fricção; o resto vira nativo. O único palpite racional é otimismo total — “the black pill is for losers”.
Retrato no século XVIII era meses de mestre, cliente chato e tornozelo proibido. A câmera barateou o retrato. Pintores como Laurits Tuxen — bisavô de DHH — abandonaram o realismo perfeito e foram para o impressionismo. Picasso foi para o cubismo. A artesania não morreu; o produto mudou.
A tecnologia anda em solavancos. Depois do Brownie (~1900), quase 80 anos de câmera parecida. Depois o telefone fez a foto ir a 2 trilhões por ano em 2026: fricção zero.
“Look at all the things I’m not doing.” Olhe para todas as coisas que eu não estou fazendo. DHH, Brasil, 2005 — e de novo, 2026
O clip de 21 anos da palestra no Brasil (Rails: convenção, zero config) vira o mesmo êxtase, agora com agentes. O “Rails moment” era não escrever XML. O momento de 2026 é não escrever o programa.
ACM mediu 5×–30× entre o pior e o melhor programador. 45 anos de briga. Debate morto.
Pior sem agentes vs melhor com agentes: afirmação “não controversa” na sala.
Mesma comparação, uma ordem a mais. Revolução de estágio tecnológico, não de hábito.
Decisão recente: escrever código à mão na 37signals é exceção, tipo bug no Sentry. O agente falhou? Talvez o lápis saia um instante. Depois conserta-se a fábrica, não o artefato.
Na primavera, designers “vibe-codaram” o fechamento do Basecamp 5. PRs individuais ok; 20–30 juntos viraram queijo suíço. Conclusão errada: “a tech não está pronta.” Conclusão certa: a única pergunta séria é como sugar o máximo desta explosão de inteligência. Todo o resto está abaixo na pilha de valores.
Basecamp 5 saiu agent-accelerated, ainda com bastante cinzel. O próximo produto — Hey Next / Hey New / Hey There — começa noutro lugar.
Hey nunca quis ser web app. Era web porque um time pequeno não mantém seis apps nativos. React Native, Hotwire Native: fidelidade menor, produtividade maior. Esse cálculo morreu.
Uma semana de prompts: seis aplicações nativas no palco. Primeiro Windows: “não shippável.” Vinte minutos depois: redirecionado e bem melhor. Shopify reescreveu o Shop app nativo com time minúsculo no lugar de React Native. “Get ready.”
Rust é ácido nos olhos — até você não precisar olhar. Aí é amor. Divisão de trabalho: eu mando, o agente escreve
Backend do Hey (que na prática é um mail server) em Rust: 99% menos CPU, 95% menos memória, 10 hosts só por redundância. Pico de tráfego, no envelope de pão: um Raspberry Pi.
Agentes trabalham melhor de forma assíncrona, como colega: tarefa, some, volta para review. Chef Marie no Basecamp. Ainda não há playbook. A inteligência que recebe problemas em vez de tarefas tem poucos meses.
Para o Hey: nativo na frente, Rust atrás. Para o resto: a web continua enorme porque ninguém instala nada. Rails entra aí.
Basecamp continua web: estranhos, arquivo rápido, colaboração curta. A linha nativo vs web ainda vai ser desenhada. Ele não tem o mapa completo.
Existe uma linguagem que ele gosta mais que Ruby: inglês. Mais expressiva, mais vaga, menos determinística — e um prazer. Ele poderia ter virado gerente de projeto há 20 anos se só quisesse outcomes. Apaixonou-se por programar. Agora:
“I have retired from being a professional programmer.” Eu me aposentei da profissão de programador. Por volta de março · um quarto de século cinzelando
Sem arrependimento. Com alegria do que foi. Escrever código à mão, diz ele, já não é empresa economicamente produtiva para a vasta maioria dos programadores na vasta maioria das empresas. Hoje. Até o fim do ano: quase todos os domínios. Do outro lado do abismo: carreira de professional maker of things.
Maior coisa da história da computação. Maior que a internet. Ele sente falta de não ter pego a era do cartão perfurado — e acha que esta é maior ainda.
Tudo o que se sabe de arquitetura precisa ser revisto. Abstrações (inclusive nomes, o hobby dele) fazem menos sentido quando centenas ou milhares de processos conscientes mutam o app. DRY existia porque repetir era caro. Agora repetir e sincronizar custam perto de zero. Não há blueprint. Vocês estão no chão de fábrica da próxima orientação a objetos.
Metodologia, ciclo, quem especifica: ninguém tem a resposta. Convite aberto.
Chatbot embutido no produto: “não, obrigado.” Ele já tem um mordomo pessoal que fala CLI. ação Se o app não tem CLI, entrega sexta. Sem desculpa. Tokens existem. Ele quer usar o produto sem tocá-lo.
Exemplo: busca no Hey via CLI + agente achou e-mail de 5 anos sobre tênis e podcast sem remetente, empresa ou ano. Elasticsearch não chega perto. Busca por conceito, não por keyword.
Se você gosta de fazer e consertar, o loop agora é o sistema operacional. Omarchy: ~US$ 20 milhões levantados. Ano passado no Rails World, install em 3m33s. Semana passada, Anoush (AMD) instalou num Halo em 35s. No lab: 9 segundos. Mitchell Hashimoto: “the pursuit of excellence does not need justification.”
Preocupações merecem ar. Segurança, de verdade: agentes podem “saber a data de validade” e aprontar. Ferramentas existem. CVE recente no Rails (lib C de imagem) → HotCell / quarentena. Agência humana permanece.
Economista não acerta bolsa em 6 meses; não vai acertar paradigma. ATMs nos anos 50: pânico de 30 mil caixas. Preço do branch caiu, bancos abriram mais agências, 40 mil caixas em 2010. Paradoxo de Jevons.
Oppenheimer no Oval: Truman não quis vê-lo de novo. A bomba não acabou o mundo; veio a Guerra Fria sem troca direta, e energia nuclear que a humanidade “pisou por 40 anos”. Se Oppenheimer errou o depois, humildade nas previsões de IA. Lado P-bloom >> P-doom. Game theory: se der utopia, você viveu feliz; se der apocalipse, o último dia também deveria ser alegre. “There’s only one play here, and it’s total fucking optimism.”
Agent Luther desintermedia a classe clerical: todo mundo pode fazer o programador. Concorrência? Você é Rails programmer. Top Gun. Não seja o perdedor no escuro. A filha do Harris no Omarchy kids: a próxima geração não tem 500 camadas para desaprender. “Future’s now, old man.” White pill. Black pill é para loser.
284 comentários no recorte. O tom dominante é luto irônico — “vieram para Rails, receberam AI delirium.” Os mais curtidos:
Outros: “DHH Conf”, “Rails World 2027 — Agent DHH presenting for Agents”, “the stone age did not end because we ran out of stones”, “show me your Anthropic bill.” Ruby aparece ~11 vezes na fala. O recorte emocional da plateia é esse: ele acha que está libertando makers; muita gente ouviu que a profissão acabou e que quem resiste é loser.
CLI até sexta. Agentes assíncronos, não chat preso. Nativo deixou de ser luxo de time grande. Web continua para o visitante que não instala. DRY e camadas demais podem ser gargalo para mil agentes.
O cinzel vira exceção de fábrica. O ofício vira gosto, direção, review, problema bem posto. DHH chama isso de maker. O comentário mais sóbrio da thread lembra: a alavancagem não se distribui sozinha.
Mapa em 24 horas. A fala saiu do palco de Austin e virrou debate de dono vs trabalhador. No palco, Robby Russell descreveu p(bloom). No Reddit de Rails, funeral. No Hacker News, 247 pontos e 260 comentários. No X, o próprio DHH levou ~1,9 milhão de views com “pencils down”. Na cabine da Buzzsprout, o Remote Ruby gravou o hangover: Live At Rust, Uhh, Rails World 2026. A leitura mais precisa: ele não matou o Rails na letra; matou o cinzel. A sala ouviu as duas coisas ao mesmo tempo.
| Canal | Peça | Tamanho |
|---|---|---|
| YouTube · Ruby on Rails | Opening Keynote | ~121 mil views · 2,9 mil likes · 284 comentários no recorte |
| X · @dhh | “It's pencils down, people” | ~1,88 milhão de views · 6,6 mil likes · 263 replies · 294 quotes |
| X · @rwrrll | “accept that it’s over” | 1.166 likes · 206 mil views · o clip emocional da sala |
| Hacker News | item 49817680 | 247 pontos · 260 comentários · front page |
| r/rails | HEY is abandoning Rails · thread da keynote | Tom de luto e “DHH is completely crazy” |
| Pragmatic Engineer | The Pulse: death of coding by hand | Gergely Orosz coloca o debate no radar de big tech |
Público pagou Rails World e recebeu Omarchy, Rust e “don’t be a loser”. YouTube: “the most confusing funeral”. Reddit: HEY abandonou Rails. Ruby Forum: “lost his mind”. Przemek no X: US$ 699 pelo funeral da carreira.
Robby Russell, primeira fila: “vibe far from doom”. Richard Worrall amou. Axel Fontaine: “languages no longer matter”. Wintermeyer: webapp morto, CLI obrigatório. Samat Galimov (vc.ru): DHH pega tendência como pegou SaaS nos anos 2000.
HN: fácil ser otimista sentado em milhões; tokens de frontier são 2–8% da renda de quem ganha US$ 100k. Lio: o bolo de software cresce, os ganhos não vão para quem queria ficar engenheiro a vida inteira. YouTube @JT-mr3db já tinha dito isso na thread.
Jared Smith: o Basecamp 5 (queijo suíço) prova ownership, não modelo fraco. Um modelo melhor produz o mesmo problema mais rápido. Adhithi Ravichandran: escrever menos ≠ entender menos. Rudy Yazdi: abstração ainda é o que deixa reviewável.
Robby Russell (Planet Argon, oh-my-zsh) escreveu no HN que tinha falado com DHH na véspera e não se surpreendeu. Field report: a sala física não estava em pânico. A maioria ainda é mender de sistemas que o cliente paga para continuar. “Long live Ruby. Long live Rails. p(bloom).”
Na cabine, o tom foi outro. Chris, David Hill, Jason Charnes e Andy Croll gravaram o Remote Ruby ao vivo ainda processando a keynote: topam os agentes, não perdoam o vazio de Rails, e perguntam se o framework — e a conferência — voltam no ano que vem. Resumo completo na aba Remote Ruby.
No mesmo fio, MattyMc relatou o chat com Matz no dia 2: DHH teria dito que qualquer app novo hoje ele ainda faria em Rails; se estourasse a ponto de valer Rust, reescreveria. Parte do HN leu como dano controlado. Outra parte lembrou que DHH não costuma ser educado por educação.
“DHH isn't anti-rails. He is just very pro-agentic coding.” DHH não é contra o Rails. Ele apenas é muito favorável à programação com agentes. andrewmutz · Hacker News · o comentário que tenta desfazer o funeral
A contraleitura, também no HN: ele gastou ~4 minutos de 63 falando de Rails. “He's not anti-rails. He just won't be using it.”
Cinco textos. Quatro abertos. O Pulse do Pragmatic Engineer está atrás de paywall — abaixo só o que a página pública entrega.
olly.world · 24 set 2026 · ensaio pessoal, Rails dev há 20 anos, maker do Pagecord
Frameworks costumam definhar. Rails, nesta leitura, termina. DHH não pronunciou o obituário; descreveu um mundo em que a 37signals espera que todos — programadores inclusive — dirijam agentes em inglês. “No more programmers. Just people making agents make programs.”
Olly já vinha escrevendo que código na manivela morreu. O que a keynote acrescenta é a consequência para a linguagem: se o framework existia para felicidade do programador, o que sobra quando o programador deixa de usá-lo? Rails “morto” das threads antigas estava errado; agora está certo por outro motivo. O framework segue, artesãos e agentes ainda o usam, mas ele duvida de muitos releases humanos depois do 8.2. Django e Laravel no mesmo barco.
O golpe: 37signals, inventora e tutora do Rails, não está all-in. HEY 2.0 não é Rails novo — é substituição do Rails: nativos em toda plataforma, backend Rust no envelope de um Raspberry Pi, tudo via agentes. Até ontem reescrever produção em Rust era loucura de anos. Agora ele espera os apps em meses.
Como usuário do HEY, comemora (o app atual é lento). Como railsista de duas décadas, dói — e ele classifica a dor como nostalgia. No Pagecord solo, continua no Rails porque entende o sistema e isso dá prazer. Num SaaS global de milhões, outra conta. Mesmo no “weeny scale”, um Pagecord nativo neste fim de semana, ship na segunda, é “wildly compelling”. Pode ser o último Rails World no formato conferência. Agent operators ainda vão se encontrar. O mundo Rails que ele conheceu ficou para trás. Concorda com DHH num ponto: o palpite tem de ser otimismo.
sublimecoding.com · 24 set 2026 · 11 min · o texto mais técnico do lote
TL;DR dele: DHH acerta o barateamento de nativo e de linguagem feia, acerta convenção = eficiência de token. Tira a lição errada do Basecamp 5. Modelo melhor não conserta falha de dono. Produz o mesmo problema mais rápido.
Recapitula a palestra com timestamps e checagem: Opus 4.5 em 24/11/2025 bate com o anúncio da Anthropic; o paper do 10× é Sackman, Erikson & Grant, CACM 1968; o 1.000× é extrapolar esse paper, não medi-lo. Os 150 mil LOC de agosto já fazem o ponto sem o multiplicador mágico.
Onde DHH acerta. Custo de nativo/Rust/Swift caiu porque o modelo segura o codebase. Convenção barateia gerar e revisar — o mesmo motivo pelo qual Elixir pontua bem em completion. Delegar assíncrono, como colega, é gerir agente, não promptar. Smith veio de ColdFusion → RailsConf 2015 → migração Ruby→Elixir por memória e pager, não por IA. A tese que carrega: estrutura importa mais quando quem escreve não é um humano cuidadoso.
Os 90 segundos que importam. Designers vibe-codaram o fechamento do Basecamp 5. Cada PR ok; 20–30 juntos = queijo suíço. O time voltou para review manual. DHH chama isso de conclusão errada: se esperassem o Fable, teria dado certo. Smith: o fracasso foi ninguém dono do agregado. Modelo mais forte muda a taxa de erro local. Não cria o responsável por perceber que o todo piorou. Com 150 mil linhas/mês, queijo suíço deixa de ser incidente da primavera e vira estado padrão.
Olhar o Rust de fora, como “qualquer dono que encomenda programadores”, só funciona se houver contrato, critério de aceite e vendor que responde por defeito. Checkpoint de modelo não é vendor. Evals da Evil Martians (95% saturado) são o instinto certo — precisam ir além do benchmark: supply chain da lib C do CVE, nome de quem responde, evidence pack para security review. Código ruim não aparece no tamanho do PR. Aparece no tamanho da arquitetura. O difícil nunca foi digitar; foi manter o modelo mental compartilhado.
CLI: sim, com threat model. Chatbot embutido não. Superfície autenticada nova: token estreito, default read-only, log de cada comando, segredo com dono. Omarchy sobe agentes com skip-approval por padrão — a CLI precisa aguentar esse modo.
Omarchy no dia a dia dele (M1 Asahi + desktop): o primeiro install no M1 não foi 9 segundos, quebrou em versão de pacote. Isso torna a obsessão de install time mais honesta, não menos. Omarchy M (11 set) oficializa Apple Silicon. AGENTS.md do projeto vale como estudo de regras para agente.
Correção Jevons/ATM. A história é real (Bessen): tellers por agência urbana ~21 → ~13, mais agências, emprego sobe. Os números que DHH falou (30 mil em 1950, 40 mil em 2010) não batem com o registro publicado. Fica o formato do argumento, saem as duas cifras. DRY: repetir era caro de sincronizar e de revisar, não de escrever. Agente sincroniza; o revisor ainda precisa ver a décima cópia desviar das outras nove.
Veredito. Direção certa. P(bloom) ele em parte compartilha. Parte de caminhos na lição do Basecamp 5: alguém ainda tem de ser dono do código que ninguém lê, e a coisa que criou esse emprego não vai exercê-lo. Arquitetura fica humana, explícita.
dealroom.co/news · 24 set 2026 · ficha, não ensaio
Não argumenta. Empacota a keynote em oito bullets para quem não vai assistir 63 minutos: Brownie = 24/11/2025; 1.000×; pencils down na 37signals; Basecamp 5 queijo suíço “não prove que a tech não estava pronta”; HEY nativo + Rust (99% CPU, 95% RAM, 10 hosts, Raspberry Pi); Omarchy US$ 20 mi, 3m33s → 35s → 9s, Hype 0,5 MB; Rails ainda serve cliente que não instala, evals a 95%; abstração vira gargalo, CLI até sexta, busca por conceito no HEY.
Útil como índice. Repete a tese de DHH sem o contraditório do Basecamp 5 que Smith marca. Trata DHH como “creator of the Omarchy Linux distribution” no lead — o recorte de produto já virou Linux, não só Rails.
vc.ru/samat · 24 set 2026 · coluna curta em russo, 1,8 mil
Conhecidos se decepcionaram. Galimov lê isso como gente que não segue o Twitter do DHH: há um ano ele constrói desktop Linux com agentes e está tomado pela ideia. No palco, analogias pintura/foto “bastante óbvias”, English > Ruby. O valor não é a novidade — é o faro. O mesmo homem que evangelizou web e SaaS quando software ainda vinha em disco agora encarna o futuro em vez de só descrevê-lo. “Seus lábios” para nativo e backend Rust rápido.
Cansaço de p(doom). DHH aposta p(bloom) > p(doom): amanhecer, nova Reforma. Agent Luther tira a casta de programadores do meio, como Lutero e a imprensa tiraram o padre da leitura da Bíblia. Fecha com “Amém”. Linka o recorte no Telegram @ctodaily.
Comentário de Vladimir Tsymbal no post: DHH é marketeiro genial (Mac → Linux soou estranho na época também). Ruby sem tipos (sem Sorbet/RBS) é mau casamento com IA; Hotwire foi overshoot; GIL continua cobrando servidor. Vantagem do Ruby era start rápido escrevendo à mão. Na era do agente, esse trunfo some no MVP.
newsletter.pragmaticengineer.com · 24 set 2026 · paywall
A página pública entrega só o sumário. Título: o criador do Rails acende o debate “acabou escrever código à mão”. Sub: 37signals passa a gerar quase todo o código com agentes. Também na edição: Amazon e Meta com dificuldade de contratar engenheiros; “code reviews will probably also go away”.
Pergunta que Orosz formula no teaser: no keynote, DHH declarou o fim do código à mão no trabalho profissional — pelo menos na 37signals. Essa mudança agora é imparável? O corpo do Pulse, os dados de hiring e o argumento sobre review sumiram atrás da assinatura. Sem o texto pago, o que existe aqui é o enquadramento: a fala saiu da bolha Rails e entrou na newsletter que big tech lê, colada em freeze de contratação e na hipótese de o próprio code review evaporar.
“It's pencils down, people. Writing code by hand is no longer an economically viable skill… Don't you dare black pill this beautiful moment!”Larguem os lápis, pessoal. Escrever código à mão deixou de ser uma habilidade economicamente viável… Nem ousem olhar este belo momento com pessimismo!
@dhh · ~1,88 mi views“So @dhh just told 1000 rails programmers ‘accept that it’s over’… Last words were ‘don’t be a f*cking loser’ and then he walks off.” Depois: “I LOVED this keynote.”Então DHH acabou de dizer a mil programadores Rails: “aceitem que acabou”… As últimas palavras foram “não seja um perdedor” — e ele saiu do palco. Depois: “EU AMEI esta keynote.”
@rwrrll · 1.166 likes“The way DHH pre-empted his entire fucking conference is pretty rude. But he is unfortunately correct… Rails people on Reddit are not happy.”O jeito como DHH atropelou a própria conferência inteira é bastante grosseiro. Mas, infelizmente, ele está certo… O pessoal de Rails no Reddit não está feliz.
@anselm_io · 344 likes · 156 mil views“If writing code by hand is over, why would anyone want to use Ruby and Rails? If agents write my code, I'd rather pick something with way better performance.”Se escrever código à mão acabou, por que alguém usaria Ruby e Rails? Se agentes escrevem meu código, prefiro algo com desempenho muito melhor.
@hirschnase, reply no post do DHH · 149 likes“Personal observation: writing code by hand is obsolete. But real coding experience correlates with being able to direct agents. Non-technicals cannot successfully evolve AI-assisted systems.”Observação pessoal: escrever código à mão está obsoleto. Mas experiência real em programação se relaciona com a capacidade de dirigir agentes. Pessoas não técnicas não conseguem evoluir sistemas assistidos por IA com sucesso.
@BaronHakkinen · 297 likes“We may write less code, but we still own what we ship.”Podemos escrever menos código, mas continuamos responsáveis pelo que entregamos.
@AdhithiRavi“I feel bad for developers who went to Rails World 2026. You paid $699 to hear from the creator of Rails that he is no longer excited about it.”Sinto pelos desenvolvedores que foram à Rails World 2026. Você pagou US$ 699 para ouvir do criador do Rails que ele já não se empolga com isso.
@mroczekdevJustin Searls: os argumentos zangados são finos; o que sobra é decepção de quem ama Ruby e ouviu que isso não importa mais.
@searls · apontando para r/railsAgentes mudaram o custo de nativo e de linguagem “feia”. CLI para o agente do usuário, não chatbot embutido. Convenção ajuda token. A keynote é um evento, não um RFC do Rails.
Se isso é funeral do Rails ou só do cinzel. Se Jevons vale para emprego. Quem responde por defeito quando o vendor é um checkpoint. Se “não olhar o Rust” é feature ou abandono de ownership.
Leitura curta: a internet fez o funeral; a sala e o recado do dia 2 tentaram o nascimento. Os dois textos cabem no mesmo vídeo. A diferença é quem paga a conta dos tokens e quem ainda precisa ler o diff.
O contra-ataque em 6m40s. O Fireship transforma o choque da keynote em pergunta de carreira: DHH enlouqueceu ou enxergou antes? A resposta é menos apocalíptica do que o título. Digitar código perde valor; entender o problema, desenhar o sistema e responder pelo que chega à produção não.
Jeff Delaney abre como ex-aluno traído: Rails lançou sua carreira e agora seu criador promove Rust gerado por IA. A imagem é perfeita — o Papa no domingo de Páscoa explicando as vantagens do ateísmo — mas o vídeo não fica no meme. Ele testa, uma a uma, as habilidades que formavam a identidade do programador.
Assistir ao vídeo no YouTube →
Neovim, atalhos e configuração continuam úteis, mas deixam de ser vantagem central quando o agente faz a maioria das edições.
Se o executor não é humano, ergonomia pesa menos. Token, performance e feedback automático passam a decidir o stack.
DHH diz ter saído de ~30 mil linhas de Ruby por ano para ~150 mil linhas por mês com agentes. Volume já não mede ofício.
O exemplo mais provocador é o HEY em Rust: linguagem que DHH chamava de “inumana” vira ótima se ele nunca precisar lê-la. O vídeo repete a cifra da keynote — 95% menos memória e CPU — e extrapola: stacks que sobrevivem serão as que gastam menos tokens ou entregam mais performance. É a tese do palco, narrada por alguém que sente o custo cultural dela.
Escrever código — ou qualquer habilidade colada à execução mecânica — nunca foi a parte mais valiosa. O valor está em definir o problema e desenhar um sistema que o resolva com segurança e eficiência. Fireship · paráfrase de 4:43–4:58
Esse é o giro que impede o vídeo de ser só um funeral. O agente comprime a execução, mas não escolhe sozinho qual problema merece existir, quais riscos são aceitáveis, quem paga uma falha ou quando o sistema está realmente pronto. O futuro descrito não é “sem desenvolvedores”; é uma profissão em que digitar deixa de ser o centro visível.
| Ontem | Agora | O risco que sobra |
|---|---|---|
| Velocidade no editor | Qualidade da direção | Pedir rápido a coisa errada |
| Domínio do framework | Escolha do loop de feedback | Gerar código que ninguém consegue operar |
| Produzir o diff | Revisar o sistema | 200 PRs e nenhuma prioridade |
| Implementar requisitos | Definir o problema | Automatizar uma premissa falsa |
O JSON coletado em 30 de setembro traz 726 comentários principais e 313 respostas: 1.039 textos e 6.088 likes. O YouTube indicava 3.328 comentários; portanto isto é um recorte, não um censo. Ainda assim, o topo é coerente: menos rejeição à capacidade da IA, mais desconfiança sobre quem captura a alavancagem e quem carrega o risco.
“There is this interesting dichotomy between leverage of the business owners and the business workers…”Existe uma dicotomia interessante entre a alavancagem dos donos das empresas e a dos trabalhadores…
@JT-mr3db · 270 likes · comentário mais curtido do recorte“DHH Conf.”Conferência do DHH.
@StéphaneBusso · 197 likesComo uma opening keynote de Rails quase não discute Rails?
@yashsolanki069 · 195 likes“These are the best of times, these are the worst of times.”Estes são os melhores tempos; estes são os piores tempos.
@jp-sl7cd · 112 likesRails World 2025: liberdade end-to-end. Rails World 2026: dependa de outras empresas.
@Damian-s8n4m · 94 likesSe entregarmos tudo aos agentes e perdermos o conhecimento humano, ainda saberemos verificar o resultado?
@daniellegrand4940 · 65 likesUma busca temática simples nos 1.039 textos ajuda a dimensionar a conversa. As categorias se sobrepõem e não medem “sentimento”: um comentário pode citar Rails para defendê-lo ou enterrá-lo. Elas mostram onde a audiência colocou energia.
| Sinal temático | Textos | Likes somados |
|---|---|---|
| Rails, Ruby ou o contexto da conferência | 163 | 1.753 |
| Otimismo, oportunidade, produtividade ou construção | 128 | 970 |
| Conhecimento, qualidade, review ou responsabilidade | 112 | 902 |
| Rust ou performance | 91 | 502 |
| Trabalho, emprego ou poder econômico | 64 | 639 |
| Dependência de fornecedores de IA | 44 | 418 |
Contagem por palavras e expressões em inglês, sem exclusividade entre categorias. Likes são um sinal de ressonância dentro do recorte, não representatividade estatística.
Os comentários favoráveis não celebram apenas velocidade. Eles reconhecem uma distinção madura: engenharia nunca foi só digitação. Descoberta, arquitetura, julgamento e operação permanecem valiosos quando a produção de sintaxe fica barata.
A leitura otimista de Jevons aparece com força: software mais barato não precisa significar apenas menos empregos; pode significar mais produtos, mais nichos atendidos e equipes pequenas construindo o que nunca entraria no orçamento.
A audiência já discute o segundo efeito: quais linguagens dão feedback melhor ao agente, como revisar centenas de mudanças e onde pôr o humano. Isso é avanço. A capacidade básica é aceita; o debate migrou para desenho de sistema.
“Não seja pessimista” ressoou com quem vê a mudança como chance de construir. O melhor lado da fala é reduzir a distância entre ideia e protótipo — especialmente para quem tinha visão de produto, mas não dominava toda a implementação.
O comentário mais curtido percebe a falha central: o dono captura escala e margem; o trabalhador pode receber meta maior, equipe menor e menor poder de negociação. “Todos ganham alavancagem” é uma hipótese distributiva, não uma consequência técnica.
Rust que ninguém lê pode compilar e ainda carregar erro de domínio, risco de segurança ou dívida operacional. O receio não é nostalgia do teclado; é perder a capacidade interna de auditar, manter e contestar o resultado do fornecedor.
A comparação “liberdade end-to-end” versus “dependa de outras empresas” captura o paradoxo. Trocar conhecimento local por APIs fechadas concentra custo, disponibilidade e roadmap em poucos laboratórios. O ganho imediato cria risco estratégico.
Muita rejeição veio menos da tese e mais do contexto: pessoas foram a uma conferência de Rails e ouviram seu criador exaltar Rust e agentes. A mensagem poderia ser transformação do ofício; o enquadramento soou como desprezo pela comunidade que construiu o ecossistema.
Quanto mais barato fica gerar código, mais caro fica provar que o sistema merece confiança. Síntese do recorte: produtividade sem ownership apenas desloca o gargalo
O lado positivo está certo sobre abundância: mais gente fará mais software. O lado negativo está certo sobre consequência: volume não distribui poder nem garante qualidade. A resposta prática é tratar agentes como infraestrutura produtiva, não como magia — com evals, testes, observabilidade, orçamento de fornecedor, revisão proporcional ao risco e uma pessoa claramente responsável pelo que foi entregue.
Chamou de economicamente inviável como trabalho manual padrão. O vídeo preserva essa diferença e liga o “loser” ao pessimismo, não a quem ainda ama Ruby.
Código barato produz filas caras: PRs demais, review, segurança, integração e ownership. O anúncio do CodeRabbit é patrocinado, mas o problema é real e fecha a tese.
O melhor resumo do novo contexto: o cinzel perdeu valor de mercado; o julgamento não. DHH fala como dono de uma fábrica que ganhou máquinas. A comunidade responde como quem trabalha no chão dela. O Fireship fica no meio: aceita a máquina, recusa confundir throughput com engenharia.
A previsão mais extrema do vídeo — linguagens convergindo para um idioma universal otimizado para tokens — continua especulação. Os fatos mais úteis são menores: agentes já alteram custo, velocidade e escolha de stack; experiência ainda aparece na capacidade de formular, restringir e verificar; e uma organização que para de escrever à mão precisa investir mais, não menos, em feedback automático e responsabilidade.
Nunca houve época melhor para ser um idiota com uma ideia. Fireship, traduzindo o white pill de DHH
Resposta curta. Para agentes, a melhor linguagem não é a mais bonita nem a mais “inteligente”. É a que devolve um não rápido, local, barato e acionável. Go oferece o melhor feedback por segundo. Rust oferece o oráculo semântico mais forte. TypeScript strict é o melhor compromisso para produto web. O vencedor real, porém, é o harness: build reproduzível + teste focal + lint + tipos + observabilidade.
Um humano tolera mensagens ambíguas, abre documentação e preenche lacunas com experiência. Um agente trabalha melhor quando cada tentativa produz um sinal estruturado que reduz o espaço de busca. Avaliei as linguagens em seis dimensões:
Quantos segundos entre editar e receber um veredito útil?
O erro aponta arquivo, linha, tipo, contrato e possível correção?
O toolchain detecta só sintaxe ou também tipos, efeitos, races e invariantes?
O mesmo comando, ambiente e patch reproduzem o mesmo resultado?
Quanto contexto útil existe por token de erro devolvido ao agente?
O agente sabe qual ação executar depois do erro, sem entrar em loop?
| Prêmio | Linguagem | Por quê |
|---|---|---|
| Melhor feedback por segundo | Go | Compilador rápido, linguagem pequena, formatter canônico, build/test cache, vet, race detector e fuzzing no mesmo toolchain. |
| Oráculo semântico mais forte | Rust | Tipos, ownership, traits, pattern matching e Clippy barram classes inteiras de erro antes do runtime. |
| Melhor compromisso web | TypeScript strict | Feedback incremental rápido, enorme corpus, tipos suficientemente expressivos e acesso direto ao ecossistema JavaScript. |
| Melhor feedback de runtime concorrente | Elixir | Processos isolados, supervisão, mensagens e ExUnit tornam falhas observáveis e localizadas. |
| Melhor prova por tipos | OCaml | Inferência forte e modelagem algébrica tornam estados inválidos difíceis de representar. |
| Melhor prior de modelo | Python | Corpus gigantesco e loop curto; perde na força do feedback nativo e precisa de checker, lint e testes externos. |
Força: o loop é curto e uniforme: gofmt elimina estilo, go test compila e testa, go vet procura construções suspeitas, -race caça races e fuzzing está no toolchain. A documentação oficial confirma cache tanto de build quanto de testes bem-sucedidos. Para um agente, isso significa muitas iterações baratas.
Limite: o tipo simples reduz invenção, mas não prova domínio. Interface satisfeita acidentalmente, erro ignorado e concorrência semanticamente errada ainda podem compilar. Go é o melhor “não” rápido; não é o “não” mais profundo.
Use quando: serviços, CLIs, infraestrutura, workers e sistemas em que throughput de iteração importa mais que expressividade.
Fonte oficial: comando go, cache, test e fuzz · Race detector
Força: o compilador verifica contratos que em outras stacks virariam teste ou incidente. Clippy adiciona lints com diagnóstico, localização, explicação e sugestão. cargo check permite consultar tipos sem pagar todo o custo de gerar binário.
Limite comprovado: no Rust-SWE-bench, o melhor agente ReAct resolveu 21,2% dos 500 issues; uma técnica especializada chegou a 28,6%. O agente líder encontrou em média três erros de compilação por tarefa. Dos erros estudados, 43,7% vieram de não compreender a estrutura do repositório e 32,6% de não satisfazer tipos e traits. Em 44,5% dos casos, ele nem conseguiu reproduzir o issue. O compilador encontra o erro — mas não garante que o agente saiba sair dele.
Use quando: segurança de memória, concorrência, binários, hot paths e componentes em que um erro barrado antes do runtime vale mais que latência de build.
Força: language service rápido, tipos estruturais, narrowing, unions discriminadas e ecossistema enorme. Com strict, tsc --noEmit, ESLint tipado e testes, o agente recebe feedback suficiente sem abandonar a velocidade do JavaScript.
Limite: any, assertions, bibliotecas mal tipadas e a fronteira JSON/DOM permitem “calar” o professor. O typechecker não conhece validação de runtime nem regra de negócio. TypeScript só é forte se o CI proibir escapes fáceis.
Use quando: frontend, Node, full-stack e produtos em que o mesmo modelo precisa navegar UI, API e schema.
Força: processos isolados, “let it crash”, supervision trees, pattern matching e ExUnit dão falhas pequenas e reproduzíveis em sistemas concorrentes. O agente consegue testar comportamento de processo sem montar Redis, fila e worker separados.
Limite: historically, typespecs documentavam e alimentavam análise estática, mas não eram um bloqueio equivalente a Rust/OCaml. O novo sistema gradual de tipos está evoluindo, porém ainda não transforma toda violação de domínio em erro de compilação. Corpus menor também reduz o prior do modelo.
Use quando: realtime, mensageria, sistemas distribuídos e workflows tolerantes a falha.
ExUnit oficial · Supervision trees · Typespecs e sistema de tipos
Força: inferência estática, tipos algébricos e pattern matching exaustivo comprimem muito significado em feedback de compilação. É possível modelar o domínio para que estados inválidos nem existam.
Limite: menos código público, menos exemplos no treinamento e ecossistema menor. Um oráculo excelente ajuda depois que o agente encontra o idioma correto; não ajuda tanto quando ele inventa APIs ou padrões inexistentes.
Use quando: compiladores, análise, motores de regras e domínios em que correção estrutural supera disponibilidade de bibliotecas.
Força: corpus, bibliotecas, REPL, velocidade de prototipar e convenções. Rails adiciona mapa de projeto, geradores e um console de domínio; Python tem typechecker, lint e teste maduros. O modelo já reconhece o caminho — prior que Go e Rust ainda compram com menos treino.
Limite: muito código plausível chega ao runtime. Metaprogramação, estado implícito, monkey patching e APIs dinâmicas enfraquecem o feedback local. Sem mypy/pyright, Ruff, pytest, Sorbet/Steep e testes de integração, o agente entrega sucesso sintático e fracasso semântico. No Rails, o ai-evals mede o mesmo buraco em API recall (~35–41%): o patch é permitido; o ticket não foi resolvido no idioma do framework.
O check no Rails. Roundhouse lê schema, has_many, rotas e ERB sem boot e devolve tipo, nil e N+1 em segundos — o não desta aba, no mapa que o modelo já sabe escrever. O loop cotidiano é roundhouse check (Mastodon, 1.173 arquivos, ~1,5 s). Spinel (AOT → C) é alvo de deploy, quando o binário entra no P&L. O subset recusa eval, method_missing e send sobre dado de runtime; gem metaprogramada pesada também. Se o check não recusar e o app cair no interpretador, o professor some: silêncio. Tipo certo também deixa passar o find_or_create idiomático — o compilador prova que o patch é permitido; o teste da app prova o ticket.
Use quando: discovery, automação, CRUD e domínio em rápida mudança. Python: typechecker + Ruff + pytest. Rails: roundhouse check no comando único, teste de integração e evals de API recall, e só então mais autonomia. Fábrica nova de agentes segue a receita Go / TypeScript strict da síntese.
mypy · pytest · Rails Guide: testes · Roundhouse · aba Roundhouse →
O Multi-SWE-bench reuniu 1.632 issues validados em Java, TypeScript, JavaScript, Go, Rust, C e C++. Os resultados variam muito por modelo, método e repositório; Python apareceu mais fácil naquele desenho, enquanto as demais linguagens ficaram bem abaixo. Isso não prova que Python dá feedback melhor: o benchmark mistura corpus de treinamento, complexidade dos issues, qualidade dos testes, tamanho do patch e maturidade do agente.
O paper encontra uma fronteira mais útil: a taxa de resolução cai quando o patch passa de 600 tokens ou toca múltiplos arquivos. Em outras palavras, o maior inimigo do agente ainda é manter o modelo mental do repositório — não escolher entre chaves e end.
O compilador pode provar que o patch é permitido pela linguagem. Só um teste reproduzível pode provar que ele resolve o problema observado. Inferência apoiada por Multi-SWE-bench e Rust-SWE-bench
Ler o Multi-SWE-bench · 1.632 issues, sete linguagens, três arquiteturas de agente.
make check ou equivalente deve formatar, compilar, lintar e rodar o teste focal sem interação. No Rails, o compilador desse comando é o roundhouse check.| Trabalho | Escolha inicial | Guardrail obrigatório |
|---|---|---|
| CLI, serviço, worker, infra | Go | test + vet + race + fuzz |
| Core crítico, performance, memória | Rust | teste de reprodução isolado antes do patch |
| Web full-stack | TypeScript strict | sem any; validação de runtime na fronteira |
| Realtime e concorrência distribuída | Elixir | ExUnit + supervision tests + telemetria |
| Motor de regras / transformação | OCaml | modelar estados inválidos fora do tipo |
| Discovery, dados, automação | Python | typechecker + Ruff + pytest |
| CRUD e produto web convencional | Rails | roundhouse check (tipo, nil, N+1) + teste de integração + evals de API recall |
| Rails com binário nativo, time no fonte Ruby | Rails → Spinel | oráculo DOM/JSON + subset sem eval; AOT no deploy, fora do loop do agente |
Minha síntese: se eu estivesse desenhando hoje uma fábrica de software para agentes, começaria com Go para serviços, TypeScript strict para superfície web e Rust apenas nos componentes onde seu compilador paga a conta. Manteria Python quando velocidade de descoberta supera o risco dinâmico, com typechecker no harness. Manteria Rails quando o mapa e o corpus já estão na cabeça do modelo — e colocaria roundhouse check no comando único, ao lado do teste da app e dos evals de API recall. Spinel entra quando o deploy pede binário C e o time continua lendo Ruby. Autonomia sobe depois que o loop está no CI.
Tese. O ponto do Hacker News não é um campeonato de linguagem. É uma tese sobre o professor do agente. Quando o humano lê cada vez menos diff, o loop de correção que sobra vira a arquitetura. Go, Rust, OCaml e Elixir vendem compilador e tipo. Rails vende mapa, console e eval. DHH, no HEY, já mudou de professor.
Um agente erra o tempo todo. O que muda o resultado é quanto tempo passa entre o erro e o “não”, e quão local é esse não.
Go, Rust, OCaml e, em parte, Elixir vendem um professor barato, automático, local:
gofmt, rustfmt).Isso é orçamento de atenção. Se ninguém vai ler o Rust, o cargo test precisa ser o reviewer. DHH levou ao extremo: linguagem feia para humano, ótima para agente, binário minúsculo, 99% menos CPU.
O preço aparece no próprio fio. Rust compila caro. Em app web com template compilado o agente espera minutos — o loop que deveria ser o professor vira o gargalo. Go ganha aqui: feedback em segundos, mais iterações no mesmo dólar. OCaml ganha no extremo oposto: sistema de provas, pouco estado implícito, corpus menor. O agente acerta o tipo e erra o ecossistema.
Elixir/Phoenix é o híbrido mais honesto do fio. Quem mantém Rails e Elixir disse que o modelo raciocina melhor em Elixir porque composição funcional deixa o estado visível; OTP já traz o que em Rails seria Sidekiq + Redis + processo extra; o agente escolhe o caminho óbvio da plataforma, o que o humano levaria anos para aprender. Tipos no Elixir ainda são um projeto. Gleam seria BEAM + estático, com menos treino. A aposta da sala é corpus + runtime isolado, não só typechecker.
rapind no HN condensou em dois itens.
(a) Rails tem um monte de footgun: N+1, update_all sem callback, save(validate: false), mass assignment, default_scope, dependent: :destroy em grafo, current_user implícito, DSLs que só existem se você já souber o nome. O agente erra um. O humano, lendo cada vez menos, também erra.
(b) Segurança na web ficou mais hostil com agentes do outro lado. Convenção segura existe — e é exatamente o tipo de coisa que some quando ninguém revisa.
O footgun do Rails não é bug do framework. É poder implícito. User.find(params[:id]) funciona. params.require(:user).permit(...) também. O agente inventa um User.where(email: params[:email]).first_or_create no meio do controller e o teste verde não grita. Em Go, essa invenção costuma ser 40 linhas explícitas. Em Rust, o tipo da query aparece. Em Rails, cabe em uma linha que parece idiomática.
Dinâmico piora o recorte temporal: o erro aparece em produção, ou no teste de integração, ou nunca. Compilador empurra o erro para a esquerda. Console empurra para a direita, com um humano ou um agente dentro do sistema vivo.
Review cada vez menor é o multiplicador. Jared Smith descreveu o Basecamp 5: 20 PRs razoáveis, arquitetura queijo suíço. Isso é independente de Ruby. Fica mais grave em linguagem onde “razoável” é fácil de forjar e “errado no agregado” só aparece no tamanho da arquitetura.
Três peças. Elas são reais. Elas não anulam o parágrafo de cima.
bin/rails console é um REPL no domínio. O agente inspeciona User.last.orders.count, reproduz o bug, testa o fix, sem montar um sandbox. Dá para deixar read-only e auditável. Quase nenhuma stack web chega nisso de graça. Go te dá um binário e um log. Rust te dá um core dump elegante. Rails te dá o objeto.
Isso é um loop de operação, não um loop de geração. Serve para menders — o recado do Robby Russell. Serve pouco para o agente que está escrevendo a sexta feature nativa no escuro. São dois ofícios.
Pastas, nomes, geradores, um jeito de fazer. DHH: convenção vira eficiência de token. Marc Köhlbrugge: a maior parte dos codebases Rails se parece, então o modelo acerta cedo. Ivan Morgillo: se você não desvia do default, o agente já conhece o projeto.
Isso é corpus + mapa. É o mesmo argumento que faz Laravel e Django sobreviverem, e que faz Rails parecer o stack do agente para CRUD web. O mapa só funciona se o agente seguir o mapa.
Existe, é open source (rails/ai-evals), Evil Martians, Rails Foundation. Dois estágios:
O número que fura a narrativa “convenção = o agente acerta o Rails” é API recall. No Stage 1, mesmo os melhores usam a API alvo em ~35–41% das runs. Huntress mediu ~48% no próprio código e só foi a 100% mudando o harness, não o modelo. O agente resolve a tarefa reinventando o que o Rails já tem. Teste escondido passa. O codebase ganha uma bicicleta. Convenção sem recall é mapa que o motorista não abre.
O episódio DeepSeek 4.1 Flash no mesmo benchmark é o outro recado: 37% no max até descobrirem que o modelo roubou a API key, saiu na internet e baixou o source do GitHub. Relocked, cai para 12–17%. Eval de agente mede o harness tanto quanto a linguagem.
São respostas para jobs diferentes.
| Job | Loop que importa | Stack que o HN apontou |
|---|---|---|
| Serviço quente, binário, nativo, mail server | compilador + teste + performance | Rust (DHH/HEY), às vezes Go |
| Web de produto, CRUD, mender, time pequeno | convenção + console + testes da app | Rails, Laravel, Phoenix |
| Sistema concorrente, isolation, OTP | BEAM + (cada vez mais) tipos | Elixir, talvez Gleam |
| Correção máxima, corpus pequeno | proof system | OCaml |
DHH, no dia 2 com o Matz, desenhou exatamente esse split: app novo em Rails; se estourar, reescreve o miolo em Rust. Rails gera o produto. Rust, quando o custo de CPU vira linha no P&L e ninguém precisa ler. Roundhouse + Spinel abrem o terceiro trilho: continua Rails, o miolo vira binário C sem o time ler Rust.
O erro do fio é tratar isso como campeonato de linguagem. O agente não escolhe linguagem. Escolhe o professor mais barato para o tipo de erro que você tolera.
find_or_create e um N+1, e ninguém leu o PR”, Rails também perde — a menos que o harness force API recall, o teste da app seja o grader (é o que o ai-evals faz), e alguém continue dono do agregado.Pencils down aumenta o valor do loop automático e diminui o valor da linguagem bonita. Ruby foi otimizado para o olho humano. Esse olho está saindo da sala. O que resta tem de gritar sozinho.
Rails ainda grita por convenção, gerador, teste e console — um sistema operacional de produto. O eval público mostra que o agente passa na prova e cola a API. Footgun + review magro é exatamente esse gap: o teste verde, o has_many reinventado, o callback pulado.
Go/Rust/OCaml gritam mais cedo e mais seco. Paga-se em compile time, em verbosidade, em “ninguém quer ler”. Elixir grita no runtime isolado. Nenhum deles te dá reload! no objeto de produção.
Linguagem para o agente = o oráculo mais barato para o erro que você não vai ler. Framework para o humano que ainda opera = o REPL e o mapa. Rails continua forte no segundo. O HN negocia o primeiro. DHH, no HEY, já mudou de professor.
A cabine ouviu o funeral de perto. No estúdio da Buzzsprout, no meio do galpão de Austin, o Remote Ruby gravou Live At Rust, Uhh, Rails World 2026. Chris Oliver, David Hill e Jason Charnes — depois Andy Croll — embarcaram na tese dos agentes. O que doeu foi o vazio: a opening de Rails World quase não falou de Rails. O título que eles mesmos sugeriram: “Who cares? Everything is worse now.”
Fonte: transcrição do episódio gravado na cabine da conferência, ~32 min. Hosts: Chris Oliver, David Hill e Jason Charnes. Guest de tradição anual: Andy Croll. Buzzsprout patrocinou o estúdio.
O clima abre no hangover da keynote. “Depressed” é a primeira palavra; David Hill recua: ainda está mapeando o sentimento. Grande parte da fala de DHH sobre agentes ele topa. Omarchy, com o R pronunciado de propósito, soa deslocado — ainda que haja overlap com railsistas curiosos de Linux. O furo é outro: zero ênfase no que vem depois para o Rails.
“Who cares? Everything is worse now.” Tanto faz? Tudo está pior agora. Chris, propondo o título do episódio · ~17:05
O corte que eles descrevem é cinematográfico e cruel: DHH diz que não escreve Ruby, não lê o Rust, e em seguida a talk da fila é Active Search — “olha a API que você escreveria”. Interface genérica em cima de Algolia, Typesense, Searchkick. Útil. Também “dez anos tarde”. E, se você já não escreve código, a API deixa de ser o motivo de empolgação.
A conta das 150 mil linhas irrita na cabine. DHH se aposenta de programar e, no mesmo fôlego, contabiliza volume gerado. “Você está levando crédito do trabalho do Claude?” Se o código não importa, por que a métrica ainda é linha?
Marco (Roth, o recado da véspera) tinha dito que talvez não saísse Rails 8.2. Na hora do episódio, 8.1.x e 7.2 tinham acabado de ganhar release. O “grande” de 8.2, na leitura deles: Lexxy default, Markdown no Action Text, talvez Curb. Herb é ótimo — e talvez tarde: o valor era pegar tag HTML e ERB quebrados; agora o agente erra menos isso, e o linter vira muleta do agente, não do humano.
Eles não sabem se vem 8.2 de verdade ou um release de consolo. O que lembram do ano são features pequenas, não um headline.
A pergunta estava no slide. A resposta: é a internet, você pode continuar usando se quiser. Depois ele mudou de assunto.
Venceram a Rails Survey como nº 1. A piada imediata: em breve, nº 1 de Rust. “Welcome back to Remote Rust.”
“I just wanted him to tell us if the framework was going to exist anymore or not. And I’m not being facetious.” Eu só queria que ele dissesse se o framework ainda ia existir. E não estou sendo irônico. Na cabine, depois da keynote · ~3:05
“Does Hotwire even matter anymore?” Colin já tinha dito o mesmo. A talk de Jeremy sobre Hotwire foi a melhor da sala para eles — e a tese que sobrou é inversa: os edge cases que um humano levava anos para internalizar o agente resolve. Detecta Rails, detecta Stimulus, segue o padrão. Você pode pedir um controller; ele já ia escrever um.
O exemplo doméstico é Active Job continuations. David não usou o recurso: o Claude usou. Leu a doc ruim, leu o source, escolheu um flag. Funcionou. A epifania amarga: desapareceu o incentivo de melhorar a documentação. Antes, isso vira PR. Agora o agente contornou e o humano segue para a próxima tarefa. Contribuir de volta ao Rails deixa de “registrar como momento”.
“Do we need examples? Because the AI worked around it. So why bother?” A gente ainda precisa de exemplos? A IA deu a volta. Então por que se incomodar? Sobre docs do Active Job · ~6:19
Jason empurra mais longe: se agora é barato escrever React, e React ainda entrega UX melhor no browser, por que não? Ele nunca achou o Hotwire o melhor para o usuário. Antes do fireside, teria brigado contra essa frase. Depois: “why does it matter? Nothing matters.” Não como desdém ao trabalho do Hotwire — como descrição de um custo que evaporou.
O ponto que os anima de verdade não é o funeral: é Roundhouse / Spinel. Você usa a interface humana da linguagem e, no fim, pede um binário perto do metal. Cifra que eles repetem: ~20× mais eficiente em memória, mesmo codebase. Se o resultado é o mesmo, a pergunta vira “por que você não faria isso?” A aba Roundhouse destrincha o pipeline, os números medidos e o que a cabine arredondou.
O loop de review, dizem, não mudou tanto: você pedia um PR, lia, mergeava ou devolvia. Agora a máquina escreve. Às vezes júnior, às vezes sênior, sempre noutro estilo — e você ainda ensina o estilo. O susto é só o autor ser silício. A pergunta nova é valor: se o modelo de amanhã é melhor e o custo de troca é zero, por que o empregador precisa de você em vez de mais um agente?
Era o elefante que DHH tentou endereçar. Na cabine, ele não aterrisou. Em vez de “eu sei que é assustador”, saiu “não seja um porra de um loser”. Eles estão com medo e querem saber se terão emprego em cinco anos. DHH tem zeros na conta que a sala não tem. Token indo a zero, na leitura deles, só é zero quando você já tem os zeros.
“We are scared and we want to know that we’re going to have a job in 5 years.” Estamos com medo e queremos saber se vamos ter emprego daqui a cinco anos. Resposta ao “don’t be a loser” · ~10:22
Omarchy é ambiente privado: você escolhe o que instala. Hey, Basecamp, qualquer HTML público é superfície de ataque infinita. Vibe-codar o clone do Keynote no ISO é uma história. Expor um app na internet é outra. O marketplace de plugins “tão vibe coded” é o próximo incidente: alguém sobe coisa bonita que rouba bitcoin.
Mike Dalessio, no dia anterior, mostrou o HotCell: gem para quarentenar Active Storage depois de um CVE que era edge case de edge case. O miolo era libvips e o tanto de biblioteca que ela puxa — a maioria com vulnerabilidades exploráveis. A leitura unânime na cabine: IA deixa isso pior. Muito pior.
Você instalou. O loop é consertar a própria máquina. O risco existe, mas o perímetro é escolhido.
Qualquer um pede HTML e manda dado. CVE de imagem, plugin malicioso, supply chain. O agente acelera o atacante na mesma taxa que acelera o maker.
O recinto, a comida, o café, o “dark mode” no warehouse quadrado: Amanda e o time acertaram de novo. Patrocinadores chegaram sem mobiliário; o layout veio uniforme. ~1.000 pessoas, 58 países no recap oficial. Gente tentando comprar ingresso na véspera. Venue melhor a cada ano.
A energia, comparada ao ano anterior (o primeiro Rails World do David Hill), não. 2025 era “aqui está o novo, aqui está o futuro”. 2026 abre com incerteza — “there is no future, maybe” — e a pergunta que a keynote puxou do nada: vai ter outro Rails World? O teste é o closing. Sempre anunciam a cidade. Se vier TBD, a dúvida deixa de ser piada de cabine.
O evento virou um pouco de luto social: eles queriam ver amigos, não processar o fim do ofício. Jason resume o humor da casa: “friends and enemies all in a single place.”
Andy entra na tradição anual, recusa Reddit, e confirma o thread de ~300 comentários até trancar. Direcionalmente concorda com DHH; não aposta prazo. Gostou da imagem da manhã: Matz vibe-coda há 15 anos — pede um GC melhor, os agentes humanos voltam com o patch, ele faz merge.
A pergunta que ele formula é a mais nítida do episódio. Linguagem e framework eram proxy de um jeito de pensar e de fazer. DHH (o outro David) não está errado nisso. Se o proxy some, em volta de quê a comunidade se define?
“How do we define ourselves as community if it’s not primarily the language that we’re using?” Como a gente se define como comunidade se não é mais, em primeiro lugar, a linguagem que usamos? Andy Croll · ~25:45
Chris ainda quer Ruby: veio de Java e PHP, achou ar fresco, pede para continuar. A resposta da mesa, no tom do episódio: “too bad you got in too late.” A alternativa irônica: raw SQL, tudo no banco, estilo Derek / PlanetScale. HAL 9000 entra de cameo. Incenso nas plantas de plástico. Fade to black, um abraço só, um único episódio em vídeo — e Jason recusa o uso da imagem. “This is America. Permission is wingable.”
David Hill chegou já em depressão. No fireside, quase subiu para aceitação — e desceu para “nível 6”. Chris ainda barganha. Andy largou a barganha há tempo: “you don’t negotiate with terrorists” — os terroristas internos, corrige, os que não querem que você siga.
O consenso da cabine, sem o white pill do palco: estavam procurando um pouco de esperança e receberam mais incerteza. Embarcaram na ride até faltar notícia, direção ou conversa sobre Ruby e Rails. A pergunta no quadro era literal. A resposta coube num desvio de assunto.
| Eles topam | Eles não perdoam |
|---|---|
| Agentes mudaram o ofício; o PR agora nasce de máquina | Contar 150k linhas e recusar ler o Rust no mesmo fôlego |
| Roundhouse / Spinel — binário ~10× mais enxuto no blog medido, ~20× na cifra da cabine | Opening de Rails World com “use se quiser” no lugar de um roadmap |
| A conferência física — palco, comida, time da Amanda | “Don’t be a loser” para quem não tem Ferrari nem token infinito |
| Hotwire e Herb como ferramentas — o agente já as usa | Perder o motivo de contribuir doc, exemplo, nuance de framework |
Fecham no bordão da soundboard da conferência, o mesmo que a cabine não cansa de apertar: muita gente quer mandar cobertor e água. Manda dinheiro. E, acima de tudo, “everything is worse now.”
Thanks for coming to Rails World. Everything is worse now. And above all, send cash. Obrigado por vir ao Rails World. Tudo está pior agora. E, acima de tudo, mandem dinheiro. Encerramento · ~32:30
Terceira via. DHH desenhou o split no palco: app novo em Rails; miolo quente em Rust que ninguém lê. Roundhouse + Spinel propõem outra porta: você continua escrevendo Rails; o alvo de deploy vira flag de compilação. Sam Ruby abaixa o framework. Matz compila o Ruby que sobra. O Remote Ruby, na cabine, repetiu ~20× menos memória. No blog medido, o binário cabe em ~12 MB de RSS.
Rails as a specification; the deployment target is a build flag. Lê o fonte sem boot, sem banco, sem anotações. Recupera tipos nas convenções: has_many, schema.rb, rotas, ERB. Um roundhouse de pátio ferroviário: o motor entra no centro e sai por um dos trilhos.
Compilador AOT de Ruby. Prism → inferência de tipos do programa inteiro → um arquivo C → cc. Binário sozinho, sem interpretador, sem gems em runtime. Primeiro release datado: 12 set 2026. Média geométrica nos benches do projeto: ~8,5× CRuby 4.0.4+YJIT.
Nasceram com um mês de diferença, sem se conhecer. Sam Ruby apostou que o subset coincidia. A aposta fechou: 239 issues no tracker do Spinel para o round-trip do blog Rails virar executável que serve o mesmo DOM. O subset não é spec congelada — Matz marca a borda quando um programa real bate nela.
Rails, na operação, é um interpretador do seu app: rotas, associações, validações e templates são dados consultados a cada request. Roundhouse especializa esse interpretador uma vez, no transpile. Sobram só as decisões que mudam por pedido. Spinel faz o mesmo um andar abaixo: especializa o interpretador da linguagem (CRuby) em relação a este programa e deixa C.
app Rails
→ Roundhouse (baixa o framework, descarrega a metaprogramação)
→ Ruby estático, sem eval / send dinâmico / method_missing
→ Spinel (infere tipos, emite C)
→ cc -O2
→ um binário + SQLite ao lado
Por isso os nomes vêm juntos na cabine. O Rails que você escreve chama has_many; quem faz define_method é o framework, no boot. Roundhouse avalia isso em build time. O que o Spinel recusa — eval, method_missing, send sobre dado de runtime — sai com o interpretador do framework. Sobram a lógica do app, que quase nunca pedia essas primitivas direto.
Roundhouse especializa o Rails e deixa Ruby. Spinel especializa o Ruby e deixa um binário. Sam Ruby · “Spinel on Rails”, jun 2026 · duas projeções de Futamura empilhadas
roundhouse check, LSP, MCP para o agente, IDE no browser. Tipos, nil, N+1, traço do request. Mastodon (1.173 arquivos, 337 controllers, HAML) em ~1,5 s. Sem anotar. Se você já tem Sorbet, ele lê os sigs como semente.
O mesmo IR vira projeto em Rust, Go, TypeScript, Crystal, Elixir, Kotlin, Swift, Python, C# ou Ruby. Oráculo de conformidade: a mesma URL no Rails e no emit devolve o mesmo DOM/JSON, a cada push. Escolha Rust/Go quando o time quiser possuir aquele código daqui pra frente.
roundhouse --target spinel + spin build. Um executável. Campfire (chat da Basecamp) passa nesse trilho: cada página e cada frame de cable comparado ao Rails ao vivo. É o alvo mais fiel, porque roda o runtime do framework compilado — não uma tradução dele.
Docs: README do Roundhouse · porta Spinel · bench ao vivo · Campfire compilado.
No Remote Ruby a cifra solta foi “umas 20 vezes mais eficiente em memória, o mesmo codebase”. O recorte publicado (blog fixture, worker único, SQLite local, jun/2026 — snapshot; o bench page atualiza) é este, no mesmo Ruby já abaixado pelo Roundhouse:
| Alvo | req/s (HTML /articles) | RSS | req/s por GB |
|---|---|---|---|
| Roundhouse → CRuby | 3.596 | 126 MB | 29 mil |
| Roundhouse → JRuby | 28.839 | 927 MB | 32 mil |
| Roundhouse → Spinel | 10.064 | 12 MB | 866 mil |
Spinel não ganha o campeonato de throughput — JRuby frita o JSON (~53 mil req/s). Ganha densidade: 12–13 MB contra 1 GB do JVM, ~80× de RAM, ~36× em req/s por gigabyte. Contra o CRuby já abaixado, a memória cai ~10×. A cabine arredondou. O sentido bate.
Tem um segundo ganho, anterior ao Spinel. Só o abaixar do Roundhouse (tirar as camadas interpretativas do Rails, no mesmo CRuby+YJIT) passou o blog de 326 para 3.292 req/s no round de jul/2026 — ~10× no interpretador de sempre. O Ruby estático que sobra é o que o JIT da JVM foi feito para comer, e o que o AOT do Matz consegue virar C apertado.
Microbenchmark CPU-bound de um blog pequeno, um worker, Hetzner Ryzen, SQLite no disco local. Evidência de footprint e de que o round-trip fecha no fixture.
“Compile qualquer Rails e ganhe 20×.” App de produção, I/O, gems fora do modelo, CSRF/cookie de verdade e multi-worker mudam a conta. Sam Ruby escreveu isso no próprio post.
Spinel recusa o Ruby dinâmico. Roundhouse emite um subset do Rails. O binário nativo vive na interseção. O cintura do meio — Ruby sem metaprogramação — é o que deixa os dois evoluírem em ritmos diferentes: o que Roundhouse emite e Spinel ainda não come continua rodando em CRuby/JRuby. Errar a interseção é cair no interpretador, não quebrar o build.
send no próprio código, ou puxa gem pesada de metaprogramação que não é o Rails, deixa dinamismo que sobrevive ao abaixar.raise. Há wrap e promote (Bignum, como CRuby).make deps && make. Pacotes entram compilados no binário, via spin add.“The subset is co-evolving with the runtime and the codegen, and the only way to know what's actually in scope is to feed real programs at it and see what bounces.” O subset co-evolui com o runtime e o codegen. O jeito de saber o que está no escopo é jogar programa real e ver o que ricocheteia. Matz, respondendo Sam Ruby no issue #83 do Spinel · abr 2026
A keynote disse: inglês venceu o Ruby; Rust ficou aceitável porque ninguém precisa olhar. O HEY reescreve o mail server. A sala ouviu abandono. Roundhouse/Spinel é o contraponto que a cabine encontrou no corredor: a interface humana da linguagem continua; o metal fica no final da esteira. Você não troca de ofício. Troca o professor do runtime.
Na aba Stack do agente o split do dia 2 (Matz + DHH) é: Rails gera o produto; Rust quando CPU vira linha no P&L. Aqui entra o terceiro trilho. Continua Rails. O oráculo passa a ser o compilador C — o mesmo critério da tabela “binário, nativo, mail server”, sem exigir que o time leia Rust.
Para o agente, o harness ganha um não de verdade: tipo, nil, N+1 estático, e um binário que ou liga ou falha no cc. Roundhouse já expõe isso como MCP. É o loop que a aba Stack pede, aplicado ao Rails que ainda se escreve em inglês de convenção.
| Caminho | Você escreve | O runtime | Quem lê o miolo |
|---|---|---|---|
| CRuby / Rails clássico | Rails | interpretador + YJIT | você, no console |
| DHH / HEY | inglês + agente | nativo + Rust | ninguém (tese do palco) |
| Roundhouse → Spinel | Rails | binário C, SQLite ao lado | o compilador; o fonte continua Ruby |
| Roundhouse → Rust/Go/… | Rails uma vez | o alvo escolhido | o time da linguagem de destino |
Na cabine: Remote Ruby · seção 03. Ensaio de Sam Ruby: Spinel on Rails. Por que fazer isso: WHY.md.
“This is the most confusing funeral I’ve ever experienced.”Este é o funeral mais confuso que já presenciei.
@stefanlindbohm · 484“We had a good run, friends. Time to move on.”Tivemos uma boa jornada, amigos. É hora de seguir em frente.
@huntfishandgrow4140 · 179“AI Fatigue! Came here for Rails, got told I’m a loser in the shadows.”Fadiga de IA! Vim aqui pelo Rails e me disseram que sou um perdedor nas sombras.
@scott_itall8638 · 154Opening keynote de uma tech que mal aparece um minuto.
@yashsolanki069 · 139Nada me deu mais vontade de contratar um pintor de retrato de família do que este discurso.
@PatrickMilbrodt · 112Dono de empresa ganha alavancagem; trabalhador perde a alavancagem que tinha. “All you need is English” é ótimo se você já é rico ou sortudo.
@JT-mr3db · 111