Developing IoT Devices from Your Local Computer

Developing a typical software application locally often involves an IDE (Integrated Development Environment) or even a simple text editor (even Notepad), some sort of build system in the case of compiled languages (like C#) or an interpreter in the case of interpreted languages (like JavaScript). The process often looks like this: Write some code, compile it, run it, see what’s changed. If you are really cool, you can just run some unit tests as you develop to find out if what you have is working rather than running the whole application just to test one thing.

When you are developing for an IoT device, it can get more complicated. Sometimes there are emulators available that can simulate the physical device, other times it makes more sense to actually deploy code to the physical device. If there’s a physical device in the mix, you can deploy code over the wire, like through a USB cable that connects your device to your computer, or over WiFi, or in certain setups even through the internet.  For my Raspberry Pi 3, running Windows 10 IoT Core, I can develop locally using Visual Studio and deploy over my local WiFi new code to my RPi directly from within Visual Studio. For most devices, there are a few ways to develop and deploy to it and it’s highly dependent on the platform of choice.

Whatever the process, reducing the time it takes from changing something to finding out if it works is very important.   The first line of defense I have for being able to iterate quickly is unit tests. Unit tests can run very quickly, and can run against most of the code base all at the same time. Although they can be a pain to set up, the long-term efficiencies gained from knowing that most of your code works every step of the way is a huge time-saver.

This is true of regular development. When IoT is thrown into the mix, with the additional time it can take to deploy code to an emulator or a physical device, the efficiencies gained can be even greater than from application development. The next tactic is to use emulators when you can (as it’s typically faster than deploying to a device), and then when you do have to deploy to a device, make it as repeatable and quick as possible.

 

Could Use A Confidence Boost? Teach Some Kids

Confidence is a kind of high. You see the world a little brighter, your stride becomes a strut, and colors are saturated. It’s also a high in the sense it’s not the constant state of things. As a professional,we take our knowledge and experience for granted sometimes, and in doing so, confidence is always elusive. After every fist-in-the-air hooray moment after an epiphany comes a crash back to reality as a new problem to overcome emerges.

Recently, I visited the elementary school where my wife teaches to do Teach-In. This is essentially 21st-Century “Career Day.” I’ve done this before a few times, and each time I marvel at the lack of impulse control children possess, as well as their curiosity, interest, and genuine excitement for learning. I suppose the house is in your favor when you have something you are interested in teaching, too, so that erases some of the drudgery associated with a typical school day.

Getting prepared to teach children about what you do is a wonderful treat. When you ask yourself how you would explain what your career is like to children, you start to dig deep into the fundamentals of your professional life. Why do you do what you do? How did you get here? What difference are you making? As long as you truly believe you are doing something wonderful, your confidence is lifted even before you step in a classroom. For example, I started my slide deck with “Programmer By Day: Software developers are basically modern-day wizards.”

I don’t mean to flatter myself, but wow does it feel good to see that in writing. I’m a wizard! When I think about the fundamentals of programming, of writing code from nothing that creates magical things to happen, it’s actually the coolest thing in the world and I feel extremely fortunate I am able to do this for a living. People pay me to turn nothing into something useful.

Once you are finished truly understanding what it is you do and why you do it, the real fun begins. That nervous adrenaline kicks in before you start talking because this is the gauntlet. I don’t know if you know this, but children are brutally honest and generally don’t care if they offend you. On one hand, you can guarantee that you won’t get polite clapping at the end if you do a bad job. On the other hand, unlike your office meetings, if you do a good  job you won’t have a jealous Brenda sitting purse-lipped in the corner doing the least amount of clapping possible to not be noticed by the others.

Instead, despite any teacher’s best efforts to maintain order, you’ll get kids shouting out “Make me a game!” when you say you’re a modern-day wizard thirty seconds into your presentation. Maybe not the most productive feedback, but you know they are listening. Below are some actual quotes from children during my presentation.

“Can you guys make a new update?”

That was a student wondering if I can make a new update to Minecraft. I had to explain that I personally do not work on Minecraft.

“Is he still alive?”

This is in reference to the creator of Minecraft, Notch. Kids really love Minecraft.

“Awesome!”

I wrote two lines of code that made a light turn on. That’s awesome. I love this, this is the confidence booster stuff I’m talking about.

“No way!”

When I moved my Arduino (little computer) with code on it from the computer I had been programming with to a random computer in the classroom, and it still ran the program that I put on it.

Keep in mind, these were unsolicited exclamations from the kids. I did have a Q&A time and got asked some surprisingly great questions from fourth graders, but this was just their real, live, unfiltered reactions. It sure beats what I have to put up with from Brenda in all those meetings.

I left the school that day exhausted but with some lightness in my step. I taught five sessions in all, or roughly 120 kids total. To be able to positively influence that many people, in person and all in one day, is completely inspiring. To see kids literally leaning forward to hear what you have to say is a huge confidence boost and I highly recommend it.