It’s safe to say JS is no longer trying to prove itself. It has arrived. Even if it was once a “dumb kid brother” to something like Java, it’s now fully a first class citizen in the programming language ecosystem. JS is certainly not the only dominant language or the “best tool” for every situation. But increasingly, most tech stacks have it as a central part of their strategy.
Find all of Kyle’s fantastic books at github.com/getify/You-Dont-Know-JS
Kyle begins with a moment to reflect on the privilege we hold; and the cultural problems we have with ideas of meritocracy – ideas over people.
That’s bullshit! The people are what matters. Our jobs are to communicate and cooperate with humans. We all started somewhere, we all have different lives, we need to think more about empathy. Think about the person behind the pixels on your screen.
The best way to predict the future is to invent it. – Alan Kay
A brief and incomplete history lesson on American spaceflight… beginning with the Mercury rockets. They could not go directly to fully-crewed space flight. They started with a single person in a tiny survival pod, doing very little; and each mission was designed to test out things they’d need to put together. Then the Gemini project came along, which could fit two people with a greater role to play. Then the Apollo missions came along, starting to do things while in space.
So getting to the moon took lots of baby steps. Lots of iterations. Can we take some inspiration from that, look ahead by a decade to see where things are going; then have the discipline to do the work to get there?
Brendan Eich coined the phrase always bet on JS. Whenever people bet against JS they end up being wrong. Of course that’s not how gambling really works, because in true gambling history means nothing. Your odds never change.
Kyle wanted to know how people did funny tricks like mouse cursor trails. That particular trick wasn’t important, but view source is how he learned. His knowledge took bigger steps forward when he started doing paid work on the web. He eventually built southwest.com, which included the first exposure to a UI framework (YUI)… but right before launch they wanted it to work in Netscape 4! So he had to hack through all kinds of code trying to make things happen.
For a little while he ‘cheated’ by using Flash to do stuff. Although Actionscript meant it wasn’t cheating all that much. At one point he used a Flash/JS hybrid to produce an XHR library.
Like everyone else jQuery brought him back; and he looked into the library a lot.
I didn’t even know $ could be a variable name!
But there’s only so far you can get reading other peoples code.
Kyle’s journey has been made up of baby steps.
ES5 came a decade later; and ES6 about five years after that. They had heaps in them, but they were things that people were trying and working on way back in the ES3/ES4 era.
Naming is tough, we have ES6, then ES2016, ES2017… yes the years are correct from 2016, but not before.
Talk recommendation: Dream big, think small @petrosalema #fronteers14 … the idea is that big things happen when people do lots of small things to progress them.
When we say we ‘stand on the shoulders of giants’ we acknowledge all the work that has gone before. The best work is incremental.
So the question then – things to bet on?
- Things that assumed the web was headed towards sandboxes. Flash, NaCl, Silverlight, etc.
- App stores. They’ve paid off in the short term, but in future we’ll think of them as a bad idea.
Open collaboration has beaten closed off silos in the long run. We can look to space and see that the International Space Station was more successful than the competing projects that existed before.
Small steps mean things look like they’re going in the same direction at first, but at the end the differences become much more obvious.
code is human communication …. we have very different ideas how to write the code. JS is the lingua franca and yet it can be written wildly differently, perhaps partly because it allows multi-paradigm coding.
JS is becoming more declarative – declaring the outcome, not the steps to get there.
JS has gone a long way from the primitive ten-day version, to the serious language it is now.
JS has been adding features designed more for compilation and frameworks than the average developer. Shared memory,
wait… these are features most people are unlikely to use.
Compilers are the new frameworks (Tom Dale). There is an increasing gap between the code we write and the code we serve in the browser. The biggest fork in the road is WebAssembly/WASM. It’s incredibly powerful… but wither view source?