AstonJ

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

Most Liked

Fl4m3Ph03n1x

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 and rpc calls. 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 Code which I absolutely love.
  • Dialzyer types. He makes a use of the opaque type. 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:

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

15
Post #9
awerment

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

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

stevensonmt

stevensonmt

I also just finished the course. I did not find the typos terribly intrusive and I appreciated that Dave provides a mechanism for reporting the typos directly from each lesson.
I actually really enjoyed the lessons on Nodes and rpc. The topic seems to be the actual killer app feature of Erlang/BEAM but one that is hard to find tutorials on.
I probably benefited most from Dave’s explanation of the architectural choices he made in setting up the app.
I do wish he had at least touched on deployment, or at least building in production versus dev. To be fair though he explicitly states why he does not address it and his point is valid. It seems quite easy to find tutorials and other information on building apps in dev mode but much more difficult to find the same for building production releases and deploying them.
I have paid for a handful of online courses over the last couple of years. Dave’s course is easily the best value of any I have done. He could charge triple and I would have been satisfied with the value.

beam4dev

beam4dev

I have done this course and updated the code to use Phoenix 1.7.2, here it’s the code

Hope it helps

Where Next?

Popular in Courses Top

ErlangSolutions
We’re proud to announce the launch of our online training courses. All of our courses are designed and taught by current industry profess...
New
mat-hek
Hi everyone! We just released the Elixir Language Tour guide – an interactive intro to Elixir. The guide itself is written in Elixir an...
New
AstonJ
You’re a programmer, so you don’t need spoon feeding with the conventional drivel about “this is an integer.” No. You need to know what’s...
New
learn-elixir.dev
At Learn-Elixir.dev we help developers master Elixir via mentorship and course content: Exclusive curated content covers the beginner,...
New
zkessin
Hi All I have a new email course to introduce people to GenServers, which I think will be useful for those trying to get up to speed with...
New
lubien
I’ve been working on writing beginner friendly lessons aimed at teaching LiveView, Phoenix and Elixir to those who might not have even pr...
New
Oxyrus
Has anyone seen this course so far? https://app.pluralsight.com/library/courses/elixir-getting-started
New
AlchemistCamp
I’ve finished writing up the show notes for my free 13 screencast series “Ecto Beginner”! :partying_face: You’ll see them with notes at ...
New
arrowsmith
Hi, I’m George Arrowsmith - you may remember me from such educational Elixir content as Learn Phoenix LiveView, Phoenix on Rails, and Ma...
New
AstonJ
By @elbrujohalcon Course Overview There is a language that powers 90% of all Internet traffic. It’s also the language behind some extre...
New

Other popular topics Top

JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 record...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
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
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
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