- Joined
- Sep 23, 2014
- Messages
- 289
- Likes
- 450
- Degree
- 1
I've been working with a language called "Elixir" (http://elixir-lang.org/) lately over the past few months and I really feel like I've found the language I'll be specializing in for the next few years to come. Elixir is built and runs on the Erlang VM, just like Scala runs on the Java VM (JVM). If you've never heard of Erlang and how legendary it is, check out this article about "WhatsApp" and how they give major props to Erlang as one of the reasons they only need 50 Engineers to manage over 900 Million users: http://www.wired.com/2015/09/whatsapp-serves-900-million-users-50-engineers/ Yup, that's the same WhatsApp that was recently bought by Facebook for $19 Billion.
Need some more convincing about the power of Erlang? How about this video showing the use of Erlang to upgrade the firmware of a drone while it's in flight:
Now imagine being able to use the same techniques to update your code while it's running. Erlang is used in HUGE high traffic phone systems. When was the last time you used your phone and the line was "under maintenance". I've always felt that having a "maintenance mode" for an app or service was bad practice. That's the way things were done in 2005 or so, definitely not the way I've been doing things for the past 10 years.
What Elixir does is build on top of what Erlang and OTP (Open Telecom Platform) already provides and really improves and simplifies the syntax. I can use any Erlang lib I want with zero runtime cost and also get the extra hotness Elixir brings to the table.
From the main site (http://elixir-lang.org/):
"Due to their lightweight nature, it is not uncommon to have hundreds of thousands of processes running concurrently in the same machine. Isolation allows processes to be garbage collected independently, reducing system-wide pauses, and using all machine resources as efficiently as possible (vertical scaling).
Processes are also able to communicate with other processes running on different machines in the same network. This provides the foundation for distribution, allowing developers to coordinate work across multiple nodes (horizontal scaling)."
What that means is, Elixir is made for high performance, low latency and fault tolerant applications. For Web apps, I'm using a framework called "Phoenix" (http://www.phoenixframework.org/), that is like "Rails for Elixir" and it's not uncommon for me to see development response times measured in microseconds (this is in development mode, not even live mode) rather than the industry standard, milliseconds. I haven't seen anything like this - The performance is just insane. I've already completed 2 projects for clients, one of them being a high-performance API and both my clients and I both couldn't be happier with the performance and stability. Out of the box I'm getting self-healing type features that used to take me quite a bit of time and planning to code from scratch and also the Actor Model pattern that I'm so fond of.
I hope this is enough to get some of the more hardcore devs here to take a look at Elixir and Phoenix. I could give you a bunch of pretty charts and such, but much more can be learned by simply visiting the Elixir and Phoenix sites and just diving in. Remember, if anyone that tells you that broadening your technical knowledge and spending time to learn new languages or techniques "isn't making you any money so why bother" - I can almost guarantee you they don't have the coding chops or technical skills much past that of a junior devop and they'll spend more time telling you why you're wasting your time than it takes for you to actually "waste your time", learn the tech and leave them behind with their blinders and limits (true story).
If anyone here gives Elixir a whirl and builds something with it, I'd love to hear your thoughts. Also, if you have a project in mind that needs a high performance web app or API, let me know. I've been developing desktop and web apps for the better part of 20 years (coding for over 30), and am currently looking to expand my client base by about 2-3 or so, depending on the project(s).
Need some more convincing about the power of Erlang? How about this video showing the use of Erlang to upgrade the firmware of a drone while it's in flight:
Now imagine being able to use the same techniques to update your code while it's running. Erlang is used in HUGE high traffic phone systems. When was the last time you used your phone and the line was "under maintenance". I've always felt that having a "maintenance mode" for an app or service was bad practice. That's the way things were done in 2005 or so, definitely not the way I've been doing things for the past 10 years.
What Elixir does is build on top of what Erlang and OTP (Open Telecom Platform) already provides and really improves and simplifies the syntax. I can use any Erlang lib I want with zero runtime cost and also get the extra hotness Elixir brings to the table.
From the main site (http://elixir-lang.org/):
"Due to their lightweight nature, it is not uncommon to have hundreds of thousands of processes running concurrently in the same machine. Isolation allows processes to be garbage collected independently, reducing system-wide pauses, and using all machine resources as efficiently as possible (vertical scaling).
Processes are also able to communicate with other processes running on different machines in the same network. This provides the foundation for distribution, allowing developers to coordinate work across multiple nodes (horizontal scaling)."
What that means is, Elixir is made for high performance, low latency and fault tolerant applications. For Web apps, I'm using a framework called "Phoenix" (http://www.phoenixframework.org/), that is like "Rails for Elixir" and it's not uncommon for me to see development response times measured in microseconds (this is in development mode, not even live mode) rather than the industry standard, milliseconds. I haven't seen anything like this - The performance is just insane. I've already completed 2 projects for clients, one of them being a high-performance API and both my clients and I both couldn't be happier with the performance and stability. Out of the box I'm getting self-healing type features that used to take me quite a bit of time and planning to code from scratch and also the Actor Model pattern that I'm so fond of.
I hope this is enough to get some of the more hardcore devs here to take a look at Elixir and Phoenix. I could give you a bunch of pretty charts and such, but much more can be learned by simply visiting the Elixir and Phoenix sites and just diving in. Remember, if anyone that tells you that broadening your technical knowledge and spending time to learn new languages or techniques "isn't making you any money so why bother" - I can almost guarantee you they don't have the coding chops or technical skills much past that of a junior devop and they'll spend more time telling you why you're wasting your time than it takes for you to actually "waste your time", learn the tech and leave them behind with their blinders and limits (true story).
If anyone here gives Elixir a whirl and builds something with it, I'd love to hear your thoughts. Also, if you have a project in mind that needs a high performance web app or API, let me know. I've been developing desktop and web apps for the better part of 20 years (coding for over 30), and am currently looking to expand my client base by about 2-3 or so, depending on the project(s).