We’re Not Embedded Systems Engineers
The engineering team at Simple Thread can be described as:
- Extremely talented
- Software engineers
- Super cool (okay, this one is aspirational)
The engineering team at Simple Thread cannot be described as:
- Embedded systems engineers
- Expert IoT developers
That being said, in our freetime, we have been known to tinker in other fields. Sometimes that means photography, videography, 3D printing, baking, painting, or dungeon crawling, but recently it meant playing with IoT (Internet of Things) devices.
Setting Up The Device
To be more specific, the inspiration for this blog post came because I started messing around with a development kit from Particle.io.
The development kit contained:
- (1) Boron LTE development board
- (1) Mini breadboard
- (1) Cellular flex antenna
- (1) USB cable
- (2) Resistors
- (1) Red LED
- (1) Photodiode
Setting this thing up was pretty much uncharted territory for me. It’s easy, as a newcomer, to get intimidated when opening up the contents of the kit and seeing a breadboard, PCBs, and tiny resistors.
Where to start? Well, it turns out that in embedded systems land, getting the LED light on your device to blink is sort of like the “Hello World!” in software engineering land.
From the initial unboxing of the development kit, to getting the LED to blink, I must say that the user experience provided by Particle.io was amazing. Although they did assume a little bit of electrical/circuit knowledge during their setup instructions, my overall feeling was that they guided me well and set me up for success.
Now to the fun stuff.
This is where I started to get really excited.
First of all, the web dashboard is very developer friendly. I say this mostly because it looks like most of the other SaaS dashboards I’m used to (AWS, Google Cloud, Heroku, DigitalOcean, Netlify, etc., etc.). It might seem trivial, but the fact that their tooling is visually similar to other tools that I’m in and out of all day is not to be taken lightly. And that’s not even talking about the things that you can do through that dashboard.
The Over-The-Air Updates
One of the most difficult and frustrating parts of developing for IoT devices is managing drivers, local compilers, and local tools across devices. Particle.io’s solution to this is over-the-air updates. Basically, you can write applications that are then compiled in their cloud compile system, then passed on to your actual IoT devices with the correct compiled binary.
The over-the-air update system lets those unfamiliar with the intricacies of embedded systems (like us software engineers) spend more time writing applications and less time troubleshooting driver conflicts and managing local tooling.
Again, more points to Particle.io for developer friendliness!
The development kit I was using came with a photodiode, which lets you measure the amount of light hitting the device by converting light into an electrical current. The Particle.io webhooks and event system made it super easy to start receiving this light measurement data from the device. The dashboard has a view where you can see all of the events which come from your connected IoT devices. It’s easy, it’s clean, and it just works.
Particle.io does the same thing for IoT that IaaS and PaaS companies did for cloud infrastructure—the nitty-gritty, time-consuming details are abstracted away (to different degrees depending on the service), and you can spend more time focusing on the things you meant to focus on when you first had that idea for that application you wanted to prototype or experiment with.
If I’m starting to prototype a new web application, I’m so thankful that I don’t have to run to the store and buy a server rack and start installing Ubuntu. I gladly pay an AWS or DigitalOcean to manage those things for me.
Continuing that analogy, Particle.io feels like it’s moving IoT away from the “Traditional IT” column and into IaaS/PaaS territory. My previous experience with IoT has always felt more like managing your own servers, storage, and virtualization. But as I started to use Particle.io I began to think about how archaic that is.
Of course, there are drawbacks.
Firstly, something to always consider when choosing a service is, “how hard it would be to switch to a different service”. You thought switching server and/or database providers was hard? Imagine trying to move away from an IoT service provider. This is one of the most extreme examples of vendor lock-in that I can imagine.
Another drawback is that by providing the service of abstracting away the minutiae that I don’t want to manage, I need to give them my money. (For what it’s worth, I find the pricing to be fair with the services they’re providing to me.)
Lastly, another drawback of abstraction is losing flexibility, or customizability—or, basically, losing the ability to manage the things that were abstracted away. This tradeoff is always something to be aware of when choosing a degree of abstraction.
For example, sometimes you need the level of control over your system that only owning and managing your own hypercluster could provide. Or sometimes you only need the amount of control that an IaaS like AWS offers. Sometimes you just need Heroku. Sometimes you just need a WordPress.
Sometimes you need extreme control. Sometimes you just need to go outside and take a walk.
Is Particle.io right for you? It depends.
It’s worth considering if you:
- Have some experience with software development but none with embedded systems.
- Care more about using an IoT device than learning about IoT devices.
- Are happy to trade some money for a more frictionless, integrated developer experience.
- Are happy to trade some flexibility for less operations and maintenance effort.
- Don’t mind vendor lock-in.
For me, with my specific goals, Particle.io is a great way to dip my toes into an exciting new area of software.
Questions, comments, concerns? Have experience with Particle.io? Another IoT service? Let me know!
Loved the article? Hated it? Didn’t even read it?
We’d love to hear from you.