Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Elixir 1.11 (elixir-lang.org)
381 points by nifoc on Oct 6, 2020 | hide | past | favorite | 101 comments


> IEx also has been improved to show the documentation for Erlang modules directly from your Elixir terminal.

This is a really nice change for those of us who straddle both languages. I've done a fair bit of work with both ets and the crypto module and having to jump into and out of firefox felt at odds with the rest of the development experience.


Also the online Erlang docs are arguably even more utilitarian than iex docs output...


That made me laugh, but it's true. The Erlang docs are like 1980's brutalist architecture. Functional but utilitarian. But it's great to have the Erlang docs in IEx; it's my favorite docs interface.


Yeah, IEx's h/1 function is great. I just wish it had some sort of built in search for when you don't really know exactly the Module and function you're looking for.


"Functional BUT utilitarian" ?

You mean "Functional AND utilitarian" because for me these both are very welcome features.


The conjunction here is purely to taste, since utilitarian implies functional, as well as not particularly attractive; both are correct (as would just 'utilitarian', since it's not a loss of information, implying as it does the functional aspect).


I read that comment less literally and more like “they just about work for their function, but damn they ugly” :-)


Sure, but do you interpret "functional and utilitarian" as meaning anything different? Utilitarian tends to imply functional + ugly.


The Common Lisp HyperSpec on the other hand looks like it was written by a monk obsessed with dictionaries.


Reading through the details of this release, I have to say this sort of functional backend/compiler/performance, etc style releases make the whole product as a whole better in the long run. This tick/tock approach to releases is what every software project should strive for.

Too many consumer focused products become obsessively new-feature driven development [1], often to have new things to announce, or to appease the loudest whining customers/industry critics of the day (operating systems like MacOS, Windows, and mobile platforms are the classic examples).

Much like in the design world where saying "no" often and pushing back against fanciness is critical, the same in software for pushing towards general structural improvement iterations is key to making good software.

[1] Ignoring of course the bug-fixing-driven development cycle that many projects get trapped in.


IIRC some time ago José said Elixir is stable, and there's no v2.0 coming any time soon. There will be updates, but it's just polishing and refining a stable product.

The language might be still be over-hyped, but the language implementation itself has reached the plateau of productivity. Which is great, I know of some language ecosystems where true productivity is never, ever reached.


I would argue that operating systems have been feature-driven.

For years now at best you can see 1-2 minor features a year. Mostly its just some design tweaks.


Pretty stoked for this. I started learning Elixir a few months ago [0] and it's been a great balance of fun + practical. Way easier to get up and running compared some other FP languages I've dabbled with in the past :P

Also shameless plug: we're currently working on an open source messaging product called Papercups [1] if anyone is looking for an Elixir project to hack on!

[0] https://www.papercups.io/blog/elixir-noob

[1] https://github.com/papercups-io/papercups


I know you from your previous ShowHN, good luck, your product looks great!


Thank you :)


Runtime configuration is my favorite new feature of this release.

Dancing around runtime vs compile time configuration seemed like it was one of the "harder" parts of dropping into Elixir.

edit: grammar


Same. Same.


Question from someone who's never tried Erlang/Elixir but is interested.

If you're starting a greenfield project in 2020, is there any reason to use baseline Erlang instead of Elixir? I get the impression that Elixir is a strict improvement (besides legacy compatibility). But this is a very very uninformed impression.


Try both. It may be because I've been doing Erlang so long but I still prefer it and its tools (like rebar3 and Common Test). I find the syntax more consistent, less verbose and the lack of Elixir style macros to mean less confusing third party libraries.

But I do think Elixir has its strength in web applications. The macros make Phoenix and Ecto much simpler for building full web applications and if I were building a full fledged interactive web application I'd reach for those.

So mainly personal preference, you may find Elixir preferable, but all that to simply say it is not a "strict improvement".

Oh, and one none personal preference reason: it is nice to do libraries that don't benefit from being written in Elixir (like postgrex and jason get a lot of performance out of using macros so there isn't an argument to write those in Erlang) and aren't specific to Elixir (like a Plug adapter) in Erlang so they are more easily usable across BEAM languages, a list that continues to grow.


If you're interested in Erlang/Elixir, you might want to watch this video: https://www.youtube.com/watch?v=JvBT4XBdoUE (GOTO 2019 • The Soul of Erlang and Elixir • Saša Jurić)

It shows off the power of the BEAM VM -- and kind of makes you stand back and go "whoa.. how do they do that?"


I work in Elixir most of the time but can read and write Erlang reasonably well, here's my two cents.

Elixir's syntax was inspired by ruby and so if you've used ruby or look at ruby code and think, "yea, I get what's going on here" then you will likely find working with Elixir's syntax preferable to Erlang. Erlang's syntax was based off of Prolog and so it will be less familiar, unless you have done a bunch of Prolog programming.

Elixir layers on a bunch of things that are very nice to have at a language level, the ability to rebind names is probably the one that most impacts code. In Erlang you can't rebind a variable, so Erlang code ends up either using lots of very small functions of having variables like `n` `n2` `n3`. It's not that you can't write good, clean, easy to reason about code in Erlang, but if you are coming from a language with mutability and variable rebinding, it's a bit of a culture shock. I find that Elixir hits a nice medium ground to allow you to wrap your head around immutable data structures, functional programming, actor model, OTP without ALSO having to climb the hills of unfamiliar syntax and some limitations (like variable rebinding) that aren't strictly necessary.

From a tooling standpoint, I find Elixir to be a bit more pleasant than Erlang. Mix (build tool) is great, ExUnit (unit testing) is great, ExDocs (docs generation) is great, Hex (package management) is great. The Elixir community has somehow stayed pretty unified when it comes to tools and for the most part they work really well.

From an interoperability standpoint, you really don't leave anything behind choosing to use Elixir over Erlang. Erlang dependencies work just fine, and the interop is so easy, here, I'll give you an example.

Want to use an Erlang module directly from your Elixir code, here's an example of how to use the timer module.

  :timer.seconds(1)
That's it, that's the interop, you don't have to import anything weird, you don't have to fence off your code, you don't have to juggle types from Elixir types into Erlang types and back again. Want your Erlang interop to look more like elixir, two lines of code.

  alias :timer, as: Timer
  Timer.seconds(1)
Overall the Erlang and Elixir communities are friends (and Gleam, LFE, and all the other BEAM Languages). It's a very positive community all working to build great functionality on top of the really cool piece of tech that is the BEAM VM.


Speaking for myseld, rebinding variables in Elixir is my least favorite part of the language, and I specifically avoid using the feature.


Yea, I'm mostly approaching this from the point of view of learning any new language is climbing a learning curve. If you are coming from most of the mainstream languages (java, javascript, python, etc) you are going to want to rebind things because that's how imperative languages roll.

This is probably colored from my own experience of going from Python (mainly) to Elixir (mainly). As a toy example, imagine having to remove all the negative numbers from a list in the middle of a function.

Most python programmers would reach for a list comprehension after learning about list comprehensions (which is great because they are more FP)

  my_list = [number for number in my_list if number >= 0]
So you pick up Elixir and you are trying to do the equivalent thing after reading through the docs

  my_list = for number <- my_list, number >= 0, do: number
And that works fine, it's my_list is exactly what you expect, no negative numbers.

Let's try the same thing in Erlang

  MyList = [X || X <- MyList, X >= 0].
  ** exception error: no match of right hand side value 
As a new user coming to the language, trying to do something so simple and getting a somewhat opaque error message is a significant degree of friction.

I have found that when I want the old value of a variable to no longer be available rebinding the name is a great way to ensure that. If in the future I decide that I need the old value later on in the function I can always just change the bind to some other name easily enough, but it prevents me from using state when I meant to use updated_state.

Not to say one way is better than the other, I just found this use of rebinding to work well for me by making it "impossible" to use the old / stale / out-of-date value.


I'm on the fence about re-binding variables. I don't really mind it and have gotten used to the pin operator when I need it. I actually use variable re-binding quite a bit but always only in situations where I want a prime.

  def foo(bar) do
    bar = decorate(bar)

    {:ok, bar}
  end
I like that better than calling it something like `new_bar`. I kind of wish there was prime syntax along the lines of `bar' = decorate(bar)` but I can deal with re-binding when only used like this (and really, the stakes are low). More complex cases can generally always be handled with piping.


my preference is to only use rebinding if I need to rename something more than once (can happen, in with blocks), and when I do it I postfix-sigil with ! as a code annotation to remind myself to watch out when refactoring the code.

    def foo(bar!) do
      bar! = decorate(bar!)
      bar! = some_more(bar!)
      {:ok, bar!}
    end


Ha! That's a new use of `!` I haven't seen :) But I suppose we are saying completely opposite things. I use rebinding only when I re-bind once. In your example, I would use pipes with a single re-bind:

  def foo(bar) do
    bar =
      bar
      |> decorate()
      |> some_more()

    {:ok, bar}
  end


well, I guess I gave a poor example, suppose you needed to destructure that bar! out of an ok tuple.

    def foo(bar!) do
      with {:ok, bar!} <- thing1(bar!),
           {:ok, bar!} <- thing2(bar!),
           {:ok, bar!} <- thing3(bar!) do
        bar!
      end
    end
Inspiration came from julia, where ! at the end of the function means "watch out, one of the parameters is gonna be mutated!"


Ah ok, I see! I didn't think of this situation. I'm pretty new to the language and only have done hobby projects so I haven't run into this specific scenario. I think here I would just use different names, even if ugly. To me the only "danger" is just in getting confused about what is what. There is otherwise no danger from a memory standpoint since Elixir is immutable. But I can appreciate your use of it here. [edited to add a missing word]


If I get to choose the style, I like doing this...

    bar 
    |> decorate() 
    |> some_more() 
    |> case do 
      result -> 
        {:ok, result} 
    end


I like that. I never occurred to me to pipe into `case`.


you shouldn't do it in your code, and code linters (well, credo) can check for it and yell at you. I think you might have to activate it currently.

I 100% guarantee you don't miss "immutable variables" in your REPL.

    Pid = module:start_link(...).
oh crap. start_link/n returns {:ok, _}, not naked pid.

    {ok, PidForRealThisTime} = Pid.


I used Erlang in some university courses, and once wrote a simple crud app in Elixir/Phoenix, so my experience is somewhat limited.

Erlang's syntax is unusual, but after grasping the concepts I always found the language logical and easy to understand. On the other hand, I haven't been able to get comfortable with Elixir. It's a significantly larger language, which comes with higher complexity (but also lets you write code at a higher level of abstraction). I often found myself only half-understanding the code I was writing (and I always make an effort to fully understand what I'm doing).

And personally I find the Elixir syntax to be among the most confusing and inconsistent (especially when compared to Erlang).

Nevertheless, if I was making something web related, I would definitely go for Elixir (because of Phoenix). If I was making something lower-level, I would probably consider both options.


I think it's mostly a matter of taste which syntax you prefer. Where Elixir has the most advantage, in my opinion, is Mix, the language's build tool / project config / task runner. You use the command line tool to compile your project, run your tests, and any other user-defined task you'd like. And you use the Mix module to define your project's dependencies, environments, and build targets in Elixir code. It's a really nice all-in-one Swiss Army knife compared to the cobbled-together build processes from disparate tools found in other languages.


Why I choose Erlang:

- simpler syntax: there’s no Erlang program that you can’t read after getting comfortable with the language. Seriously. Go read OTP source or Ryaks, everything is extremely clear and explicit. To me, easier to read also means less bugs.

- It’s so different from other languages that, IMO, it makes it easier to “think in Erlang”; the syntax fits so well the semantics that I find it easier to think in terms of processes, patterns and the ocasional recursion when switching from other language (most Erlangers are polyglots IME).

*Edit: Reliable network services (Erlangs sweet spot) are much easier to write and maintain when written in a clear and explicit way. I love macros (consider myself a lisper actually) but I think they’re the wrong tool when writing bullet proof network servers (macros are basically everywhere in Elixir).


Personally I see no reason to start a new project with Erlang unless you really enjoy its syntax (perhaps for someone who has a solid background in Prolog?).

With Elixir you get everything in Erlang plus a lot of extremely powerful libraries/frameworks (e.g. Ecto and Phoenix), macros, a friendlier syntax etc.


It's not an improvement if you prefer prolog syntax (for the record, I personally don't). Everyone likes to say that syntax doesn't matter, but it can affect your time-to-POC, example comprehension, debugability, especially if you're starting a greenfield project.

Otherwise, I would say stick with elixir. It is more opinionated about how to do tests, how to organize your code, how to do documentation, how to deploy, how to use libraries, all of which will make your life way easier, especially for a greenfield project.


I have been using Erlang since 2008, and started using Elixir in 2014.

I much prefer the Elixir syntax. It files off the rough parts of the Erlang syntax, e.g. needing to keep track of commas, periods and semicolons at the ends of lines. The most important thing Elixir adds, though, is lisp-style macros, which makes everything else easier.

This is the post which made me switch to Elixir: https://littlelines.com/blog/2014/07/08/elixir-vs-ruby-showd... We get the best of both worlds: the ease of use of Rails with the power of Erlang.


The official release announcement can be found here: https://elixir-lang.org/blog/2020/10/06/elixir-v1-11-0-relea...

It provides more context, links, and other improvements over the CHANGELOG. I am not sure if it is possible to update the link in the post though.



Thank you!


@dang can update it


I started to learn Elixir and Phoenix awhile ago. I liked it but stopped due to (i) there's no job opportunities near me for Elixir and I wanted to the learning/projects I do on my own to help me in interviews; and (ii) it's not a strongly typed language which I have come to learn is my favored type of language


Elixir/Phoenix is my hobby. I build personal projects on it.

I was able to find a few jobs, but not a ton (this was a couple years ago). The jobs that are out there all wanted experience but obviously that's hard to do with a new platform. I got an interview with one company that I thought understood that I only had a few months experience as a hobbyist (which means I'll be doing a lot of Googling even for common APIs) but they rejected me. At this point my experience with professional Elixir has not been positive.

I love the language but I'll probably just stay a hobbyist, at least until things change.


It is an interesting (but probably very subjective) observation that the majority of companies with a rare or esoteric stacks hire only experienced devs with the stack and refuse to train them themselves. Maybe it is because they are smaller and lack resources. And on the contrary, in my experience, large companies based on common languages like Java, C#, JS and the like dedicate huge resources for training their junior programmers from the grounds up.


Which ultimately makes those rare and esoteric stacks less likely to survive because experienced engineers who don't have experience with those particular stacks have no ways of getting those jobs without experience in those jobs.

Companies like Jane Street make more sense. They use ocaml but they don't expect you to have any ocaml experience coming in, but they also have plenty of resources for training and hiring talented engineers.


Think about young startups that aren't sure when the next round of cash will come and their personnel stay there on average 2, 2.5 years. Spending 6-8 months on getting a new developer productive with a new language is super expensive for such a company. In fact, employing juniors in general is pretty risky for such a company.


A senior developer though should be able to get productive with a new language in a few weeks. It's not such an investment ....


Sorta true, often times not really. You can ship code that most likely works, but I'd still prefer a senior who knows the stack over you if I was the founder. You're saying in depth knowledge of a framework / language counts for nothing?


Of course, the startup is doing what it takes to survive. I'm not saying this approach is wrong in any way. I'm just saying that this will result in these niche stacks staying niche and have a much smaller dev pool to hire from, now and in the future.


Phoenix is a fine web framework. But with the shared-nothing approach of designing webapps, they tend to be pretty simple to both isolate and make concurrent regardless of your stack. I think BEAM languages are much more interesting for backends where a shared-nothing approach isn't an acceptable solution, and I feel like that's where its power and uniqueness over other languages really shines.


I had this issue too, even before the pandemic. In fact back when I was looking even if there were Elixir job postings they often strongly preferred a Ruby/Rails background on top of that, which I didn't have.

I just decided it's one of my hobby languages. If a job comes out of it in the future, that's awesome.


I will give an opposite experience. I was hired with zero previous knowledge of Elixir or functional stack (well, except Haskell course at uni). The other dev actually came from C# background (I came from Ruby). 100% remote.


How did you find the job and how did the interview go?


> near me

You are experiencing the same global pandemic the rest of us are, right? Remote work and all that? (It’s honestly not for everyone. I prefer some physical facetime myself or I... “get disconnected”)

> not a strongly-typed language

While this guarantees elimination of a class of bug, pattern matching plus guards cover most of the potential bug surfaces there IMHO. I know the language creators have been considering some directions to go, there


That is a good point and I am working remotely in my current job until next year at least. I think my time and effort is best put into trying to get a job in the tech stack I know at the moment rather than trying to switch.


Pandemic or no pandemic, most jobs are at least local to the country. If he is from Russia it's way harder for him to get a job in a U.S / EU company. Also - if it's hard for him to get an Elixir job now (and let's assume he knows if it's hard or not and heard of the concept of remote), while Elixir is past it's peak, is it a good bet to keep going the Elixir route?


> “Elixir is past it’s peak”

I would really appreciate any data that backs this up. Or is this a personal observation written as if it was a consensus? Because if we are going by personal experiences, the community definitely feels bigger and more active than before to me.


https://insights.stackoverflow.com/trends?tags=elixir

Now you may say Stackoverflow isn't a good measurement. In Tiobe Elixir hasn't made it to the top 50 https://www.tiobe.com/tiobe-index/

There is little reason for me to believe Elixir is before it's peak, the data is showing otherwise. Elixir's contemporaries (Rust / Go / Kotlin) are at a totally different place usage wise. So I tend to think this is it for Elixir, it's all down hill from here. If you have data showing otherwise please let me know.


That’s very little data to make such broad claims.

Up until 2017 or so, you could see the Elixir community active on StackOverflow with answers from José, Chris and most maintainers. Then the community collectively moved to Elixir Forum. Wouldn’t you prefer to ask questions where the maintainers can also answer? Per the Elixir Forum stats, the number of active users keep growing.

I won’t comment on TIOBE because you can find plenty of critique elsewhere. For example, in the Redmonk rank, Elixir does fairly well on the GitHub axis, and is ahead of contemporaries like Clojure and Julia, and ahead of other functional languages like Haskell, Ocaml, Erlang, and even F#.

I strongly believe Elixir is before its peak. Elixir is most likely still growing, just not at the same pace as languages like Rust or Kotlin.


> and is ahead of contemporaries like Clojure and Julia, and ahead of other functional languages like Haskell, Ocaml,

That's kinda my point. These are the languages you should compare Elixir to, the esoteric ones. Not to PHP, not to Node or not even Ruby. I doubt this is going to change much.

What I said about Elixir (lack of jobs) is also true for the languages you listed.


OK found something to help us quantify this debate https://towardsdatascience.com/these-are-the-real-stack-over...

Now this is interesting because this counts question page views, not questions asked.

You can choose Elixir in that embedded tool, it's too bad its only for 2017-2018 but it still validates my point. My guess is the numbers for 2019-2020 are worse for Elixir.


I don't see how this is any better. Most traffic on SO comes from search engines and if the questions and answers are elsewhere, such as in the Elixir Forum, then search engines will lead devs away from SO.

You say the language is in decline and none of this is solid evidence that's the case. It just says Elixir devs are not really active in Stack Overflow, which anyone in the community would be able to quickly point out.


You asked for data, I brought you the most relevant thing possible yet you keep going to "Elixir Forum". I don't think you want to hear about data, you want to hear about findings that reenforce your opinion.


Do you seriously believe that this data is “the most relevant thing possible” to assert the claims “Elixir is past its peak” and “is all down hill from here”?

I am not refuting the data, I am refuting the flawed conclusions you are drawing from it. You are taking the decline in usage of one service as an overall indicator of the community. I provided a possible explanation. I mentioned the GitHub ranks as counter evidence. But way to go on the ad-hominem.


I've dabbled in Elixir for quite a lot over the past few years, and I have to agree with the general trail of thought you're showing. If I have a question about Elixir, I don't even think about going to StackOverflow for it. I either go ask on ElixirForum, or Google for my problem (which, in most cases, lands me to an ElixirForum thread rather than a StackOverflow one). I think the surge in the use of ElixirForum is inversely correlated with the use of StackOverflow: the more the forum has grown, the less reason there has been to use SO.

I do worry about the impact it has on these "popularity tracking" services though, since the discussion living elsewhere might (falsely?) indicate that the language isn't attracting developers.


Interesting theory. Let's agree that it's inconclusive then!


What exactly leads you to believe that Elixir is past its peak?


> Elixir is past it's peak

It's funny because not only is popularity not a good indicator of the quality/utility of a tool, if it is overpopular it can actually hurt things


Also, looking at the numbers in the UK on Linkedin: 132 Elixir jobs for the entire UK (ruby has 1941, php has 4832, java 10973). I'm not saying it's impossible but 132 mentions is not a lot. And it's not as if no one is fighting you for these Elixir jobs, quite a few people still want these jobs. Is Elixir still being chosen for new projects by startups or is it all python / go / rust ? The numbers for Elixir are very low.


People who are hiring for roles using smaller languages know that there are few people local to them who are practitioners in the language. They tend to do one of two things about that:

1. They don't even bother advertising a position in local geographical "general" job boards. (Job postings on LinkedIn cost money for every day you have them up; they're a waste of resources if you can predict with high confidence that nobody will find the role through there.) Instead, they'll advertise globally but targeted to the language's community (i.e. language-specific job boards, forums and chat groups, newsletters, etc.) This is where the people using the language are looking, too, anyway, because they also know that there are too few local opportunities for it to make sense to invest the time in checking local job-boards for a job matching their skillset.

2. They don't bother hiring for the language. Instead, they hire for "experience with [relevant language paradigms]" and "experience with any of [similar, more-popular languages]" and then expect the new hire to learn the language on the job.

My personal job-criterion for hiring Elixir devs is "a polyglot in several different language paradigms, fluent in at least one functional language." I find that that filter actually predicts better whether they'll be a good Elixir dev, than actual experience using Elixir does.

-----

As an aside, there's also the fact that languages like Erlang/Elixir (or the MLs, or the Lisps, or Prolog, or...) tend not to be languages used for everything in a company, but instead tend to be languages used for the secret sauce core component of a company. A lot of the time, companies don't talk about using these languages, even though they do, because they consider them a competitive advantage over their rivals in whatever niche they occupy.

Heroku is an obvious example: much of their architecture was written in Erlang [nearly everything at first], but they never advertised that fact once in any official capacity. Likewise, HFT firms never mention they're using ML or Prolog, but many do, because trading bots are often just souped-up expert systems. The only time you find these things out, is when having a beer with ex-engineers from those companies.


I'll echo this - when I've worked in polyglot shops, specifically on a team that did a lot of Erlang, we hired for "exposure to functional paradigms", not Erlang. The only places that looked to hire the specific language (and even that was negotiable) were places that just had Java. And the average quality of applicants was universally worse.


It's a common practice to at least say what stack you're working on on a job ad. If it's not a requirement I usually see "We use Rails but don't expect you to know it already".


The JD was, obviously, far more descriptive than the four words I listed there. I'm saying the actual, relevant requirement, not the description of the job.


While you may be right, looking at job boards is the only objective measurement I can make. Maybe the jobs are hiding under different names, in different places. Who knows. To me, seeing there's little jobs and that there's a clear decline in Stackoverflow Trends, and that Elixir isn't even in the top 50 in Tiobe, this all means something. Hearing of people saying they can't get a job - means something. I'm sure if you're in one of the major tech cities in the U.S, you could probably land an Elixir job. You can also land a Haskell job. Or Ocaml or anything else under the sun. This means little for most people who don't live there.


There is also a funny effect which is driving Python to be the most "popular" language. Someone will post a job advert for e.g. Java, and list Python as being one of the "nice to have" languages, either due to machine learning, devops, or just because it's nice to know a scripting language. Python is currently the nice to have language. So you see it on the list of hot languages, but in fact there are not all that many Python jobs, they are all actually e.g. Java jobs.


I see plenty of new startups in Elixir and haven't had any real issue finding Elixir client work since I switched to it. Elixir is not nearly as ubiquitous as Ruby was and I don't think it will be. I don't think that's necessary either. For people playing the numbers game I guess Java, Python and JS are the languages to pick.


It's not as ubiquitous as Ruby is currently either, despite Ruby declining quite a lot you can't really compare the 2.

There are a lot of happy devs who can find Elixir work, it depends a lot on location, past experience etc. I do think the number of jobs advertised is fairly low compared to demand. SO on one hand it could lead to high salaries. On the other hand it could lead to not all people landing a job (which if you look at the comments some people here are complaining about).


I’m starting to see more and more jobs here in London, including one with live view.


I recommend starting up a side project to learn a language. That's how I learned Ruby, and consequently Ruby on Rails 15 years ago.


What's a good side project, if one is not really interested in the problem space of the side project?

I.e. I mostly just program for money, so how do I motivate myself to do a side project I'm not interested in, just to learn the language?

I wonder if I could ask my employer for two weeks of time to "rewrite" parts of our backend in Elixir, just so I could scratch that itch, without any of the consequences of it actually reaching production.

Like a programming language sabbatical


I find building a simple game (like tictactoe) in Phoenix Liveview to be a good learning project. You can layer on multiplayer using Phoenix pubsub once you have a working one player version. You can also then layer on structs, typespecs, or any other idiomatic features of the language that you need practice in.


Exercism is great for learning a language. https://exercism.io/tracks/elixir


I really think that is the only way. My issue is that I want to make the most of my free time in order to help me in interviews. I think picking up Elixir/Phoenix wouldn't help me since there are less jobs and I would have to take focus away from a stack that I have a better chance of getting a job in.


We're hiring for Elixir engineers, and specifically a Senior Elixir developer: https://www.joinpapa.com/careers/6IexFa6irc36vwF6aKXkE6/seni...


It's great to see some type checking sneaking in Elixir :)


Are there any plans for JIT compilation for elixir/Erlang and if not why not?


Slated for release in OTP 24 I think. This covers the spproach they use: https://youtu.be/lM7UV95Rpyo

Most interesting take-aways from benchmarks are some cases where RabbitMQ processes 30-50% more messages per second. And where a native Erlang JSON library beat NIF C library in some specific tests. The PR link covers this info.



https://github.com/erlang/otp/pull/2745 may be what you're after.


All I could only ask for today is just a better ide support. I don't like vscode; even though the plugin for intellij has improved, there is still a lot to be desired


I'm a bit biased as someone who's already used to nvim, but the coc-elixir support is fantastic. Takes a bit of configuration but once you've got the language server set up it's better than any IDE.


The IDE type tooling is getting better all the time thanks to Elixir-LS. There was a 0.6 release a couple of days ago with a ton of improvements [0]. Better auto-completion triggers and Ecto completion come to mind as huge quality of life improvements.

0: https://github.com/elixir-lsp/elixir-ls/blob/master/CHANGELO...


Is this supported in IntelliJ ?


No idea. It is the foundation of VSCode and most of the other plugin systems powered by the language server standard.


I love Elixir. I would like to see more improvements in iex, something like ipython for python.


I'm very interested in hearing about some specifics!


I know support for the map.field syntax in guards is a bit controversial, but I'm really excited about it!


I actually already built that functionality in the past using macros so it might be similar


I'm really excited for the runtime configuration updates and the compile time tracking updates.


I'm stuck between learning Clojure and Elixir (for a backend that will power a web app). The one thing pulling me towards Clojure is ClojureScript, and the fact that I'd be able to write a frontend and backend with the same syntax.


Does anyone know a fast mirror for Erlang? Every time I try to download its very slow:

https://github.com/erlang/eep/issues/12




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: