> ## Content Index
> Fetch the complete content index at: https://www.antoinebuteau.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Lessons from Ryan Dahl
- URL: https://www.antoinebuteau.com/lessons-from-ryan-dahl/
- Published: 2026-05-29T01:35:33.000Z
- Updated: 2026-07-18T21:58:13.000Z
- Description: Ryan Dahl created Node.js and Deno, helping move JavaScript from browser scripting into server-side software. His career offers a lens on language design, TypeScript’s rise, and the evolving mechanics of how software engineers build and maintain systems.
- Author: Antoine Buteau
- Tags: Profile, Developer Tools, Tech Entrepreneurs & Founders Profiles

Ryan Dahl created Node.js in 2009 and Deno in 2018\. His career maps the transition of JavaScript from a browser-bound scripting tool into a dominant server-side standard. This profile collects his public thoughts on language design, the shift toward TypeScript, and the changing mechanics of software engineering.

![Visual summary of operating lessons from Ryan Dahl.](https://www.antoinebuteau.com/content/images/2026/05/lessons-from-ryan-dahl-profile-infographic.webp)

### Part 1: The Nature and Future of JavaScript

1. **On the longevity of JavaScript:** "JavaScript is not like other programming languages. It is the default programming language because so much human infrastructure is built on the web." — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
2. **On treating JavaScript as infrastructure:** "Because JavaScript is like HTTP or CSS or HTML, it is one of the protocols of the web. It has a future unlike that of Swift." — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
3. **On browser standardization:** The web browser should remain the ultimate standard, and server-side JavaScript must stay as close to browser APIs as possible to avoid technical debt. — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
4. **On Oracle's trademark:** "Oracle, it's time to free JavaScript... Can you imagine some corporate entity owning the name of a core web technology?" — [*Source: \[Open Letter to Oracle*](https://deno.com/blog/deno-v-oracle?ref=antoinebuteau.com)*\]*
5. **On the necessity of dynamic languages:** "No matter how much of a C++ programmer you are, you're always going to be scripting some stuff." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
6. **On universal accessibility:** "JavaScript is the most successful programming language in history... it's not going anywhere." — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*
7. **On standardizing APIs:** Developing against proprietary, non-standard runtime APIs inevitably creates legacy code that isolates projects from the broader web ecosystem. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
8. **On the web as the default platform:** Code written for the browser has a better chance of running in twenty years than code written for any specific operating system or proprietary platform. — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
9. **On the absurdity of trademarking web technologies:** It makes as much sense to trademark JavaScript as it does to let Google own HTML or Microsoft own CSS. — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
10. **On the language's lifespan:** "JavaScript will be here in 5 years, if not 10, if not 20, if not forever. It is deeply embedded in humanity at this point." — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*

### Part 2: The Node.js Legacy and Regrets

1. **On his design mistakes:** "I have mass with Node because I see bugs that I introduced... I feel like I've made some mistakes in the design of Node that are now very difficult to fix." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
2. **On removing Promises:** "I added promises to Node in June 2009 but foolishly removed them in February 2010... Promises are the necessary abstraction for async/await." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
3. **On Node's security model:** "By default, the module system in Node.js allows any package to access the file system, network, and environment variables. This poses significant security risks." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
4. **On build systems:** "The continued usage of GYP is probably the largest failure of Node core." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
5. **On the concept of packages:** "Allowing package.json gave rise to the concept of a 'module' as a directory of files." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
6. **On dependency management:** "It massively complicates the module resolution algorithm... I am sorry for this." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
7. **On implicit file extensions:** "It's needlessly less explicit... If you look at how the browser works, you always provide the extension." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
8. **On index.js:** "I thought it was cute because there was index.html... It needlessly complicated the module system." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
9. **On local tool permissions:** "Your linter shouldn't get complete access to your computer and network." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
10. **On the reality of his creation:** "Node is not going away... but it's not going to be the perfect system that it could have been." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*

### Part 3: The Origin and Design of Deno

1. **On Deno's true competitor:** "Deno isn't intended to disrupt the Node.js community, but solve the problems of 2018 rather than 2009." — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*
2. **On the pace of consensus:** "I'm not willing to sit in committee for 13 years trying to make \[what we built into Deno by default\] happen." — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
3. **On web compatibility:** "You only link to JavaScript files—like you do in the web." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
4. **On Deno's core runtime goal:** "Deno is really the runtime layer... we're trying to solve the basic programming utility problems that you might run into." — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*
5. **On Node's success versus Deno's goals:** "Node's success is my success in many ways... but I also think that it is limited in how far it can go just due to where it's starting." — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
6. **On Deno 2's pragmatism:** Retreating from pure URL imports to support \`npm:\` specifiers was a necessary concession to the gravity of the existing ecosystem. — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
7. **On Deno as a drop-in replacement:** Deno 2 aims to be a "greatest hits" version that supports the massive NPM ecosystem while maintaining Deno's core principles of security. — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
8. **On built-in security:** Deno requires explicit permission flags to execute network requests or read files, rejecting the implicit trust model of older runtimes. — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
9. **On the necessity of starting over:** Sometimes the architectural baggage of an old system is too heavy to refactor internally, requiring a clean slate to implement modern standards. — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*

### Part 4: The Rise of TypeScript

1. **On the language itself:** "TypeScript is absolutely beautiful... it allows code to grow and scale from small hacks to large infrastructure." — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*
2. **On TypeScript as an evolution:** TypeScript functions as the natural "V2" of JavaScript, providing the safety needed for enterprise scale without losing the scriptable nature of JS. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
3. **On native runtime integration:** Treating TypeScript as a first-class citizen removes the friction of build steps, making it feel like a dynamic language again. — [*Source: \[DevTools.fm*](https://www.devtools.fm/?ref=antoinebuteau.com)*\]*
4. **On the TC39 proposal:** Allowing type annotations as comments in raw JavaScript is a critical step to let browsers run code without transpilation steps. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
5. **On developer productivity:** For business logic, the development speed of a dynamically typed language with static analysis layers beats the complexity of strict systems languages like Rust. — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
6. **On stripping the build step:** The ideal development environment allows you to execute \`.ts\` files directly, eliminating the need for Webpack or Babel configurations. — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
7. **On types in the browser:** The browser should eventually ignore type syntax naturally, treating it as metadata rather than an execution blocker. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
8. **On TypeScript's tooling ecosystem:** The language server protocol (LSP) integration provided by TypeScript is the benchmark for how all modern languages should assist developers. — [*Source: \[DevTools.fm*](https://www.devtools.fm/?ref=antoinebuteau.com)*\]*
9. **On scaling codebases:** Without types, large JavaScript applications inevitably degrade into fragile systems where refactoring is feared. — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*

### Part 5: The Ecosystem: Packages, JSR, and Tooling

1. **On returning to centralized registries:** "It's unfortunate that there is a centralized (privately controlled even) repository for modules. And now Deno has spawned a registry: JSR." — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
2. **On the purpose of JSR:** JSR is not designed to kill npm; it is designed to work alongside it as a superset optimized for TypeScript and modern web standards. — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
3. **On eliminating configuration:** Runtimes should provide the linter, formatter, and test runner to eliminate the bewildering array of configuration files needed to start a project. — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
4. **On the inevitable end of CommonJS:** "The world will move to ESM. It's just a matter of how long it takes to get there... there's no going back." — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
5. **On post-install risks:** "Post-install scripts have to go... it's a recipe for disaster. There's no world in which this is going to continue to work like this." — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
6. **On JSR transpilation:** A modern registry should allow authors to publish raw TypeScript and handle the heavy lifting of generating \`.d.ts\` files automatically. — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
7. **On avoiding gotchas:** "I hope that doesn't happen to our community where you have to have this knowledge of gotchas in order to just get up and running." — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
8. **On building runtime-agnostic tools:** Tools like JSR are built to serve Node, Bun, and browser environments, recognizing that the ecosystem is now multi-runtime. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
9. **On standardizing formatting:** Built-in formatters prevent teams from wasting hours debating code style in pull requests. — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*

### Part 6: The Philosophy of Software Engineering

1. **On runtime choices:** Node is excellent for small to medium-sized servers, but languages like Go are better suited for massive, highly concurrent server architectures. — [*Source: \[Mapping the Journey*](https://www.youtube.com/watch?v=L521TUSfud8&ref=antoinebuteau.com)*\]*
2. **On sandboxing execution:** "V8 by itself is a very good security sandbox... Had I put more thought into how that could be maintained... Node could have had some nice security guarantees." — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
3. **On engineering compromises:** Engineering often requires making pragmatic concessions, like supporting \`node\_modules\` in Deno, rather than dying on the hill of technical purity. — [*Source: \[The Changelog #610*](https://changelog.com/podcast/610?ref=antoinebuteau.com)*\]*
4. **On building tooling in Rust:** Writing the underlying infrastructure in systems languages like Rust guarantees the performance required to make dynamic runtimes feel fast to the end user. — [*Source: \[Syntax.fm #537*](https://syntax.fm/537?ref=antoinebuteau.com)*\]*
5. **On the developer experience:** A developer should be able to open a terminal, create a file, and run it with full capabilities without writing a single configuration file. — [*Source: \[Syntax.fm #815*](https://syntax.fm/815?ref=antoinebuteau.com)*\]*
6. **On taking responsibility:** A tool creator must be willing to stand on a stage and apologize for the downstream pain caused by early architectural mistakes. — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
7. **On simplicity:** Complexity in a system usually arises from attempting to guess the user's intent, as seen in complex module resolution algorithms. — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
8. **On explicit instructions:** Requiring an explicit file extension for imports removes ambiguity and speeds up the module loader dramatically. — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*
9. **On open source sustainability:** Most open-source projects fail, but the value is in the execution and the utility it provides while it exists. — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*

### Part 7: AI and the "Post-Coding" Era

1. **On the shift in the profession:** "This has been said a thousand times before, but allow me to add my own voice: the era of humans writing code is over." — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
2. **On developer identity:** "Disturbing for those of us who identify as SWEs, but no less true." — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
3. **On the nature of syntax:** "That's not to say SWEs don't have work to do, but writing syntax directly is not it." — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
4. **On shifting focus:** Engineers will need to shift their focus from the mechanical act of typing syntax to high-level architectural design and system verification. — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
5. **On interacting with systems:** The role of the developer is evolving into prompting and guiding AI to generate the underlying implementation details. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
6. **On the necessity of fundamentals:** Despite the rise of AI generation, understanding the fundamental protocols of the web remains critical to debugging the output. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
7. **On letting go of the typing:** Developers must stop conflating their value with their ability to memorize standard library syntax. — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
8. **On the velocity of building:** AI tools will allow individuals to build at a scale previously requiring entire teams of syntax-writers. — [*Source: \[GOTO 2024*](https://gotopia.tech/?ref=antoinebuteau.com)*\]*
9. **On letting machines write code:** Machines are fundamentally better suited to output boilerplate and boilerplate-adjacent syntax than humans are. — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
10. **On accepting reality:** Fighting the integration of AI tools into the developer workflow is equivalent to fighting the integration of high-level languages over assembly. — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*

### Part 8: Personal Journey and Learning

1. **On abandoning his PhD:** "Three years into \[a PhD in algebraic topology\] I thought to myself: 'What am I doing with my life? This is too weird and abstract.'" — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
2. **On discovering his career:** "I promptly dropped out of that program, ended up travelling around for a while and fell into programming, like many people do." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
3. **On programming as a basic literacy:** "It seems like basic programming skills right now or in the near future will be as necessary as math or English or something else everyone studies in the school." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
4. **On his single learning technique:** "I have only one learning technique: projects that I'm working on." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
5. **On practical knowledge:** "It's very difficult to learn something in detail if you're not actually working with it. I can't tell somebody about Rust and then they would know Rust. You have to actually use it yourself." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
6. **On the uncertainty of projects:** "Whether \[Deno\] is going to survive for five years I have no idea. Probably not, because most things fail." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
7. **On motivation:** "But it excites me and I enjoy working on it." — [*Source: \[HolyJS 2019 Interview*](https://medium.com/holyjs/ryan-dahl-interview-2b8e96bf9f80?ref=antoinebuteau.com)*\]*
8. **On avoiding boxes:** "I don't wanna be a Javascript person, and I don't wanna be a machine learning person. You know, I think people… it's interesting to just explore what's possible." — [*Source: \[January 2026 Public Statement*](https://globaladvisors.biz/ryan-dahl-ai-quote/?ref=antoinebuteau.com)*\]*
9. **On the long tail of success:** Real success in open source software means you spend the rest of your career maintaining the decisions you made in a hurry a decade ago. — [*Source: \[JSConf EU 2018*](https://www.youtube.com/watch?v=M3BM9TB-8yA&ref=antoinebuteau.com)*\]*