Programming Phoenix (Pragprog)

LiveView definitely won’t make it into the book given we are shipping the final three chapters and sending it off to production hopefully before end of year, which will be prior to a LiveView 1.0 for sure. Fortunately though, we have a great doc system with elixir and hexdocs so there will be plenty of docs/guides as we get underway.


What if you write a booklet (e.g., a small 10 to 20 pages booklet) and rewrite the JavaScript part of Rumbl in LiveView, and release it from the Pragmatic Bookshelf? I’ll happily buy it.

And thank you for creating Phoenix and now LiveView!


I’ve just tried to submit the following via PragProg’s errata page but it seems to be down… if anyone succeeds in submitting anything please also submit this (or please let us know when their system is back up)

Page 49 on the PDF version:

The view modules infer their template locations from the view module name. In our example, our Rumbl.UserView would look for templates in the web/templates/user/ directory.


Rumbl.UserView to RumblWeb.UserView

web/templates/user/ to rumbl_web/templates/user/

B5 is out now.

Changes in This Release

  • We added a new chapter: Chapter 11, OTP. It’s the most heavily revised chapter yet with changes to the dynamic supervision and new child specs added in Elixir 1.5.
  • We addressed another big chunk of of the technical errors. It seems you’ve been busy too! Thanks for all of your help and keep them coming.
  • We know we still owe you a treatment of channel presence; that will come in about a month or so.

Is the book available as an upgrade to those who bought the previous version or it’s a completely new purchase?

Did you buy an ebook? If so I think you get a huge 80% off: (on my mobile so can’t check what I paid for the upgrade atm):


(Your coupon should be on your pragprog account page)

1 Like

Update available :023:

Changes in This Release

  • We added a new chapter: Chapter 12, Observer and Umbrellas.
  • We addressed another big chunk of of the technical errors.
  • We’re working on a treatment of channel presence; that will come in about a month or so.

Updating now to check it out. :+1:

1 Like

Looks like it is going to include some LiveView too :003:


Update out:

Changes in This Release

The last update to the regular chapters is IN! We finished the Testing OTP chapter. Due to some major restructuring of the OTP design, the testing chapter took a while to get right. We can see the finish line. Here’s what’s coming:

  • We still owe you a treatment of Channel Presence.
  • We will align the configuration with the deployment strategies necessary to build a release.
  • We will add a treatment of LiveVeiw in the last chapter. We hope you’re enjoying the rewrite so far. Happy reading!
1 Like

Dear, I don’t know whether this is the right place. In every case, thanks for writing your book, I love it.
However I’m confused here:

the lines
{:error, changeset} ->
{:reply, {:error, %{errors: changeset}}, socket}

are those correct?
Since I made a typo somewhere else which resulted in:
protocol Jason.Encoder not implemented for #Ecto.Changeset

I read “5. Authenticating Users” - “In-context Relationships”, There is a one-to-one relationship between User and Credential. But I don’t see how it is easy to support third-party oauth2 login. Does it mean adding fields such as facebook_uid, twitter_uid in the table?

In my opinion, I will have an Authentication table with provider and uid fields. Then each third-party is one row in the table.


I would love to see (will even pay/donate!) for someone to extend the Authentication chapter with a follow-up using Uberauth and Guardian, and then a jwt, to show not only how to integrate a library but also how to do authentication ‘properly’ and is also production quality.


I’ve bought the beta alongside Ecto from PragProg, I would love to see a chapter on deployment, logging and optimization. Thanks.


Changes in This Release

This is the last beta! With this release, we’re content complete. Among the changes are these:

  • You now have the last chapter: Chapter 14, What’s Next? In it we address LiveView, PubSub 2.0, and the coming additions to Phoenix.
  • We aligned the configuration with the deployment strategies necessary to build a release to prepare for Elixir’s deployment changes.
  • We have taken an extensive pass through the entire text, cleaning up each chapter along the way and making things consistent.
  • We have also taken an extensive pass through the errata. Thanks for all of your help with this! For those of you who have been keeping us busy, please accept our thanks. You’ve gotten us through to the production process when our editors and reviewers will go over the book in detail.



Is there a way to preorder the physical book and at the same time buy the PDFwith access to the beta ? Like some kind of package.

What typically happens is that you get issued a coupon to buy the physical book at a discount.

For example when “Programming Ecto” went to print a coupon was issued (to the account) for purchasing the paper book for $14.95 (instead of $37.95).

Thank you for the tips

It was actually a $14.95 discount, so the book was $23.

Thank you for the correction - yes it is “Save $14.95”.

In the case of “Programming Ecto” is was issued 2019-04-09 and expires 2020-04-11.

FYI: Last couple of years they had a “Christmas in July” 40% off sale for ebooks, screencasts, and audio books.

1 Like