From e857713c31ffb593be9765ff5ed1aa8f99fc3a9b Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 29 May 2022 13:05:43 -0400 Subject: [PATCH 1/3] post: my dream stack --- posts/my_dream_stack.md | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 posts/my_dream_stack.md diff --git a/posts/my_dream_stack.md b/posts/my_dream_stack.md new file mode 100644 index 0000000..fc3843c --- /dev/null +++ b/posts/my_dream_stack.md @@ -0,0 +1,78 @@ +--- +title: My Dream Stack +publish_date: 2022-05-29 +--- + +[A talk on this subject given at Remix Conf](https://www.youtube.com/watch?v=4_nxvVTNY9s&t=10790s) + + +The web has become the medium of human information. Over the past 15 years, +we've seen institution after institution add web interfaces. Everything from +the New York Times to the State of New York can be accessed on the web. + +At this point it's safe to assume that the web will still be here, say, 5 years +from now - if not 10 or 20 years. That means the various technical bits that +make up the web will be here: HTTP, HTML, CSS, and JavaScript. +JavaScript is inherently tied to the web, and thus inherently deeply rooted in +human institutions. JavaScript will still be important in the future. + +Web Frameworks Are Constantly Improving. React components, path based routing, +layout routes: these are all massively important innovations. Remix is a +perfect example of the breakneck speed of innovation. Yet relatively little +over the past decade has changed in the JavaScript runtime space. It's all +still my software - it's all still Node.js. This will change over the next +couple years. + +Changes in the runtime space let us address fundemental problems in the +JavaScript ecosystem. In this post I want to describe in the abstract what I +think an ideal workflow for JavaScript programs looks like. + +## My Dream Stack + +Reduces boilerplate - ideally very small apps can be defined in a single file +Uses JavaScript, the universal scripting language +Async I/O and optimal HTTP server performance +Built-in, uniform dev tools - code formatter, linter, doc generation, etc + +## My dream stack extends to the cloud + +Serverless - managed, pay per request, free for low-traffic/demo apps +Edge - code runs geographically near users. Excellent latency everywhere. +Cold starts must be fast. +No config. Reduce boilerplate! + +## This Blog as a Demo + +Almost entirely markdown +Server-side Syntax Highlighting +100% server rendered, no client side JS +Source code in Github - PR previews +Serverless at Edge +Deployments to prod take less than 10 sec +https://github.com/ry/tinyclouds +https://tinyclouds.org/ + +## The Post-Unix Future + +Serverless at Edge runtimes like Cloudflare Workers and Deno Deploy are very cheap and very fast. + + +Performance and simplicity is achieved by using V8 Isolates for multi-tenancy rather than Linux VMs + + +Prediction: to maximize the utility of serverless, web frameworks will soon be built on post-Unix primitives rather than Node.js primitives. + + +https://fresh.deno.dev/ example + + +Call To Action: Demonstrate Remix deploying in less than 10 seconds + + +Hint: the build step must be JIT instead of AOT + +## Deno Deploy + +Serverless JavaScript at Edge +32 regions => low-latency world-wide +Powering Netlify and Supabase Edge Functions From 373f00c0d85a73f1e011261b10d78287d6015d1d Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 29 May 2022 13:07:15 -0400 Subject: [PATCH 2/3] fmt --- posts/my_dream_stack.md | 68 ++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/posts/my_dream_stack.md b/posts/my_dream_stack.md index fc3843c..23c752f 100644 --- a/posts/my_dream_stack.md +++ b/posts/my_dream_stack.md @@ -5,23 +5,21 @@ publish_date: 2022-05-29 [A talk on this subject given at Remix Conf](https://www.youtube.com/watch?v=4_nxvVTNY9s&t=10790s) - -The web has become the medium of human information. Over the past 15 years, -we've seen institution after institution add web interfaces. Everything from -the New York Times to the State of New York can be accessed on the web. +The web has become the medium of human information. Over the past 15 years, +we've seen institution after institution add web interfaces. Everything from the +New York Times to the State of New York can be accessed on the web. At this point it's safe to assume that the web will still be here, say, 5 years from now - if not 10 or 20 years. That means the various technical bits that -make up the web will be here: HTTP, HTML, CSS, and JavaScript. -JavaScript is inherently tied to the web, and thus inherently deeply rooted in -human institutions. JavaScript will still be important in the future. +make up the web will be here: HTTP, HTML, CSS, and JavaScript. JavaScript is +inherently tied to the web, and thus inherently deeply rooted in human +institutions. JavaScript will still be important in the future. -Web Frameworks Are Constantly Improving. React components, path based routing, -layout routes: these are all massively important innovations. Remix is a -perfect example of the breakneck speed of innovation. Yet relatively little -over the past decade has changed in the JavaScript runtime space. It's all -still my software - it's all still Node.js. This will change over the next -couple years. +Web Frameworks Are Constantly Improving. React components, path based routing, +layout routes: these are all massively important innovations. Remix is a perfect +example of the breakneck speed of innovation. Yet relatively little over the +past decade has changed in the JavaScript runtime space. It's all still my +software - it's all still Node.js. This will change over the next couple years. Changes in the runtime space let us address fundemental problems in the JavaScript ecosystem. In this post I want to describe in the abstract what I @@ -30,49 +28,41 @@ think an ideal workflow for JavaScript programs looks like. ## My Dream Stack Reduces boilerplate - ideally very small apps can be defined in a single file -Uses JavaScript, the universal scripting language -Async I/O and optimal HTTP server performance -Built-in, uniform dev tools - code formatter, linter, doc generation, etc +Uses JavaScript, the universal scripting language Async I/O and optimal HTTP +server performance Built-in, uniform dev tools - code formatter, linter, doc +generation, etc ## My dream stack extends to the cloud -Serverless - managed, pay per request, free for low-traffic/demo apps -Edge - code runs geographically near users. Excellent latency everywhere. -Cold starts must be fast. -No config. Reduce boilerplate! +Serverless - managed, pay per request, free for low-traffic/demo apps Edge - +code runs geographically near users. Excellent latency everywhere. Cold starts +must be fast. No config. Reduce boilerplate! ## This Blog as a Demo -Almost entirely markdown -Server-side Syntax Highlighting -100% server rendered, no client side JS -Source code in Github - PR previews -Serverless at Edge -Deployments to prod take less than 10 sec -https://github.com/ry/tinyclouds -https://tinyclouds.org/ +Almost entirely markdown Server-side Syntax Highlighting 100% server rendered, +no client side JS Source code in Github - PR previews Serverless at Edge +Deployments to prod take less than 10 sec https://github.com/ry/tinyclouds +https://tinyclouds.org/ ## The Post-Unix Future -Serverless at Edge runtimes like Cloudflare Workers and Deno Deploy are very cheap and very fast. - - -Performance and simplicity is achieved by using V8 Isolates for multi-tenancy rather than Linux VMs +Serverless at Edge runtimes like Cloudflare Workers and Deno Deploy are very +cheap and very fast. +Performance and simplicity is achieved by using V8 Isolates for multi-tenancy +rather than Linux VMs -Prediction: to maximize the utility of serverless, web frameworks will soon be built on post-Unix primitives rather than Node.js primitives. - +Prediction: to maximize the utility of serverless, web frameworks will soon be +built on post-Unix primitives rather than Node.js primitives. https://fresh.deno.dev/ example - Call To Action: Demonstrate Remix deploying in less than 10 seconds - Hint: the build step must be JIT instead of AOT ## Deno Deploy -Serverless JavaScript at Edge -32 regions => low-latency world-wide -Powering Netlify and Supabase Edge Functions +Serverless JavaScript at Edge 32 regions => low-latency world-wide Powering +Netlify and Supabase Edge Functions From 7455ba24becf49f9cdb4dd0a0eda614acb62c56b Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 30 May 2022 23:40:59 -0400 Subject: [PATCH 3/3] wip --- posts/my_dream_stack.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/posts/my_dream_stack.md b/posts/my_dream_stack.md index 23c752f..dffa4fc 100644 --- a/posts/my_dream_stack.md +++ b/posts/my_dream_stack.md @@ -18,8 +18,8 @@ institutions. JavaScript will still be important in the future. Web Frameworks Are Constantly Improving. React components, path based routing, layout routes: these are all massively important innovations. Remix is a perfect example of the breakneck speed of innovation. Yet relatively little over the -past decade has changed in the JavaScript runtime space. It's all still my -software - it's all still Node.js. This will change over the next couple years. +past decade has changed in the JavaScript runtime space. It's all still Node.js. +This will change over the next couple years. Changes in the runtime space let us address fundemental problems in the JavaScript ecosystem. In this post I want to describe in the abstract what I @@ -27,10 +27,19 @@ think an ideal workflow for JavaScript programs looks like. ## My Dream Stack -Reduces boilerplate - ideally very small apps can be defined in a single file -Uses JavaScript, the universal scripting language Async I/O and optimal HTTP -server performance Built-in, uniform dev tools - code formatter, linter, doc -generation, etc +The beauty of working in a dynamic programming language like JavaScript is that +complexity can be well abstracted into very small, easy to use high-level +functions. Therefore my dream stack does not prevent me from making simple +interfaces. A small app can be defined in a single file. + +Of course my dream stack would use JavaScript, +[the universal scripting language](https://tinyclouds.org/javascript_containers#the-universal-scripting-language). + +Of course it should use Async I/O, HTTP server performance should be close to +optimal. + +Async I/O and optimal HTTP server performance Built-in, uniform dev tools - code +formatter, linter, doc generation, etc ## My dream stack extends to the cloud