My Fluent video was up in record time, one achievement that the O’Reilly folks can brag about:
At TXJS, my title perhaps referenced Larry Niven (but let’s hope not), and my content directly cited the work of the late Lynn Margulis, champion of endosymbiotic theory. If JS is a mitochondrion, what in our modern web world correspond to the eukarya? I suspect we are in the midst of finding out. Node is probably involved.
At TXJS I mixed new metaphors like mixed drinks, harkened back to my last year’s TXJS talk, and gave the latest demos.
The big-picture story is renewed humility in the face of community feedback. My goal is to help the JS standards body be the best it can be as one of several symbiotic critters in an evolving system.
Lots of learning and re-learning here:
- Versioning is an anti-pattern on the web, wherefore 1JS.
- Syntax as programming language user-interface should evolve, but unlike standard library additions, developers can’t fix it or abstract over it (no macros yet, sigh). I made JS’s object model mutable at the start so people could polyfill, and they continue to do so for good reason. New syntax has to be minimal, righteous, and user-tested to get into Harmony, and that’s the way it should be.
- One new syntax-suite that many agree pays its way, maximally minimal classes, still isn’t in ES6. Working on it…
- My old “dunder-proto” (LOL, @littlecalculist was inspired in this pronunciation of
__proto__by Dunder-Mifflin) vanquished triangle (ugly typography didn’t help triangle either).
- People still rant about JS’s privileged client-side status, but it’s a curse more than a blessing (Python, Lua, Ruby all would have been frozen badly if wedged into Netscape 2 in 1995).
The only hope is mutualism in an evolutionary struggle toward something better than either TC39 or JS developers could achieve by themselves. I tend to believe that this struggle will end well, better than master-planned would-be alternatives that don’t have a prayer of catching on as native-VM-implemented-yet-cross-browser on the Web as currently constituted.
JSFixed represents both a cry from the heart by some in the JS developer community, and an attractor for bikeshedding and tons of noise. But with excellent curation by @angustweets, @valueof, @rwaldron, and @KitCambridge, it has produced a reasonable set of recommendations. Now it’s up to TC39 to engulf the recommendations that it can stomach, as if we were a hungry cell and they a primitive bacterium, and then for both sides to find mutual wins in the resulting ensemble.
These are straightforward, but I expanded on maximin classes in the next slide.
The existential operator,
?., is relatively straightforward. I will put it on the agenda for July. It could fit in ES6, IMHO, without breaking any budgets or agreements.
I intend to write up
Object.prototype.forEach as a strawman, based on JSFixed’s recommendation. It relies on
Object.keys order, which in turn is
for-in order, but no big deal. It’s a useful object method, shadowed by
JS in 2gyr? More like at birth + 35yr. CoffeeScript forks off and rejoins with Ruby bacterial DNA engulfed. Is that Dart near the bottom? 😛
Evolution does sometimes paint a clade into a dead-end corner, or leave the evolved system with harsh dilemmas and “pick any two” trilemmas.
The quest for shorter function syntax runs afoul of
this binding. As I said in my talk, if we are counting fairly, then
-> are not a single short function syntax, they are two syntaxes grouped by being “arrows” or having two chars ending in
This slide refers to the default operator proposal for Harmony, which I’ve recently edited based on several rounds of es-discuss and twitter feedback. It is looking good, IMHO, with the only remaining issue (also open for parameter default values) of whether
null as well as
undefined should trigger defaulting.
Somehow, @rmurphey knew I would be speaking about Unicorns.
- Box2d with 80 boxes (source)
- BananaBread (source)
- Shumway racing demo
- LLJS Demo
- @littlecalculist‘s new TC39 wiki draft (compare to old wiki)
- UPDATE: bonus live REPL session showing off int64 and uint64 value objects in SpiderMonkey
So yeah: 3D games, Flash, and C/C++ in JS. Can you dig it?
I do not taunt for the sake of JS in itself, which started life as good-not-great where it wasn’t just silly. Rather, for JS as an over-maligned, unique evolving system that somehow still unites a standards group (made of competing browser vendors) with faithful JS developers, working together for a better symbiosis.
No other language has the curse or the blessing of this fate. Let’s do our best. Thanks to the JSFixed crew for doing theirs.