[HN Gopher] To Nerves from Elixir
       ___________________________________________________________________
        
       To Nerves from Elixir
        
       Author : lawik
       Score  : 156 points
       Date   : 2024-08-30 20:05 UTC (1 days ago)
        
 (HTM) web link (underjord.io)
 (TXT) w3m dump (underjord.io)
        
       | hazn wrote:
       | what piqued my interest: nerves boots with only barebones linux
       | and the otp/beam vm, effectively turning elixir into the embedded
       | os [0]
       | 
       | [0] https://wiki.alopex.li/NervesNotes
        
         | ghayes wrote:
         | I guess I've been a bit disappointed Nerves doesn't run on
         | microcontrollers, though, such as an Arduino or Raspberry Pi
         | Pico. Basically, once you have Linux, you can run nearly
         | anything already.
        
           | lawik wrote:
           | It was never intended to. The BEAM is not a good fit for that
           | environment. I find it a bit bewildering that people are
           | disappointed about that but I think it comes from having had
           | the difference between microcontroller and embedded linux
           | device clear to me from the early Pi and Arduino days.
           | 
           | 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 :)
        
           | MarcusE1W wrote:
           | There is the AtomVM, a (mini)BEAM for microcontrollers
           | https://www.atomvm.net/ There is also integration for Elixir
           | and AtomVM.
        
             | Muromec wrote:
             | Atom even compiles into wasm or at least should.
        
             | vendiddy wrote:
             | I'm curious if AtomVM is compatible with Erlang nodes.
             | 
             | Could you have a Pi on Nerves talking to microcontrollers?
             | 
             | I've never really worked with hardware but this all looks
             | fascinating.
        
           | MisterTea wrote:
           | https://www.grisp.org/
        
         | hlieberman wrote:
         | There's a maniac/genius who made the BEAM VM boot directly on
         | some hardware through his GRiSP project: https://www.grisp.org/
         | 
         | Hard real-time Erlang. It's siiiick.
        
           | frou_dh wrote:
           | I've wondered about something related and the origin of
           | Erlang in the 80s/90s. Back then when it was running on the
           | telephone switches etc, was it running bare metal? Or did
           | those switches run an OS like some form of Unix or something
           | else?
        
             | actionfromafar wrote:
             | I'm pretty sure it ran on VRTX.
        
           | jeffreygoesto wrote:
           | He automated some Rexroth production with it.
           | 
           | https://www.stritzinger.com
        
       | davidw wrote:
       | What kinds of cool things are people doing with this?
        
         | tzumby wrote:
         | Not sure if they still do, but farm.bot was using Nerves.
        
         | mrusme wrote:
         | I once built a firmware for the Pimoroni Keybow with it:
         | https://xn--gckvb8fzb.com/projects/kiwi/
        
           | postepowanieadm wrote:
           | Beautiful webpage!
        
         | readline_prompt wrote:
         | Here in Japan, we have a elixir nerves group. It isn't too
         | active, but have made some stuff.
         | 
         | https://www.google.com/url?sa=t&source=web&rct=j&opi=8997844...
        
         | hmmokidk wrote:
         | Interestingly enough it's actually super nice for making touch
         | screen kiosks. Not to say it can't do much, much more.
        
         | paradox460 wrote:
         | I once wrote a system to interface with Mettler-Toledo postal
         | scales, with the goal of replacing an ancient vbscriot based
         | interface we were using at work.
        
         | gangstead wrote:
         | My friend made his own Nerves powered sprinkler system:
         | https://www.youtube.com/watch?v=MS3Iap-2umQ
         | 
         | I believe he's still using it to this day.
        
         | lawik wrote:
         | I (author) have been dealing with the ReTerminal DM from Seeed
         | Studio which in spite of being industrial is a fairly fun
         | device:
         | 
         | 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
        
         | cloud8421 wrote:
         | I built a few hobby projects, and have another one in the
         | pipeline for when I have time. All of them are based on
         | Raspberry PI Zero kits from Pimoroni (shop.pimoroni.com) and
         | sadly some of them are not in stock, and won't be stocked again
         | according to their support.
         | 
         | 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.
        
       | Twirrim wrote:
       | Suggestion for the blog. After "I adore Nerves", put a comma and
       | a brief description of what Nerves is.
        
         | sethammons wrote:
         | Part of my job is reviewing software design docs (we plan to
         | solve problem x by doing a, b, c with some diagrams). I am
         | constantly pointing out "please introduce acronyms, tools,
         | vendors, and other $nouns; assume your audience includes an
         | intern"
        
           | Muromec wrote:
           | Doesn't even have to be an intern. Joining a new company,
           | especially a big one, is always the same struggle -- the soup
           | of acronyms and weird proper nouns. Everybody knows that
           | $colorname is a UI library and $malename is an authentication
           | server and three letter acronym refers to a specific
           | department, maybe in a different company.
           | 
           | There usually is a phonebook to look it up, but pre-feeding
           | some context is always nice.
        
       | desireco42 wrote:
       | I tried Nerves a while back... device programming is brutal,
       | Nerves makes it a lot simpler but it is still brutal and makes
       | you wonder how it looks in C. That Mini Phoenix they mention...
       | hahaha, seriously, unless they did some major work it is not a
       | Phoenix.
       | 
       | So, that is all to say that device programming is really another
       | level of difficulty. I am too sensitive to deal with that.
        
         | lawik wrote:
         | Mini Phoenix? What? And I run the full Phoenix web framework on
         | Nerves. This comment does not make sense to me, as the author.
         | Sorry.
        
         | isodev wrote:
         | You mean Naked Phoenix? It refers to the poncho project setup
         | where Phoenix is added as a dependency to the Nerves project
         | (as opposed to creating an umbrella project). It's really just
         | normal Phoenix.
        
       | Muromec wrote:
       | So how does one get a job in Elixir or erlang without doing
       | erlang for the last 1,2,5,10 years?
        
         | lawik wrote:
         | The years help. As they do everywhere. Competitive job market
         | all around right now.
         | 
         | 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)
        
         | petesergeant wrote:
         | Sneakily introduce it at your current workplace for a specific
         | project, and then after a year you have commercial experience
        
           | Muromec wrote:
           | That's the standard way, that one I know.
        
         | cultofmetatron wrote:
         | Just hired a elixir dev recently. Assuming you already have
         | experience developing in another platform, learn elixir and My
         | advice would be to be active on the elixir slack and to have a
         | few projects. Develop experience with ecto/oban/phoenix. theres
         | plenty of jobs. There just aren't many people that know elixir
         | well.
        
           | enraged_camel wrote:
           | Nah, there actually aren't that many Elixir jobs. You can
           | tell from browsing the #jobs channel on the Elixir Slack
           | workspace, and the jobs sub forum.
        
       | foxhop wrote:
       | https://nerves-project.org/
        
       ___________________________________________________________________
       (page generated 2024-08-31 23:02 UTC)