Hi. Below is a suggestion of something that I think we need to do.
It follows some Scicloj conversations at the Clojurians Zulip #data-science stream, but I think it is not just relevant to data science people. It is for people who want to reimagine what can be built on top of Clojure.
Our basic building blocks have been changing. We are no longer just using and building plain Clojure libraries, at least not in the old sense of it. Clojure is still the language that we use, and most of the things are built on top of clojure.core
. But new layers have been emerging in between, and they completely change the situation.
What problems are possible/impossible, easy/hard, slow/fast to solve? What are the best practices for building tools and libraries? What are the recommended ways to perform basic tasks?
The answers to these questions are changing, thanks to new abstractions and new infrastructure.
Efficient array programming, access to the GPU, C-level performance, distributed programming, zero-copy connections to other ecosystems, and Graal Native compilation are some of the things that are gradually becoming part of everyday Clojure REPL sessions.
Recently, one of the main reasons for this has been @cnuernber’s tech.datatype library, that several other libraries rely upon. But now things are gradually shifting towards dtype-next.
Geni, Neanderthal and tvm-clj are some of the other game-changers.
We need things to go wide and not only deep – we hope that many diverse libraries will be built on top of these new layers. To support that, it is probably time to learn.
Therefore we wish to organize a study group for people who wish to learn the new abstraction layers and build things on top of them.
Here is a suggestion for the agenda and the format.
- The first topic will be
dtype-next
. Maybe we have another topic in parallel (Geni
?). - We commit to a continuous learning process at a good pace (as much as it is possible to commit to anything in 2020).
- We assume that we all know Clojure but are new to the topics we learn.
- We set some goals of contributions to existing and new libraries. These goals are driving our learning focus.
- We meet every 2 weeks.
- Between meetings, we keep reading and discussing, maybe with some “homework”.
- Video recordings are used just inside the learning group, not shared publicly (so that we feel more comfortable to speak nonsense).
- We keep discussing our progress with library authors, asking them for recommended directions.
- Maybe sometimes a member of the group may prepare a particular topic and present it (e.g., Spark’s RDD data structures, Automatic Differentiation).
This is just a suggestion, a starting point for a discussion.
Do you have any thoughts about this?
Would any of you like to join such a study group?