AstonJ
Elixir for Programmers, Second Edition (video course) (self-published)
@pragdave has just released the second edition of his course - it looks like it’s changed quite a bit since the first edition so am posting it as a dedicated thread.
A Little History
This is the second edition of this course; the original was written in 2016.
Perhaps surprisingly, the Elixir language itself has not changed much in the intervening years. Some of the tooling works a little differently, but not enough to worry about. The major changes are in the libraries and frameworks we use. Many things in this course are easier now because of this. In particular, we can now use dynamic supervisors to manage our hangman games, and we can exploit Phoenix LiveView to do all of our browser interaction on the server: no more JavaScript.
I’ve also refined some of my opinions on project layout since the first course. Those who took it may remember I recommended far more decoupling of code than is normal in Elixir projects. Coming back to my code four years later I realize that I can take this a step further, and make the separation between the application logic and the application runtime process structure even clearer.
What hasn’t changed is the joy I get from writing Elixir, and writing about Elixir. I hope this course helps you to feel it too.
1 Welcome to Elixir for Programmers
2 Getting Started
3 Our First Project
4 A Mad Dash Through Elixir Types
5 Pattern Matching
6 Let’s Start Coding
7 Write a Text-based Client
8 Refactor The Dictionary
9 Processes and Maintaining State
1 Use an Agent for the Dictionary
1 Applications: Making Our Code Independent
1 No Mr Dictionary, I Expect You to Die
1 The Story So Far…
1 Hangman: The OTP Server
1 Nodes and Distributed Elixir
1 From Server to Service: Make The Hangman Server Free-Standing
1 Distributed Text Clients
1 Installing Phoenix
1 Hangman Using HTML Pages
2 Introduction to LiveView
2 Hangman Using LiveView
2 It’s a Wrap
$35
I haven’t done it myself yet so looking forward to hearing what everyone else thinks ![]()
Most Liked
Fl4m3Ph03n1x
I have now finished the course completely.
Issues I faced
- I will say, at the time of this writing, you will find quite a number of typos in the text. However, do not despair, the course is of good quality and you understand what the author means from context.
- The Windows experience is quite detrimental. Admittedly, this is not the authors fault, but if you are doing the course on a Windows machine there are some exercises you simply won’t be able to do. This happens because of limitations regarding IEx and the shell. I have reported this and afaik this is being investigated: Autocomplete in IEx broken (on Windows) · Issue #4103 · elixir-lang/elixir · GitHub
- Dave makes a wild trip through
Nodes andrpccalls. While interesting as a mechanism to understand how erlang machines communicate, it is something you will very likely never use in your life. The author states the same. In fact, unless you are building your own framework, you really shouldn’t use any of it. This kinda breaks the flow of the course and it was (for me) the hardest part to digest because I knew I was not really going to use it … (and it is also a gatekeeper from the sections that are also the coolest).
Things that I liked
- The humour. I am not sure if it is the fact he is originally British and that I like Monty Python, but I did enjoy it.
- IEx customization. Yah, he mentions IEx customization and shares his own file. It is really cool and immediately motivating.
- Personalized font for your editor. He also shares his cool font ,
Fira Codewhich I absolutely love. - Dialzyer types. He makes a use of the
opaquetype. When I saw it in the wild I never understood why - but now thanks to his course I do. And I think it makes a lot of sense for functional programming. Overall he covers the basics of dyazlier, which is something I support in any project. - The architecture. When I first made his course I liked the idea of small apps, but I had never really adopted it. I left it as a cool idea. Years later, I have read a few more books and with this course I got to revisit the idea. I still wonder why he didnt go for an Umbrella, but I can definitely say his architecture principles had a major impact on how I code today.
- Phoenix and LiveView. It is a perfect first dive for anyone wanting to learn. Last year I started a project that I could not complete. This year when picking it up, I found everything had changed in Phoenix and I had no idea on how to start. Now I picked the project and I am close to finishing it. All of it because of Dave’s introduction to both Phoenix and LiveView. I cannot stress how much this helped me.
Cool apps
You also get some cool apps to show off in your portfolio.
I made a Git repo with some of the lessons I learned. I invite you to have a look, maybe this will help you decide if this course is what you are looking for. I can say, it was for me:
https://github.com/Fl4m3Ph03n1x/hangman-v2
I absolutely enjoyed the course and recommend it. For someone who is just 0.000000001% of the world’s population, his opinions resonate with me more than I expected, even years after completing the first edition.
(PS, the population joke is a reference to his course. I guess you now have to buy it to understand what it is all about! Mwuahahahahah).
awerment
I can confirm that the new phx.new generators are used in the 2nd edition, but before the switch to HEEx. As far as the course content is concerned though, those are very minor changes that you’d have to do yourself.
Main focus of the course (and main takeaway for me) is the code organization and use of poncho projects. The apps are divided into separate projects and you go through the creation of three different clients (CLI, Phoenix, LiveView) for the hangman game without major changes to the core logic, which is great imho. You also implement a game server as a service that can be run on a different beam instance.
You get a very well thought out but I’d say pretty basic introduction to Phoenix and LiveView. In general, I would see those chapters as a demo for why the separation mentioned above should be considered. Also, there’s no use of Ecto at all, in case that’s important to you. Other than that - I cannot recommend this course highly enough. Fantastic content, well presented with accompanying detailed explanations.
kamidev
This is a great description of the course! There are plenty of opinions about the best way to organize Elixir projects. But this is great exploration of how and why even simple applications can benefit from a clear separation of concerns.
The latest updates to the sample code does in fact use HEEX templates and sigils. Migrating manually is not very difficult. But it’s still nice and saves time when sample code works “out of the box”.
Last Post!
dani
Popular in Courses
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex










