Fork me on GitHub
#off-topic
<
2022-11-08
>
Ben Sless20:11:35

I always learn interesting things from Byrd https://github.com/webyrd/normalization-by-evaluation

👀 2
1
Ben Sless04:11:14

If someone can explain how this is different from reflective interpretation where code is equivalent to neutral values :thinking_face:

Daniel Gerson10:11:56

@UK0810AQ2 mind explaining what that repo is all about? There isn't enough context in the README for me to understand the problem they are tackling.

Ben Sless12:11:09

The end goal is good fast compilers for functional languages. The techniques is normalizing lambda terms by evaluation

👍 1
Ben Sless08:11:37

Played around a bit, looking for relationships with Nada Amin's work on towers of reflective interpreters. https://github.com/bsless/normalization-by-evaluation

p-himik12:11:08

> Normalization by evaluation > I suddenly want to listen to some Powerwolf...

Eric22:11:16

Hello all, I wanted to get some career advice as an aspiring clojure developer. The thing is, I haven’t had an industry job yet and I worry about my prospects of landing a junior role with this language. Would it be wise to shift my focus from learning clojure and learn something like kotlin instead? Is it better to pivot to clojure mid-career?

dpsutton22:11:04

The market for Clojure jobs is a fraction of the market for java jobs. Especially at the beginner level i think

dpsutton22:11:45

I love working in Clojure but it does seem harder to get a foot in the door in the language. Knowing another language would be very helpful when just starting out

Eric22:11:08

Thanks for the perspective! The appealing thing about clojure for me was that I could target JVM and Javascript in a unified language that I think is very elegant. I do feel comfortable building little desktop GUIs in Java and I know a little Javascript, but I haven’t poured my heart into learning the languages and web app frameworks yet.

Daniel Gerson00:11:49

I second Dpsutton's advice. Find any coding job, preferably in a domain that interests you. Then pivot back to Clojure when you see openings or in personal projects. I actually think Clojure is likely to ruin one if adopted too early because you're likely to get annoyed without a repl in what should be a shiny new position.

eggsyntax01:11:12

Pure anecdata, but of the four Clojure teams I’ve worked on, two were interested in hiring junior devs with Clojure experience — although one of those two was pretty cautious about hiring people for their first industry jobs. Not at all sure how representative that is, though. If nothing else, it would probably be wise to have a second, more popular language as a fallback — that way you could start out applying for Clojure jobs and fall back to the other language if you had too much trouble finding one. That first job is the hardest one! Once you get your foot in the door in the industry, it gets much easier in my experience. (that said, I’ve rarely seen anyone fail to get that first programming job as long as they had decent basic skills; it just took longer and involved more tries)

Eric01:11:50

Thanks for the encouragement 🙂 I knew that trying to get my first job in Clojure would be a long shot, but I was willing to try. Now I’m thinking that I should try something more mainstream. Especially now that there are so many layoffs and hiring freezes happening in tech. I think I will try making projects with popular technologies like Spring using Java and Kotlin and hope the odds work out better for me that way.

eggsyntax01:11:13

Still, no harm in applying to the Clojure jobs too 😄 Something worth remembering is that supply isn’t the only thing that matters for a hiring market, it’s the relationship of supply and demand — there are fewer Clojure jobs, but there are proportionately fewer people competing for them. My experience has been that it hasn’t been unusually hard to get Clojure jobs, at least as an experienced programmer (and the fact that Clojure is https://survey.stackoverflow.co/2022/#section-salary-salary-and-experience-by-language suggests that the supply/demand ratio isn’t too bad). But if you only have time to focus on a single language before trying for your first job, I reluctantly agree with the Dans 🙂

marrs09:11:19

@U045R5JFCBD Don't discount JS. Conceptually, it's a lot closer to Clojure than Java is and there are plenty of front- and -back-end opportunities with it.

👍 1
Asier09:11:02

I'm not good at giving advice, I can only say that I know many junior devs with no prior industry experience who started with Clojure(script) and they are doing fine.

Eric21:11:50

I’m glad I decided to ask about this. I had some fears from looking at the Clojure job boards and the recent headlines, but they are being tempered by the things you guys are saying. Focusing on Javascript probably makes more sense than learning Kotlin which is kind of orthogonal to the eventual path I want to take. So I will double down on that as my fallback. And it is good to hear that junior Clojure devs aren’t completely unheard of. I’m probably getting a warped perspective by just looking at job postings online. I guess the bigger picture is that people are getting jobs based on networking and sending resumes to companies regardless of meeting all the qualifications.

eggsyntax14:11:30

Heh, well, at the risk of making the advice you're getting even more inconsistent, > Don't discount JS. Conceptually, it's a lot closer to Clojure than Java is I think that's true in some ways -- it's much less object-oriented than Java, it's not statically typed (although that option is available via TypeScript for those who want it), and it's possible to write pretty decent functional code in JS. It's also available for both front-end and back-end, which sounds like something you want. But in one important way it's very false: Clojure is an exceptionally coherent and well-designed language, and Java is at least decently coherent, whereas JS is drastically incoherent and full of footguns, has lots of confusing and inconsistent ways of doing things, and is chock full of cruft due to the fact that it was designed very quickly and has had to mostly maintain backward compatibility with a lot of terrible decisions. If you haven't watched the classic https://www.destroyallsoftware.com/talks/wat you really should (it's less than five minutes). If you're careful to learn how to write good JS and avoid the footguns, and you're on a team that's careful to do the same, it can be a pretty nice language. If not...it can get very ugly very quickly. There are definitely lots of JS jobs! Not saying it's the wrong decision, just that you should probably be aware of the downsides too before making it 🙂

Rupert (All Street)12:11:59

Many Clojure companies will take developers with no professional Clojure experience. Clojure is a very small language (so it's quick to learn - but takes time to master) and can be a very good first programming language for people. I've trained many people Clojure over my career and some became very effective in just a few months. Clojure isn't for everyone - so it really helps if you show that you have already learnt the basics yourself already and that you have an interest in learning and advancing in the language in your own time not just when at the office.

Ben Sless04:11:14

If someone can explain how this is different from reflective interpretation where code is equivalent to neutral values :thinking_face:

Ben Sless08:11:37

Played around a bit, looking for relationships with Nada Amin's work on towers of reflective interpreters. https://github.com/bsless/normalization-by-evaluation