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

Before I forget, one of the early things I’ve spent some time wrapping my head around is pattern matching. In a future installment, I plan to share what helped me look at pattern matching from an FP/Elixir perspective instead of an OOP or assignment-focused perspective.

Urban Müller’s programming language is an adjective I might associate with this process :winking_face_with_tongue:

AstonJ

AstonJ

Loving the dedication Charles! Reminds me of when I learnt Ruby :024:

This also reminds me of something!

When I was reading @pragdave’s book Programming Elixir (Pragprog) I tweeted saying I was reading his book and that it was stretching the ol grey matter “..and I like it!”. Anyway I thought it was a dumb tweet and thought Dave probably get’s enough people @mentioning him so I pretty much immediately deleted it. Next thing I know Dave has taken a screengrab of it and tweeted it! :lol:

I’m pretty sure that was when I got to pattern matching, so it will definitely feel a little mind bending! Just persevere and I’m sure you’ll be fine :023:

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!

SyntaxSorcerer

SyntaxSorcerer

Dude! I started learning Ruby (before Rails, for the same reasons) at around the exact same time you published this article. At the time, I read every single one of those books (including the ones you mention at the end – lots of love for the Pickaxe book :heart: ), and I wish I could remember if I read your post! (Feels like I must have.)

I really appreciate your foundational approach to learning frameworks because it resonates with the way I was trained and how I like learn in general. As you recognized, I’m taking a similar approach with Elixir/OTP. While I’m eager to start building with Phoenix (and maybe Ash), I believe the more I learn about the foundational stuff (including the BEAM), the more fun I’ll have building cool stuff soon afterwards.

Thank you for sharing your blog post – it was very well written and a nice trip down Memory Lane! :grin:

SyntaxSorcerer

SyntaxSorcerer

Here’s the repo for the Elixir Tutor Enum tool. It’s mostly functional and was super fun to put together over the course of my lunch hour today. I’ve had a good time learning about new-to-me Enum functions and writing code.

:police_car_light::police_car_light::police_car_light: If anyone wants to play around with this, please see the top of the README.md first. :police_car_light::police_car_light::police_car_light:

I can’t make any guarantees as to the fitness of this vibe-coded app. It’s probably pretty terrible for most people. :sweat_smile: For example, if you make any progress and then close your browser, you will lose all progress. I plan to fix this soon-ish for myself by adding some auth, but I don’t want to make any promises about when. So please be careful until then. Or fork it and do your own thing with it!

Another thing: I don’t want to derail my learning journal by focusing too much on vibe coding because my focus here is really all about mastering the fundamentals. This was just a fun lunch hour project that is helping expose me to some basic Elixir functionality. :slight_smile:

Where Next?

Popular in Discussions Top

rhcarvalho
Very interesting value proposition! Having watched some interviews with Elm’s creator recently, I wanted to ask where you stand in terms...
New
bartblast
This thread is dedicated to announcing updates to the Hologram documentation, as well as discussing any ideas for improvements and sugges...
New
f0rest8
Hi everyone :waving_hand: Posting here to showcase and announce that Metamorphic is now officially live on a public-facing domain at htt...
New
ivanminutillo
Bonfire is an open source framework for building modular federated digital spaces. It’s built entirely with Elixir, including LiveView (a...
New
James_E
I see that the current ExUnit source code has support for rich failure messages on a small whitelist of “recognized” assertion patterns, ...
New
yolo007wizard
I’ve been reading up on Firefly and it looks very impressive. Does this mean faster CPU bound Elixir? i.e. ballpark java speeds? Or at le...
New
lessless
I wonder if it’s possible to mimic a simple “class reopening”/inhertinace-based SEAM in Elixir to alter a module’s behaviour without edit...
New
adam
I wonder if anyone in the community has started to use Github’s Codespaces for their team’s development? If so, what is there to learn? ...
New
gushonorato
Hey everyone, I’ve been working with Elixir for over 5 years and I’m a big enthusiast of the language. However, when starting new projec...
New
darkmarmot
At HCA Healthcare (500k employees and contractors), we’re currently experimenting with Elixir for both data integration (to handle parsin...
New

Other popular topics Top

jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
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 49522 488
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
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
mgjohns61585
Could someone help me? I'm making my first elixir program, number guessing game. I can't figure out how to convert the user's guess from ...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New

We're in Beta

About us Mission Statement