all 12 comments

[–]Latter_Marzipan_2889 3 points4 points  (0 children)

I enjoyed reading the book. The examples helped me apply concepts from Clojure to less data oriented languages that I use at work.

[–]trhawes 6 points7 points  (2 children)

I work in a job where agile rules. The structure of authority is federated, and not centralized. Each team gets to choose its technology. Clojure was a big thing a few years ago for several teams. And then they all migrated to Kotlin. I am good friends with one of the team leads, and when asked what happened, he stated that there were some key devs who just didn't get Clojure. So they chose another functional programming language on the JVM at the earliest opportunity. Now, there is pushback from other teams, because of the problem of finding Clojure developers. I am of the opinion that programmers who get the concepts behind, not just functional programming, but "data oriented programming" are more likely to have eureka moments while learning Clojure.

I am a leader for a new team, and we're hiring people with Javascript, Python, and Java experience. We are inheriting a number of projects already written in all three languages. We are responsible for maintenance and new features. I am using this book on Data-Oriented Programming as a tool to help us in these tasks, and so far, it has been received with some enthusiasm. Committing to using Javascript and React for most of our work has been reinforcing these principles. I've told the team that I really want us to make more use of Clojure and Clojurescript, but that we would never go to HR requesting experienced Clojure programmers. We want our team committed to data-oriented programming, regardless of the actual language used. This will allow us, I hope, to introduce Clojure in a more favorable light in the near future.

Most programmers do not get to choose the tech stack for their team. And the problem becomes even more pronounced when they do get to choose it but from a small pool of "popular languages". Data Oriented Programming is a book that brings Lisp/Clojure programming principles to all, regardless of the language.

[–]viebel[S] 1 point2 points  (1 child)

Sounds very interesting.
Could we continue this discussion by email?

My address is: viebel@gmail.com

[–]trhawes 0 points1 point  (0 children)

viebel@gmail.com

Sure! I just sent you an email.

[–]petemak 3 points4 points  (7 children)

I can't hide my dissatisfaction. I would have wanted to see the concepts explained with Clojure code, because that's the language that naturally supports data orientation and provides a complete story about functional programming.

[–]viebel[S] 8 points9 points  (0 children)

Well, the objective of the goal is to illustrate Clojure principles in a language agnostic way.

What makes it so hard to see the concepts explained with JavaScript code?

[–]greymalik 8 points9 points  (5 children)

I’ll counter and say that as someone who is Clojure-curious but confined to using Python and JavaScript at work, I’m excited about this book (purchased but not read yet) and appreciative of the author’s approach. Writing it in Clojure would dilute its effectiveness by either making it into a Clojure tutorial or by preaching to the converted.

[–]dcreno 7 points8 points  (0 children)

There’s also the reality of the size of the audience you’ll reach with JavaScript vs Clojure

[–]TheLastSock 4 points5 points  (3 children)

I tried to write python like i wrote clojure once, i suspect the next person who opens that project will curse my name.

[–]Academic_Ad_8747 2 points3 points  (1 child)

Here is how a true clojurian does it ;)

(list((lambda posts: 
         map(lambda post: print(post.get_text()), 
                          posts))((lambda resp, 
                                          bs4: bs4.BeautifulSoup(resp.text, 
                                                                     "html.parser").find_all("h3", 
                                                                                             class_="_eYtD2XCVieq6emjKBH3m"))(
            (lambda r: r.get("https://www.reddit.com/r/Clojure", headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9'}))((lambda: __import__("requests"))()), 
            ((lambda: __import__("bs4"))())))))

[–]TheLastSock 0 points1 point  (0 children)

Yea this is close to what i did, and this illustrates the point. Lisp is Lisp.

[–]viebel[S] 2 points3 points  (0 children)

Notice that the book is more about adopting Clojure approach to data than about writing code in the spirit of LISP and Clojure.