My Dream Stack
By Ryan Dahl at
A talk on this subject given at Remix Conf
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 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
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.
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
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