Hello, friends. This idea has been gnawing at me for a while, which usually tells me that I need to get it out there. This project might be a little more writing than hardware or code for a bit, but I appreciate some help!
My challenge: I love building projects and want to get better at it, but as a novice, I feel like I’m missing a lot of fundamental things here and there.
Possible solution: This got me thinking that I should help newbies like myself and others by making some kind of starter guide. Sure, I could spend tons of hours researching this on my own, but it would also be immensely valuable to ask our community for help since yall are far more experts than I am.
In this Edge Developer’s Guide to the Galaxy, what would it include? Off the bat, seems like folks should have an understanding of:
- Docker / why containers on edge devices
- Edge devices and SBCs in general
- basic low-voltage electronic skills
- Setting up your development environment, hardware setup…
- Provisioning a device
- Managing a device
- Troubleshooting and testing
- Common networking things to make sure you do / or to avoid
- … probably a ton more
^^^ not necessarily in any order, but just off the dome.
If you were to teach a newbie like me (or others), what are other must-have / must-know things? Also let me know if I’m off the mark here and chime in on what a solid edge developer/IoT hacker/maker needs. Open to any and all feedback.
I like the starter guide idea.
reminds me of https://roadmap.sh/
but specifically targeting edge development
Some things off the top of my head
- Security best practices!
- How to handle hardware? (how to store hardware so that it lasts, don’t keep a board on a metal surface, or don’t touch pins with a metal screw driver)
- measuring and logging (temperature, wireless signal strength, IO ops, bandwidth)
@andrewnhem I would add into the list some Linux basics, because those are (usually) a chunk of knowledge that is required before you can begin crafting your Dockerfile. (There are definitely exceptions…but…basic Linux usage is very helpful).
Looking at the example from @wisehackermonkey, it’s almost:
- What is an operating system?
- What is linux?
- What are the various flavors of linux?
- What are the basic commands in your chosen distro?
I can contribute with some starter info there, not a problem!
I love this idea and I think it would have helped us a lot if it had been already available back then when we started our IoT\Edge journey.
Since we are in the realm of Balena, users probably have to manage large fleets of devices (at least that’s my experience) so I’m proposing two additional points:
OTA\Atomic updates. Why it’s so crucial to have a reliable system for atomic updates (Balena official docs already cover this point in details, imho).
Architecture overview and choices for IoT solutions: since edge devices probably need to comunicate with cloud systems, it’s important to design carefully your edge-to-cloud architecture with all the design choices required. A mention to MQTT is a must. (for this point, I’d be happy to contribute myself since we had a heavy design process when approaching Balena).
If you need help in any way for this project I’m willing to contribute however I can!
I think sometimes we take it for granted but it’s important to consider a path to scale, as in getting a prototype together in a manner that’s easily scalable when you want to deploy device 2, 3, 4…n.
Then perhaps actually taking the user through the steps of provisioning your second prototype, and your first production device, and some of the aspects of fleet management. I think part of what’s cool about developing with balena is that to a certain extent you’re already set up to scale as soon as you hit v1 of your app, which is a strong benefit that perhaps isn’t apparent to beginners.
I love the name
Some ideas out of this amazing list:
- move from 1 container to multi-containers
- different connectivity examples (e.g. cellular, WiFi, ethernet, LoRa, Zigbee, etc)
This sounds really good to me.
Something I haven’t really seen yet, but might be part of troubleshooting, is where and how to find more information that’s not already covered in the guide.
For example, a mini-guide on
- searching through forums, mailing lists and git repos;
- how to interpret the things you find;
- how to formulate posts asking for help.
I think that could help a lot of new people.
Thanks for all the recommendations so far. I’m very thankful for this level of response from both my teammates and the community. Processing!!!
@here – Been a minute, but I’d like to keep this project going. After consulting a few teammates, we felt that creating a platform/tool-neutral collection of information would be the best way to start. I’ve transposed the ideas from this document and moved them to this public repo:
Everyone is welcome to contribute. If you need some guidance as to how, please reach out. Once I get some more free time, I’ll reach out about specific needs, build out the project board, etc…
Feedback and questions are welcome!