Adopting Elixir (Pragprog)

by Ben Marx, José Valim, Bruce Tate

Bring Elixir into your company, with real-life strategies from the people who built Elixir and use it successfully at scale. See how Ben Marx and Bleacher Report maintain one of the highest-traffic Elixir applications by selling the concept to management and delivering on that promise. Find out how Bruce Tate and icanmakeitbetter hire and train Elixir engineers, and the techniques they’ve employed to design and ensure code consistency since Elixir’s early days. Explore customer challenges in deploying and monitoring distributed applications with José Valim and Plataformatec. This book has all the information you need to take your application from concept to production.

Adoption is more than programming. Elixir is an exciting new language, but to successfully get your application from start to finish, you’re going to need to know more than just the language. The case studies and strategies in this book will get you there.

Make a business case and build a team before you finish your first prototype. Once you’re in development, form strategies for organizing your code and learning the constraints of the runtime and ecosystem. Convince stakeholders, both business and technical, about the value they can expect. Prepare to make the critical early decisions that will shape your application for years to come. Finally, manage your deployment with all of the knobs and gauges that good DevOps teams demand. Decide between the many options available for deployment, and how to best prepare yourself for the challenges of running a production application.

This book picks up where most Elixir books let off. It won’t teach you to program Elixir, or any of its tools. Instead, it guides you through the broader landscape and shows you a holistic approach to adopting the language.

Don’t forget you can get 35% off the ebook using the code ‘devtalk.com:023:

24 Likes

This is great. I love seeing Elixir flourish and having new, high quality resources being produced. Although this book does not necessarily pertain to me at the moment, I’m still going to purchase it and read it for my own curiosity.

Keep up the great work!

3 Likes

I don’t mean to judge a book by its cover, but I’ve noticed Elixir related titles seem to always have great covers. Really liking the Matrix-themed elixir-ink theme.

Another must buy for me!

1 Like

Thanks guys for the kind words. Bruce Tate, co-author of this book and line editor of the Elixir books here. I don’t know if you’ve noticed, but folks don’t always like to pay for books in other language ecosystems, and quality suffers. What I am saying in a way too verbose way is that you, the community, make all of this work, and I genuinely thank you.

The process of picking a cover is pretty simple. Authors get votes, and the prag support team gets votes. Our team builds a half dozen covers or so, and then if we don’t like them we build more. I think this system lets us get the egos out of the room, and we can generally converge on something interesting. My favorite book covers of all time were the tower of Babel for the initial seven languages book and the passport for the second seven language book.

On how we choose our books, the process is very much the same. We get proposals, some hand delivered (to me, or the prags), and then we have two meetings per month to talk about them. We vote on whether we’d like to publish. The owner doesn’t throw his weight around, and the editors don’t either. Everyone gets a fair chance. That leads to interesting books, often on topics we hadn’t considered. So if you want to write an Elixir book, it’s hard but you can just drop me an electronic note (bruce at rapidred dot com) and I’ll tell you if someone is already writing a book, or to write a proposal. Then it’s pure darwin. We’ll look at the topic with the committee, and if we like it we’ll read your TOC and sample chapter and give you a thumbs up or down.

Let’s see some proposals!

On the Elixir ecosystem and books you like and would like to see, are there any books that you need that we don’t provide? Here’s what we’re thinking now:

  • a graph QL book
  • an Ecto book
  • an advanced book on API and service design with OTP, Phoenix, and Elixir
  • a book on Nerves
  • Lance’s book will eventually have Elm

And of course the stuff we’ve already announced. Is there anything else we’re missing?

9 Likes

I’d vote for this with Absinthe on Elixir and a variety of things on the front, GraphQL is such a better API than REST and JSONAPI.

7 Likes

This is one of the things I’ve commented on in some of my posts about Ruby :003:

Culture

I want to cover culture on its own, because not all of it comes from the community. Of course the Ruby community will push you towards test driven development, writing good clean idiomatic code, contributing back to Ruby or other open source projects and generally helping you become a good Ruby citizen. But some cultural aspects are inherently down to the language itself – bizarre as that might sound.

The most important, and perhaps what will (and should?) make for interesting reading for managers and the ‘enterprise’, is the culture of learning.

If you go back to my list at the start of this post, you’ll see the brief list of things that make for Ruby Programmer Happiness™ – and what do people excel at? Things they enjoy :slight_smile:

I noticed a massive difference in my desire to learn Ruby, compared to PHP. PHP totally uninspired me. Don’t get me wrong, I was as desperate to learn to program as much as I’ve ever been (maybe even moreso back then) but all I wanted to do was get through the PHP books as quickly as possible just to ‘get on with it’. I never really enjoyed PHP, therefore I didn’t enjoy learning it – and that’s a problem, because people will generally only do the minimum or just skim over stuff, never truly understanding things.

Ruby, by contrast, is something I love. I enjoy reading about it and learning as much as I can. My appetite for all things Ruby is insatiable – and I’m not exactly a geek! It is just constantly, pleasantly, surprising me, and things just seem to ‘stick’ more (that’s testament to Matz wanting to make it a ‘natural’ language) so morale is always high. Additionally, because Ruby is very natural and therefore easy to pick up, you get people from all walks of life giving it a go – and that’s brilliant because it brings in creative people that might have otherwise not got into programming at all.

This, I think, is why you get better Ruby programmers. Of a higher skill-set and with more ‘experience’ – we tend to enjoy furthering our knowledge because we enjoy the topic so much. I really can’t stress this point enough, this is the reason (which itself is only there because of all the other factors) why I believe Ruby is going to grow at a phenomenal rate – it’s because we want to, not because we have to (JS/browsers) or we’re told we should do (Java/enterprise).

I think the exact same thing applies to Elixir :slight_smile:

You might find this thread interesting:

I love the idea of more books from more authors. One of the things I really enjoy about reading books is that everyone has a different style and approach, and sometimes some authors just hit that sweet spot for you.

Personally I would absolutely LOVE for Pragprog to do a book with @russolsen …one of my favourite tech authors of all time :003:

2 Likes

Any chance to get a date for the beta release? I am expecting this book so much…

Otherwise, I would also enjoy a book on Absinthe/GraphQL

Sorry! No beta date yet.

This book looks great. It’s just like hire all of you to make great app on the production :slight_smile: I’m constantly reading Elixir books and it looks like another item just have been pushed to my queue (it’s very hard to find a time to read, when you babysit a daughter).

Personally I can’t wait to see the complete book about Ecto. In my day to day work I read docs all the time and I finished what’s new… But having a complete and thorough book would be great.

Also I hope that something about the Flow would pop up. Flow and GenStage are ground steps on the way to replace the OTP behahviors and way of sorting things out.

Back to the subject: I hope you will cover in depth different approaches how to release the app and in what environments run it.

I would find very pleasant to show on the example how to efficiently use supervision tree and distribution on Phoenix app.

Still, thanks for this great book.

1 Like

The best thing about the cover is the authors.

1 Like

I haven’t worked with GraphQL or Absinthe yet (although these do interest me) so I would cast my vote for a book devoted to Ecto as well.

I’m glad to hear that Lance’s book will incorporate Elm. Even more excited for the book now :grin:

@kokolegorille - You’re in luck!

A post was split to a new topic: Yet another Pragprog book - Craft GraphQL APIs in Elixir with Absinthe

I don’t have enough money, or time, to keep up! :slight_smile:

1 Like

The book will cover deployments using mix and distillery and give a tour of the tools that come as part of Erlang/Elixir. And while we won’t explore any particular container/orchestration/cloud platform, we will provide enough background for you to confidently deploy to any of these.

Can you please expand on what you mean by efficiently using a supervision tree? The book is currently thin on supervisors but it is a topic we will gladly expand if there are common contention points. We do talk about Distributed Erlang in terms of architecture and operations.

It is worth noting this is not a tutorial/example kind of book. It is rather an exploration of what is available in the platform, ecosystem and how to avoid common pitfalls. You will get plenty of breadth and learn new concepts but it will be up to you to go deeper into them.

3 Likes

Thanks for your reply.
I meant that I would like to read a book that covers how supervision tree works in general, in Phoenix application and how we can build a robust, fault-tolerant app - to basically - prevent app from real crashing at all.

This is now out in beta :023:

6 Likes

Long awaited :slight_smile:

Is there a coupon for forum members?

2 Likes

Yup - use coupon code ElixirForum to get 25% off :003:

5 Likes

just bought it, great opportunity to learn from guru

1 Like

I think I’ve powered through the curve on my own, but I’ve always maintained that there is still a void for a really solid, Elixir-first exploration of concurrency abstrations and tooling of both OTP and Elixir-native ecosystems, since they are so unique compared to many incoming programmer’s fluencies––akin to the excellent Little Elixir and OTP Guidebook, but explicitly highlighting the common, core, intimidating decisions you must make as a fluent Elixir developer trying to understand and introduce the right abstractions into their app for the first time by robustly contrasting:

  • spawning vs linking vs monitoring
  • start vs start_link
  • signal trapping and handling
  • supervision strategies
  • cast vs call and the various clever strategies inbetween
  • keywords vs maps vs records vs structs
  • behaviours vs protocols
  • applications vs libraries
  • Enum vs Stream vs Flow
  • gen_event vs GenStage vs Flow
  • parse transforms vs macros
  • ets vs dets vs mnesia vs ecto
  • dirty schedulers and nifs vs ports vs… that whole mess

I know like this seems like a laundry list of distinctions, but I think it’d be really useful to have a resource that was explicitly indexed like this: I know of these n concepts, but I need to understand their similarities and differences better because it’s go time; preferably updated with the consistency and ease of most pragpub resources.

While I’m daydreaming, an Elixir-first example-driven analog of Erlang in Anger with all of the lovely sys tips and amazing tracing other hidden gems presented during this year’s ElixirConf would be a hell of a publication.

11 Likes