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 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!
A Clojure learning journey
41–50 of 72 posts
Re: A Clojure learning journey
#42Earlier quoted context omitted.
I use Clojure (or Clojurescript) for all of the things you listed. When I need something other than Clojure, that thing is typically C which is either a device driver or something I'm going to call into from Clojure. In the past I used mostly Python/Javascript/C instead of Clojure/C to get where I wanted to be. Just to be clear, I use clj/cljs (day to day) for: * Mobile Applications on Android/iOS * Analytics and Dat…
But does Clojure/C really makes you more productive than Python/Javascript/C? which I guess is the point the GP was referring to, although, you mentioned it makes you happy (which is a good of enough reason as any). Don't get me wrong, I think learning Clojure is helpful for lots of developers, even if they won't use it for work/side projects, and I think that's exactly what happens in the Clojure ecosystem and the r…
Re: A Clojure learning journey
#43Earlier quoted context omitted.
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.
Re: A Clojure learning journey
#44Everytime 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..
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.
Re: A Clojure learning journey
#45Earlier quoted context omitted.
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.
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...
Re: A Clojure learning journey
#46I just got rejected in a hiring process at Nubank (a sexy fintec from Brazil that uses clojure a lot) because I used a database for the take-home code challenge they sent me (writing a REST API). Since I'm a Python developer who knows little about concurrency in clojure and I would not like to use locks, I thought it would be better to delegate these things to the database. Apparently I was supposed to use a global s…
Having 5 years professional experience with Clojure, I applied a few months ago to a remote Clojure job, and the coding test was none other than recursion via zippers, literally my weakest point. I could have done the job just fine since they said they didn’t use zippers on the job, but failed the test and they passed on me. Coding tests are the real problem. I’ve had some great ones where you can tell someone put ef…
Here's a good article I've found with information about them:
http://josf.info/blog/2014/03/21/getting-acquainted-with-clo...
Re: A Clojure learning journey
#47I always read about those nice functional languages, but when I try to learn them myself I struggle pretty hard. Can anybody point me to some small (5k LOC maybe) project on github that solves some "real world" problem? I'd like to get some overview. As opposed to the usual tutorials that start with the very basics and don't seem to get anywhere...
It’s not Clojure, but the practical chapters in the book Practical Common Lisp might be a good way to get a feel for the way a Lisp works in a practical application.
It is a wonderful book and Common Lisp is powerful to the max, but note that CL is a multi-paradigm language and examples won't necessarily be in the "functional" style. Quite the opposite, Common Lisp makes imperative programming very comfortable (and OOP as well.)
Re: A Clojure learning journey
#48This is amazing. More people should get to know clojure as it's a wonderful language that has almost all concurrency models on this planet. Also now with core.typed it retains most of the benefits of the statically typed ones while being as productive as other dynamic ones or more.
> More people should get to know clojure as it's a wonderful language that has almost all concurrency models on this planet. Clojure is great. But Rust is a Must, so I hear, and you will need some Python for ML. And then of course JavaScript if your stuff touches the web, and it all does. And there is Go and Erlang or is that Elixir for systems and transactions. Ruby or PHP for RAD and Java for the large stuff can no…
I'm not sure that follows. Even if you choose to specialise in one stack, it is healthy to see a diversity of solutions and opinions/trade-offs in solving similar problems across different stacks. Even if you don't end up mastering any of those, exposure to those can help inform how you approach problems in other languages.
A lot of great ideas in modern ecosystems were stolen/inspired from lateral solutions (e.g. using immutable datastructures with React from the ClojureScript world, Netflix's Falcor influencing om.next in the other direction).
Re: A Clojure learning journey
#49I always read about those nice functional languages, but when I try to learn them myself I struggle pretty hard. Can anybody point me to some small (5k LOC maybe) project on github that solves some "real world" problem? I'd like to get some overview. As opposed to the usual tutorials that start with the very basics and don't seem to get anywhere...
It’s not Clojure, but the practical chapters in the book Practical Common Lisp might be a good way to get a feel for the way a Lisp works in a practical application.
Re: A Clojure learning journey
#50I always read about those nice functional languages, but when I try to learn them myself I struggle pretty hard. Can anybody point me to some small (5k LOC maybe) project on github that solves some "real world" problem? I'd like to get some overview. As opposed to the usual tutorials that start with the very basics and don't seem to get anywhere...