Live data from Hacker News

Clojure Turns 15 panel discussion video

youtube.com

41–50 of 226 posts

Re: Clojure Turns 15 panel discussion video

#41
post #38

I've started learning Clojure about a year ago, couldn't say it was easy (the fault might be with me and not Clojure) Clojure has a lot a faults (just look at some of the comments here) BUT and it's a BIG BUT for me... Clojure is SUPER FUN :) Over the years(15+), I've been coding in PHP (suck it haters), Go, Rust,Java,Python AngularJS+, Svelte and I can honestly say for me, nothing is more fun that coding in Clojure.…

Yeah I think the hype cycle with Clojure looks like this: Stage 1: Confused by parens/the lispiness. early uncertainty Stage 2: learn the REPL and library functions and fall in love. irrational exuberance Stage 3: build an unmaintainable mess and can't refactor. trough of sorrow Stage 4: figure out how to decouple appropriately and evolve the codebase rather than refactor all the time. live happily ever after!

Stage5: All other languages and their syntax now looks ugly and wrong. I'm mean for heavens sake put the parens on the outside ! We are not heathens.

Lol only half joking. It really did surprise me how can something I hated some much in the beginning of learning Clojure (all the parens) has now become one of the things I most adore about the language (all the parens)

Re: Clojure Turns 15 panel discussion video

#42
I have been using Clojure for a solo project for a while now and find it shockingly productive. I initially planned to limit how much of the language "surface area" I explored to keep focused on solving the problem but was able to productively use much more of Clojure than I expected:

-core.async for concurrency that led me speed up some tasks from ~1000ms to ~40ms (well, core.async got me to about 100ms, or closer to 5x speedup on other tasks, and then other optimizations got me the rest of the way). Also using refs for some very limited data sharing across go threads (apparently actually using refs and dosync, aka mvcc data structures, is rare).

-spec for parsing a dsl and validating input

-macros for a select few syntax and core async optimizations (avoiding unnecessary go block usage)

-multimethods for extensibility

-a fair amount of Java interop to use best in class libraries

-transients to help optimize performance in some places

-even transducers a few places (maybe 1 percent of my code if that, but still)

-edn for dsl files

I sense that where people have more friction is trying to work with other people, in teams and organizations. In the right organization this can clearly work, dedicated Clojure shops, but there can be resistance in other organizations, and it has to be "smuggled in", and people worry about the ability to hire (especially for orgs that tend not to train heavily - nubank clearly trains a lot of programmers on Clojure but many shops don't want to do this level of training). And then people will avoid using certain advanced features like macros or even some functional conventions (recursion, reduce and map etc instead of vanilla loops) because they worry it will make it harder to onboard people without Lisp or FP experience.

I honestly think this is Clojure's big challenge, entrenched expectations and conventions in the industry and a desire to pull programmers off the shelf. In this talk (the one we're all commenting on) Rich and others point at the productivity and fun of REPL driven development -- finding some way to really grow that and somehow take it to the next level -- as a possible solution, to offer yet another carrot to encourage people to make the leap to Clojure. It sounds like a good idea but I have no idea what that looks like exactly.

I honestly think the answer to getting more Clojure penetration may be the passage of time, as happened with python. I know nubank/cognitect has been funding some open source work with small grants on top of Alex and Rich's work (and Stuart's?). This kind of basic grunt work can pay off long term. But it's not a sexy answer and if it doesn't work you're at a dead end.

Re: Clojure Turns 15 panel discussion video

#44
post #39
post #31

Earlier quoted context omitted.

The cljs stack I hear about a lot (and use) is ShadowCLJS with reagent ( https://reagent-project.github.io/ ) and re-frame ( https://day8.github.io/re-frame/ ). ShadowCLJS is more of a build tool, but is really well documented and easy to use. Reagent is basically react but a simpler API, and re-frame is a layer on top of that kinda like redux. It's overkill for some apps but I find it's actually super easy to work w…

Thank you. What about leiningen vs boot vs deps.edn? Did any of this come ahead as a winner in the recent years? It's been a while since I've looked into this.

No one uses Boot.

The choice is between Leiningen and deps.edn AKA the official Clojure CLI. Personally, I switched to deps.edn back in 2020 and haven't looked back. I like that it's simpler/does less out of the box and I also use the Git dependency feature all the time (you can reference a git sha as a dependency, not just Maven coordinates).

Something like 90% of it is just listing dependencies (the same packages as it's all just Maven anyway) and for the remaining 10% of configuration there's plenty of resources available for both. They can also interop to some extent.

Other ecosystems have it much worse than Clojure in this regard.

Re: Clojure Turns 15 panel discussion video

#45
post #5

While I like Clojure as a language - I have never seen a language that engendered such hatred in PMs, EMs, sales, etc. I don't know that it survives long term (in industry, it'll survive for a long time as a hobby language.)

I'm intrigued, why do the PMs and such care? (I'm assuming EMs is Engineering Manager?)

Clojure is really good at self-selecting for people that really care about innovation in programming languages. The other jobs in a tech company care about innovation in their domain. They rarely align.

So for every weird, cool innovation you see, the productivity is immediately lost because people equally care about how you deal with state on app startup, or routing, or database interaction. And since none of those other things move the needle much in how you compete in your business domain, competitors who are not concerned wind up eclipsing you. While you're arguing integrant vs. mount, people are just running dotnet new and bikeshedding over things closer to the business domain.

PMs/EMs/QAs/etc. may not have technical knowledge, but they smell something off about programmers arguing about what library to use for routing. Why didn't people complain about this at their past jobs? Surely if it was important, it would have come up. They just perceive you as having hired a bunch of senior people who are incredibly slow relative to their past companies. It really breeds resentment.

I have seen clojure-first companies creatively hive off parts of their engineering org to have a separate org that is allowed to use a different stack. They're not super transparent about it to avoid a big exodus of people, but I've personally seen it happen more than once.

Re: Clojure Turns 15 panel discussion video

#46
post #38

Earlier quoted context omitted.

Yeah I think the hype cycle with Clojure looks like this: Stage 1: Confused by parens/the lispiness. early uncertainty Stage 2: learn the REPL and library functions and fall in love. irrational exuberance Stage 3: build an unmaintainable mess and can't refactor. trough of sorrow Stage 4: figure out how to decouple appropriately and evolve the codebase rather than refactor all the time. live happily ever after!

Stage5: All other languages and their syntax now looks ugly and wrong. I'm mean for heavens sake put the parens on the outside ! We are not heathens. Lol only half joking. It really did surprise me how can something I hated some much in the beginning of learning Clojure (all the parens) has now become one of the things I most adore about the language (all the parens)

This is the worldview of all apl developers.

Re: Clojure Turns 15 panel discussion video

#47
post #13

Earlier quoted context omitted.

> deps.edn Deps is well documented. The issue I personally found is that I needed to look at a bunch of OS project's deps.edn to see how people commonly structure things. Other than that it is a simple tool. > socket repl over nrepl I personally use Calva (VSCode) which just starts an nrepl based on deps.edn. When writing babashka scripts I start the repl manually and connect to it. Very pleasant experience so far. >…

> Deps is well documented. > The issue I personally found is that I needed to look at a bunch of OS project's deps.edn to see how people commonly structure things. Other than that it is a simple tool. This seems like a contradiction, because if it was well documented you wouldn’t need to look at other people’s configs to see how to use it. My experience with deps.edn is that every time I start a project and make a de…

The C language is extremely well-documented. It's still helpful to see other people's C code to understand common/useful patterns.

Re: Clojure Turns 15 panel discussion video

#48

I've started learning Clojure about a year ago, couldn't say it was easy (the fault might be with me and not Clojure) Clojure has a lot a faults (just look at some of the comments here) BUT and it's a BIG BUT for me... Clojure is SUPER FUN :) Over the years(15+), I've been coding in PHP (suck it haters), Go, Rust,Java,Python AngularJS+, Svelte and I can honestly say for me, nothing is more fun that coding in Clojure.…

I've been working with Clojure for the past decade, and it's still the most enjoyable development experience I've had. Once you experience using an interactive workflow where you can see the results from the code you're writing live, it's really hard to go back.

Re: Clojure Turns 15 panel discussion video

#49
post #5

While I like Clojure as a language - I have never seen a language that engendered such hatred in PMs, EMs, sales, etc. I don't know that it survives long term (in industry, it'll survive for a long time as a hobby language.)

I'm intrigued, why do the PMs and such care? (I'm assuming EMs is Engineering Manager?)

[deleted]

Re: Clojure Turns 15 panel discussion video

#50
post #38

Earlier quoted context omitted.

Yeah I think the hype cycle with Clojure looks like this: Stage 1: Confused by parens/the lispiness. early uncertainty Stage 2: learn the REPL and library functions and fall in love. irrational exuberance Stage 3: build an unmaintainable mess and can't refactor. trough of sorrow Stage 4: figure out how to decouple appropriately and evolve the codebase rather than refactor all the time. live happily ever after!

Stage5: All other languages and their syntax now looks ugly and wrong. I'm mean for heavens sake put the parens on the outside ! We are not heathens. Lol only half joking. It really did surprise me how can something I hated some much in the beginning of learning Clojure (all the parens) has now become one of the things I most adore about the language (all the parens)

ML (via Caml Light), Lisp, Smalltalk and Prolog did it for me, each on its own way.

Nowadays I am happy to see a bit of them on the languages I actually get to use.

Post reply on HN