Fork me on GitHub

@nate and @neumann: If you’re looking for more topics, I would love to hear about “operational” aspects related to continuous integration and deployment of applications. In particular, it would be interesting to hear about deployment strategies for a Clojure back-end which is “consumed by” a ClojureScript front-end, taking into consideration things like SQL database migrations, rollbacks, etc. In other words: Which processes and tools Clojurians tend to adopt when deploying several connected Clojure-based applications in tandem. Also, another topic I would like to hear more about is dependency management. I understand that there are several options available when it comes to managing dependencies in Clojure, such as Leiningen, tools.deps. There is project.clj, deps.edn, etc. These things are a bit confusing and bewildering to me as a Clojure newbie. Lastly, I would love to hear about the various best practices and libraries for “full-stack web development” using Clojure on both the back-end and front-end (ClojureScript), vs. using a different front end language like JavaScript/React, Elixir/Phoenix, or Elm. I have some experience with “web language/framework pairs,” such as PHP/Laravel, Python/Django, Ruby/Rails, Elixir/Phoenix. In Clojure, the closest thing I’ve found to a “web framework” would be Luminus and Fulcro. And then there are libraries such as Ring, Compojure, Reitit, Pedestal, Re-agent, Re-frame, Hiccup, Garden, etc. The “web development story” in Clojure is way ore “pick ’n mix” than what I’m used to, and thus the learning curve is steeper. I would love to hear your thoughts on that.


@U01PE7630AC Thanks for the topic suggestions! I'll comment a bit here in the mean time. I used to use Clojure backends with Javascript frontends (React+Redux+ImmutableJS). About 3 years ago, I switched to ClojureScript frontends (Reagent).


On your second topic (of dependency management), we get into that and a bit more in episode 40:


Prior to my use of Clojure, I was coming from Scala, Groovy, and Java. One of the things I noticed when I switched to Clojure is that libraries have a very heavy emphasis on composition, so you can really mix and match different parts of the stack (HTTP implementation, router, serialization, etc)

☝️ 1

I appreciate what frameworks like reitit are trying to do by putting a bunch of related parts together. I, personally, had to figure stuff out before those existed, so I haven't benefited from them as a newbie. I'd be curious to hear about your experience trying to get started making a full application.


Because of all the different "parts", I think there's a bit of a tyranny of choice for newcomers. For example, look at all the TodoMVC examples in ClojureScript:

❤️ 1

@nate reminds me that the best library to use (when all things seem equal), is the library your friend uses, because you can get help and tips.

nice 1

Thanks for the input, guys! I think @neumann hit the nail on the head with “Tyranny of Choice.” Maybe that would be a good name for a future podcast episode 🙂 That’s an accurate summary of my initial thoughts, upon entering the world of Clojure. It feels like a programming language for experienced programmers. I guess there is some truth to Clojure being “a language for cranky, tired, old programmers,” as Rich once said. This is unfortunate, because I think the language could be made accessible to a wider audience and beginners (in the same way as LISP once was), to gain wider adoption. But it would require some focused community effort to lower the barrier to entry, provide better information, mentorship, guard rails and safety nets.


@U01PE7630AC Making Clojure accessible for "real world" programming was one of my main motivations when we started the Podcast. I have since realized that the podcast medium can only do so much to illustrate techniques and usage, so I've been thinking about other ways to contribute back to the community in that respect.


@neumann I think your podcast accomplished exactly that! It's one of the best programming podcasts I've listened to, and quite similar to Elixir Talk in style. A great blend of technical talk and humor, and the length is perfect for walking the dog or doing the dishes after dinner ☺️


That's great to hear! Thank you!


@U01PE7630AC I currently work through the book Web Development in Clojure. The book does exactly what you want. Recommend a solid web stack with all relevant parts and options you could ever need. It does so by building up a web app from very simple basics to a pretty complex one with advanced feature. It's by the guy behind the Luminus application template. I was in pretty much the same position as you. A lot of experience in web dev but overwhelmed by the choices or lack of obvious path in Clojure. The book helps me greatly.

❤️ 1

Thank you for confirming, @U4LN72X44! I'm looking forward to reading it even more now.

👍 1

Re composition: Add Python to that list. Python libraries also tend to have big classes or functions that do Too Much.