AstonJ

AstonJ

You and Elixir in 2021/22/23

It’s been a while since we’ve had a thread like this, so what better way to kick off the year with :003:

What does being an Elixir user mean to you in 2021/22?


Here are some possible starting points…

Maybe you’ve just discovered Elixir and Erlang?

  • What brought you to it? (Was there a specific article, talk or person that prompted you?)
  • Which language did you come from?
  • How are you finding it?
  • How do you think you’ll use it?
  • Which bits are you finding easy, which, not so much?
  • Is there anything missing that you’d like to see included?

Or perhaps you’ve been using it for a while…

  • What first drew you to it (how long ago!?) and what keeps you here?
  • How have you found it has changed over the years?
  • How have you changed, perhaps while using it? (Maybe you came from an OOP language and your mental model on how to build things has changed?)
  • What do you think were the biggest strengths of Elixir/Erlang when you got into it and what do you think are its biggest strengths now?
  • Is there anything you’d like to see more of or improved or included?
  • Which bits do you love the most and which bits are you most likely to tell others about?
  • What’s your single most important tip to newbies?
  • Which book or learning resource has been your favourite to date? (How many have you read? Which ones have been your favourite!?)
  • Are there any topics you’d like to see more Elixir or Erlang books or learning resources about?

:048:

Most Liked

baldmountain

baldmountain

I first found Elixir in the 0.8 time frame. I wrote a version of memcached as a learning project. (A toy version.) My day job did’t involve Elixir so other than playing with my learning project I didn’t really use Elixir.

Around the 1.2 time frame I did a lunch and learn presentation since I was still interested and wanted to share. No one was particularly interested. (It’s surprising that people in our business are so resistant to learning new languages and platforms.) Except the chief architect. He saw the value of the OTP right away. So he wrote a little project to handle an auth task. It worked flawlessly. In fact in the two years we ran it we only updated it once. And it ran without issue for months at a time.

After that we started writing new projects in Elixir. They all ran well so we started replacing apps witten in other languages in Elixir. Eventually we rewrote our ad server in Elixir. The original ad server was written in Python but was replaced with one written in nodejs. The nodejs one took a team of engineers two years and was so fragile that it had a team full time babysitting it. The Elixir ad server took 2 engineers 6 months to write and was simple enough to understand that ever junior engineers were comfortable making changes. We replaced 27 nodejs server with 3 Elixir servers. Latency dropped significantly and responce time went from 29ms to 13ms. Building the adserver in Elixir was a massive win.

I haven’t worked in Elixir in a couple years other than a nerves project and a small Phoenix project. (Personal stuff.) I miss it desperately.

Everywhere I go I suggest using Elxir. People look at me like I am insane. But I think people are comfortable with what they know and don’t want to change or make the effort to learn something new. But having worked in this industry for 25 years I know that languages and platforms come and go and you will have to learn something new at some point so you better get used to the idea and embrace change. And why not learn something better than what you are using now?

Gdm273

Gdm273

I haven’t recently discovered Elixir, I’ve actually been eyeing it for a while, and I finally decided to learn it about a week ago. Everything seems so easy, yet so hard. It’s a hard feeling to explain :sweat_smile:. My current projects use nodejs with express, but hope I can make something out of Elixir.

Cheers, to elixir! :joy:

marcandre

marcandre

:wave:

I’m coming from Ruby, where I’ve been a ruby-core member for 12+ years. I’ve meant to look at Elixir since its early days.

Three months ago I decided it was more than time to dive into it.

I took a 3-day weekend to look at it. I checked out exercism and did one “easy” exercise, a “medium” one, all the “hard” ones that I found interesting. I was ready for the next step.

I sent an email to 4 companies looking for elixir devs stating I had 40 years of programming experience, including a whole 3 days in Elixir and that I was looking for a remote and half-time job. Nowadays the “remote” is almost taken for granted, but “half-time” is still a major blocker. Nevertheless, I got a great offer from Súper and I love it there :slight_smile:

Grapsing the bulk of the language was very easy for me; I had been using some immutable structures in Ruby before (parser gem, Ractor, …).

There is still a lot of fine print I need to understand :sweat_smile:

I really like my experience so far. The community is vibrant, and the lightning-quick feedback from José Valim is simply fabulous (this is actually an understatement). I wish my experience contributing to Ruby had been comparable but I have to admit it is has not been the case at all.

To my friends, I joke that my main irritant with Elixir is its disdain for trailing commas; I guess that’s not that bad :laughing:

My other reservations (with less than 3 months under my belt) concern two aspects: keywords and macros.

  • Keywords.
    I am aware of a few cases where they are actually used for what they are (an ordered list), but typically there’s an ambiguity with maps that bothers me. Many API accept both, but not all. The syntax for keywords seems too convenient compared to it’s actual use (no pattern match, no defaults, difficulty in being strict about repeated ignored options, …). I miss Ruby keyword parameters.

  • Ast & macros.
    There’s something beautiful with the fact that if and |> are macros. It makes working with the language itself problematic for me and introduces difficulties that look accidental (e.g. select [:id, :name] works but select ~w[id name]a requires a ^ because ~w is itself a macro.
    In my mind, [:id, :name] and ~w[id name]a are completely equivalent, so are foo |> bar and bar(foo), and I wish there was an intermediate AST representation that reflected that. Maybe there’s a future for a “semi-expansion” function that would assume things are as they seem and expand builtin macros like |> and ~w[], resolve module aliases, etc.
    My involvement with RuboCop and the Ruby parser gems made me desire a world where I could know statically if x.flat_map referred to Enumerable#flat_map or just another method with that name; while Elixir kind of brings that to the table, it also makes everything less straightforward. At least I’m having interesting discussions with sourceror’s author:-)

My biggest practical issue so far has been how often I have to wait on the compiler on my aging machines (4 and 12 y.o.), so this has been my focus in terms of contributions so far.

Where Next?

Popular in Discussions Top

scouten
I’m looking for a host for the server part of a small (personal) side project that I’m working on. It’s currently written in Node.js and ...
New
kostonstyle
Hi all How can I compare haskell with elixir, included tools, webservices, ect. Thanks
New
sergio
There’s a new TIOBE index report that came out that shows Elixir is still not in the top 50 used languages. It also goes on to call Elix...
New
Crowdhailer
I’ve been hearing much about the new formatter and it’s something I have been keen to try. I find examples buy far the most illuminating...
248 19327 150
New
rower687
Hi all, I’ve been reading a lot about the “let it crash” term and how supervising processes and the whole messaging passing make an elixi...
New
jer
I’ve been using umbrellas for a while, and generally started off (on greenfield projects at least) by isolating subapps based on clearly ...
New
nburkley
AWS re:Invent is on at the moment with some interesting announcements. One new feature in particular is the Lambda Runtime API for AWS La...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
Fl4m3Ph03n1x
Background A few days ago I was listening to The future of Elixir from Elixir Talks, with Dave Thomas (@pragdave ) and Brian Mitchell. I...
New
paulanthonywilson
I like Umbrella projects and pretty much always use them for personal Elixir stuff, especially Nerves things. But I don’t think this is ...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127089 1222
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement