The more I learn about the primitives of BEAM/Elixir, the more excited I get about how the implementations lend themselves to DevOps and control systems. Things like location transparency, [0] hot code swapping, [1][2] (they took the video down, but it was cool to see the code update while flying in ms) reductions, preemptive scheduling, system-wide back-pressure, [3][4] and the supervision model [5] make me think we’re getting closer to the correct abstractions for proper closed-loop control systems for distributed systems, while other languages/frameworks/implementations are trying to duct tape these things on like blue/green deploys, g/unicorn, multiprocessing to get around GIL, etc.<p>I have some ideas on how to use Nerves as the basis for PID, then generalizing out to cover PLC, and eventually getting to more ambiguous things like distributed systems, but I'm not sure if this is the most effective/efficient path.<p>[0]: http://www.zohaib.me/setting-up-elixir-cluster/<p>[1]: http://www.unstablebuild.com/2016/03/18/hot-code-reload-in-elixir.html<p>[2]: http://www.erlang-embedded.com/2013/10/minimal-downtime-in-flight-drone-firmware-upgrade-in-erlang/<p>[3]: https://hamidreza-s.github.io/erlang/scheduling/real-time/preemptive/migration/2016/02/09/erlang-scheduler-details.html<p>[4]: http://ferd.ca/queues-don-t-fix-overload.html<p>[5]: https://medium.com/@mustafaturan/visualisation-of-elixir-supervision-tree-strategies-4d4cb8123138