Hacker News new | past | comments | ask | show | jobs | submit login

Everytime I use clojure for some new project because I think it will help, I end up spending too much time on tooling and setup, and in the end change it to something easier to setup, which strangely that's javascript sometimes. I want to go work in a team where they have it ready for me and I can learn the tooling on the way, without needing to do that up front..



I think everyone goes through this when they're newish to clojure - it's a recognized deficiency in the ecosystem, and one that needs to be solved sooner than later.

However, I will say that once you "pick your poison" and get used to a specific workflow, it becomes vastly easier. The same set of tools work for pretty much any kind of project.

Stuart Halloway gives a great talk[0] where he drunkenly expounds on the importance of REPL driven development and explains his workflow. Honestly, this changed the way I work day-to-day for the better and helped me realize the power that tools like Emacs and Cursive give you; specifically, in-editor evaluation of forms.

For me, I use leiningen for building/dependencies and Emacs/CIDER for my editor. Another good choice is Cursive. Then split it up by what runtime I'm targetting:

Clojure/JVM: - mount for state - ring for HTTP services - clj-http for HTTP requests

ClojureScript/JS: - shadow-cljs for building (with lein integration) - mount for state - macchiato for HTTP services - cljs-http for HTTP requests - reagent for UI

These tools & libraries cover about 80-90% of what I need in a new project, and everything after that is specific to the use case.

Wading through one or two self-contained projects goes a long way into helping you figure out your workflow, and afterwards it's just applying it.

My hope is that in the near future, a lot of the initial friction will be wicked away from the tooling and people will be able to get spun up much faster. Advanced Clojure workflow is a very different way of developing software than most people are used to, though.

[0]: https://vimeo.com/223309989


I don't know how long it's been since you tried but I'd suggest giving it another go. The tooling today is what makes it one of the best experiences out there. The front-end tooling especially!


Can you speak to the front end tooling a bit more? I know Cursive makes for a nice coding experience in general, but I haven't really done any Clojurescript work to speak of.


[posting on an alt because noprocrast just kicked in on my main account]

The second half of this blog post talks a lot about what cljs dev is like: http://blog.jrheard.com/quinto-resurrecting-an-abandoned-boa...


Figwheel gives you a fantastic live coding type environment experience on the frontend. I'd suggest checking out the 6 minute demo linked here to really get what it does:

https://github.com/bhauman/lein-figwheel


All you need for setting up a Clojure web project is a copy of the JDK and Leiningen. With that in place you just do:

lein new luminus myapp

and you're good to go. This will create a new instance of the Luminus (http://www.luminusweb.net/) tempalte that sets up all the boilerplate with reasonable defaults.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: