To Nerves from Elixir
underjord.io
underjord.io
You can look at AtomVM for a way to run Erlang and Elixir on an MCU. It just isn't Nerves. Nerves is a Linux :)
Could you have a Pi on Nerves talking to microcontrollers?
I've never really worked with hardware but this all looks fascinating.
Hard real-time Erlang. It's siiiick.
Source: I was part of the original core team, and I developed the first version of the Erlang support library and runtime.
There usually is a phonebook to look it up, but pre-feeding some context is always nice.
Taking the question at face value, I don't know your intent, and not as a bitter commentary on the experience of trying to find a job with tech one likes:
I know people that did embedded C++ that got recruited into doing Elixir on a Nerves project.
I know lots of people who have just switched their web work in Ruby or Python to Elixir. Either by finding the job or doing the work for getting the tech adoption OK:ed at current employer.
Most Elixir devs I know did not have prior Erlang experience. But most did have prior dev experience. The BEAM ecosystems solve problems you mostly encounter with some experience.
I have also seen and onboarded several junior folks into the ecosystem and jobs as their first professional thing.
Connecting and collaborating with people who could vouch for you when the opportunity comes is a good starting point. But there are many paths.
(edit: fix a spelling)
So, that is all to say that device programming is really another level of difficulty. I am too sensitive to deal with that.
https://www.google.com/url?sa=t&source=web&rct=j&opi=8997844...
I believe he's still using it to this day.
https://elixirforum.com/t/bringing-up-cool-hardware-with-ner...
I have also done a bunch Nerves stuff on that blog as well as my YouTube. Some of it cool.
I know the Nerves Meetup recently posted a video covering a rotary telephone using Nerves: https://youtu.be/U4hetzVpjmo?si=Wc7QZ1SG0TPyjnaJ
I built:
- a clock with an internal task scheduler (e.g. send me an email digest every morning), based on https://shop.pimoroni.com/products/scroll-bot-pi-zero-w-proj...
- a lamp that follows the solar cycle for the given location (e.g. it turns purple at twilight), based on https://shop.pimoroni.com/products/mood-light-pi-zero-w-proj...
I’ve also got some impression (https://shop.pimoroni.com/search?q=impression&stock=true) kits that I want to program for a family photo tree kinda thing.
A summary of my experience:
- these are not complex projects, and required (in the worst case scenario) some porting of the original python examples provided by pimoroni to interface with the hardware.
- deploying via ssh is fast and reliable
- can quickly experiment by pasting a new version of a module in the device shell. Got an editor keybinding to do that by targeting a tmux pane.
- OTP constructs help structuring code beyond the standard infinite loop that you have in other languages. And you can have pub-sub and state machines just with the standard library.
- it’s easy to abstract the hardware bits away using dependency injection, so that you can work on the host machine if needed.
- working with time and time zones is possible thanks to the ecosystem packages.
- any dependency with native extension can be a problem if not built with cross compilation in mind, and if it crashes on device that’s where debugging becomes a bit harder (might need a serial cable).
- if needed, I usually add a simple web yo for config/customization.
- there are great tools in the ecosystem to troubleshoot memory issues etc.
- sometimes I have WiFi issues and I suspect it’s related to power management, but I haven’t checked thoroughly yet.