HNHacker News
TopNewBestAskShowJobs

puredanger

4,983 karma · joined June 23, 2010

  Name:    Alex Miller
  Tweets:  @puredanger
  Blog:    http://tech.puredanger.com
  Job:     Nubank - Clojure dev
  I made:  Strange Loop conference - https://thestrangeloop.com
  Nachos:  yes, have some
submissionscomments
puredanger··on The Future of Clojure
Many Clojure companies find it easy to hire smart non-Clojure developers and teach them Clojure. You can learn the basics in a week or two and be a pretty effective Clojure developer (especially if supported in a team) pretty easily.
puredanger··on Nubank acquires Cognitect
It's not proprietary. Clojure is under the EPL 1.0 (Eclipse Public License), which is intended to be a business-friendly copy-left license.
puredanger··on Nubank acquires Cognitect
Edward Wible, CTO at Nubank, actually makes this comparison to other banks (and how small it is) at https://www.youtube.com/watch?v=2cYYwxgaxB0 (in the first few minutes).
puredanger··on Nubank acquires Cognitect
He became the CTO of Cognitect. :) He's doing great.
puredanger··on Nubank acquires Cognitect
I disagree that people are not doing those things now or that this has changed at all. We have a decade of yearly Clojure surveys that show people continue to do all those things (and lots more).

Most (70-80%) of Clojure developers work on web apps because most programmers work on web apps.

People that like Clojure use it for everything you can think of and I expect them to keep doing so.

puredanger··on Nubank acquires Cognitect
Yes. There are 100s of companies using Clojure. https://clojure.org/community/companies
puredanger··on Nubank acquires Cognitect
No change in Clojure's license (it is still EPL 1.0).
puredanger··on Nubank acquires Cognitect
Clojure has many free IDEs. Many people currently use Emacs w/CIDER, Atom w/Chlorine, Visual Studio w/Calva, Vim w/Fireplace, etc. For that matter, Cursive also has a free non-commercial edition.
puredanger··on Nubank acquires Cognitect
Per https://building.nubank.com.br/welcoming-cognitect-nubank/, "Nubank does not own Clojure, just as Cognitect never owned Clojure. Nubank will take over Cognitect’s role as a corporate sponsor for Clojure, funding the core development effort".
puredanger··on Nubank acquires Cognitect
Exactly right.
puredanger··on Programming at the REPL (2018)
Clojure is a compiled language btw. It's just compiled on the fly. When you're evaluating new functions at the repl, Clojure is generating Java bytecode and dynamically loading it.
puredanger··on A History of Clojure [pdf]
This is great, thanks for doing that!

It would be great to add this history of Clojure paper. There is also a C++ paper he wrote (http://www.tutok.sk/fastgl/callback.html).

Other things Rich has made:

  - ClojureScript (https://clojurescript.org/)
  - Datomic database (https://www.datomic.com/)
  - edn data format (https://github.com/edn-format/edn) - extensible data notation (subset of Clojure's syntax)
  - Transit (https://github.com/cognitect/transit-format) - format for conveying values between languages
  - Fressian (https://github.com/Datomic/fressian) - extensible binary data notation, used by Datomic
  - REBL (http://rebl.cognitect.com/download.html) - graphical tool for browsing Clojure data
  - Codeq (https://github.com/Datomic/codeq) - Clojure+Datomic application to do code-aware queries on git repos
List of talk transcripts: https://github.com/matthiasn/talk-transcripts/tree/master/Hi...

Playlist of many talks on YT: https://www.youtube.com/playlist?list=PLZdCLR02grLrEwKaZv-5Q...

pre-Clojure projects:

  - http://jfli.sourceforge.net/
  - http://foil.sourceforge.net/
puredanger··on A History of Clojure [pdf]
I don't know what "sets" refers to here - idiomatic Clojure does no such thing (there are some facilities with the word "set" in them but they are all rarely used). seq is not leaky at all imo, it's a model that choose to use (https://clojure.org/guides/faq#seqs_vs_colls). Or you can choose not to use it now with transducers and use any of the seq functions and collect into a specific collection type. I don't know what you're talking about with protocols, typically you don't need to type hint them, and I think there may have been an issue with unqualified imports on referred functions but that was fixed several releases ago.
puredanger··on A History of Clojure [pdf]
The next LTS version of Java is planneed to to be Java 21 (fall 2021, numbers a coincidence) and my presumption is they are trying to get it into that.
puredanger··on A History of Clojure [pdf]
Actually, very few of his talks are about Clojure.
puredanger··on A History of Clojure [pdf]
Re "core.async is macro sugar on top of java.util.concurrent" - yes, but also no. Java does not (yet) have a way to spin light-weight processes that can park without consuming a thread OR a way to select/alt over multiple parked ops, so being able to do that in Clojure is actually novel (and enabled by having macros that can rewrite code as a state machine).

There have been a few projects that did this in the past on Java using runtime bytecode modification but none of them are widely used afaik.

This will change once Project Loom lands in Java and provides m:n fibers.

puredanger··on A History of Clojure [pdf]
https://erikbern.com/2016/12/05/the-half-life-of-code.html
puredanger··on A History of Clojure [pdf]
Given that so many us do, perhaps you should look deeper? I've worked with both and I find no loss of ease of refactoring or confidence, and a significantly easier code base to reason about.
puredanger··on A History of Clojure [pdf]
Compared to many other subreddits, the Clojure one is frolicking unicorns and rainbows.
puredanger··on A History of Clojure [pdf]
And core.async, bringing go blocks, channels, and parking semantics to Clojure

https://github.com/clojure/core.async/

puredanger··on A History of Clojure [pdf]
And REBL http://rebl.cognitect.com/download.html
puredanger··on A History of Clojure [pdf]
> When you say about the lack of documentation and get told that's a good thing, clojure is meant to be hard to learn, it's not for everyone and maybe you just aren't smart enough...

Clojure is not meant to be hard to learn and you are definitely smart enough. There are many, many learning resources for Clojure in every form and it has one of the most helpful communities I'm aware of on Clojurians slack, etc.

puredanger··on A History of Clojure [pdf]
> development is slow and features take a long time to roll out

As Rich has said, Clojure is small and intends to remain so. Clojure has everything you need right now. It doesn't need gobs of new features to be sufficient. Most Clojurists are hard pressed to come up with things they really need in the language itself, so the rate of change in the core language has slowed. (And the rate of change in the tooling and libraries around Clojure gets more attention now.)

> they are disinterested in promoting the language and ecosystem beyond selling their database software

... is incorrect. We have every desire to promote Clojure as a language (regardless of Datomic). Could more be done, sure that's always the case. Please help promote Clojure by doing great stuff and telling people about it!

puredanger··on A History of Clojure [pdf]
It seems that rejecting all of the most popular runtimes in the world (JVM, JS, CLR) is an odd thing to have a grudge about.

(Also notable, babashka, a Clojure alternative to bash.)

puredanger··on A History of Clojure [pdf]
And edn https://github.com/edn-format/edn

And transit https://github.com/cognitect/transit-format

puredanger··on A History of Clojure [pdf]
He also created the Datomic database https://www.datomic.com/
puredanger··on State of Clojure 2020
TIOBE is garbage. It is primarily based on google search hits. Red Monk's ratings are based on github and stackoverflow (which Clojurists actually don't use much) and typically has Clojure around 25, which I think it is a defensible ranking. Best estimates of devs using Clojure are 20k-50k (based on multiple sources, some public, some private).
puredanger··on State of Clojure 2020
You can't actually use the Clojure jar like this with java -jar as it has a couple of dependent libs (spec.alpha and core.specs.alpha). But getting started with the `clj` tool is just as easy.
puredanger··on State of Clojure 2020
Nubank in Brazil has 500+ Clojure developers.
puredanger··on Kotlin becomes second most popular language on the JVM
You say that like having 4 or 5 solid editors for Clojure is bad because no unity. To me, it seems great because there are a wealth of choices for people that like different things and many of them are excellent, well above the bar for being a productive developer.
← PreviousPage 3 of 14Next →