small medium large xlarge

The latest version of the book is P1.0, released 2 months ago. If you've bought a PDF of the book and would like to update it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (08-Apr-20)
  • Fixed: 08-Apr-20, awaiting book release
PDF page: 31
In the initial definition of the HelloSocketsWeb.PingChannel, the join function has an unused topic argument (_topic). Should this not be the topic na...more...
Stephen Bussey says: In this case, it could be the topic name or an unused argument. We will expand the PingChannel with additional topics in the future, so limiting it to "ping" would be an issue. In general, I would suggest doing the routing at the Socket layer (via a channel definition) and only pattern match on the topic name if you need to do authorization based on it (covered in a later chapter). For example, if I had a Channel with 5 different topics and none of them had special join needs, I would allow them to use the same join function via a _topic argument.
  • Reported in: P1.0 (16-Apr-20)
  • Fixed: 16-Apr-20, awaiting book release
PDF page: 32
Hi, at '< ["1","2","ping","phx_reply",{"response":{"ping":"pong"},"status":"ok"}] If you encounter any errors like “unmatched topic” when you run t...more...
Stephen Bussey says: The book does not introduce the JavaScript client at this point--only wscat is used until the end of chapter 3. Any unmatched topic errors at this point are from the Elixir side, so you should double check that the code is entered correctly. If you get stuck, you can go to the file in the code download to see what I entered.
  • Reported in: P1.0 (07-Apr-20)
  • Fixed: 08-Apr-20, awaiting book release
PDF page: 72
A pattern matching statement in the code block at the bottom of the page is reversed. Currently, the third parameter of the join method reads: soc...more...
Stephen Bussey says: Thanks for this report. In my personal development, I always put the variable assignment before the pattern, rather than after. You do run the potential of seeing it both ways in the book, but both are syntactically correct and will have the same end result. You can change it in your code to the one that you prefer.
  • Reported in: P1.0 (25-Apr-20)
  • Fixed: 25-Apr-20, awaiting book release
Paper page: 127
After adding test for notify_product_relese i get the following error when running mix test == Compilation error in file test/sneakers_23_web/chann...more...
Stephen Bussey says: Please check that your file is using ChannelCase and not ExUnit.Case. This is the most likely culprit that was missed. The example in the book has source code provided as well. You can look there to see it working and what you might have missed. The book code has confirmed to work if all steps are followed. Best Steve
  • Reported in: P1.0 (15-Apr-20)
  • Fixed: 15-Apr-20, awaiting book release
PDF page: 184
Paper page: 0
Hello, Thank you for the book! I learnt a lot. I was looking at test for shopping cart channel. Found a random test failure on sneakers_23_ca...more...
Stephen Bussey says: Thanks for this report Ruslan. I was happy to be able to chat with you further about it. There does seem to be some sort of race condition that is reproducible on your machine but not mine or some others. This may be a legitimate issues with the code. I would suggest adding another call to wait_until_messages_processed after the channel is joined in the "handle_in remove_item the PubSub subscription for the item is removed" test. I am not going to suggest any changes to the content at this point because I have not been able to reproduce this.