Comment by jacquesm

Comment by jacquesm 5 hours ago

42 replies

It's funny how HN goes through these Erlang cycles. It's a long standing tradition, starting off with 'Erlang Day': https://news.ycombinator.com/front?day=2009-03-11

Erlang gets a lot of stuff right for scalable web based stuff, and even though there are many of its influences that have by now made it into other languages and eco systems it is still amazing to me that such a well thought out system is run with such incredible modesty. You'll never see the people behind Erlang be confrontational or evangelists, they just do what they're good at and it is up to you whether you adopt it or not. And that is an interesting thing: the people that are good at this are writing code, not evangelizing. If I had to reboot my career I'd pick this eco system over anything else, it has incredible staying power, handles backwards compatibility issues with grace and has a community that you can be proud of joining. Modest, competent, and with a complete lack of drama.

noir_lord 4 hours ago

> You'll never see the people behind Erlang be confrontational or evangelists, they just do what they're good at and it is up to you whether you adopt it or not.

The big open source projects where pretty much all like that in the past, in the 80's/90's/early 2000's - in that respect they feel like a pleasant anachronism before everything needed to be promoted/self-promotional influencer like, the users did the evangelism but the creators where usually much more chill.

Obviously the vast majority of open source projects are still like that but there is definitely a lot more in your face promotion of things that feels different somehow almost aggressive/corporate style even when there is no paid product.

Not knocking the ones who do it, if it's open source they can sing it from a mountain top for all I care, the license it's under matters more.

  • isodev 3 hours ago

    I think what has changed mainly is that today we have tools, languages and entire ecosystems that exist only as means to support someone’s product line.

    Take Swift for example. A giant gatekeeper of a corp decided to make it the only (reasonable) way to build apps and so it exists, powered by countless indie developers constantly creating content around it. Would Swift be a thing without everyone being forced to use it? I don’t know, but I don’t think so.

    So in some ways we’ve traded unique and effective solutions to “popular and mainstream” things that scream the loudest. You wouldn’t get fired for choosing Swift. Or Azure.

    • Cthulhu_ an hour ago

      When I was working with it (I was there, 4000 years ago) there was some talk about Swift for the server, but neither obj-C nor Swift ever really breached containment of the Apple ecosystem and -tooling. Which is a shame because at the time I enjoyed working in XCode. Who knew using a mouse swipe to go back in your code would be so natural? Not any other IDE developer, ever.

      Last time I worked with it it felt very sluggish and buggy though, in theory building UI elements with SwiftUI is great, in practice it was slow and needed to restart very often, and that was with simple components.

      • skydhash an hour ago

        That is why I don’t like those ecosystems. They’re all relying on magic (code generation and indexing) for everything instead of just providing a good notation.

        If you’re creating that closed of an ecosystem, at least learn from history and create something like smalltalk.

  • kace91 3 hours ago

    >somehow almost aggressive/corporate style even when there is no paid product.

    For those who collaborate with open source for political/ideological reasons (which does not need be the case), it makes sense to join the battle for attention.

    As long as the product isn’t compromised in the way, I think it’s very good to see open source influencers.

    • pxc 2 hours ago

      GNU Guix has a good blog, but I don't feel like they are very "marketing" focused.

      It's hard to describe precisely, but a lot of free software projects do a good job of putting themselves out there in an unfussy way. There really is something refreshing and cozy about that.

      • keeganpoppen 3 minutes ago

        i think this is especially true of projects run by people with deep experience in the field and are in it “for the love of the game”, and don’t feel the need to stunt on everyone in hopes that they are taken seriously.

  • actionfromafar 4 hours ago

    I think it's because we are wired that attention is it's own currency nowadays. And it's also true. Even if there's no paid product, you get strength in numbers. If you depend on an open source library, it's usually better for you if others depend on it too.

    • noir_lord 4 hours ago

      Certainly an element of that but there are also cases where the superior product "lost" to the inferior product because the inferior one was better marketed.

      So doing some level of promotion becomes necessary if you want users even when you have the better product - the superior product speaks for itself doesn't often apply any more.

      • marcosdumay 2 hours ago

        > doesn't often apply any more

        It actually never did, for almost any product.

        And programming languages are in the lower end of quality actually impacting decisions. People are incredibly resistant to changes there, and just can't evaluate competing options at the same time.

sph 4 hours ago

I don't think it's cycles, more like newcomers rediscovering the future.

I've learned Elixir in 2016 after a lull in my interest in programming languages, and 9 years later it's still my favourite environment by a country mile. It's not the language per se, but the BEAM, the actor model, the immutability — just makes sense, and doing things the C/Rust/Javascript/Python way is like building bridges out of cardboard.

For example, I've stepped into the world of game dev and Godot, which is fantastic and uses a regular object-oriented model. After trying to build a non-trivial desktop app with it, my thoughts are consumed by the fact that mutable state and object orientation is the silliest idea, and I'm speaking as someone that really got into Smalltalk and message-passing objects.

I don't even need actors and OTP, I just want some immutable data structures and functions operating on them. Erlang/Elixir are fantastic to build servers, but there is a sore lack of something closer to the metal within 80% the speed of a native language. I would build an entire operating system out of it. Why has no one put microkernels and Erlang into a blender? I know there's QNX, but it's still UNIX, not Erlang.

  • jacquesm an hour ago

    > Why has no one put microkernels and Erlang into a blender? I know there's QNX, but it's still UNIX, not Erlang.

    That's a very good question. There are some even lesser known dialects out there that do this but you are going to find it hard to get to the same level of feature completeness that Erlang offers out of the box.

    QNX and Erlang embody quite a few of the same principles, but QNX really tried hard to do this at the OS process level in a way that destroyed a lot of the advantages that doing the same under Erlang would have. I think the main obstacle is the fact that the CPU does not support reductions natively. Maybe you could take it a step further and design an FPGA CPU that implements the core features of Erlang at the hardware level?

    That would be an absolutely awesome project. Usually when you can think of it someone has already done it so a bit of googling would be a good way to start with that.

    • sph 6 minutes ago

      > That would be an absolutely awesome project. Usually when you can think of it someone has already done it so a bit of googling

      I've done a bit of googling and research, but still haven't found the time to create a prototype. I do agree that it's an awesome idea, and it's been stewing in my head for a couple years now!

      There are a lot of moving parts (scheduler design, probably needs its own high level language and bytecode, mapping capabilities onto actor semantics, etc.) that are outside what current OS-research seems to be focused on.

    • shanemhansen 32 minutes ago

      You nerd sniped me a little and I'll admit I'm not 100% sure what a reduction is but I've understood it to be a measurement of work for scheduling purposes.

      A bit of googling indicates that actually you can use performance monitoring instur to generate an interrupt every n instructions. https://community.intel.com/t5/Software-Tuning-Performance/H...

      Which is part of the solution. Presumably the remainder of the solution is then deciding what to schedule next in a way that matches erlang.

      Disclaimer: this is based off some googling that makes it seem like hardware support the desired feature exists, not any actual working code.

  • dzonga an hour ago

    > want some immutable data structures and functions operating on them.

    Clojure has that for you. plus its jvm which means for your desktop use cases it works. hell with graalvm can be ported to native.

    • jacquesm an hour ago

      I used to think that Clojure was going to be the first FP language that was going to go mainstream but it seems to have fizzled. What went wrong?

      • skydhash an hour ago

        FP language is very hard on novice programmers. You can write thousands of lines of bad javascript/java/python code, but you won’t write ten in FP without the whole thing blowing up.

        And then there’s the whole evaluation instead of instructions. With FP, you’re always thinking recursively. With imperative, you can coast on a line by line understanding.

        • sodapopcan 35 minutes ago

          In my experience it's still very possible to write many, many lines lines or utterly shit FP code, but I know what you're saying.

  • lomase 37 minutes ago

    Lets count the number of comercial sucesful released games that don't use mutability or object orientation....

    I can't find any.

  • mycall 2 hours ago

    What about OCAML, does that fill your needs?

    • ccortes an hour ago

      I really want to get into ocaml but the syntax is sooo ugly I feel like you need a great IDE set up to be able to be productive with it.

      • codr7 23 minutes ago

        Might want to check out ReasonML.

    • sph 2 hours ago

      It’s perennially in my list of languages to check out. It felt harder when I looked into it 15 years ago. Now that functional programming is second-nature, it should be much easier.

      Thanks for the reminder.

marceldegraaf 5 hours ago

It's funny that you mention this, and it made me take some time to appreciate I've been working with Elixir full-time for almost 10 years now, and the entire experience has been so... stable.

There's been little drama, the language is relatively stable, the community has always been there when you need them but aren't too pushy and flashy. It all feels mature and – in the best possible way – boring, and that is awesome.

  • jacquesm an hour ago

    Being boring is the hallmark of technology that it is worth to invest a career into.

    • [removed] an hour ago
      [deleted]
  • noosphr 4 hours ago

    I've moved from Linux to OpenBSD for this reason.

    It's all so boring it's wonderful.

    • christophilus 2 hours ago

      I like OpenBSD, but I like Docker and Steam too much to daily-drive it.

  • [removed] 4 hours ago
    [deleted]
  • zwnow 3 hours ago

    For me it took a tremendous amount of work to somewhat understand the OTP stuff though. Its one of those languages where I can never be confident about my implementations, and thankfully it has features to check whether you have stale processes or whatever. A language I am humbled by whenever I use it.

    • asa400 40 minutes ago

      Thank you for this post and I'll add a note for people who are seeing this and are maybe discouraged about learning Erlang/OTP/Elixir.

      I generally agree with you that learning Erlang stuff can be daunting.

      I will say that many things worth doing are not easy! Erlang and the whole OTP way of thinking is tough to learn in part because it is genuinely different enough from everything else that is out there that one's odds of being familiar with its conceptual underpinnings are low.

      If you have trouble learning Erlang (and OTP specifically) it's not because you're dumb, it's because Erlang is different.

      Learning Erlang is not like learning any other dynamic language you've learned. Learning Erlang is closer to learning a bespoke operating system designed to build reliable low-latency long-running systems. It's a larger conceptual lift than going from one dynamic OOP language to another dynamic OOP language.

    • giraffe_lady an hour ago

      I love saying this but OTP is a really roughneck standard library. They just added shit to it as they needed it without apparently putting too much consideration into the organization, naming, or conventions.

      It makes it very powerful but very disorienting and experience gained with one part of it often does not really prepare you for other parts. Usually each specific tool was created by someone who used it immediately, so it's all reliable in its way. But there is a lot of redundancy and odd gaps.

      Elixir's almost extreme attention to naming, organization, and consistent convention is almost as far as you can get from this approach too. It's fun to have them in the same ecosystem and see that there are actually pros and cons to each approach.

SeanDav 4 hours ago

I am just wondering when the next "We-Love-Haskell" cycle is going to start!

  • jimbokun 11 minutes ago

    Feels like Rust has stolen a lot of Haskell thunder, in the sense you can write similar code and satisfy that functional programming itch in a much more popular language, while falling back on imperative programming if you really need it.

cpursley 2 hours ago

1/3 of hn posts (maybe more) are "look at this thing we built!" or a combo of that with "plus all this VC money!" where op has basically re-invented something that has existed in Erlang since forever. I don't mind all these cool new things (it's why I visit). But personally, I prefer to cut to the chase and just use Erlang (well, in my case - Elixir).

rat9988 3 hours ago

Nice write up. Thank you for taking time to evangelize it.

  • [removed] an hour ago
    [deleted]