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 different, and you want to know quickly.
But you want more. True mastery of Elixir comes from understanding the underlying idioms: functional programming, transformations, concurrency, and application structure. You need to know the tools, such as IEx and mix. And you need to understand the frameworks, such as OTP and Phoenix. This course will get you started down this road (and your experience will take you the rest of the way),
The course has videos to show you stuff, text to give you facts, quizzes to help you remember, and exercises to let you practice.
More and more developers are switching to Elixir. Take this course and join them.
Trending in Courses
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming











Showing Posts 77 to 68- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
AstonJ
This course has been re-recorded and released as a new edition, please see the thread here:
Maartz
The only drawbacks from this course, is that, it teaches GenServer in a very unconventional fashion. Albeit that, it’s a very good course!
maxdevjs
Hello @AstonJ
Would you recommend the course nowadays? The “
” about Elixir presented in the course is still relevant today? I guess most of it should be still valid, but as I am starting now I do not know how things have changed in four years 
LukeWood
I can personally attest to Dave’s talent as a teacher - he has a really unique perspective and problem solving approach. I’d highly recommend the course!
I was lucky enough to take his university course and have been active in the elixir community since!
L0cutus
Hello,
is this course still up to date ?
thanks !
dogweather
I recently bought the course and love it: opinionated, and filled with wisdom and design notes. Going through it, there are just a few things that I’m a little unsure of. Caveat, I’m only 38% of the way through it:
tally/1. Maybe I’m used to Ruby, where we try to signal whether it’s a function or procedure, and what the return value is. I’d expect (depending on what it actually does) something likecompute_tally,tally_for(game:), etc. Likewise,score_guess().{ :ok, ... }&{ :error, ... }convention and so more functions are impure than I would personally make.Overall, though, a very valuable course.
Maartz
Oh that’s a good surprise ! Directly bought it !
peerreynders
The more recent idea that failed to gain traction so far is encapsulating state inside of processes much in the same way that OO objects encapsulate/hide state.
He critizes the following state access and manipulation pattern:
In particular
game.word_so_farandgame.letters_guessedexpose implementation details of the state which leads to inappropriate coupling. So he prefersi.e. the implementation details of the state are hidden inside the process. However this is seen by some as an abuse of processes, pushing towards the “a process is an object instance” model.
As it is, this is possible today without processes with a “hands off my state” coding discipline:
And dialyzer even supports an
opaquetype:The problem is that doesn’t stop anybody from depending on or messing with the state’s internal structure.
What would be needed is a capability to mark structs as opaque and have the compiler enforce it.
The idea is actually in place.
game.exmanipulates the game’s data structure whileserver.exencapsulates that state. All of that is wrapped inside theHangmanOTP application and each game instance is identified by a pid. Phoenix stores thatpidin the session.But given the application level decoupling that
pidcould be replaced by some other form ofgame_idto be managed in another way.Fl4m3Ph03n1x
Ha ! A critical piece of information. I will put this on radar for sure now that I know he doesn’t push component in the course
peerreynders
That topic is about the ideas as proposed in the Empex 2018 Keynote.
The course predates that particular “component” development. It is my sense that the idea in the course is much simpler - favour decoupling. To that end “components” and OTP applications are synonymous for the purpose of the course - the Empex 2018 keynote added tooling/infrastructure for a particular implementation flavour of the component idea to move away from the Erlang/Elixir centric configuration practices (and templates on top of
GenServer).The course takes a much simpler approach - ignore Phoenix contexts and mix umbrella projects and use parallel application (Poncho projects) dependencies instead. It’s a valid approach but a lot of people are loath to give up the convenience that Phoenix contexts and umbrella projects afford them.
The resulting structure can be seen here
https://github.com/pragdave/e4p-code
Hangmanis the game (business) “component”.TextClientthe command line clientGallowsthe Phoenix web frontend that uses the game “component”.