← All series

Series contents

Log in to track your progress

  1. 1. Welcome to Alchemist Camp Episode
  2. 2. Lesson 1: The guessing game Episode
  3. 3. Solution 1: The Greeter Episode
  4. 4. Lesson 2: Word Count Episode
  5. 5. Word Count ULTIMATE EDITION! Episode
  6. 6. Minimal Todo List Part 1 Episode
  7. 7. Elixir lists vs Elixir tuples Article
  8. 8. The Image Snatcher Episode
  9. 9. Minimal Todo List Part 2 Episode
  10. 10. Elixir maps made effortless Article
  11. 11. Fibonacci with tail recursion Episode
  12. 12. Mini Markdown Episode
  13. 13. Extending Mini Markdown Episode
  14. 14. Alchemy Markdown Episode
  15. 15. Using mix to modularize and add tests Episode
  16. 16. Command line applications with escript Episode
  17. 17. Caboose, a simple Unix tail clone Episode
  18. 18. Game board (Tictac Part 1) Episode
  19. 19. Structs: Maps with checks and default values Article
  20. 20. Deck generation, Pythagorean Triplets and more Episode
  21. 21. Whiteboarding the Tictac state machine Episode
  22. 22. Game state machine (Tictac Part 2) Episode
  23. 23. Modelling the memory game Episode
  24. 24. Finishing Tictac and making a CLI Episode
  25. 25. Threatened by rooks, bishops and knights Episode
  26. 26. A worker to log stats from a YouTube’s API Episode
  27. 27. Constructing bitmap files with Elixir Episode
  28. 28. Making bitmaps with color palettes Episode
  29. 29. Flattening lists recursively in Elixir Episode

Welcome to Alchemist Camp

I have something to share today. I'm going to teach you my favorite programming language!

Elixir

Elixir has been around for several years, but has really been gaining momentum since 2015. It was written by José Valim, a major Rails contributor, but unlike Ruby, Elixir is based on a technology that goes back to the bronze age of computing—Erlang.

Erlang was developed for the telecom industry and is arguably the only relatively major programming ecosystem even more stable than that of Java. The Erlang Virtual Machine has been at the heart of "nine nines" reliability projects for decades. When someone picks up a phone, they expect an answer! Distributed EVM systems can be upgraded while running and have extraordinary fault-tolerance features.

Erlang has had a few well-publicized successes in recent years, such as Whatsapp, which used the technology to support hundreds of millions of users with only a handful of engineers maintaining a handful of servers. However, its terse syntax and immutable functional nature made it a difficult to most web developers of the past 20 years.

Elixir is built on the very same EVM but brings some of the developer ergonomics that made Ruby so beloved by so many. It also offers a full-blown macro system, which makes powerful DSLs possible and it has other powerful language features such as Protocols. This is probably why it didn't take long for a Rails-ish framework called Phoenix to appear.

Phoenix is amazing for web dev


PHP Java or Golang Rails Node Phoenix
solo dev speed moderate slow very fast moderate fast
server performance moderate excellent poor moderate excellent
numerical performance poor excellent very poor good moderate
debugging hard easy hard very hard easy
concurrency no yes no async yes
fault-tolerance no no no no yes

Elixir is extremely performant for IO-related tasks. In one demo, an Elixir / Phoenix server running on a single machine managed to handle sending a chat message to 2 million simultaneously connected users. No other backend web MVC I know has performed at this level. Generally it's only lower level infrastructure written in compiled languages such as Java or Go that tend to run so efficiently.

In stark contrast to those options, Elixir gives up very, very little in terms of developer productivity. Being a younger language with a much smaller community, there are some gaps in terms of library support. For that reason, if your only concern is getting an MVP up quickly, Rails is still probably the go to. But you can move almost as quickly with Phoenix, and it can take real-time evented sorts of problems that Rails servers would have to hand off to third party tools such as Redis or a pub-sub service.

In a lot of ways Elixir feels like Ruby was in the mid 2000s. It's been around for a few years but just starting to really break into the international developer community. It offers tremendous benefits for individuals and small teams and it has a fantastic new web framework. There aren't many Elixir programming jobs available, but a lot of smart people are writing side projects with it in their own time. Startups are starting to see it as a competitive advantage. It's an exciting time.

Alchemist Camp

Here are some quick bullet points about the project:

  • Regular screencast lessons
  • Lessons are mostly project based
  • For learners with some programming experience
  • Abundant free content
  • Freemium model for those who want more features

In many ways Elixir was a gift just for me. I'm a solo-entrepreneur and my interests have always drifted towards lower cost consumer-facing products, where Elixir's scalability and performance are worth a premium. I had a real struggle finding resources for learning the language while I was working on my previous startup, so in many ways Alchemist Camp is made for the 2016 version of myself. I hope a lot of other people can benefit from it too, though!

-Mark

Open standalone page ↗

6 Comments

well done :)

- jon-coder · 4 years ago

:)

- Neon23 · 1 year ago

Very cozy web site <3

Its like content here have some warm .. I dont know how to explain , but I definetly feel it. Thanks author

- plagoswm · 3 years ago

Excited to learn and I’m also coming from a JavaScript background…

- triptych · 3 years ago

Good Start! I love Elixir but I want to grow my skills!

- jtoulouse · 6 years ago

I'm super excited to get going.

- treanaslocum · 6 years ago