@lee.justin.m sorry for being harsh myself before. Please continue to goad this channel, I believe there’s a lot of people that want to smooth the rough edges.
FWIW, here’s my blog post I was taking about: https://orestis.gr/your-first-clojure-code/ — I’d appreciate any feedback.
Agreed. If there is elitism, I suspect it's unknowing in most cases and should be (politely) called out.
I realise now that perhaps even the title might be a bit patronising? Native english speakers, any comments?
The main reason we have the #beginners channel (and now #programming-beginners ) here is to ensure that the non-beginners in those channels have opted into helping beginners and can try to be much more aware of that sort of thing (although I'm sure some of us miss the mark at times).
I didn’t mean to be harsh, I just meant to point out that there is a constant head-in-the-sand attitude that is unfortunate. Expert programmers forgetting how steep the hill was now do not want to help the next generation up. The finest example of a project that smoothed over “trivial” details in a transformative way is create-react-app, which I was told in no uncertain terms by dnolan that it was a “monstrosity.” I don’t know what to say to that and it clearly isn’t something he or anybody else wants to debate. All I can do is associate with people who see it my way.
Yes, discussion is good.
doesn't seem patronising to me
I, personally, find the ClojureScript ecosystem/tooling to be an impenetrable mess and I get frustrated when I see beginners struggling with it because I have no way to help them 😞
I disagree with "head-in-the-sand attitude." But, you could always say I have my head in the sand 🙂
I think stacktraces and "bizarre" error messages are mostly just a "fact of life" in Clojure (unfortunately) so when folks struggle with those, helping them navigate/comprehend the underlying machinery is pretty much the only option right now.
my feeling there (and maybe this is elitism) is javascript rots anything it touches
@hiredman and i feel the same way about java
I remember a recent conversation about how barriers to contribution are good but now barriers to entry are bad.
I was just about to say the same about Java 🙂
say what you will about java, but it at least has vaguely sane scoping rules
Contribution (to OSS) and learning (the tech) are two very different things tho' @gtrak
also integers (although unsigned ints might be nice)
I understand that, but OSS is what motivated me to learn the tech, and I think a lot of people feel that way. They're not inseparable.
JS is a machine of hidden complexity that continually re-emerges to bite you. Java is deeply complex, but generally stable and predictable.
I thought it might have connotations like “my first book” or something like that, like it’s aimed to babies? Not sure 🙂
CLJS does its best to keep that complexity manageable, from what I've seen, but when it surfaces I can imagine it's very difficult to wrangle.
Getting any CLJS project going takes me a few days of finding the right versions for everything. I recently shipped some Reason at work and it might have taken me a couple hours. I think CLJS is just overly complex and should be cannibalized into libraries.
@lee.justin.m We haven't forgotten how steep the learning curve is. We just don't have an awesome answer to that problem yet. And a lot of us don't have a lot of sympathy for that position because, like @hiredman, we know that it's actually an illusion. I am an expert clojure programmer, but that's because of my experience with it and the leverage it gives me. As result, I have become an expert programmer of sorts, but without clojure, I would not consider myself an expert programmer. Clojure turns to the computer into a thing I can understand.
yeah, at least to me it doesn't at all, i wouldn't worry about it 🙂
When they can shed the jvm it'll be fine for a JS dev, it's still a hassle for someone with a lot of experience.
responding to earlier comments in #clojure, just my personal experience! I find the clojure docs to be great. But I was just talking to another guy who though they assumed to much. I think they’re clear, concise, and frequently give examples!
I think I would have to be more expert and more elite in order to get things done in Java or Javascript, that I can get done in Clojure
And, compared to elm or something, the assumptions about academic language seem much less.
But, I like having some - I want to be pulled up to knowing more - as long as the bridge is there to climb.
Aspect oriented programing, DI containers, enterprise patterns - I constantly feel like “no one can possibly understand this stuff.”
Teaching Elm in the right way can really dodge that 'overly academic' feeling. The Pragmatic Studio course did a fantastic job at walking through the pieces with solid explanations without feeling patronizing.
Maybe there's a faulty assumption at play - that all you need is a set of resources you can read without needing anyone's help.
'If I have the right tutorials / books / StackOverflow references...'
it is perfectly possible for something to be both a monstrosity and something to draw inspiration from. you'd need to pull out the specific aspects of create-react-app you find cljs could learn from, rather than just saying 'create-react-app' (which would mean different things to different people)
When in reality, the much more difficult and necessary learning is transmitted from one-on-one discourse.
I don't think that is the case either
if you say 'static typing', different people will have different reactions to it; but if you say 'no runtime errors', you'd be hard pressed to find someone that thinks that's a bad thing
but most of the resources are not blog posts or stackoverflow questions
CRA is a project template and fails in the same ways as all project templates.
CRA is NOT a project template and it does not fail in the same way
But is that what beginners are looking to?
they are pdfs of scanned in typed up memos from the ai lab at mit
it can update the entire stack from underneath your project
i know of no other template that can do that for you
it may fail, but it fails in otherways
you need to get across what you like about create-react-app specifically, rather than relying on the other person's ability to figure out what you mean
https://www.deconstructconf.com/2017/evan-czaplicki-on-storytelling
@sundarj my real point is that is a lousy way to run a community
It’s hard to even know what you need until you had it in retrospect. I’m still a Clojure beginner: I’ve dabbled, and love it, but I haven’t “built anything” yet. I like the language, the documentation, and solving problems with it Codewars. My “points of difficulty” are all infrastructure. Understanding how to wire in dependencies, work with build tools, etc. Especially when I don’t yet have a frame of reference for how far they’re going/what they’re doing - and where I should dig in or not.
There's also the issue that lisps attract opinionated people, which in modern discourse is often mistaken as "toxic" discourse, which is sad
Seems like having an opinion is toxic these days 😞
if you’ve read anything that’s come out after this survey, you must surely be aware that I’m not the only one!
oh, i agree. communication is important on both ends. i was just trying to point out a possible reason for you being shut down in such a manner
There's a much deeper discussion to be had about that, but the roots of that observation run very deeply.
i cannot speak for dnolan
The problem isn’t having an opinion, the problem is that there seems to be resistance to even acknowledge the thematic complaints that came out of the survey. It’s like pulling teeth just to get the barest concession that it could be improved.
Maybe you really do think things are fine. I disagree. That’s fine.
Yeah, I'm not really trying to start a debate about cultural currents. But I'd like it if the 'suffocation of sensitivity' we're seeing these days had less of an impact on our community
has it really been like "pulling teeth?" I hope your critiques haven't been met with anger or grief.
@wmichaelshirk are you using the new clj tool at all? I am just curious because it seems like an attempt to stream line the getting started infrastructure, but it is still very new itself
@john no they’ve been met with resistance and apathy, the ultimate killers
Apathy isn't ideal. Resistance should be expected.
I have used it - and loved it so far! Especially with the ClojureScript release on monday - getting off the ground is amazingly faster. I call those definite wins. My next hiccup is that using them is not envisioned with old tutorials that expect lein
or boot
- the work of sort of feeling through adapting from one to the other is what’s difficult. I don’t know if there even “is” a way to make that easy: Three years later I still have no clue what’s going on with Maven in my java development.
@lee.justin.m I find your characterizations pretty denigrating to those of us who are not at all apathetic. my 2c.
Sensitivity <- Perceived assault on truth <- Holding truth as being 'personal' <- The concept of relative truth <- Post-modernism The roots go very deep, so even if you try and dampen the effects of sensitivity, it won't change the roots: that individuals no longer have to discuss or justify why they hold an opinion; it is simply enough to say that you have one, and therefore it must be defended simply because it is held.
there are major initiatives to address a lot of the recurring themes surfaced in the survey
Okay sorry @ghadi.
spec is a holistic effort that can improve error messages significantly
Look at expound, pinpointer, etc.
I can admit to a slight apathy towards the years of the same complaints, over and over... I could do better. A lot of folks are super accommodating though.
there will be more coming, I guarantee
In my java work, like someone else said, my real advances have come more often from a team mate walking me through things that from documentation or a tutorial - so that’s normal, i think. On Clojure - I have no teammates - trying to get off the ground on my own!
One thing unaddressed with error messages is something that interprets stackframes
@john I am definitely not directing any of my criticisms to you personally
Is the root cause of this feeling of discontent and not being listened to the speed of the reaction, as opposed to its content?
Perhaps cross-referencing concerns with initiatives and libraries in one place could be helpful? Part of the perception problem might be that beginners expect to see 'one central solution' instead of a whole ecosystem of possible solutions. The Lisp Curse again.
I feel like there is major ongoing work to address the themes in community feedback, but it’s not done. It takes time and it may never be truly done.
@lee.justin.m like most disagreements, the chances are people agree more widely than they are aware. the issue often lies with talking past one another
This is where community is important, not just blogs and books - there needs to be people to help coach and mentor beginners, to help see that it's a continual work in progress, never perfected, but always maturing. To help appreciate 'good enough' while always striving for 'better'.
It's a learned ability, not innate.
there are problems and things that could be improved
right, post modernism is partly to blame, on the cultural front. It's definitely complex.
usually what I see is someone complains about X a lot, X is not a priority for rich, at some point if it is doable rich will land a feature to make clojure extendable outside of core to handle X if someone writes that extension, the original people who complained about X vanish, and a continuing wave of new people complaining about X pass through without anyone bothering with the extension
I think communication here is key. @ghadi may be right, that cool things are coming, but I haven't heard anything about that. I'd love to hear/see a goal in place here. What's the end-goal for tools.deps? What's the end-goal for spec? We hear about things like "specs as data" but none of those have been in official channels.
Is there an end goal?
And a lot of the time it's fine to say "we're working on X, Y and Z have to wait" but again that's communication.
sometimes you don't know what the end state is
Does there have to be?
tools.deps is already past the initial end goal
@lee.justin.m well, with respect to the core team, for me personally, I really don't want dnolen wasting his time translating his opinions into words palatable by the whole world. And doubly so for rhickey. There is an economy of words, and I just don't want the core team burning cycles on marketing
“marketing”
my priority for tools.deps right now is finishing windows installers and after that reducing friction for integrating with various external things
the next thing for spec is going to be an update that has some api changes for more programmable/data-like versions of specs. Rich is still working on it.
Would a list of outstanding areas of improvement, libraries, core features, etc with current status, current resources, end goal, etc get everyone on the same page?
imo, no :)
right..is it about that?
yeah, you know, "CLJS is awesome because we don't use async/await!" rather than "javascript is just doing it wrong"
there's a design page with a lot of vestiges on it
value types in java is like 5+ years of research and experimentation. clojure.spec had a very very rich history / predecessors. It is a different situation for smaller more focused things like tools.deps. Different things have different story arcs
which is bad marketing
tooth pulled, no anesthetics needed
there are at least 3, maybe 4 other projects that Rich, Stu, or I have spent significant time on in the last year that are not yet public as they are in various states of thinking/development
that’s exciting
I first started working on tools.deps in 2016
maybe 2015 even
@john where did you see someone make that critique?
@hiredman I manufactured that one synthetically
but I think it's a common refrain
Is the rationale for not exposing these to the "outside world" because you think they will be thought of as promises, or is there some other reason? Or perhaps you already do, but to a limited set of people?
could all this be public? sure, probably. the issue is that then you spend all your time responding to people rather than trying to realize an idea. that’s a tradeoff. I know where Rich is on that tradeoff. :)
hah, zing.
I think some people in the community could give valuable feedback on some of these ideas. For tools.deps.alpha for example, it would be really nice to approach the problem by talking to the Lein/Boot developers (Not sure if you spoke with the Boot ones), as they have insight into the community pains and may already have some ideas on their own
the goals of tools.deps are imo completely different than the goals of lein/boot
and we have at times sought feedback from individuals in advance. I had several discussions with @cfleming about his macro grammar stuff and with others about various related work prior to spec for example.
I did 2 complete impls that were thrown away before Rich started the thing that became spec
if I had released one of those early impls, people would have been picking that to pieces. would we then have been able to just throw it away? dunno. once things reach a certain level of popularity / visibility, you are constrained in your ability to experiment in public without being tied to those experiments.
I'm happy to hear that you bring in individuals in the community with expertise/knowledge on particular subjects when you feel it's sensible
Even the spec alpha showed signs of that.
people would instead complain that we had released something without documenting it
Sounds like we're about to get that anyway with the spec-as-data updates?
should have waited longer 😉
this is just an inherent tension in these things. there is no right answer to any of these questions.
afaict, all answers gather complaints :)
That’s not fair - there should be no penalty to publicly recognizing one has learned and previous work must be thrown away.
it should be largely api compatible from what I’ve seen
but there is
Different strokes, different folks. Rich may have some regrets not waiting longer now. Maybe not.
no regrets - it needed to be public and get feedback when we released it
@alexmiller agreed there is - just hope we can be more supportive in this forum
It's a balancing edge, and you have to play it by ear. Give some grace. : )
@bjr well I was just kidding, btw
I’m taking off for some spring break time with the kids, talk to y’all later
Thanks for the feedback Alex!
yes and since i was the one griping let me say to all the people who contribute, I really appreciate all the work they do and all the grief they get. i only complain because i love what’s being done here and i want it to work
Also, with respect to complaints, I think it's important to remember, the gift of Clojure has already been given. All this other stuff is mostly icing on the cake. You're here because you like the cake, not the icing. Some icing is disgusting and I'm not much for sugar these days, but regardless, I'm here for the cake and if and when I leave, it'll be because I found a better cake, but not because I couldn't work with the icing.
no, I pick tech because I think it'll be good in the future, too, after the project I'm doing right now is done
That's what I mean by the cake
seems like most (valid) complaints these days pertain to the icing
As an active Boot user and maintainer of several Boot tools — including boot-tools-deps
— I feel that @alexmiller has been super accommodating and inclusive with the tools.deps
stuff.
the keep the metaphor going — the beginner often fails to see beyond the icing
in 2011 it was a smaller cake but went down easier :)
indeed
and from the outside looking in, folks could easily think that all this complaining going on has to do with the cake itself. When, in reality, everybody is arguing about the icing.
Well, it's no ocaml cake 😉
Basically anyone using ocaml is either a die-hard or new JS developer looking for something less insane.
I just happen to work at a company that uses it, because, hey, it's not java.
We're also totally happy with being broken every few months because jane st libs don't pretend to be a community project.
they do use github though
lol
@fellshard Do you have a link to that? I’d like to see it.
Less exercises in this one than they have in their Elixir course, but in general it's sturdy for a video course. YMMV : )
Thanks!
While it’s true that we had some discussions about what I presented at the conj, after that I heard nothing for a long time and then spec came out, which looks basically nothing like what we discussed. I don’t think I had any meaningful level of input into it.
I mean, it is what it is, it’s how Clojure is developed. But I don’t think it’s a good example of community feedback shaping a feature.
exactly