News for hackers. Stuff that matters.
Re:Clojure at Netflix (2013) [slides] by diab0lic on Wednesday October 31, 2018 @12:09PM (#18346905)
And now that I've responded to the GP, to address your points:

> that means clojure is still being used for new projects, or not?

This has been / will always be a professional choice of the engineer(s) starting a new project at Netflix. Clojure is great for a lot of reasons and lets you target JVM/NodeJS at the same time (our two largest backend languages) but as a LISP most people aren't going to be excited about using it.

> Having a large successful project in clojure is lovely, but much of the community’s concern around it is that its hard to maintain, and falling in popularity, broadly speaking.

In my personal experience maintenance has been a breeze. I had a meeting at noon yesterday where a data scientist wanted a new feature in the query language and we had it shipping to production by 3:00pm. If the code base were say 10x as large I'm not sure I'd have the same opinions about ease of maintenance but I haven't leveraged spec and I've been able to continually increase abstraction to keep the code size small as more features came in.

As for falling in popularity that is my perception as well though its current level of popularity still seems sustainable. I'd imagine this has to do with it being a LISP, with STM not being as popular as anticipated and with spec taking longer than anticipated.

Re:Clojure at Netflix (2013) [slides] by kbp on Wednesday October 31, 2018 @12:43PM (#18347225)
> but as a LISP most people aren't going to be excited about using it.

I agree that Clojure has a lot of strong points and that s-expressions probably put a lot of people off, but as a Lisp programmer, I was very disappointed in Clojure's debugging/interactive development story (and I've heard that from a lot of others). It feels more like using a typical scripting language compared to the traditional Lisp/Smalltalk experience, and even there, a typical scripting language would at least give useful backtraces. As it stands, I think a decent number of conventional Lisp programmers would also worry about large Clojure programs being unmaintainable unless they're superbly written.

Re:Clojure at Netflix (2013) [slides] by flavio81 on Wednesday October 31, 2018 @02:07PM (#18347973)
> I was very disappointed in Clojure's debugging/interactive development story (and I've heard that from a lot of others). It feels more like using a typical scripting language compared to the traditional Lisp/Smalltalk experience

Common Lisp user here. I was also disappointed in the same way when trying Clojure.

Other minor things i didn't like was the noisy [] on the syntax, and the fact that for practical purposes you're fully tied to the JVM and the java runtime libs.

Re:Clojure at Netflix (2013) [slides] by kamaal on Wednesday October 31, 2018 @09:57PM (#18350902)
>>for practical purposes you're fully tied to the JVM and the java runtime libs.

That's more like a positive thing about Clojure. Java inter-op and targeting the JVM gives Clojure a great chance of adoption at large enterprises.

These days no one really has a issue installing jars on a production machine.

Re:Clojure at Netflix (2013) [slides] by gleenn on Wednesday October 31, 2018 @05:40PM (#18349499)
The latest Clojure in the pipe, 1.10, is supposed to have a lot of work done fixing stacktraces FWIW.
Re:Clojure at Netflix (2013) [slides] by diab0lic on Wednesday October 31, 2018 @06:27PM (#18349745)
I'm very happy to be reading this!
Re:Clojure at Netflix (2013) [slides] by diab0lic on Wednesday October 31, 2018 @12:51PM (#18347305)
Oh, yes this is another excellent example of pain while building Clojure code bases. Though I'll say I only agree with half of your statement. I've found the interactive development story to be great with nrepl/fireplace/vim but the debugging is downright terrible... this is the single biggest blocker to me using it for larger systems.
Re:Clojure at Netflix (2013) [slides] by michaelmrose on Wednesday October 31, 2018 @01:09PM (#18347458)
Debugging seems acceptable on emacs with cider. Sayid seems interesting as well.
Re:Clojure at Netflix (2013) [slides] by fiddlerwoaroof on Wednesday October 31, 2018 @02:13PM (#18348018)
Yeah, cider has an amazing form by form debugger for Clojure. And the way cider uses overlays to surface this is quite nice too.

My general experience of cider is that for a certain set of tasks it is much better than slime. But, the problem is, most of my day-to-day coding tasks are hampered by the language: e.g. if I have a web server running and I want to change a request handler, you can’t just recompile the handler, you also have to restart the server.

Re:Clojure at Netflix (2013) [slides] by fiddlerwoaroof on Wednesday October 31, 2018 @02:17PM (#18348044)
(Although, if you anticipate this, you can call the ref (e.g. `(#’foo arg)`) rather than the function `(foo arg)`. But this means that you have to plan the dynamically modifiable parts out ahead of time.
Re:Clojure at Netflix (2013) [slides] by unlogic on Thursday November 01, 2018 @07:49AM (#18353031)
That's not true. You only have to prepend #' if you pass the function by value (as in your web server handler example).

If you call the function by name yourself, like (foo arg), and you recompile foo, any code that called foo will see the new version.

Re:Clojure at Netflix (2013) [slides] by fiddlerwoaroof on Thursday November 01, 2018 @01:10PM (#18356149)
Hmm, I’ll try it again, but I remember issues with the function call syntax too. Iirc, it had to do with the fact that redefinitions don’t count if the use site is running in another thread. But I’ll double-check this when I get a chance.
Re:Clojure at Netflix (2013) [slides] by fulafel on Thursday November 01, 2018 @03:36AM (#18351964)
It's a big exaggeration to say Clojure stack traces aren't useful. They have some extra noise but they do the job of pointing out the call chain and the exception value. Tooling (CIDER at least) can automatically hide the frames about the Java runtime and highlight the Clojure info & line numbers.