Greetings and salutations. I’m writing a book about Elixir/Phoenix, based on the best practices for developing modern web applications. I’m seeking a co-author to assist me in framing and writing the book. I believe the most important parts are 1.) designing the sections in such a way that it introduces the Elixir language in digestible articles that are relevant and useful. AND 2.) providing readers with both a high level and low level understanding of Elixir/ Web apps/ Http.2 etc.
If anyone is interested in helping me produce this as a free resource for the community please let me know. The benefit, of course, being attributed as a co-author on what I believe will be the best introductory programming (Elixir) book.
If it’s going to be quite an extensive book with just one or two authors, why not charge a small fee? Something like $5? Or if you really want to keep it free, have you thought about contributing to the Elixir School project? Reason being is I think writing a largish book takes quite a bit of work (and motivation!) whereas contributing smaller amounts where there are lots of contributors takes less.
I think we’re very lucky to have some brilliant free resources such as ElixirSchool, the Elixir and Phoenix Guides and the Joy of Elixir. These are high quality and that’s been possible because they’ve often been a group effort (or a little smaller in the case of JOE)… but when it comes to writing a full book, that is quite an undertaking and I think having an incentive often pushes the person to go that extra mile (which I think is worth the cost). Not saying that’s always the case mind but I’ve found it often is.
It’s just my opinion of course, but I can definitely see a place for:
‘Standard’ cost (what you might expect to pay for a product of that quality)
And perhaps even higher cost (for things like in person training)
For me personally I’m usually interested in the first three
In my opinion, most tutorials prior to Phoenix 1.3 are deprecated. I’ve also noticed an inordinate number of programming books / blogs that produce sub par content, including some of the most popular books. Some of the authors are clearly experts in OOP but are enamored by Elixir/Phoenix. They see the value of Elixir but they have a misunderstanding of functional programming so they approach it like an imperative language.
The other common issue includes introducing content without a logical order. It’s difficult to understand functions if the author has not yet explained the data types Elixir understands, yet I see this all the time. Oh, my biggest pet peeve, using the word you are defining in its definition. I cannot stand this. What is an Enumerable? Oh, well, it enumerates over a collection, obviously. (THIS IS BAD TEACHING).
I think that any good book should take the reader on a journey of both high and low level understanding. Add in many examples, analogies, and relative competitors like Golang and explain why Golang is an attractive alternative to Python but still beneath the quality of Elixir.
Finally, the choice of application is incredible important. Instead of developing some simple blog or some obscure application, I’ll be developing real time crypto currency applications that challenge the reader and highlight the language features. It’s for these reasons I’m writing an Elixir/Phoenix book. Join me, let’s cement our legacy as coding giants and usher a new generation into functional programming!
I wouldn’t say tutorials prior to 1.3 are deprecated. The changes in reality are organizational, and very slight (but important). For instance, if you do not want to think about domains (contexts) then just put everything under an “App” context or something similar, then once more familiar with the language and phoenix, read up on contexts. The great thing about contexts is it forces you to think a bit more before implementing, however, when doing a tutorial or building a toy app to get to grips with how phoenix works it can be distracting. Having said that, more material is always welcome!
Have you tried giving the authors some friendly constructive feedback? We’ve seen this on the forum before and it has led to some great changes. The books I have read so far personally have been excellent.
Again I’ve not experienced this either - apart from once where the author says don’t worry about it now we’ll cover it later (and which I thought was fine in that context). But I agree with you in that it’s bad to introduce things that rely on the knowledge of something else without having first covered that topic.
I agree that choice of app is important (however for me personally I am not at all interested in a crypto currency app).
I would be cautious about this. I think examples should be super simple to follow so that they do not add unnecessary overhead when trying to grasp concepts.
Going back to your original post, what do you consider to be best practices for developing modern web apps?
Essentially, best practices should focus on building applications that are fast and reliable. Beyond that, applications should be modular, loosely coupled, with the fewest number of dependencies.
– What i meant by challenging examples/ code –
As an autodidact I often find myself in awkward stages when learning a new technology. After learning the basics and feeling comfortable with the language I get to the point where tutorials are either too easy or too hard. Many authors use very simple examples that make the content seem like a breeze and then when I’m coding I feel like I don’t know anything. It may just be me but it reminds of math class. When your in class and the teacher is showing you how to do it you think that it’s so easy. Later when you get home and your trying to solve the homework problems, all of the sudden it’s not so easy.
Crypto is exciting! Bitcoin goes from 0 to 6,000! Let’s all be millionaires! Or, if you aren’t into bitcoin. Consider an application that teaches high school, college, or any age person how to invest. I’ll choose a cheap altcoin where $5 is worth a few thousand coins create a quasi-stock exchange.
Hi, I’m the author of Joy of Elixir (and a few other books) and I’m liking that there’s going to potentially be more Elixir / Phoenix material out there. Thank you for taking on the project of writing another tome.
I’d like to ask a couple of questions, or highlight a few things.
It’s good that you’re thinking ahead. Having an outline has been tremendously helpful in my own writing as it:
Focuses my writing to cover just the parts that the outline calls for
Lets me know how far away I might be from completing a chapter or even the whole book
My initial read of your quote here made it seem a bit like “technical co-founder” of a startup territory: i.e. “I’ve got the idea, I just need the brains”… but it’s not that at all. Seems like you’re thinking about it already, so that’s fantastic to see.
However I think that writing a single introductory book that covers both Elixir and Phoenix is going to be a massive undertaking and I would encourage you to split it into two distinct books for a couple of reasons.
First, it keeps these separate concepts, well, separate. Elixir is useful without Phoenix. A book focussing on just Elixir won’t ever be tempted to muddle Phoenix concepts with Elixir ones.
Second – and this is a “for your own sanity” type-thing – it makes the goal much more achievable. Writing a book is hard. For instance, here’s a list of my hard things in life:
literally everything else
Having something you can write in a year and then show off is great. Taking multiple years to potentially get a return is a path of ruin, so I’d encourage you not to go down that route. Something something “Return on Investment”.
Well this is just plain awkward, isn’t it? Let’s look at how I start to explain enumerables in Joy of Elixir:
I think a good way to sell people on your book idea is to provide good examples of how you would introduce concepts like Enumerable. The end of your paragraph here seems a bit… ranty. Win people over to your way of thinking by giving an example of what your idea of a better explanation would be.
I (politely) disagree with this. You stated in your OP that you want this to be an introductory programming book, but then say you want to bring in Python and Golang too; which seems to indicate that readers of the book might be expected to know of at least one of those languages first. So which is it: is it an introductory book or a comparison between these languages? Which path do you want to go down? Which do you think is more useful to others?
As others have done in this thread, I would also question your choice of application here. Not many people know in-depth about crypto-currency (yet) and so your book would likely have to explain crypto-currency and Elixir at the same time. That could be confusing, if you’re (for example) introducing a new crypto-currency term and Elixir term at the same time. For instance: “is blockchain an Elixir data type?” might be a question that comes up.
Your God Complex is showing.
This times about a bajillionty. I’d love any feedback that you (or anyone else) has for Joy of Elixir. I’m sure there’s things I’m missing or explain in a poor fashion. Alongside this: If you’re writing an Elixir book, maybe it’d be good to see what other people are covering too? I know JoE is pretty basic-level, but you probably have some great ideas of how to improve it.
Anyway, those are just some thoughts that I had while reading this thread. Thank you for wanting to contribute + grow the Elixir community by producing more books; the more the merrier! I wish you luck in your writing endeavours.
One more word of advice: Scotch does wonders for the self-review process.