Fork me on GitHub

I'd like to add some comments to the discussion on deps.edn's ease of use: • To me, deps.edn seems like the right platform to make build tools on. It standardizes a part that can and should be standardized. • How to build a user-friendly product on top of that can then be tacled as the next problem. It would make sense to converge on standard build tooling, but that, to me, seems like the next problem "up the chain". The Clojure way has seemed to me like "doing the right thing, and letting it take the time it requires". I'm eager to see what build tooling we can have on top of deps.edn when some time has passed.

👍 4

Relevant dichotomy: bottom up/ top down. Bottom-up: small functions, composition. Platform first. Common with Clojurians. Top-down: focus foremost on the end-user experience, and try to improve that incrementally. Common in JS-land. To me, bottom-up rhymes with simple-first, whereas top-down rhymes with easy-first.

💯 4

Interesting observations. I guess neither top-down nor bottom up guarantee either simplicity or ease in the final result; but yeah I think what you’re saying generally holds. And you can also do both together and meet in the middle. As a heuristic though if you wanted simplicity you’d tend to start bottom up, and if you wanted ease you might prefer top-down — though they’re not necessarily mutually exclusive.


One of the things that I find interesting in this perspective is that Clojure has slurp/spit whereas I’ve never figured out how to read a file in Java (prior to Java7) Here it seems like Clojure has taken the top down approach, whereas Java took the bottom up approach with the streams and readers and what not.


Nah, clojure also has the simple approach too with which has been in the stdlib since pre v1 iirc


@U06HHF230 I agree that this shouldn't be taken quite literally. End user experience definitely is important! And we have to keep that in mind. I'm quite fond of how the JS-ecosystem in general caters to an ease-in of new users.


@U04V5VAUN Nice catch. I agree that the "easy" Clojure approach complects resource usage -- there's no way to decouple streaming out of spit/slurp. Abstraction layers is relevant here, though. In the context of "slurp reads an external resource into pure data (string)", I think it makes sense.


It totally makes sense, and, Clojure lets you compose other “abstractions” when it comes to reading stuff from a file. Thing is that slurp makes the common case easy.

👍 8