# Ryan Dahl

Ryan Dahl (* 1981) ist ein US-amerikanischer Softwareentwickler. Bekannt wurde Ryan Dahl 2009 durch die Vorstellung der JavaScript-Laufzeitumgebung Node.js. Das System wurde zum Quasistandard von serverbasierenden JavaScript-Applikationen. Bereits 2012 gab er die Projektleitung von Node.js an andere Entwickler ab. Seitdem gilt er als Kritiker des von ihm geschaffenen Systems. Auf der „JSConf EU“ 2018 stellte er eine weitere JavaScript-Laufzeitumgebung der Öffentlichkeit vor. Diese neue Umgebung sollte die zehn schwersten Designfehler von Node.js beheben. Er nannte das System Deno. Deno baut genauso wie Node.js auf der Google-Laufzeitumgebung V8 auf. Ryan Dahl bezeichnete die stärkere Sicherheit als einen Vorteil von Deno. Er bezeichnete Deno im Wesentlichen als einen Webbrowser für die Kommandozeile.

## Leben

Ryan Dahl wuchs in San Diego, Kalifornien auf. Mit sechs Jahren bekam er seinen ersten Computer, einen Apple 2C, von seiner Mutter geschenkt. Zuerst studierte er am örtlichen College in San Diego, dann wechselte er an die University of California, San Diego. Danach studierte er Mathematik an der University of Rochester. Nach seinem Studium verbrachte er einige Zeit in Südamerika. Dort lernte er eine Deutsche kennen und ging mit ihr nach Deutschland. Dort lernte er Chris Neukirchen kennen, der an Webserver-Projekten arbeitete. Neukirchen entwickelte „Rack“, eine Abstraktion eines Webservers. Er beschäftigte sich mit Rack und Nginx und arbeitete als Freelancer in mehreren Softwareprojekten mit. In dieser Zeit entstand die Idee von Node.js. Ryan Dahl wollte nach dem Vorbild von Nginx eine Laufzeitentwicklung schaffen, die asynchron arbeitete. Locks sollten auf jeden Fall vermieden werden. Locks entstehen, wenn z. B. Dateien von einem Datenträger gelesen werden. In dieser Zeit kann ein Prozessor eines Computers keine weiteren Aufgaben übernehmen, sofern er aktiv auf die Beendigung der Leseaufgabe wartet. Durch den asynchronen Aufruf der Lesefunktion wird das Problem umgangen und das Programm wird dadurch leistungsfähiger, falls mehrere gleichzeitige Aufrufe auf ein Programm erfolgen, wie es bei Webanwendungen normalerweise der Fall ist. 2008 brachte Google den Webbrowser Chrome und die V8-Javascriptumgebung heraus. V8 war für den Webbrowser konzipiert, aber Ryan Dahl war von der Technologie fasziniert und überlegte, ob man die V8 nicht auch auf einem Server einsetzen konnte. Er zog nach San Francisco und begann für Joyent zu arbeiten, wo es viele professionelle Programmierer gab, die seine Idee unterstützten. Am 25. Mai 2009 stellte er Node.js als eine serverbasierte Laufzeitumgebung auf Basis von V8 der Öffentlichkeit auf der „JsConf“ in Berlin vor. In den Jahren 2012/2013 hörte er auf, sich mit Node.js zu beschäftigen. Er hatte Zweifel an seiner eigenen Idee und besonders an deren Umsetzung. Zuerst versuchte er durch Referate auf die Schwächen von Node.js hinzuweisen, um eine Änderung in der Strategie der Laufzeitumgebung zu erreichen. Später war er überzeugt, dass die neue Programmiersprache Go von Google der bessere Weg sei, Applikationsserver zu entwickeln. Er glaubte nicht mehr daran, dass man JavaScript für größere Webserver-Projekte einsetzen sollte.
2012 gelang dem Team um Ryan Dahl eine Migration von Node.js von Linux auf Microsoft Windows. Viele der Funktionen mussten für Windows neu entwickelt werden. Mit fünf weiteren Entwicklern erstellte er die Bibliothek „libuv“. Nach diesem Erfolg gab er nach vier Jahren als Node.js-Projektleiter auf. Er wollte nicht mehr im Rampenlicht stehen und Entwicklungskonferenzen besuchen, um Node.js zu promoten, und er wollte sich nicht mehr mit Tausenden von Fehlern in Node.js beschäftigen. Er übergab das Projekt an den Joyent-Mitarbeiter Isaac Schlueter, welcher 2014 die „npm inc.“ gründete. „npm“ war 2010 von Isaac Schlueter als Paketmanager für das Node.js-Projekt programmiert worden. Schlueter hatte seit Mitte 2009 mit Dahl am Node.js-Projekt gearbeitet.
Nach seinem Ausscheiden aus dem Projekt Node.js lebte er ein Jahr lang in Mountain View. Er wurde Mitglied im „Google Brain program“, arbeitete am Projekt Tensorflow von Google mit, entwickelte Modelle und schrieb Thesenpapiere. Er arbeitete bei der Bildverarbeitung und der Bilderkennung mit, beschäftigte sich mit der Klassifizierung und der Transformation von Bildern und wurde Mitarbeiter von Google Inc.
2018 gründete er mit einem weiteren Entwickler von Node.js Bert Belder ein Start-up, um die neue Entwicklungsumgebung Deno für JavaScript zu entwickeln. Deno wurde auf der JSConf EU 2018 von Ryan Dahl in seinem Vortrag 10 Things I Regret About Node.js („10 Dinge, die ich an Node.js bereue“) angekündigt. Am 13. Mai 2020 wurde die erste Version von Deno veröffentlicht.

## Zitate
### Über Scriptsprachen

   “I guess I’m unsatisfied with the state of dynamic languages. I find myself wanting to have a quick go-to tool that I can deploy in various situations. Node and Python are good, but I find them unnecessarily complex or poorly designed in various ways. So this is about developing a tool that fits my own workflow, or the workflow that I want to have.”
   „Ich schätze, ich bin mit dem Zustand dynamischer Sprachen unzufrieden. Ich möchte ein schnelles Tool haben, das ich in verschiedenen Situationen einsetzen kann. Node und Python sind gut, aber ich finde sie unnötig komplex oder in vielerlei Hinsicht schlecht gestaltet. Hier geht es also darum, ein Tool zu entwickeln, das zu meinem eigenen Workflow passt oder zu dem Workflow, den ich haben möchte.“

### Über Deno

   “Whether it’s going to survive for five years I have no idea. Probably not, because most things fail. But it excites me and I enjoy working on it.”
   „Ob es fünf Jahre überlebt, weiß ich nicht. Wahrscheinlich nicht, denn die meisten Dinge scheitern. Aber es reizt mich und ich arbeite gerne daran.“

### Über Applikationsserver und die Sprache Go von Google

   “For a particular class of application, which is like, if you’re building a server, I can’t imagine using anything other than Go.”
   „Für eine bestimmte Klasse von Anwendungen, etwa wenn man einen Server baut, kann ich mir nicht vorstellen, etwas anderes als Go zu verwenden.“

### Über Software im Allgemeinen

   “I hate almost all software.”
   „Ich hasse fast jede Software“