Erlang is a general-purpose development platform that supports concurrency, scalability, fault-tolerance, distribution, and high availability. It was built in the 1980s by Ericcson, a Swedish telecom giant. However, it is not specialized for telecom systems.
1/17
Erlang powers large applications such as WhatsApp, the Riak distributed database, the Heroku cloud, the Chef deployment automation system, and the RabbitMQ message queue.
2/17
Erlang is fault-tolerant, meaning that when something goes wrong, it localizes the impact of the error, recovers, and keeps the system running.
3/17
Erlang is scalable, meaning it has the ability to scale to increased load by adding more hardware resources without software intervention or system restart.
4/17
Erlang is Distributed: Meaning it has the ability to process work over multiple machines through concurrency and parallelism. This is integral for fault tolerance if a machine goes down and scalability by being "horizontally scalable."
5/17
Erlang is Responsive. It does not allow lengthy tasks to block the rest of the system and takes full advantage of all CPU cores in order to provide a fast and responsive experience.
6/17
The basic concurrency primitive in Erlang is called an Erlang Processes, not to be confused with OS processes. These Erlang Processes are lightweight and isolated from each other. A crash in one process does not crash another.
7/17
Erlang processes communicate via async messages, meaning no complex mechanism such as locks, mutexes, or semaphores. Therefore, concurrent interactions are easier to understand.
8/17
Erlang schedulers dedicate an execution window of time to each process so that a long-running process cannot block the system. In addition, IO operations do not block the execution of another process. This all keeps the system responsive.
9/17
Erlang allows per-process garbage collection to keep the system responsive, and it's even possible for one core to run a short garbage collection while the remaining CPU cores run standard processing.
10/17
Erlang shines in server-side systems but can be used in various applications, including desktop and embedded applications.
11/17
Unlike other languages, Erlang can implement your entire system without relying on other tools. It can handle the HTTP server, request processing, long-running requests, server-side state, persistable data, background jobs, crash recovery.
12/17
Erlang is more than a language. It's a development platform broken into 4 parts. The language, the BEAM virtual machine, the framework, and the tools.
13/17
The Erlang language compiles into bytecode that is executed in the BEAM. the BEAM virtual machine parallelizes your concurrent Erlang programs and takes care of process isolation, distribution, and responsiveness of the system.
14/17
The OTP framework abstracts away concurrency and distribution patterns, error detection and recovery, packaging code into libraries, systems deployment, and live code updates.
15/17
The tools are used for various tasks such as compiling Erlang code, starting the BEAM instance, creating deployable releases, and running the interactive (IEx) shell.
16/17
I hope you enjoyed this summary and learning more about the Erlang development platform that Elixir is built on top of.
Raspberry pi is a great way to get your start in IoT, and Nerves and Livebook take that even further. Cool enough: the first real Elixir code Lars wrote was for the Rasberry Pi Zero.
1/13
You can sandwich a Rasberry Pi and an eInk display together. The Rasberry Pi runs your application and your application can use The Libraries Inky and Chisel to write to the display.
Bottom line, before the end of September, if you are on Elixir OTP 23 or 24 you should upgrade to the latest patch.
specifically OTP 23.3.4.5 or OTP 24.0.4
If you are on an OTP version older than 23, the good news is you will be unaffected so long as you do not upgrade your dependencies. You can freeze your dependencies in order to buy yourself time to upgrade to OTP 23 or 24.
Error handling can be tricky, and can cause a task you would expect to take a single day to instead take a whole week!
1/10
This episode is focused on dealing with errors caused by working with external services. Anytime you're dealing with external dependency, you expose yourself to risk.
By far the most loved library on the Panel today was Telemetry. Telemetry powers monitoring and observability in elixir projects and provides a consistent interface to do so. Other mentions were OTP, Livebook, and site_encrypt.
1/24
When members of today's panel came into the Elixir Industry, they found opinions they like and trust from the Elixir community but also questioned established norms. Thus today's topic: Code Heresy.