
Problem Solving and Clojure 1.9 with Rich Hickey - tosh
https://www.case-podcast.org/20-problem-solving-and-clojure-19-with-rich-hickey
======
kamaal
On a tangential note, I'm learning Clojure and kind of just getting started on
using it.

I like it how its a Lisp, and ever since I've learned Common Lisp, I've been
wanting to use Lisp at work for everyday projects, and Clojure seems to fit
just perfectly well.

As with these new things you are always excited to explore further and see
what's about to come next. After searching, I was not able to find anything on
the Clojure roadmap anywhere on the internet. I understand that Clojure is
largely an Cathedral kind of an open source project, largely developed in
private at Cognitect and released to the world. But it was still a little
strange to not see anything on Clojure's future plans. Sometimes you also see
the Clojure repo on Github go without commits for weeks, for example the last
commit as of today is July 4, 2018. Which is like strange for a programming
language of this size.

~~~
mi_lk
I was just considering learning Clojure recently, what resources would you
recommend?

~~~
libx
Many people talked about reading the book "Clojure for the Brave and True",
which I did. It's nice to begin with it for the first chapters and read the
rest later, after some coding, in my opinion. For me, the best resource was
the MOOC on Clojure available at
[https://moocfi.github.io/courses/2014/clojure/](https://moocfi.github.io/courses/2014/clojure/)
You can do the exercises, have the system check your results, but don't get
grades or any certificate of completion.

I didn't finish the course as I moved to Elixir, although I liked Clojure very
much. Elixir is also functional, much better for newcomers, lots of support,
people, documentation, examples, books, courses, growing very fast... And one
doesn't need to wait several seconds to start the virtual machine.

~~~
Fellshard
It's a simple and gentle introduction, but surprisingly effective at slowly
immersing you into the language to the point that you feel comfortable
exploring on your own.

------
tosh
transcript: [https://www.case-podcast.org/20-problem-solving-and-
clojure-...](https://www.case-podcast.org/20-problem-solving-and-
clojure-19-with-rich-hickey/transcript)

~~~
btschaegg
Nice, thanks for the link! :)

Also:

> That is the number one problem in programming - the time [thinking] is not
> spent, and people flounder around.

That's a summary worthy to be framed if I ever heard one.

------
grease
Rich made some interesting points on developing libraries in such a manner
that it doesn't introduce breaking changes (for the calling code). Does anyone
here agree (or have counterpoints) to his suggested approach?

~~~
Naomarik
Clojure has been the most stable ecosystem I've ever dealt with. Once you get
into it it's not uncommon to see libraries that are years old that function
perfectly. I'm not even scared to update clojure to the latest alpha builds
because things just always work.

There's also this to look at on the subject:
[https://lkml.org/lkml/2018/8/3/621](https://lkml.org/lkml/2018/8/3/621)

Reddit discussion:
[https://www.reddit.com/r/linux/comments/95b1hf/linus_torvald...](https://www.reddit.com/r/linux/comments/95b1hf/linus_torvalds_on_regressions/)

~~~
kamaal
I imagine in case of a Kernel that should be like a rule beyond any scope of
discussion. And may be for any piece of software that is at the bottom layers
of any stack.

You just can't break backwards compatibility.

This was a big mistake Python 3 made.

~~~
vorg
> You just can't break backwards compatibility. This was a big mistake Python
> 3 made.

At least Python's backers had the guts to release a breaking version 3, unlike
some other dynamic languages, specifically Ruby and Apache Groovy. Ruby's
backers have tentatively slated 2020 for a (MRI) Ruby 3 release after two more
Ruby 2.x versions. As for Groovy, 2 months ago its backers canceled its
version 2.6 release which was to backport the planned features of Groovy 3
into a JDK 7 compatible release. Looks like we won't be seeing version 3 of
either language anytime soon.

~~~
pjmlp
Gradle is the only thing holding Groovy alive, beyond maintenance projects.

I remember attending JSF Days in 2009 and how we would be all writing Groovy
JEE Beans in the near future, show in different ways across a few sessions,
and here we are.

~~~
vorg
... and Android Studio could be the only thing keeping Gradle alive, beyond
20-liner build scripts. When Google finally releases Fuchsia, it will
virtually replace Android's market share within 2-3 yrs. Because Flutter uses
Dart for building apps, it'll probably go with Dart for specifying build
scripts as well. Although one of the Apache Groovy PMC is probably busy
politicking inside Google to get them to use Gradle for Flutter, hopefully
that team won't repeat Android's mistake. Otherwise the 3rd-party app market
for Fuchsia will be stillborn.

~~~
pjmlp
Yep, if it wasn't for Google having the silly idea of adopting Gradle, I would
never bothered to learn it.

I don't suffer from XML allergy and am pretty fine with Maven in what concerns
Maven projects.

Actually I was pretty happy with Eclipse + Ant + ndk-build as well.

To this day the NDK already went through a couple of Gradle build variations
and it still doesn't support NDK libraries across NDK projects, as AAR only
support binary libs for Java apps.

I follow Fuchsia with attention, but it might end up just as Brillo.

------
dudul
I'm not an expert in Clojure, I've played with it a little. I think it's one
of the best designed languages I've ever seen - and I'm a static-type kind of
guy :)

However, I have the feeling that its popularity has been decreasing over the
past few years. I very rarely see job descriptions mentioning it. Have people
observed the same thing?

~~~
fnordsensei
I have seen this mentioned once or twice before, and I'm scratching my head as
to where this perception comes from. Maybe it's because of its position in the
hype cycle?

My personal impression is the opposite.

~~~
dudul
Interesting. What do you think its position in "the hype cycle" currently is?
No longer cutting-edge and therefor a little "boring"?

I also think I saw that it ranked pretty low on various "popular languages"
studies. I would be very happy to find out that I am mistaken TBH.

~~~
puredanger
It's achieved it's highest rankings ever on TIOBE this year. We have also seen
record high numbers of Clojure language, ClojureScript language, and library
artifact downloads this summer.

------
tudelo
I'd be interested in clojure if I didn't have to use third party tools to set
it up on windows, or if the process was documented so I don't have to.

~~~
jhck
I felt the same way when I first wanted to try the language (have to use
Windows for work). I went to clojure.org only to find the message:

    
    
      Installation on Windows: Not yet available - see Leiningen or Boot instead.
    

That was a disappointment to me, seeing as the language has been around for
more than 10 years now. Also, when I went to try the Leiningen route I found
that the installer wouldn't work on Windows 10:

[https://github.com/technomancy/leiningen/issues/2412](https://github.com/technomancy/leiningen/issues/2412)

So I decided to try another language instead... But eventually I returned to
Clojure and managed to get it up and running by using the fix that's suggested
in the GitHub issue above. I'm really enjoying the language, but I fully agree
that it can be frustrating to install on Windows.

~~~
ilikehurdles
That's disappointing. I've been using clojure with windows 10 and didn't run
into this problem, but I think I used [https://scoop.sh/](https://scoop.sh/)
to install it. I'm not really interested in the clj tool and deps.edn until
it's gone through a few releases.

~~~
puredanger
We've done 13 releases of clj so far. It's pretty stable now.

------
_emacsomancer_
Side query: are there any good (or any) Lisp-related podcasts? (In the sense
of the whole series being Lisp-related rather than a particular episode.)

~~~
vijaykiran
If you consider Clojure Lisp-related there's
[https://m.soundcloud.com/defn-771544745](https://m.soundcloud.com/defn-771544745)
(disclaimer: I'm a co-host) and there is
[http://blog.cognitect.com/cognicast/](http://blog.cognitect.com/cognicast/)
from Cognitect (the company that stewards Clojure)

~~~
ballooney
Trivial asside: almost everyone on this site says ‘disclaimer’ when they mean
‘disclosure’ - unless it’s some cutesy humble tongue-in-cheek thing?

~~~
vijaykiran
I tend to disown because we call the podcast _irreverant_ for a reason :)

------
wongma
Any recommended resources for experienced developers on the OO side wanting to
learn Clojure?

~~~
DisownedWheat
Clojure For The Brave And True is where I learnt Clojure and I can personally
recommend it as a good read. It does start out slowly but the FP concepts can
be a little tricky to grok coming from an OO background.

~~~
how_to_bake
I really didn't enjoy the book when I read it in ~2014 I think. It's a pain to
get set up with emacs and then it walks you through functional programs
without introducing anything first. And it is indeed difficult to grok,
especially because they are toy programs with zero real world value. In that
sense, I'd compare it to Learn You A Haskell For Great Good, but with less
context.

This[0] is a better way to learn, in my opinion.

Then after that, maybe check out Brian Will's videos[1].

Then definitely check out this helpful video on web dev[2]. There's a better
video somewhere but I can't find it anymore. It's just a guy walking his
friend through how to make an isomorphic clojure web app. Very nice pair
programming walkthrough guide. But I guess it's forever gone.

[0]: [https://kimh.github.io/clojure-by-
example/](https://kimh.github.io/clojure-by-example/)

[1]:
[https://www.youtube.com/playlist?list=PLAC43CFB134E85266](https://www.youtube.com/playlist?list=PLAC43CFB134E85266)

[2]: [https://youtu.be/LcpbBth7FaQ](https://youtu.be/LcpbBth7FaQ)

