Dreaming the future of software; Project Editor ECMAScript 2015; Reformed Smalltalker JavaScript historian dl.acm.org/doi/abs/10.114@allenwb@mastodon.social

Sherwood Oregon USA
Replying to @awbjs
@awbjs hard at work on his YOW talk in his "office" at Maui. #beachLife #postMorningJog
1
1
This is the secret of debugging. Never start by searching for the bug, start by making the bug reproducible. Thread:
Replying to @robertgraham
The only major thing there was reproducibility. He could reproduce the bug that others failed to reproduce. Once you have that, you have the solution, and nothing will stop you find from finding the solution.
3
40
123
I’m not sure why anybody would be concerned about this. When a language is designed around compossible orthogonal features, sometimes they compose in unexpected ways. Is new new X useful? Why not. Presumably X is a “meta-class” whose instances are themselves classes.
fun with JS ? nested dynamic class construction: let y = new new X; If you find yourself doing this, there are many questions I have to ask you.
2
3
15
Software complexity needs to be studied by anthropologists, not software devs or even virtual machine researchers. More generally, computer science can no longer kid the world (or its students!) that it exists in a technical niche. It's shaping the lived realities of most humans.
11
23
A great deck with a wonderfully contarian view on contemporary software dev values by @stephenrkell cs.kent.ac.uk/people/staff/s…
4
18
35
I would hope that the optimization phase of JS engines treat arguments.length as a special case, avoiding the need to reify an actual arguments object.
Replying to @getifyX
function f(x) { if (arguments.length > 0) return { v: x }; return 42; } f(3) // { v: 3 } f() // 42 f(undefined) // { v: undefined } f(...[,]) // { v: undefined } I generally prefer to avoid `arguments` since ES6, but this seems helpful.
2
5
Just rediscovered this old tweet. Probably my best analogy, ever. Too bad almost nobody can appreciate it. Guess I need to find something more contemporary.
Replying to @awbjs
ES4 (starting in 1999) was TC39’s equivalent of IBM’s Future System project. I guess that makes AS3 its System/38 en.wikipedia.org/wiki/IBM_Fu…
2
4
Allen Wirfs-Brock retweeted
Today, we're celebrating @rwaldron's seven years of documenting the development of ECMAScript. Thanks, Rick! bocoup.com/blog/the-ecmascri…
2
10
27
Perhaps a future hardware business for @brave?. A proxy box that plugs into TV's ethernet port and filters trackers😀 except I suppose they will all switch to HTTPS🤔 @BrendanEich
When we watch TV, our TVs watch us back and track our habits. This practice has exploded recently since it hasn’t faced much public scrutiny. But in the last few days, not one but *three* papers have dropped that uncover the extent of tracking on TVs. Let me tell you about them.
1
3
This is a great example of orthogonality in programming languages (see en.m.wikipedia.org/wiki/Orth… ) We didn't design ES6 with this use case in mind, but we did intentionally try to design orthogonal composable features. Putting destructuring&computed props together just works.
TIL you can use object destructuring on an *array* to get at its properties... and immediately use them in an index with `[ ]` notation!!!! @argyleink is full of amazingness
3
15
111
Or, don't have keywords. c/f Smalltalk wiki.c2.com/?SmalltalkInOneP…
I feel pretty strongly now that programming language design should NOT use the same syntactic pattern for keywords as for variable names. No amount of "reserved keywords" junk fully future protects you, so you eventually end up in ascii soup hell.
1
5
18
Coincidence? I think not...
3
I think it is inauthentic if they don't use a 1960 vintage Tektronix oscilloscope for their hardware debugging.
Restoring iconic IBM 729 tape drives @ComputerHistory. The restoration team adjusted signal levels and cleaned dirty heads. Photo #3 shows the IBM 1401 computer with tape control panel partially folded down. I'm still trying to understand the complex controller for these drives.
1
1
9
Allen Wirfs-Brock retweeted
Odd to hear neo-functionalists take credit for internal iterators. Think Smalltalk '80, or Lisp #strangeloop
3
7
Allen Wirfs-Brock retweeted
We should have separate capabilities (observation and cancellation) and keep them separate, and decide what parts of the system have access to each capability. I really wish "promise cancellation" would just die off as a thing people talk about and want. It's ill-conceived.
2
1
1
I was the cool kid trying to get people to use this radical PL/I language. The shop standard (for biz apps!) was a set of home-grown dumbed-dowm IBM 360 assembler macros that used decimal arithmetic for everything. Binary (even integer) was forbidden—too hard.
More fun stuff from 1973
1
3
16
Reminded today that trimStart and trimEnd are in ES2019—a little later doing some organizing of my long term storage I found this. I guess somethings just keep recurring forever. (Looks like a bug in the comment on example line 4, something else that never changes)
2
4
14
Also, while parameter defaults (and parameter destructuring) started out as distinct feature proposals, as things progressed it became clear that they were really the another use case of destructuring. Parameter processing and array destructuring share a common specification.
Replying to @awbjs @ernestohegi
(2/2) So we had a choice: absent actual (the arguments.length test), undefined, or {undefined,null}. (Holes would evaluate as undefined so orthogonal here.) We went with undefined out of parsimony & TC39 aversion to that nullish equivalence class, which is *back*, via ?. and ??.
2
For a short while during ES6 development we considered Relation as a possible name for WeakMap
Contemplating: instead of writing DOM traversal code for things like accessing a child element from a parent element (or vice versa), maybe we should be using WeakMaps to create/cache relationships between various elements.
6