> How does someone who has never built a SPA before, let alone ever build a web application in Clojure/S suppose to get started?
I think that Clojure for the Brave and True[0] is a good place to start for Clojure in general, while Web Development with Clojure: Build Large, Maintainable Web Applications Interactively[1] covers the web app side of things.
You tried Racket, but have you tried Racket+Rackjure? https://github.com/greghendershott/rackjure It's a Clojure-like language in Racket, so you can use the http library of Racket from it. I'm not sure how compatible it is with Clojure.
> Is it really 100 percent compatible with Clojure or is that just aspirational.
Aspirational. The project is really early still, and in the middle of a grand rewrite so basically it doesn't build at the moment, see https://github.com/jeaye/jank/issues/7
Believe it or not, this is relevant to an ongoing sabbatical project of my own. I'm grossly unfamiliar with Java, so it's often hard to read through the Clojure implementation :/
> I am interested in learning clojure. Unfortunately the learning material online is very scanty.
You might give 4Clojure a try[1]. It's a series of programming problems that in the process of challenging you attempt to teach you the syntax and usage. It starts off very basic so even if you know no programming at all it may still be useful.
> I am looking for useful projects that do something useful for users who can't give a damn what language the project is written in.
the note taking app I use is a fairly popular clojurescript project, first thing that came to mind. https://github.com/logseq/logseq
In general Clojure is pretty popular in particular on the backend. Nubank is I think primarily using Clojure, but Walmart, Atlassian and a bunch of other big companies do to.
> actually think it is the quickest and easiest way to get started learning Clojure, to a point.
That's great, I was just checking out Clojure a few hours ago and now have it installed. Any other cool blogs and resources the fine folks on here could recommend.
> the language tries to drive me to the cleanest solution
This is really appealing to me. I've hacked a bit with Ruby (One Month Rails and some other tutorials), but I'm not sophisticated enough to know instinctively how to refactor towards "clean" or "elegant." Most of my code is pretty ugly, and gets uglier the longer I work on it, since when I'm hacking on something without guidance I spend a lot of time just trying not to break things. Is there a good resource for a non-programmer to start learning Clojure? The syntax is a bit scary to me, but I just think back to when I first learned about programming and figure diving in will eventually make it read more sensibly to me.
Also, being connected to a live REPL seems pretty valuable for learning.
> When revisiting old projects I have seen countless of Clojure dependencies having died in the meantime. I have replaced utility libraries with more recent utility libraries sometimes several times. Very annoying.
Yes, the "best in class" libraries change every few years in Clojure's universe, but they always bring huge improvements that require completely new APIs.
> So overall Clojure is in a strange situation. For picking it up on-the-job its not the responsible choice probably for most situations I work in. For my private tinkering the JVM dependency feels just a little too heavyweight. I don't see that Clojure will hit an inflection point of adoption in any way in the future that would make it a viable candidate for me to use at work.
I think about programming languages as tools for different bottlenecks.
– Computational: Rust
– Networking: Go
– Business logic: Clojure / Python
And for many people Python has everything that Clojure is missing: a very low barrier to enter, and a very stable and well-documented ecosystem of frameworks and libraries.
> I'm inclined to think the clojure repl is more conducive to experimenting.
I'm inclined to think the Clojure REPL is more conducive to flailing around. Now, this might sound like derision, but it isn't intended that way: Flailing around can be a very time-efficient way to familiarize oneself with an unknown domain, especially if the cost of making wrong design decisions is small.
But at some point one has to consolidate what one already has, and, in my experience, Clojure makes this very difficult.
> I guess one programmer's sandbox is another programmer's hellish nightmare of mutability.
If you absolutely want mutable definitions, you can have them in Haskell (with some noise) and ML (with no noise) too: http://pastebin.com/00ScnFxC . So a Haskell or ML programmer always has at their disposal whatever they think is the best tool for the job.
How about Brave Clojure?
https://www.braveclojure.com/
reply