ConnorRigby

ConnorRigby

Nerves Core Team

Overview

I’ve been loosely planning a series of screencasts for a Nerves based project for about a year and a half now. I believe i finally have enough content and time to start it.
This is going to be a full stack, open source “Internet of Things” project. Here is an overview of all the parts:

A wireless sensor system

This will be the main feature we build out. Many sensors and actuators will be able to report back
a central “hub” device (our Nerves application). Plans so far include:

  • Temperature
  • Humidity
  • Light level
  • Remote relays

With the capability of more being added easily. Each sensor device will be able to receive remote
firmware upgrades, but otherwise be fairly “dumb”. These devices will not themselves be Nerves
devices, instead they will be Arduino based devices to keep costs down and encourage battery life.

A central “hub” or “gateway”

This will be the Nerves application. The sensors and actuators will report their data and receive commands
to and from this “hub” device. Initially, we will target the Raspberry Pi 0 W, again to keep costs down. Eventually we may introduce support for other supported devices.

The device will be developed “offline first”. This means it will be “connected”, but will
still work when disconnected. The fleet of devices will also be managed by NervesHub. This will be how we manage pushing updates to the deployed devices. (IE devices that would have been purchased)

A cloud web application

This will be a Phoenix based web app. I personally am not a web or JS developer, so it will likely not look
the greatest at first. The backend services will be the main focus of the series. Things the web app should
be in charge of:

  • User registration/auth
  • Device registration/auth
  • Serving/receiving RESTful assets
  • Serving a frontend of some sort
  • Handling many simultaneous device connections via Phoenix channels
  • Handling many simultaneous user/frontend connections via Phoenix channels
  • ???

Initially the app will likely be deployed on DigitalOcean or Vultr. We won’t use Heroku or Gigalixir because
they terminate SSL connections before they reach the application layer. We will need SSL to validate devices against NervesHub. This will greatly simplify the logic required by the web app to validate devices.

Target Audience

No Nerves knowledge should be required, but I will likely make some assumptions when getting started with the streams. I’ll assume a basic knowledge of Elixir at a basic level. We won’t be doing anything “advanced” in either main applications, but a basic knowledge of Elixir syntax and how to work within Mix and ExUnit will be expected. I’ll also assume a basic knowledge of Phoenix or at least how an MVC framework works. I myself am certainly not an expert in Web Apps or Phoenix, so this is definitely not required.

Name

I haven’t started anything on this yet. This includes a name, domain, etc. I plan on doing all the bootstraping live. That said i could use some help picking a name for this project.

Timeline

There will probably be more casts at first to get the app bootstraped and to handle “devops” things like setting up the domains, Droplets, etc. These first few streams will likely be a little dense. Once up and running, I will likely do one or two screencasts a week, focusing on one or two small features at a time. This is mostly to prevent any burnout, and depending on how i feel, we may do more or less than this.

I will be streaming live on Twitch as I’ve used it before (I’m open to other streaming sites if someone makes a good argument). I will also publish recorded casts to YouTube as I don’t believe Twitch stores any streams once offline. I haven’t decided when the first stream will be, but I’m hoping to get started some time this week, or next. I’m thinking i will stream around 6PM Pacific time, but am open to suggestions for what time works best for the majority of users.

Licensing and other Copyright stuff

I plan on releasing all code as either MIT or APACHE-2. A final decision will be made upon first stream.

Showing Posts 1 to 10

AstonJ

AstonJ

Sounds great Connor! I love screencasts/videos :lol:

kip

kip

ex_cldr Core Team

Thats a fantastic idea - and exactly the project I want to tackle as a nerves newbie. Looking forward to the series!

pdgonzalez872

pdgonzalez872

Agree with everyone here, this is fantastic. Streaming in general adds a ton of value and I love that the top Elixir guys (you included) are very open to doing this now.

Sometimes it is hard to gauge the value add. Please don’t be discouraged if you don’t get many views. I believe this is important to note, since all in all that market for someone looking at Nerves stuff is not that big. With that said, the impact you can have on just one person is a better metric in my opinion.

That impact may also not come from what you expect. Value could come from something small, completely unrelated to what you are trying to relay at the time. Maybe you are trying to talk about GenServers and you create a .iex.exs file with some code to speed up an iex session instead of copying/pasting or writing stuff again. You blow someone’s mind without knowing about it. This is the true value of streaming I think, to capture the things you don’t know people don’t know.

Thanks for doing this. I just don’t want folks to be discouraged when streaming and love the fact that you are stepping up and giving back to the community. Other folks thinking about streaming, just do it please!

Rock on @ConnorRigby!

ConnorRigby

ConnorRigby OP

Nerves Core Team

Thanks for the support guys.
I plan on doing doing a test stream on Friday afternoon i think. This will be mostly setup of the screencap to and camera and whatnot. If i have time i will also maybe setup domains, github repos, and other things as such.
I still need to choose a name, so hopefully something comes up by Friday.. :slightly_smiling_face:

frigidcode

frigidcode

I may continue with my plan which is almost identical to yours. I have other ideas as well, so I don’t know yet. Good luck! I’ll try to catch some of the twitch streams.

WanjikuMac

WanjikuMac

This will be a good forum for me to understand nerves more, since I plan on using it a lot in the near future.

zacck

zacck

@ConnorRigby keen, ready to follow with my PI Zero :smiley: chuffed to have the same hardware

ConnorRigby

ConnorRigby OP

Nerves Core Team

That’s the idea! I want to keep everything cheap so folks can actually build their own if they want.

ConnorRigby

ConnorRigby OP

Nerves Core Team

Alright I lied about the test stream being today. It will actually officially be tomorrow afternoon.
Again, this first stream will not be super interesting. Mostly setup and various book keeping things.

Stay tuned

imVinayPandya

imVinayPandya

it will be great if you can use mqtt protocol suing elixir, for device to server communication. i have followed you on twitch please start streaming it will be very helpful for noob like me(in elixir :stuck_out_tongue: ).

Where Next? Top

Trending in Discussions Top

cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
achempion
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
jtormey
Lately I’ve been thinking about how to organize components as a LiveView application grows. One of the pain points I’ve found (for myself...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
georgeguimaraes
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews