SlideShare a Scribd company logo
1 of 19
A Sip Of Elixir with apologies to
Josh Adams
PghTechFest 2014
Who Am I?
Software Engineer - Quicken Loans
@OldDutchCap #pghtechfest
Catenacci@ieee.org
My Goal
What Do I Want To Get From This Talk?
Erlang
Lots of APE (Asynchronous Phone Equipment)
Erlang (cont’d.)
● Fault tolerant
● Agent based
● High Scalability
● Code Hot Patch
Lots of data stores
Data Can Be Passed In Parallel
AA111
AA112
AA113
AA121
BA100
The Foundation
Along Came Jones
Meta-meta
● defmodule
● def
● If
Protocols
A Little Look At Code
Other Aspects Of Elixir
● Mix
● Documentation Everywhere
Why Not Elixir?
● Too much for some jobs
● Sort of new
You must remember this
Elixir and Erlang similar
Elixir adds metaprogramming
Elixir adds protocol-based polymorphism
More Info
● http://www.elixir-lang.org
● http://www.elixirsips.com
● https://groups.google.com/forum/#!forum/elixir-lang-talk
● http://www.meetup.com/DaytonElixir/
Credits
Brick Wall by Emily Haasch from The Noun Project
Database by Romeo Barreto from The Noun Project
Handshake by Pavel Pavlov from The Noun Project
Q & A
@OldDutchCap
Catenacci@ieee.org

More Related Content

Similar to A Sip Of Elixir

NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsTorben Hoffmann
 
Elm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebElm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebPublitory
 
Erlang: Software for a Concurrent world
Erlang: Software for a Concurrent worldErlang: Software for a Concurrent world
Erlang: Software for a Concurrent worldArjan
 
PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3David Yell
 
Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting Network Automation Forum
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systemssosorry
 
Implementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor DeryaginImplementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor DeryaginElixir Club
 
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Paolo Negri
 
Erlang, the big switch in social games
Erlang, the big switch in social gamesErlang, the big switch in social games
Erlang, the big switch in social gamesWooga
 
Putting Compilers to Work
Putting Compilers to WorkPutting Compilers to Work
Putting Compilers to WorkSingleStore
 
Flask and Paramiko for Python VA
Flask and Paramiko for Python VAFlask and Paramiko for Python VA
Flask and Paramiko for Python VAEnrique Valenzuela
 
Software testing and quality assurance
Software testing and quality assuranceSoftware testing and quality assurance
Software testing and quality assuranceBenjamin Baumann
 
Functional Programming in PHP
Functional Programming in PHPFunctional Programming in PHP
Functional Programming in PHPAurimas Niekis
 
CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011Graham Weldon
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHPEric Johnson
 
Performance tuning
Performance tuningPerformance tuning
Performance tuningEric Phan
 
The dream BEAM - A former DevOps perspective
The dream BEAM - A former DevOps perspectiveThe dream BEAM - A former DevOps perspective
The dream BEAM - A former DevOps perspectiveJeffrey Chan
 

Similar to A Sip Of Elixir (20)

NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
 
Elm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebElm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and Web
 
Erlang: Software for a Concurrent world
Erlang: Software for a Concurrent worldErlang: Software for a Concurrent world
Erlang: Software for a Concurrent world
 
Ecto
EctoEcto
Ecto
 
PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3
 
Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting Simplified Troubleshooting through API Scripting
Simplified Troubleshooting through API Scripting
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems
 
Implementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor DeryaginImplementing GraphQL API in Elixir – Victor Deryagin
Implementing GraphQL API in Elixir – Victor Deryagin
 
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"
 
Erlang, the big switch in social games
Erlang, the big switch in social gamesErlang, the big switch in social games
Erlang, the big switch in social games
 
Putting Compilers to Work
Putting Compilers to WorkPutting Compilers to Work
Putting Compilers to Work
 
Flask and Paramiko for Python VA
Flask and Paramiko for Python VAFlask and Paramiko for Python VA
Flask and Paramiko for Python VA
 
Protocol buffers
Protocol buffersProtocol buffers
Protocol buffers
 
Software testing and quality assurance
Software testing and quality assuranceSoftware testing and quality assurance
Software testing and quality assurance
 
Functional Programming in PHP
Functional Programming in PHPFunctional Programming in PHP
Functional Programming in PHP
 
Performance Tuning with XHProf
Performance Tuning with XHProfPerformance Tuning with XHProf
Performance Tuning with XHProf
 
CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011CakePHP 2.0 - PHP Matsuri 2011
CakePHP 2.0 - PHP Matsuri 2011
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
 
Performance tuning
Performance tuningPerformance tuning
Performance tuning
 
The dream BEAM - A former DevOps perspective
The dream BEAM - A former DevOps perspectiveThe dream BEAM - A former DevOps perspective
The dream BEAM - A former DevOps perspective
 

More from OnorioCatenacci

Basics Of Elixir and Phoenix
Basics Of Elixir and Phoenix Basics Of Elixir and Phoenix
Basics Of Elixir and Phoenix OnorioCatenacci
 
Gentle Introduction To Funcitonal Programming - Detroit.Code
Gentle Introduction To Funcitonal Programming - Detroit.CodeGentle Introduction To Funcitonal Programming - Detroit.Code
Gentle Introduction To Funcitonal Programming - Detroit.CodeOnorioCatenacci
 
Building An Elixir Package
Building An Elixir PackageBuilding An Elixir Package
Building An Elixir PackageOnorioCatenacci
 
Alternate languages for the CLR
Alternate languages for the CLRAlternate languages for the CLR
Alternate languages for the CLROnorioCatenacci
 
A RESTful Interface for Erlang Code using Webmachine
A RESTful Interface for Erlang Code using WebmachineA RESTful Interface for Erlang Code using Webmachine
A RESTful Interface for Erlang Code using WebmachineOnorioCatenacci
 

More from OnorioCatenacci (6)

Basics Of Elixir and Phoenix
Basics Of Elixir and Phoenix Basics Of Elixir and Phoenix
Basics Of Elixir and Phoenix
 
Gentle Introduction To Funcitonal Programming - Detroit.Code
Gentle Introduction To Funcitonal Programming - Detroit.CodeGentle Introduction To Funcitonal Programming - Detroit.Code
Gentle Introduction To Funcitonal Programming - Detroit.Code
 
Building An Elixir Package
Building An Elixir PackageBuilding An Elixir Package
Building An Elixir Package
 
Alternate languages for the CLR
Alternate languages for the CLRAlternate languages for the CLR
Alternate languages for the CLR
 
A RESTful Interface for Erlang Code using Webmachine
A RESTful Interface for Erlang Code using WebmachineA RESTful Interface for Erlang Code using Webmachine
A RESTful Interface for Erlang Code using Webmachine
 
Shell scripting with f
Shell scripting with fShell scripting with f
Shell scripting with f
 

Recently uploaded

Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 

Recently uploaded (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

A Sip Of Elixir

Editor's Notes

  1. At the end of this next hour we’ll all be 1 hour older. My goal is that all of you will be one hour older and a bit smarter about what Elixir is and how to find out more about it if you think it’s worth your while. I’m telling you my goal so you can tweet “Yep, Onorio met his goal” or “Onorio met his goal? Not so much” Telling you my goal for this talk makes me a bit more accountable to you as far as what you get out of this.
  2. So in order to understand Elixir, one must first understand Erlang. Erlang was developed by Ericsson as a way of programming phone switches. When you understand this basic reality a lot of the design choices which were made in creating Erlang are very easy to understand. This is not to say that Erlang is some sort of glorified domain specific language; it is to say that some of the design decisions made in creating Erlang were informed by this reality.
  3. The thing is that prior diagram was a little bit deceptive. Two phone switches talking to each other isn’t really all that tough to do in the grand scheme of things. Lots of phone switches talking to each other--that’s a whole new ballgame. Plus, a growing business may want to have more customers because after all customers give the business money and businesses usually like getting money. So being able to add even more switches without having to endure a major re-write of the software would also be a good design goal as well. You’ll note that in this diagram not all of the phone icons are connected; I deliberately simplified the diagram to keep it from being too busy.
  4. So the purpose for which Erlang was built informed several decisions about how Erlang was designed. Erlang was designed with fault tolerance as one of its design goals. Imagine what would happen if one phone switch going out cascaded to other phone switches. Likewise, because each phone switch must be able to act independent of other phone switches, Erlang has a strong agent based model built in. And, again, due to its origins high scalability was a design goal right from the start. Erlang also has a feature that’s somewhat uncommon--at least among languages which run anywhere other than mainframes. Erlang has the ability to hot patch code.
  5. It’s not hard to make the mental leap from passing data or phone calls between phone switches and passing data between data stores. I use the term “data store” very intentionally. The data stores could be databases or they could be people communicating via IM. In a sense, it’s immaterial to the underlying software and in another very real sense the same kinds of problems come up in all three scenarios.
  6. It’s also important to note that even for a single source and a single target we can do things in parallel. So imagine I had a list of codes I needed to validate against a database. If each check is independent of any other check we can do all these checks in parallel. That is, they can all be run at the same time because the result of one check will not change the result of another. Of course this would be impacted by business rules but in a good many cases, it’s fine to run the checks in any order you care to as long as you have some way of knowing which data still needs to be validated. And it’s not a large leap from checking data to recording data.
  7. But Erlang by itself is not the whole story. Erlang apps are built on a very special VM called the BEAM. The BEAM is, to some extent, the secret sauce of Erlang because it makes it trivial to spin up secondary and tertiary and even higher n-ary processes each isolated and separate. It’s also important to recognize that the processes we’re discussing here are not OS level processes. OS level processes tend to be pretty heavy weight; these processes are much less resource intensive. In fact someone once asked Joe Armstrong, one of the co-creators of Erlang about porting the language to java; a project called Erjang. He said he didn’t think it would get anywhere because there are features in the BEAM VM which simply support concurrency far better. The point is that Erlang and the BEAM VM together are (sort of) greater than the sum of the parts.
  8. Actually, along came Jose; and Jose didn’t come along right away. Erlang was first created in 1986 and it was open-sourced in 1998 by Ericsson. Because the concurrency and scaling in Erlang is hard to beat lots of systems that need high scale are built with Erlang. So Jose was creating code with the BEAM VM code and he found there were a few things that he wanted that just weren’t there. Coming from Ruby, he wanted polymorphism and he wanted true metaprogramming. Of course, being a main committer for Ruby when Jose decided to build a new language he borrowed freely from Ruby’s syntax.
  9. The use of meta-programming or “macros” as they’re commonly called by software developers is very much part of Elixir. Most of Elixir was built as macros around a very small core of concepts. Defmodule, Defproc and if among other things are implemented as macros. I’ll discuss those first two items a little more in depth but I trust that most people sitting here are familiar with the concept of a logical test in a programming language.
  10. So besides meta-programming Elixir implements polymorphism in two ways. First with multiple function clauses and secondly with protocols. So, what is a protocol? A protocol is a way of specifying certain behavior that we want present in a module. For instance if we wanted to insure that the class represented by a module were sortable we might say the module implements “Sortable” However, since the modules don’t really carry data with them
  11. So why would I not use Elixir? There are a few reasons: 1.) If I don’t need high-throughput, high scalability solutions, it’s a bit of mental tax to pay that I’d rather not pay. It’s a question of picking the right tool for the job. If I’m building an earthen dam then I would love to have a bulldozer. But if I’m building a sandcastle a bulldozer doesn’t help and, in fact, can be a bit of a hindrance. 2.) The other thing to keep in mind is that Elixir is somewhat new. It’s still be solidified and stabilized as we speak. I wouldn’t let that keep me from looking at it; I would bear that fact in mind if I’m building a production system that my business will rely upon.