10 years ago, I wrote the first lines of JavaScript at a $3B startup.
A lot has changed since then: JavaScript got Promises, WebAssembly is transforming everything and hey, even node’s got fetch. These are all important and would have made my job so much easier (🔥callback trees 🔥). But when I recently re-watched this Ruby on Rails demo from 2005 I thought to myself:
Why do I have problems today that one person solved 17 years ago?
How to build a social network for cats in 2022
You’ll need at least a backend and some sort of frontend. Already, you have a list of things to build:
Design an API
Frontend application(s)
Client library
Backend
Every engineer knows you run cat display logic in your app and crunch big cat data on the server, right?
Which side are we on?
Physical reality necessitates the client-server model. But reality is cruel and we now have a bunch of new problems:
APIs require massive coordination between teams: Meetings, design docs, test deployments, testing, reviews, fixes, CORS errors, endless-void-screaming, etc.
The frontend and backend teams start sub-tweeting each other
Your org chart reflects an engineering decision from the 60s, lol!!!
Oh my… Who said we should let humans decide how to separate code?
NP: Peaches – Compile the Pain Away
What if we could compile a single code base into distinct partitions of executable code running on clients and servers?
Such a compiler could end real-world problems:
End-to-end type checked infrastructure instead of API contracts
Solving the actual problem instead of thinking where & when to run code
Total Observability by changing the compiler
Just think how much time you’ve wasted on any of these things that are now a result of another computer program.