stijlist
The purple line is supposed to be our "real" emissions, and the impression you get from the image and text is that our real emissions are much lower than the projected emissions.
But if you actually look at the values of the purple line vs the other lines now, in 2020/2021, the values are almost exactly the same.
I don't understand how to reconcile that with the text.
https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q...
#!/bin/sh while true; do $EDITOR $NOTESDIR"$(ls -t $NOTESDIR | selecta --scrolloff --passthrough)" done
It replicates the core interaction model of Notational Velocity: type to fuzzy-filter the list of notes (sorted by MRU) by filename, enter to edit the notes, and quit the editor to end up back in the list of notes.
I forked selecta to add those flags - --passthrough means that the text typed in to filter is emitted on stdout if it doesn't match anything. This way you create a note if it doesn't exist.
I don't buy this - weren't Jeff Dean and Sanjay Ghemawat notorious for pairing frequently?
> If you look at other compile-to-JS languages like:
> - Google Web Toolkit which lets you compile Java to Javascript, > - The Opal Ruby Compiler for Ruby > - Brython, PyJS, Skulpt, Transcrypt or RapydScript for Python > - Various flavors of C#-to-Javascript (Salterelle, Bridge.Net, JSIL) > - Or Haskell-to-Javascript compilers (Haste, Faye) > You'll notice one thing in common: none of them have a standard way of writing code that runs on both their "original" runtime (JVM, MRI, CPython, CLI, ...) and on Javascript. And the reason why is straightforward: none of them are compatible enough, complete enough to really let you write "full" Java/Ruby/Python/C#/etc..
ClojureScript is mentioned in the article, but only for this specious comparison:
> Clunky Interop > Many other languages are not as fortunate. For example, here's how you create an element in ClojureScript, compared with Javascript
(let [paragraph (.createElement js/document "p")] (set! (. paragraph -innerHTML) "<b>Bold!</b>"))
var paragraph = document.createElement("p") paragraph.innerHTML = "<strong>It works!</strong>"
> Now, the conversion between these two snippets is mechanical, so it's not something you need a PhD to perform. Nevertheless, it is clear that using Javascript APIs in ClojureScript, while looking like ClojureScript, looks almost nothing like the Javascript it represents.
> This mapping is something that everyone who wishes to learn Clojurescript will have to internalize.
This seems misinformed at best - both Clojure and ClojureScript have interop as a first-class concern, and interop forms are exactly the same between them.
I appreciate the work that Li's done, but I'm disappointed by what seems like a rather disingenuous omission of the only other language which fulfills Li's criteria.
Interop, IDE support (IntelliJ), parent language compatibility, static optimization (judging by the payload size numbers, ClojureScript utilizes dead-code elimination more effectively than Scala.js), performance (ClojureScript immutable vectors are faster to build than JavaScript arrays, far from the 1-2x Scala.js slowdown cited in the article!) - there is (and has been - since 2011) a compile-to-JavaScript language that is in the same league as Scala.js, and arguably eclipses it on many dimensions.
A language-agnostic comparison can't reasonably leave out ClojureScript.
https://github.com/matthiasn/talk-transcripts/blob/master/Hi...
And they work! It's not stream fusion, but the composed functions being applied to whatever container or stream of values are applied per-value, so (map (comp xf1 xf2)) applied to [1 2 3] applies (xf2 (xf1 1)), (xf2 (xf1 2)), and so on, with similar allocation savings to stream fusion.
Comments welcome.
[0]: https://github.com/apple/swift-package-manager/graphs/contri...
Check out David's other blog posts, ClojureScript synonyms[1], and http://clojurescriptmadeeasy.com.