Answers

"The Programming Elixir / Phoenix / Phoenix LiveView / Ecto books are the ones I refer to mostly"

"The jumps between what's taught in the chapters and demanded in the exercises can be quite high."

"I’d highly recommend: Programming Elixir (https://www.amazon.com/Programming-Elixir-1-6-Functional-Concurrent/dp/1680502999) and Programming Phoenix (https://www.amazon.com/Programming-Phoenix-1-4-Productive-Reliable-dp-1680502263/dp/1680502263/ref=dp_ob_title_bk)."

"In addition to what others have said, I've found "Programming Ecto" to be quite good if you want to go more into detail into Ecto than Programming Phoenix gives you."

"The Programming Elixir / Phoenix / Phoenix LiveView / Ecto books are the ones I refer to mostly"
"The official docs are well written: https://hexdocs.pm/ecto/Ecto.html"

"Check out "Designing Elixir Systems with OTP" This book really helped me understand just how powerful the BEAM makes Elixir, in a way I just couldn't quite "get" from the docs."

"You'll learn it along the way, there's no need to learn it separately"

"Yes, you should learn OTP. I recommend getting comfortable with it as soon as possible once you get the hang of the basic features of Elixir and are able to develop "functional modules"."
All answers
Considerations
Resource type
Level of expertise
Functionality
Programming fundamentals
Phoenix Contexts
Sources
About this article
Composed Feb 25, 2023 by
R. M. M.
from discussion by



105 contributors around the web
741
words
9.0k
words read
2m 7s
research time
1h 8m
effective research time
Version history
If this article is generated multiple times, old versions will appear here.
R. M. M., 24d ago 4
Research
Notes
-
Programming Phoenix:
- A book recommended for those using Phoenix, to save time
- Elixir is suitable for intermediate programmers, but not for beginners
- Functional programming is a fundamental that everyone should learn early
- Elixir is a joy to write and Phoenix and Ecto are killer apps
- It helps with building concurrent applications in other languages
- LiveView has a webpack dependency, but it is easy to avoid altogether if the functionality is not needed
- Ecto resources are recommended
- It is best to learn by solving a real problem and operating the application for real.
"I'm currently in desperate need for an in depth 'Do and Don'ts in Elixir' like the Java book 'Efficient Java'. The 'Elixir in Action' book was... okaish, but mostly a complete tutorial and not a discussion or experienced view."
"I normally skip on books for such things, in the case of Phoenix I recommend reading _Programming Phoenix_ while experimenting with it; it'll save you a lot of time."
"The main thing I found with Phoenix and Ecto was that their structure is looser than I was used to for web projects."
-
Official Guide: https://elixir-lang.org/getting-started/introduction.html
- Syntax is Ruby inspired for experienced programmers
- Learn about atoms, linked lists, maps, tuples, keyword lists, sigils, anonymous functions, the pipe operator, pattern matching and guard clauses, no return statement, the Enum module, named structs, Erlang, Mix, Hex, and Hexdocs.
-
Phoenix
- Opinionated framework with a lot of magic
- Read the Request Life Cycle Guide and the whole official guide
-
Ecto
- Phoenix ORM
- Use the phx.gen scaffold generators to play around with Ecto
-
LiveView
- Read Pragmatic Studio’s LiveView Starter and Pro Courses
- Look at the phx.gen.auth project and phx.gen.live project for an example of a production ready auth setup and non-trivial project
-
Deployment
- Read the article: https://amattn.com/p/deploying_elixir_phoenix_webapps_to_the_cloud_with_releases.html
- Join the #deployment channel in the Elixir slack community
-
Other Resources
- Docs: https://elixir-lang.org/docs.html, https://hexdocs.pm/phoenix/up_and_running.html#content, https://hexdocs.pm/ecto/Ecto.html, https://superruzafa.github.io/visual-elixir-reference/
- Communities: https://elixirforum.com/, https://www.reddit.com/r/elixir/, https://elixir-slackin.herokuapp.com, https://discord.gg/elixir
- Newsletter:
"Ecto is the Phoenix ORM (Technically it’s not an ORM, but it certainly covers much of the featureset of an ORM. Read more here)."
"The official docs are well written: https://hexdocs.pm/ecto/Ecto.html"
"A good way to play around with Ecto is to try out the `mix phx.gen` scaffold generators."
-
Programming Elixir
- Recommended by a Reddit user with 12 karma
- Will give you “a really solid grasp on fundamentals”
-
Programming Phoenix
- Recommended by a Reddit user with 12 karma
- Will give you “a really solid grasp on fundamentals”
-
Research Phoenix Contexts and how to properly structure your application
-
Resources listed by a Reddit user with 12 karma, including:
- A Proposal for Context Rules
- Reorganizing Your Phoenix Contexts as Use Cases
-
Resources listed by a Reddit user with 12 karma, including:
-
General Advice
-
Resources listed by a Reddit user with 12 karma, including:
- Ten Things I Wish I Knew When Using Elixir
- Phoenix Tips and Tricks
-
Resources listed by a Reddit user with 12 karma, including:
-
Elixir Wizards podcast
- Recommended by a Reddit user with 12 karma
-
Elixir in Action
- Preferred by a Reddit user with 9 karma
- Preferred by a Reddit user with 2 karma
-
Programming Ecto
- Recommended by a Reddit user with 3 karma
-
Designing Elixir Systems with OTP
- Recommended by a Reddit user with 5 karma
-
Phoenix in Action
- Recommended by a Reddit user with 3 karma
- Project available on GitHub
"Check out "Designing Elixir Systems with OTP" This book really helped me understand just how powerful the BEAM makes Elixir, in a way I just couldn't quite "get" from the docs."
"Elixir in action(manning) -> Programming Phoenix(PragProg) -> LiveView(docs)"
"+1 for Elixir in action, been slowly working my way through it this past month, now at Ch7. The fact that the code from all assignments is available on GitHub is really helpful."
None
"bookshop.org needs to review the security of your connection before proceeding."
"[Vol.]: Volume"
"[No.]: Issue number"
-
Programming Elixir by Dave Thomas
- Recommended by a reddit user - 2 years ago - 14 karma
- Not for total beginners, assumes previous programming experience - 2 years ago - 6 karma
-
Elixir in Action
- Gives a solid foundation to build on - 2 years ago - 11 karma
- A bit deep for someone that has never programmed before - 2 years ago - 3 karma
-
Udemy course by Stephen Grider on Elixir and Phoenix
- Recommended by a reddit user - 2 years ago - 8 karma
- Patient and engaging instructor - 2 years ago - 1 karma
-
Learn You Some Erlang For Great Good!
- Will help introduce you to a lot of the Erlang/OTP concepts underpinning Elixir - 2 years ago - 3 karma
-
Learn Functional Programming with Elixir by Ulisses Almeida
- Phenomenal book for absolute beginners looking to learn Elixir - 2 years ago - 3 karma
- Pro tip: Skip chapter 1 - 2 years ago - 1 karma
-
Starting with Elixir the Study Guide
- Guide is still relevant - 2 years ago - 2 karma
-
Tutorials on YouTube
- Published about 170 free ones - 2 years ago - 2 karma
-
Elixir official docs
- Excellent - 2 years ago - 3 karma
-
Get fundamentals down with Python
- MIT and Harvard have great courses on Edx - 2 years ago - 1 karma
- Colt Steele has a good Python course on Udemy - 2 years ago - 1 karma
"Elixir in Action would give you a solid foundation to build on."
"IMO it’s a bit deep for someone that has never programmed before. Knowing the number of reductions your process gets on a scheduler is great but maybe too much for a newbie. Definitely one of the best elixir books though."
"Learn Functional Programming with Elixir by Ulisses Almeida is a phenomenal book for absolute beginners looking to learn Elixir. Pro tip: Skip chapter 1."
-
“Programming Phoenix” book
- Gives a good high level overview of how things fit together
- Important for motivation
- Can be frustrating head scratchers if you’re new to functional programming
-
“Programming Elixir” and its exercises
- Jumps between what’s taught in the chapters and demanded in the exercises can be quite high
-
“Learn Functional Programming With Elixir”
- Can help if you’re new to functional programming
- Disparity between the chapters and exercises
"There's another book called "Learn Functional Programming With Elixir" that can also help if you're new to it, but even there is a disparity between the chapters and exercises."
"It gave me a good high level overview over how things fit together, and this was important for motivation, because the other books like "Programming Elixir" and its exercises can be frustrating head scratchers if you're also new to functional programming."
"The jumps between what's taught in the chapters and demanded in the exercises can be quite high."
-
ElixirSchool (https://elixirschool.com/)
- Offers an interactive learning experience
- Welcomes feedback and suggestions
-
Exercism (https://exercism.io/)
- Offers exercises to help learn Elixir
- Jose Valim solves puzzles from Advert of Code and explains code
-
Codestool (https://codestool.coding-gnome.com/courses/elixir-for-programmers)
- Offers a great resource to learn Elixir
-
TDD
- Elixir is one of the best languages to do TDD in
- Tests serve as valuable documentation
-
Go through Phoenix’s code
- Can provide insight on functional development flow
-
Contribute to open source libraries
- Can help learn and get feedback
-
Attend meetups and Elixir conferences
- Can help learn even if done via webcast
-
Stack Overflow
- Thousands of Elixir developers answer questions
-
Elixir In Action (Saša Juric)
- Covers the basics of Elixir
- Covers OTP for Elixir
-
Programming Phoenix LiveView (Bruce A. Tate and Sophie DeBenedetto)
- Practical, high-level, and step-by-step approach
-
Programming Phoenix (Chris McCord, Bruce Tate, and José Valim)
- Good text to dig deeper into the guts of LiveView
-
Pragmatic Studio Elixir Course (https://pragmaticstudio.com/elixir)
- One of the best courses to learn Elixir
"This is sort of an opposite to Elixir In Action. Rather than a nuts-and-bolts intro, it's very much a practical, high-level, this-is-how-to-actually-do-stuff kind of text. If you get a job working with Elixir and you just need to learn LiveView pronto, this is the book to get. I would actually read this one first if your goal is to start building LiveView projects right away."
"You can skip this one for now if you're programming in LiveView, because the book I recommended for LiveView covers enough Phoenix for a beginner. But, if you're working with a non-LiveView Phoenix project, this is the one to get. It's also a good text if you're trying to dig deeper into the guts of LiveView; in that context, this one sits between the other two."
"Elixir school is good, but IMO reading over doesn't make you learn much. I highly recommend the elixir course from Pragmatic Studio, one of the best courses I've ever done, check it out!"
-
Pragmatic Bookshelf books
- “Programming Elixir”, “Programming Phoenix”, and “Craft GraphQL APIs in Absinthe”
- Very active forums on elixirforum.com
- Awesome video courses on pragmaticstudio.com
-
Manning’s books
- “Elixir in Action”, “Phoenix in Action”, and “The Little Elixir & OTP Guidebook”
-
Pragmatic Studio LiveView course
- Nothing like it exists out there
- Perfect learning curve
-
Elixir School
- Great resource
-
Exercism.io
- Perfect for solving same problems in almost every programming language
-
Alchemist Camp and ElixirCasts
- Great videos on learning Elixir
-
Elixir Learn X in Y minutes
- Useful syntax reference
-
Programming Elixir by Dave Thomas
- Most helpful
-
Official Elixir documentation
- Good enough to stand on its own
-
Videos from Frathon
- Not for beginners, but really good
-
E-book from Elixircryptobot
- Accompanying Frathon’s videos
-
Build a Cryptocurrency Dashboard with Elixir and Phoenix LiveView course
- Not free, but worth the $69
-
Learn Elixir blog post
- From Curiosum.com
"Both Alchemist Camp and ElixirCasts have great videos on learning Elixir. Alchemist camp also has videos on Youtube"
"I've also found that the Elixir Learn X in Y minutes is
"To complement that, Elixir School is a great resource also"
-
Learn Functional Programming with Elixir
- Recommended by a reddit user - 7 months ago - 5 karma
- Good introduction to the style and flavor of thinking in Elixir as well as a comprehensive overview of the main features
-
Elixir in Action
- Recommended by a reddit user - 7 months ago - 5 karma
- Skimmed to get an overview of the lay of the whole land
- Will need a second pass at the end
-
Functional Web Development with Elixir, OTP, and Phoenix
- Recommended by a reddit user - 7 months ago - 5 karma
- Better than the often mentioned Designing Systems with OTP
- Project based and even if you’re not interested in web development, you should go through it
-
Pragmatic Studio’s video courses on Elixir/OTP, as well as Phoenix/Liveview
- Expensive but very well organized, well paced, and so clear on developing OTP
-
Exercism
- Exercises, arranged by difficulty and concepts
- Automated tests
- After you have successfully met the requirements, you get to see the community solutions
-
Official getting started docs
- Very concise
- “Ideal pedagogical” version of them would be much longer and consist of much more repetition
-
Udemy by stephen grider on Elixir/Phoenix
- Price is usually $10-15
"I highly recommend this book path: 1. Learn Functional Programming with Elixir (skip if you are comfortable with functional programming already) 2. Elixir in Action: This book is a nice introduction to the style and flavor of thinking in Elixir as well as a comprehensive overview of the main features. 3. Functional Web Development with Elixir, OTP, and Phoenix: This book is *excellent*. It is much better than the often mentioned Designing Systems with OTP. It is project based, and even if you're not interested in web development, you should go through it, because most of it is not about web development at all."
"I liked the Elixir in Action book"
"The Programming Elixir / Phoenix / Phoenix LiveView / Ecto books are the ones I refer to mostly"
-
Hot code updates
- Can use hot code updates to maintain current connections
- Similar to database migrations
- Easier if using a map to keep state
-
Blue/green deployment strategy
- Can use Blue Green deployment for AWS to have a smoother transition
-
Separate set of servers for websocket connections
- Can bridge communication between websockets and main application
- API contract should not change
"We use Blue Green deployment for AWS. It doesn’t keep from dropping connections, though it could allow a smoother transition, i.e. taking down one server in the ASG at a time."
"For that you can use hot code updates. They are reasonably straightforward, similar to database migrations, but for GenServer state. If you use a map to keep state, then it is easy. Much better than the old days of Erlang records."
"Another approach if you have really sensitive requirements could be to maintain a separate set of servers for websocket connections and bridge the communication between the websockets and the main application via Node.connect or possibly a different distributed communication mechanism. This would allow deploys to either codebase w/o impacting the other, but you would need to make sure that the API contract doesn't change."