SyntaxSorcerer

SyntaxSorcerer

My Elixir learning journal

This is the start of my Elixir learning journal/journey. I plan to share my journey in this thread and am open to all feedback, constructive criticism, and questions from people of all experience levels.

I’m a former full-stack Rails dev with FP experience (Scheme/Lisp via SICP was a wonderful introduction to the FP paradigm), but it’s been a while :sweat_smile:

My short-term plan is to complete a couple of online courses and read through several books as I get to know the ecosystem, and to hopefully start building cool things along the way. I’m particularly interested in leveraging massive concurrency and fault tolerance (to name just a couple of cool things) as it pertains to multi-agent orchestration and task management/decomposition systems for AI-powered software development. I’ve shared this in a couple other threads, but @chrismccord ‘s keynote at ElixirConf US 2025 has been particularly inspiring to me.

The courses I’m currently taking are:

  1. PragDave’s Elixir for Programmers, 2nd Edition and
  2. The Pragmatic Studio’s Elixir & OTP and Full-Stack Phoenix

And the books I’ve purchased so far are: (and will read possibly in this order, but am open to feedback)

    • Programming Elixir ≥ 1.6 + Elixir in Action + Introducing Elixir
    • Learn Functional Programming with Elixir (not yet shipped)
    • Adopting Elixir
    • Testing Elixir
    • Functional Web Development with Elixir, OTP, and Phoenix
    • Programming Ecto
    • Designing for Scalability with Erlang/OTP
    • Ash Framework

My short-term goal is to complete both courses and all introductory Elixir books by the new year, and my stretch goal is to complete these before I’m back from Thanksgiving holidays in early December. I’d really love to be able to build with Elixir/OTP + Phoenix by the new year. I’m also super interested in the DDD aspects of Ash Framework, but I wouldn’t be surprised if it takes me a few months before I’m ready to add that to the stack. We’ll see!

So far I’ve completed about 25% of both PragDave’s course and Elixir & OTP. They’ve both been very enjoyable so far but I’ve been wanting to binge PragDave’s course the past few days; the structure and simple explanations, Dave’s chill-ass vibe + straight-forward examples have been jiving with me. I’m also several chapters into the first couple of introductory Elixir books; my strategy with them the past few days has been to read corresponding chapters after watching videos and doing coursework.

I’ll plan to check back in over the next few days with updates and will keep an eye out for any comments/questions/feedback! It’s been a really long time since I’ve felt the pure joy of learning a new programming language, and I’m so happy to be doing this right now. :grin:

p.s. an early highlight in my Elixir journey was @josevalim merging my PR to Elixir main this morning. I guess this means I’m officially an Elixir contributor! :tada: It might’ve been the most basic PR in the history of Elixir, but it feels good to contribute, and I hope it’s the first of many in this wonderful community :heart:

Most Liked

SyntaxSorcerer

SyntaxSorcerer

@blazejcm , here’s my rough plan with the flash cards – create cards for:

  • the core concepts for each chapter (and maybe some more advanced topics)
  • key terms and definitions from each chapter
  • module functions, like Enum

Completely separately, I’m pretty pumped with my progress so far. As a little side note, I’m the type of person who likes to have a solid overall understanding of how the pieces of something fit together before diving in to start learning. Some people are comfortable just picking something up and learning bit by bit, but that’s never been a satisfying way to learn for me.

So I’ve recently finished “Elixir in Action”, “Programming Ecto”, “Programming Phoenix 1.4”, “Phoenix in Action”, and the brand new (and as yet, unfinished), “Ash Framework”, by @kamaroly . (Aside: I want to start using Ash in January; very coincidentally, I picked up Eric Evan’s DDD book several months ago and was delighted to see so some overlap with DDD principles in Phoenix and Ash. I see so much potential to apply these principles in this ecosystem.)

I didn’t complete every exercise in all of these books because my goal was to get a sense of what’s important to pay attention to before rolling up my sleeves with coding exercises from the video courses, as well as to make some mental and physical notes about where I can find more info as I start building.

I just fired up PragDave’s course before posting here – I realized it’s been a while since I shared here so I just wanted to pop by and say “hi”.

Does learning a new programming language remind anyone of that feeling they used to get when they were gifted a new video game or console as a kid? It’s like I’m starting out on a brand new adventure that I know is going to be challenging, but also very fun and rewarding.

blazejcm

blazejcm

PragDave’s course - that’s a great choice, I finished it a few years ago, it’s really good.

And pattern matching is absolutely incredible.

I do miss some language features from Haskell (e.g. partial application) but I’m having a ton of fun with Elixir as well!

SyntaxSorcerer

SyntaxSorcerer

It’s different, that’s for sure! I’m feeling more comfortable with it today, and I think a couple of keys came from one of Dave’s course sections. In it, he specifies a couple of key things:

  1. The left-hand side (LHS) is the pattern, not just a variable
  2. For a pattern to match, the shape of the two sides must be the same, and literal values in the pattern have to match the corresponding values in the right-hand side (RHS).

Using a list’s head and tail in the LHS of a pattern can sometimes look weird when it appears there are more things in the RHS, but the more patterns I see and play around with, the more natural it’s starting to feel. You’re 100% right about persevering – it just takes some time and patience!


Completely separately, I just vibe coded a Phoenix app to help me master all of the Enum module functions. Here’s a quick screenshot that I think is pretty straightforward:

My goal with this is to get random exposure to different Enum functions and get hands-on experience writing them. My process is to read the documentation, search GitHub for some real-world implementations, and then go back and write and run the code.

Eventually, I’d like to add all of the different Elixir modules and their corresponding functions, but at this point in my learning journey it appears (at least according to Dave) that Enum is pretty essential for progressing further.

The code for this is in a local git repo, but I’ll try to make some time to push it upstream later today. I want to play around with some more functions, close/reopen my browser, and make sure things like persistence work before pushing it upstream. (Edit: I just noticed the “functions learned” tracker did not update after completing Enum.min_max/2, so this is an example of something i’d want to fix first. The docs formatting in the left panel is also very ugly.)

I’m also happy to share it as an open source project, but to anyone who reads this and checks out the repo when it’s available, please keep in mind that I’m not focused on Phoenix development quite yet, so I have not even looked at the code.

Once I start learning Phoenix I would be delighted for people to roast my code :fire: but since it’s not my focus right now I just don’t think I’d get much benefit from it. Happy to have my mind changed though!

Where Next?

Popular in Discussions Top

WolfDan
After doing a port from a c++ library to my project in phoenix I’ve seen that I need a faster way to run this algorithm and I found this ...
New
AstonJ
Are there any Elixir or Erlang libraries that help with this? I’ve been thinking how streaming services like twitch have exploded recentl...
New
AstonJ
If a newbie asked you about Phoenix Contexts, how would you explain the basics to them? Feel free to be as concise or in-depth as you li...
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 19204 150
New
marciol
Please, let me know if this kind of discussion already took place in another topic . Hi all, how do you consider if is better to build ...
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
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
hazardfn
I suppose this question is effectively hackney vs. ibrowse but we are at a point in our project where we have to make a choice between th...
New
und0ck3d
Hello everyone! A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying...
New
RudManusachi
What configs will make sense to put to runtime.exs? – A bit of how I configure apps: I have generic configs in config/config.exs, dev...
New

Other popular topics Top

lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 53690 245
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
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
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 52341 488
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
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 126479 1222
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New

We're in Beta

About us Mission Statement