You and Elixir in 2021/22/23

: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.

9 Likes

Please open up an issue, this should work. :slight_smile:

5 Likes

I’m glad you think so too :smile_cat: There was already an issue opened about this.

3 Likes
  1. Working on a BI-ish project.
  2. As a sub-project, a Ecto-like query builder.
1 Like

Today’s bonus-entry post says to post here in last year’s thread and there isn’t a new one so . . . I’m working on adapting the latest version of my “Kill All Mutants! (Intro to Mutation Testing)” talk into Elixir, meaning changing the code examples and boning up on the existing tools, maybe making a slide or two with usage examples. Why? Because I’ll be delivering the talk at Code BEAM Europe, in Stockholm, in May! Yaaaay!

(I’m also awaiting word back from a couple potential clients, for whom I might finally be getting to do some paid work in Elixir. No further details will be posted here, due to confidentiality, beyond that one seems to involve LiveView while the other is more back-endian.)

3 Likes

I’ve completely fall in :heart: will Elixir for quite some time now.

Love the language: the function aspect of it (think about data and not modeling OOP around it), the concurrency model via message passing, the BEAM is just so much fun on a daily basis. Thank you @josevalim, @chrismccord and all the people involved in this great community :two_hearts:.

In my free-time (2021), I’ve built a Github clone (distributed setup and running on Fly.io) : redrabbit/git-limo: A Git source code management tool powered by Elixir.

In my work-time (I’m a freelancer), I’ve help a few companies in the digitalizing things (which here is Austria was a huge thing during Covid). A lot of real-time application written with Phoenix, LiveView, PubSub etc.

Lately I’ve been working for the company that is responsible for most of Covid screening/testing/vaccine here in Tyrol. And right now, I’m getting my toes wet with Nx and machine learning for PCR pooling strategies (hyper-pooling, hyper-cube model).

4 Likes

Oh man, Elixir and this community has enabled me to turn away from a path that would have otherwise quite likely led me to quit writing software professionally. There’s just so many people I will be ever grateful for that - @josevalim, thank you in particular for kicking off this journey :slight_smile: (This turned out more personal and lengthy than originally intended, sorry about that.)

I’ve been doing Java web development pretty much my entire career (around ten years now). Basically as soon as I was somewhat proficient as a developer, I knew that there had to be something that fits me better. Not to hate on Java or the JVM, but it somehow just does not fit the way I tend to work or think. Always struggled with the same problems and just couldn’t overlook what I perceive as shortcomings (e.g. JPA and persistence libraries in general, objects as data).

Around 2016/2017 I started actively looking for languages that would feel right. And thank god Elixir somehow got on the radar. It took a second (and actually, third) look at it to finally grok what it would give me in return for learning a (for me, at that time) weird new syntax. Dave Thomas’ „Programming Elixir“ was the point of no return for me. Pattern matching, pragmatic functional aspects, simple yet powerful tooling. Phoenix, Ecto, Absinthe (and more recently, LiveView) definitely sealed the deal.

Finding a job was near impossible though - I live in Germany, so the market was tiny for anything that is not Java/.NET/PHP (still is actually, but grew quite a bit) and moving across the country, leaving family, friends and a relationship behind was out of the question. A few companies were willing to take a chance on me, but wanted to have the team on site most of the time, so that was that. Meanwhile, I did not have any luck evangelizing Elixir at my employer at the time, nor the next one or the one after that. But always kept at it in my spare time for the last five years, reading most of the available books, watching so, so many conference talks and just tinkering away on small projects, staying up to date and hoping the time spent would have a payoff beyond just having a blast learning and playing around with it.

Then COVID hit, a long-time relationship ended, a close family member became ill and died last August and suddenly pretty much everything that kept me going at a job I wasn’t anywhere close to being satisfied with — vanished in a span of months. So I quit in November - without having anything lined up - and started applying again.

A month later, just this January, I started with a small, awesome team at a company that I don’t have to sell on Elixir (they’re also using Elm on the frontend, which is just icing on the cake for me) or have to haggle about working from home most of the time. And I just couldn’t be happier and more thankful for the opportunity and to this community for all the awesome work you’ve been and are still doing. Just… thank you! :heart:

I’m still talking about Elixir to every developer friend and former colleague I keep in touch with. There’s not one of them I haven’t sent a link to @sasajuric’s „The Soul of Erlang and Elixir“ to, which I consider the best made case for BEAM languages.

Elixir and the entire ecosystem around it grew so much in the last years that there’s hardly any domain I’m interested in where it wouldn’t be a good fit. Specifically, I would hope to get a chance to use LiveView on a larger project. Same goes for Broadway - I’ll be looking very hard for a fitting use case at work. Need to brush up on my math first, but I know Nx will be even more useful and powerful once I get the chance to use it. Nerves - I know you’re there and just waiting to turn my RaspPis into something awesome.

As tips on recommended resources for newbies - @pragdave’s book and video course are time and money very well spent (maybe start with the book, then some others and return later for the course). Once you get a taste, take a look at „Elixir in Action“. If you don’t mind a detour first and then re-learning some outdated bits: I’ve found „The Little Elixir & OTP Guidebook“ a great read. Depending on what your intended use cases are: the books on Absinthe and Ecto are just amazing imho. If you’re looking to step up your game or need to convince others to give it a fair try: „Designing Elixir Systems with OTP“ and „Adopting Elixir“ will put you on solid ground.

In general: just give it a try - or another one. The syntax should become second nature in no time, as will pattern matching and thinking in a functional way. Once you’ve taken some first steps, take some time to set up your environment to be as helpful and informative as possible - integrate the formatter, get familiar with using IEx, take a look at Credo (,depending on where you’re coming from, Dialyzer may help out or annoy you, ymmv). Even if you don’t end up using or liking all of it, Elixir will change the notion of what you consider must-haves in a programming language and its tooling - and may lead you to look for and discover some other that fits your thinking better. In any case, keep at it, sometimes it takes a while to pay off.

6 Likes

I have started to learn Elixir about 6 months ago. Recently I completed my project in GraphQL and Websockets. Everything seems so easy, yet a little bit difficult too but it takes some time to learn each and everything. But I hope I will develop more out of Elixir.

I think this language is a little bit different from other programming languages but its syntax and its smooth way of code are admiring me most. I will definitely contribute or share my knowledge about the errors that I have faced so far in this community.

1 Like

Hello everyone.

I came across Elixir while looking at job postings about six months ago and became intrigued and did some research. I mainly started dabbling with it on exercism.org to fill in some gaps in recursion and to gain a better understanding.

From then on it became more and more enjoyable to use and beautiful to write. It started filling in a lot of knowledge gaps I had working with JavaScript. Many small aspects of functional style that I had worked with.

Now I do not want to working with anything else and am currently working through as many resources on Elixir and Phoenix as I can and hoping to shift fully into the ecosystem in the near future.

3 Likes

In 2022 I’m looking forward to read as many books about Elixir as I can. At the moment, I already started with Real-Time Phoenix, next would be “Programming Phoenix with LiveView”. What else? I will probably reread “Programming Phoenix”. I would like to read more than that, but which one would be I have not yet decided.

Another thing I would like to do is to actually go through the Elixir track on Exercism.
Along the way design some LiveView projects.

2 Likes

The books from Dave Thomas (and updated version of his video course), Saša Jurić, and videos from Pragmatic Studio.

2 Likes

Second vote for Dave Thomas’s video course.

1 Like

Im really excited to focus on Elixir and Phoenix this year. My day job is front-end JS and I’ve been dabbling in Clojure for a while now but feel it misses a cohesive web framework.

I’ve always struggled with OO so this is my way to pick up backend development. For some reason FP just clicks for me.

1 Like

I’ve discovered Elixir through Mozilla Hubs. I was also looking for a good web framework for my next project, and although I’m a huge fan of Rust, the web frameworks are still a little… rusty :smiley: Since then I started investigating Elixir and Phoenix, and hopefully I will add Elixir to my tool belt really soon :wink:

1 Like

Finally managed to get a project to try out Elixir in, and man is it challenging to switch the thinking from OOP to FP, and trying to do things in the elixir way.

I’ve found this guide useful in regards of making some decisions of how to structure the code: Elixir Development | Compass by Nimble

Had hard time setting up a docker-compose.yml and Dockerfile for a umbrella project, but I think I managed to cobble up a setup that works.

Also, deployment is something that I am scratching my head with - I’m used to work with Laravel, and deploying that is easy for me, but compiling a project and pushing that to servers is something that I have hard time finding solid info on - there are a lot of info on how to do it, but not much about how to think about it, the basics, pros and cons of the different ways and what best practices there are ad why are they the est practices.

I’ve enjoyed my journey so far, writing elixir is definitely a challenge worth tackling.

1 Like

Well firstly… I think I wiil be doing something so I can be consider apart of the community or at least a real user of language.

My first experience with Elixir is through writing space code. I like multi dimensional theory, I don’t like racists people or small minded individuals. I do technical stuff because I believe I am smart like that as people solve cross word puzzles and other things.

I am currently learning Erlang and will continue to do so even I if I choose to write space code in Erlang as opposed to Elixir and write in Elixir afterwards. I believe you cant lie to sun, the moon and mineral on this Earth. This is important overall. I don’t care if people don’t like me, I just feel as I said a lot of people are just racist and I leave them for later.

I hope to do some security project with Erlang. I will likely be writing a Fuzzer in Erlang within 2022 toward the end. I am almost homeless but I am not but it might be an interesting to be. I don’t need people to work with on the project but like RabbitMQ or System i suppose if it’s good people will use it.

Though it is private for my own usage. I do security stuff and I am pretty good at that but upskilling my programming capabilities at the moment. I read lot’s of science book’s in my spare time and understand distributed systems. This to me is like

I understand the trick of the trade but I trust and believe the demo God watch over me. Otherwise I would not be writing this. I try my best to run away from immature people.

2 Likes
  • I knew Elixir for a while, but since I was student at the time and seeking for a job, I went for Ruby (which I love), but now I have time to work in Ruby and learn another language. When I find Elixir the first time, I was curious about FP, went through Haskell but didn’t really liked the syntax and then found Elixir.
  • I came from C and Ruby languages
  • For the moment I have some pleasure writing some Elixir, multi-clause function and guard are an elegant way to avoid if everywhere and pattern matching is neat af.
  • At the moment it’s just for learning purposes
  • Actually having a hard time with OTP, understanding how putting all pieces together. I just bought Programmer Passport: OTP and Designing Elixir Systems with OTP to help me with that
2 Likes
  • Liveview is the main feature that attracted me to Elixir. A few years ago I began learning frontend frameworks and realized that I did not enjoy worrying about stores, SSR vs CSR, and maintaining separate code bases for parts of a project. Additionally, the language has many use-cases that seem pretty cool!

  • For the past 15 years I have been working in PHP and Javascript, mainly in the Wordpress realm. Even though Wordpress has a very large user base and is very easy to work, I’ve grown tired of its quirks and the volatility of third-party plugins. Although I am tempted to give Laravel a try, since it’s PHP based, I thought I would try something new and expand my knowledge base.

  • So far the learning experience has been enjoyable and I am grasping most concepts. The courses from The Pragmatic Studio have been great and I look forward to starting a personal project.

  • To get started I will likely try to rewrite functionality I am familiar with in the Wordpress/PHP realm and then work on larger personal projects. With a background in web development, I would like to get outside my comfort zone and build something that is not solely website-based.

  • With PHP, it’s easy to jump right in and understand what’s going on relatively quickly. I’m finding that the experience in Elixir takes a bit more thought (which is a good thing). Also, I’m slightly concerned about going to production but I haven’t thoroughly reviewed the documentation on that yet and fly.io seems like a good choice.

  • The main drawback that I’ve read is the lack of available packages and the need to build things yourself. Coming from Wordpress, this is a little intimidating but also liberating as you aren’t reliant on out-dated code bases or breaking changes.

1 Like

Good luck with your experiments. Learning Phoenix will make it easy to pick up Laravel if you want / need it. I use Laravel at work and it’s a nice framework. I much prefer Elixir and its functional / immutable approach though.

2 Likes

2021 was when I began seriously with Elixir, although I think I began with Elixir in 2019/2020 (I should review my code notes and check the time stamps hehe). I was really impressed with the language, its community and the available resources. I came from Python, so I was a bit lost at the beginning because the OOP programming is very different from the functional paradigm. But I decided to be open minded and well, it was the best I could do professionally and personally.

For me, 2022 was my big year with Elixir, because it was the year in which I feel more comfortable with all I learnt (and still learning of course!) and when I have more job opportunities related with the Elixir ecosystem.

Working as freelance push me to learn practically a bit of everything, due many times I have been the only developer working in some projects. But, as a summary, 2021 was the big year of Phoenix and, in the last quarter, the beginning of my awesome, joyful and big adventure with Nerves. I think 2023 is going to be the year of Nerves and all its related ecosystem (I am like a child with a new toy each time I read some new about Nerves or related projects hehe), and also of AtomVM, that I have some projects that I want to start.

As a note, I really love Elixir’s pattern matching and more when it is in the function parameters! And the pipe operator… :heart:

Well, I could write and write a lot about Elixir and many related stuff, but I think it is enough to not make this post so long.

Regards!

5 Likes