does anyone know how I can do % keyframes with Garden?
common_creative: you can use a map with string key like this { "5%" { }}
Thanks @nxqd I am in bed now but will give this a spin tomorrow.
Anybody from Montenegro here? I will visit your country next month, will be happy to meet and share experience!
I want to make the case for a switch to Clojure in my small company. I need to see some info about average transition time for Ruby developers (or in general). I don’t see any blog posts in my initial searches. Any tips?
it depends: if they are "on their own" it will take a short amount of time for them to get started, but they will produce poor quality/un-idiomatic code
try to have one experienced person do code reviews and/or pair prog.
it's pretty fast then
it also depends if they were exposed to a functional language before, and so on. It's hard to give even an average
Yeah, I’ve been working in Clojure for a while, so I hope to help them transition. I’m estimating 6 weeks to get comfortable and 80%+ productive. I suppose the best thing is to start writing code and modifying existing idiomatic code.
But the increased amount of functionality I was able to produce far outweighed my loss in productivity, even after just a couple of weeks.
And how small is small (development team)? Something to consider/look into is the randori style, where you have the whole team working together for at least a couple hours driving the development of something with you acting as the expert when they have questions.
And, of course, is everyone already on board with the idea?
sventechie: yes, get them to read/modify good quality code first, then one thing that worked for ppl around me was to give them small scope projects to work on their own with frequent code reviews. this way to get exposed to every aspect of the ecosystem (lein, java interop, ring, etc) and learn as they go.
@mdaines: Re: size, we currently have two devs that are within the company and a few consulting. As for them being on board with it, as I said before I’m looking to make the case for it, so I’m still in the initial stages. Thanks for the randori development idea — I had not heard of it before.
@sventechie: Any front end development? Clojurescript with Figwheel and Devcards pretty much sells itself once you use it for any amount of time.
@sventechie: I find the answer is far more about the developers ability to change their thinking than it is about changing the tooling.. If they can comfortably think about ‘immutable data going through a sequence of transformations’, map, reduce, filter etc. then they are off to a good start. On the other hand if they view the world through nouns then that will be hard work.
I would also be careful about showing them too much idiomatic Clojure as to be blunt it can be very opaque until fundamentals are understood.
I have experienced three above-average devs pick up Clojure like a fish takes to water, but one of them was a PhD physics guy, another was a PhD Comp Sci guy and the third shall not be named :simple_smile:. I have also failed miserably to get other devs sufficiently capable of wielding Clojure.
I think Rubyists writing modern idiomatic Rails apps should have some head start on some concepts. But you’re right it is the thinking that is hardest. One big appeal of Clojure is the lack of complicated syntax.
I certainly found some good simple idiomatic Clojure early on. I don’t think partials and higher order functions are necessary to a simple codebase, for instance (at least not many of them). And macros are also quite tricky.
I’m not sure about the frontend part — I found Clojurescript a harder transition, although I love the devcards and fighwheel.
yeah, run away from macros :simple_smile:.
my two cents here, I’ve been teaching a couple of friends clojure (and lfe), and the ones that comes from rails/ruby have found land of lisp a good book to understand the basics
with the plus that land of lisp is ‘light' to read
Thanks, I haven’t seen that one — here’s the Clojure code: https://github.com/quux00/land-of-lisp-in-clojure
@sventechie: Interesting, I've found it a lot easier to transition to clojurescript than clojure - I started learning right as things started really going well in cljs-land, though, so that may have something to do with it.
@shaun-mahood: Did you use Om/Reagent right away? Had you been using Angular?
@sventechie: I found Om pretty difficult to get started, jumped into Reagent with no problem though using re-frame to help structure the app
I also found cljs easier than clj, but I think the crucial part of that was knowing JS + the browser environment better than Java + JVM
Built out one app, then rebuilt it, now I'm pretty comfortable with CLJS. Still have issues with JS interop, can't quite wrap my head around it. I'm more satisfied with my front end code than my back end code in Clojure, which is a super weird state to be in. I've never used Angular for real, I couldn't find a JS framework that I was willing to commit to when I could still get everything done reasonably quickly and well using JS and jQuery. I also develop in Windows and had no Java or JVM experience when I started, which added a pretty big overhead to Clojure but almost no extra issues to CLJS.
@sventechie: I also had no functional programming experience, but was always a little leery to jump full steam into OO and was uncomfortable with the trade offs it requires - my code has always been a bit non-idiomatic and has a lot of carry over from assembly and C programming (which makes me feel way, way older than I am). The Clojure syntax and approach really just sort of fit into my brain, at least the basic parts of it, and that's even considering I absolutely hated working in LISP when I've had to in the past.
Hi guys! I've made a simple 3d game demo in Clojure and JME3, built on library which tries to mimic Om for managing scenegraph. https://www.youtube.com/watch?v=_HzWjtlabCQ . GH links are in description, sorry for broken English.
I'm struggling to find if there's a practical use for core.async that's not a vending machine or kitchen-related example. Would this be an example of a real world use case: A form is entered by the user on a web form, the data from the form will populate 10 database tables after passing through several dozen transformations/computations on that data that was entered; the user should be able to submit and then have the form cleared for another entry to begin. So the database work and computation is sent off for asynchronous processing. The user can start entering a new form. If that's a good use, why not just use a simple future
?
@wambat: looks interesting, will have to watch that more closely later
@tom: It seems to me that core.async is used pretty often in other libraries - re-frame, devcards, and figwheel all use it. All of the things I initially thought I would use core.async have so far been handled by another library that uses core.async under the hood.
core.async could allow you to control the level of concurrency you allow, providing back pressure to the client in the case of too much work, and might allow for cleaner shutdown behavior if you can’t wait for the futures to resolve
@wambat: Nice :simple_smile: nice Emacs status bar also
@nha: The status bar is spacemacs' default.
@wambat: ah ok thanks
it just occurred to me that i never posted this here -- it's a music programming language i've been developing, implemented in clojure. contributions would be super welcome, if anyone here is interested in hacking on music-related clojure projects! http://github.com/alda-lang/alda
we also have a channel: #C0AGEL9L1