Coding 101 54 (Transcript)

Father Robert Ballecer: Coming up on Coding 101, we start our embedded processor segments with Mark Smith.

Netcasts you love, from people you trust. This is TWIT! Bandwidth for Coding 101 Is provided by CacheFly, at

And by Squarespace. The all in one platform that makes it fast and easy to create your own professional website or online portfolio. Now introducing SquareSpace 7 with even better site management tools and other improvements. For a free two week trail and 10% off, go to and use the offer code C101.

And by HipChat Plus. Collaborate, save time and be more productive with your teams. HipChat Plus is IM, video chat, plus file, code and screen sharing all in one place. Invite your team members and get a free 30 day trail of HipChat Plus at

Fr. Robert: Welcome to Coding 101. It’s the TWIT show where we let you into the wonderful world of the code monkey. I’m Father Robert Ballecer, the digital Jesuit and I’m joined by my super special co-host mister Lou Maresca, a senior software lead for Microsoft. Lou thanks for coming back onto the show.

Lou Maresca: Thanks for having me, I appreciate it.

Fr. Robert: Now we promised our audience something awhile back, that we would take a look at embedded processors. Specifically the programming that you would need to play with these devices, like the Arduino or maybe even a propeller chip set. Something that wasn’t quite the conventional programming language that we had been playing with here on the show. And we’re going to get to that but before we do that, Lou, you’ve got some news about the internet of things.

Lou: Yeah, that’s right. Right now there’s approximately 4.9 billion connected devices in use this year. And they’re saying 1 in 5 developers now work on IOT projects. Which is pretty interesting if you think about it. From home automation to connected devices to health devices to wearables, and so we’re looking at almost 19 million developers worldwide and 19% of those are doing IOT related work. So that’s a lot of people actually working on IOT devices if you think about it.

Fr. Robert: Lou, hold on a second. IOT is one of these things that have been a buzzword for probably the last 2 years. People are always saying oh it’s about the internet of things and big data, we’re now going to get data points from everything, from traffic signals, from home appliances, from your thermometer, your smoke detector. But I’ve seen something different and maybe you’ve seen this too, which is, it’s not so much that there was a new field called internet of things and people started building internet of things, things, it’s that everything is now enabled to be part of the internet of things.

Lou: That’s right, I think one of the biggest things is, what are they actually doing when they integrate these little devices into your world, into your life? And to me, I think it’s really taking those devices and kind of, where are you bringing that data, where are you merging that data together? That’s really kind of the key to what the internet of things is about today, is taking that big data and making sense out of it all.

Fr. Robert: Right. Now I remember there was a gardener study that was talking about how sensors in devices could result in 15% savings in just the food and beverage industry alone. Which leads me to the question, where’s the money here? So if you’re a programmer, and remember, we’ve talked about how money is not the reason you get into programming, the passion for programming is why you get into programming. But that aside, if a programmer watching our show right now started saying maybe I want to start doing IOT programming, where are the studies saying money is going to be?

Lou: The biggest value today in IOT is definitely not necessarily the sensors, because you could put an unlimited sensors together and be able to get data out of them. The key really is making sense out of the data, its housing the data. The services that wrap around the data is where the money is. So you can have all these different sensors, especially around wearables, that you’re pulling all this data from a person’s body, what’s useful for that? What are you going to do with that data? Are you just going to show them their heartrate? What’s that going to do for them that they can’t already do by just doing this, right? so I think that’s kind of the key is, those services wrapping those IOT devices is really where the value is for that kind of device.

Fr. Robert: The Architect in the chatroom is saying “now I only program for the dollar bills yo”. That’s a semi-joke, but it’s also true, which is, if you’re going to learn a specialty, carve out that niche, you kind of need to make sure it’s going to be able to pay the bills. But here’s something that I saw at CES, and again, I want your expert opinion on this. We saw a lot of companies that seemed to be presenting on new services that maybe focus on the analytics of things instead of the IOT. So in other words, every company is doing an IOT enabled thing. Smart bands and health bands and fitness bands and refrigerators and dryers, but it seems as if the real money, and maybe this is where the programmers can get an early leg up here, is taking the data that you actually get from those sensors and turning it into something useable. It’s no longer enough to say “this is on the internet”, it’s got to be this is on the internet and this is the kind of data and the kind of forecasts that you can make.

Lou: Right. That’s the key is forecasting. You’re taking these models, you’re training these models with this massive amounts of data coming in and then you’re forecasting, you’re recognizing data that actually can give you forecasts. So like for instance, you’re doing things like pattern recognition and anomaly detection where you’re identifying things that are kind of out of bounds. You’re doing predictive maintenance. You’re detecting problems with a car or with your heart device. Optimization. How can you optimize things going forward? Prescriptive, being able to get into saturations and give things for people that they don’t actually know they need. And of course situational awareness, so if you’re in a situation and you don’t see this over here, maybe the device can actually show you that, increase your vision, that kind of thing. So that’s really where all these are coming from, but the key is where is that data going and how is it making sense out of it all? So that’s where the power lies in the IOT.

Fr. Robert: Lou I’m glad that you found this story because this ties right in with the segment that we’re going to be doing today. One of the things that Smitty brought up at the very start of his segment was that when you start looking at embedded programming, and actually you could say this when you start looking at IOT, it’s not necessarily what I can do, it’s about what problems do I have and then how am I going to solve them? We’re going to go right into that. We’re going to jump straight into this segment that we recorded with Mark Smith where he’s going to be talking about taking an Arduino and doing something interesting with it. But first let’s take a break and thank the first sponsor of this episode of Coding 101, you know them, you love them, they’re the fastest way to get online with your portfolio, with your work, with your blog, with whatever piece of retail business you want to bring to the internet, its Squarespace. Squarespace is that one place you can go to on the internet to easily get your project or portfolio on the internet and I love Square Space because they’re always improving their platform. In fact they just released Squarespace 7. That makes getting started much easier and they have a unique web presence that is built up over templates that they give you. It’s now more all in one, it’s simpler to navigate and it’s simpler to operate in 1 seamless experience. Squarespace 7 allows you easier editing. You can edit on 1 screen which means you no longer have to toggle between site manager and preview mode. You can even preview designs in divide modes - that you see exactly how it will look on tablets and mobiles. Now it also offers instant access to professional stock photography from… It’s now integrated into the package. They’ll allow direct purchases inside the platform from getting images at just $10 each for your site. No more having to jump out, get an image imported into Squarespace, make sure all your licensing is taken care of. It’s all in 1 interface. You can get google branded email with Squarespace 7 so you can have the branded email for your small business and it’s automatically set up when you set up your Squarespace account. They’ve got templates, designed for specific professions which this is a big one. All their templates have been beautiful but now they give you the option to switch between different classes of templates. You can move between templates for musicians, artists, architects, chefs. They designed those templates, those category specific templates so that you can find the one that looks right for the project, for the business, for the industry that you’re trying to represent. On Squarespace 7 the developer platform is now on a beta which means that you can customize your site exactly as you wish. If you’re a developer you have access to the same platform that Squarespace uses for its own site – complete code control They also give you e-commerce with all subscription plan levels that includes the ability to accept donations which is great for non-profits, cash wedding registries and school fund drives and it’s easy to use. Yes, sometimes you’ll run into a ram but it’s easy to get it solved because Squarespace offers you support; 24 hours a day 7 days a week. They’ve got an army of folk in their forums giving you self-help articles and video workshops to browse at your leisure. It also starts at just $8 a month so it’s not going to break the bank. That includes a free domain if you sign up for a year. The Squarespace portfolio, the note, metric and blog mobile apps are on the go extensions of your website so that you can monitor and make changes from anywhere. They include the hosting so again it becomes a 1 stop shop. You don’t have to worry about buying different services from different providers. It’s all from 1 place. It’s all in a square space. Here’s what we want you to do. We want you to start a free 2 week trial with no credit card required and start building your website today. When you decide to sign up for Squarespace make sure to use the offer code c101 to get 10% off and to show your support for Coding 101. To begin using Squarespace 7 now existing customers can go to the setting tab to activate all of your new features. We thank Squarespace for their support of Coding 101. A better web awaits and it starts with your new Squarespace website. Squarespace, start here, go anywhere. I’m standing here with Mark Smith. Mark, we had you on the show before, it was for a wildcard interview and you explained what you do at DefCon. For the folks at home, can you tell them again, what’s your involvement with, I’d say, the coolest hacker conference on the planet?

Mark Smith: Well, I spend most of my time in the hardware hacking village working on various different projects. This past few years I’ve been doing the DefCon dark net project. Which is kind of inspired by Demon and Freedom TM by Daniel Suarez. Where one of the many projects that I did was to, I don’t even know.

Fr. Robert: Well you created the dark net badges. The idea was that you had these badges that people could solder together. And they had to create them because they came in their components. You had to solder these things together. You could actually synch them together with people who offered knowledge. So the idea was not only did they learn how to solder, how to load up the embedded device, but they also had to go obtain knowledge to obtain points. Which is basically the plot of Demon and Freedom which is, when we have these networks of people who interact with one another to gain experience, it’s a better world. You promised that you would come on the show and give us some embedded program knowledge. So that’s what we’re doing here today. This seemingly beautiful clock in front of us is actually not any sort of standard clock at all. I’m not sure if the audience can see it but these are actually standard gauges, panel meters that take volts and they tell you how many volts are coming into the meter. But you have repurposed this a little bit. It’s no longer a standard clock. In fact, if we turn it around I think the folks will be able to see that that’s an Arduino.

Mark: It’s an Arduino and a real time clock and a few potentiometers and some wires.

Fr. Robert: And what does this do?

Mark: Well, it tells the time, just like a clock. So the whole point is that it is a micro controller and it loads the time off the real time clock which is that board right there. That little blue board hanging off the top. And then the Arduino is programmed to output the correct analog voltage so that the meter reads the correct time.

Fr. Robert: Very cool. One of the phrases that make me wonder if people actually understand what they’re talking about is when they say oh, I’m just going to internet enable something. Or I’m going to add an Arduino to it and its going to be an internet of things thing. It’s a buzzword. But a lot of people don’t understand how that actually works. You don’t just slap an Arduino onto a refrigerator and all of a sudden it’s an internet refrigerator. Can you tell me a little bit about what you need to do before you even pick up any hardware or do any embedded programming, what are the steps that you take to say “this is a project I can do and this is how I should do it”?

Mark: So first you have to know what it is you’re trying to accomplish. You want to know what your inputs and outputs are right, and this particular case we’re going to be taking the time from the real time clock and turning it into an analog voltage to read on the panel meters. On a refrigerator what are you going to be doing? What are you controlling with an Arduino? Are you going to be reading the temp? Are you going to be storing it? Are you going to send it to a computer to be graphed over time? You have to understand what it is you’re trying to accomplish. You can’t just slap an internet on to something and say “hey look, its IOT!” so you need to understand what it is you’re trying to accomplish and then choose the right tools for that job. The job is not, I’m going to go put the internet on it. The job is I’m going to read this particular value and then perform some action. I’m going to take some inputs and I’m going to do some outputs and I need to put the box in the middle that’s going to convert those inputs into the right outputs.

Fr. Robert: It’s interesting that you put it that way because that’s actually the methodology that we gave to our audience in talking about any sort of program. Any time you want to program, you need to figure out what is it that I have, what do I want it to do, what kind of data can I take in and what do I expect to push out? And unless you’re doing those steps, then all you’re doing is putting together a bunch of hardware that may or may not do what you want it to.

Mark: Exactly. One of the things they taught us in computer science classes is that you can optimize- if you have a program that has no outputs- you can optimize it into a no op. it does nothing. If you have no output, all it is, is a bunch of input, and it doesn’t do anything with it, you can perform all the competition you want, but if there is no output there is no point in writing that program at all. So you need to have some sort of an output to have an effect on the world. That what your ultimate goal is. To change the world in some way. And generally those outputs require some inputs. Not all the time, but most of the time they have some sort of an input that goes into that.

Fr. Robert: Well if it’s going to be useful it has to have an input. Otherwise it’s just doing the same thing over and over and over again. You want something to be able to react to its environment. Or react to the place that it’s tied into. In order to do something useful. Now in order for us to do that we have to understand what kind of inputs we can get and what kind of functions we can get. Specifically we’re dealing with embedded processors. Now we’ve got here some Arduinos.

Mark: Correct. This is an Arduino Uno. It’s an R2. One of the older versions. But it is. And you’ll note that the big chip here is an at mega 328. 18 mega made by Atmel. It is a normal “standard” micro controller. But what the Arduino folks did is they wrapped this board around it. They gave it a power supply, a programming port, and some standardized headers over here that made it very easy for other manufactures to make what are called shields to go on top of them. And this is a prototyping shield. So we can put components into the holes and run wires around as necessary. To rig things up on kind of a temporary basis, try it, break it, realize it didn’t work, pull it out, try something else. And go from there. And then when we’re done, we can rig up something like that. Where you actually hard wire all of the components in place in a point to point fashion and it’s still on top of an Arduino. But it’s much more permanent. The wires aren’t going to fall out like they would on the bread board.

Fr. Robert: This sort of programming, these sort of chips, have been around forever. There’s many different platforms, each are good at something, or a few things. But what Arduino did, they took that stuff and put it into an easy to use package. So people could actually start to learn embedded programming. For comparison, this is one of the quad copters that I built. So this is a 450 class. This is actually, inside here, this is a flight controller that’s actually using an at mega. It’s a chip that allows me to upload a sketch. So if you learn Arduino programming you learn the programming that you need to do things like the multi we controller, which, all it does is take inputs. It takes it from the sensors. It knows these kinds of pitches, it has a barometer and this has an input for a GPS. So it can take that input and then I can use that in my sketch to say, if the angle is thus, increase the thrust on this side so it levels out. And so on. That’s exactly what you do when you want to try to program an imbedded processor. It’s really not that complicated as long as you know from the beginning what are my inputs and what do I want it to do. So let’s go a little bit deeper. Now we know what this is and ultimately we want to show the folks how to make something like this. We’ve talked a little bit about what we need. I need to know what my inputs are, I need to know what my outputs are, I now know what we’re going to be playing with. What do they need to do when they’re looking around? Because there’s going to be people out there to say this is the module I wanted, what do I need to buy and have before I start programming next week?

Mark: You’re going to need the Arduino itself, there are lots of different flavors of Arduino. Uno’s, Leonardo’s, Duos, Megas, all kinds. They all have different features and inputs and outputs. So you want to find one that is capable of doing whatever it is you’re trying to accomplish without being over spaced. You don’t want to have too much because then you’re just spending a lot of money on things and a lot of power budget on things you don’t necessarily need.

Fr. Robert: When you say over spaced, what are the differences between the Arduinos?

Mark: So the Leonardo and Uno are actually very similar. The main difference is in the USB IO. The Leonardo, the USB is built into the main processor which lets you do things like I am going to write a sketch that makes my Arduino look like a USB keyboard. Or a mouse. You can actually talk on the USB bus from your sketch. The Uno doesn’t do that. It just has a serial port out to another processor that converts it into USB. So it’s only a USB serial port. But some of the other ones have much more differences. Like the Mega is a much bigger board. It has a lot more inputs, a lot more outputs, it has more memory, I believe. It’s got more. So you kind of want to size your micro controller for the project that you’re doing. In my case, I am reading from a real time clock, I’m doing a very little bit of math and I am turning it into an analog output. So as long as the main Arduino has 3 analog outputs, which it does. It actually has 6. And it has the ability to read from an I squared C bus, which it does. To read from the clock, then it serves my needs for this clock. So I was able to use some of the smaller and cheaper Arduinos.

Fr. Robert: In the next episode we’re going to be giving people a sketch that they can load up onto an Arduino to make it do something. But right now can you show them what the interface looks like? Because there’s an IDE for this chip. For this platform. What does it look like and can you run us through some of the things that we can start playing with before the next episode?

Mark: Sure. So the Arduino IDE, basically it is a text editor, like what we have on screen here, combined with a compiler. And in this case, also because we need to upload our final product onto a chunk of hardware, it also includes the code uploader. So what I have on screen here is just the blink code that comes with Arduino. It’s very simple, it has a set up function and a loop function, which are the 2 default Arduino functions that you need to write. And all it does is it sets a pin mode 13 to output, we’ll go over in more detail what this means. And then it does that in the setup which runs once. And then in the loop, all it does is sets pin 13 high, then it delays for 1000 milliseconds, just waits, then it sets it to low and sets it for another 1000 milliseconds. And then as the name of the function implies, it loops. It goes around and around and around and does the loop function over and over again.

Fr. Robert: We’ve covered loops in several different languages here on Coding 101, and I’m sure my audience is looking at that loop and saying wait a minute, there’s no condition. This thing would never stop right? It’s just going to keep looping and looping and looping?

Mark: Correct. So the way Arduino does its code is that there are 2 functions that always have to be in an Arduino sketch. Set up and loop. Set up gets executed once, at the very beginning when the devices first powers on, and then it calls loop. And when loop exits, it calls loop again. And when loop exits, it calls loop again. And it just continues to loop over and over and over again. So that is the basic structure of an Arduino sketch. You can also write loops inside the loop function to do your own looping for whatever you want. But the way the Arduino works is it just does the same thing over and over again.

Fr. Robert: Which is what you want it to do because it’s not a multipurpose processor, it’s an embedded processor. You want it to always be looking at the same instructions. Otherwise it would run once and then just sit until you rebooted it. So if I am writing in a sketch, it’s always going to have those two parts. If I ever write a sketch that doesn’t have those two parts, it won’t even compile. Now if you go back to that screen, this is a wonderfully simple piece of code. In fact, this reminds me of some of some of the code that we would get on the DefCon badges. Like the ones that we could actually program and we could start changing the LEDs. Now when you look through this, what are some of the features of the program, aside from the fact that there is two parts that you think people should start to be aware of? So you’ve got digital write, delay, and digital write again. Why is digital write there? What does that do?

Mark: So one of the things that separates embedded programming from programming that you would do on a normal computer, a full sized computer, is that you are interfacing to hardware. And so you need to have, if you are developing an environment like that, like the Arduino folks did, you need to be able to make it easy for the programmers to interface with that hardware. So rather than go into all of the assembly nitty gritty to flip the output pin on the device and so forth, they just wrapped it up in a function. And it’s called digital write. It means write this value, to the pin. So this line here is literally taking the digital pin called 13, and we are setting it to high. Which means put a high voltage on it? In this case either 3.3 or 5 volts. I’m not sure which one this one is. Otherwise if you write digital write low, it’ll bring it down to zero volts. So it’s a very simple way of affecting the real world. What this program is meant to do is it’s meant to blink an LED on and off. On for one second, off for one second. So it’s a very simple demonstration of how do I make my code change something in the real world.

Fr. Robert: Alright. One of the other features here that we should probably talk about is it doesn’t just have to be on or off. You can actually do more with the pin, which is vital if you’re going to do something like the clock. Because of course this clock has way more values than you have pins. So you have to have some way of saying set it for x value, x value plus something, x value plus something, and just keep going up and up and up. We don’t want to get too much into the clock already, but there is another feature about this, which is, this doesn’t give you high voltage. This isn’t going to give me enough power to do something like a gauge, which is why you would need something like a proto shield because you’re going to have to add components to turn your programming into useable output.

Mark: Correct. So in this case, you went the other direction. The meters are current devices. Even when they’re measuring voltage, they are current devices. So the actual mechanism, that coil right there is measuring how much current is being sent through that wire. It doesn’t care about the voltage across the wire. And then they add extra components inside the meters to turn a voltage into a current to make it gauge correctly.

Fr. Robert: So right now you can see the Arduino is actually increasing the amount of current on seconds in order to make it match up with the numbers on the display. So it actually shows you seconds. I’m not sure if people realize, this is actually working right now.

Mark: Right now, you can see the seconds moving because they’re pretty easy to see. If you look closely at minutes, which we probably don’t have enough resolution to do here, minutes actually ticks up by every 15 seconds. There are 240 ticks on each one of the meters, so the minute hand goes by every 15 seconds, every quarter of a minute.

Fr. Robert: Right. Let’s talk a little bit about this proto board. Because this is something that I think a lot of people are going to want to do. Because you want to be able to add and remove components without doing a lot of soldering. When I first started with electronics, this was the thing. I had a bread board, I would put LEDs, I would put watt jumpers between the LEDs and components just to figure out what that component did. Show me what a typical assembly would look like. You’ve got some components here, what would I put on this board in order to make it start working with my Arduino?

Mark: So we have proto board here, I don’t have any circuits in mind, but let’s go ahead and hook up a potentiometer. So that is what’s called a 10 turn, or in this case a 25 turn potentiometer. It’s just an adjustable resistor. So this one is a 10k so I can turn the little screw head on the top and make it any value between 0ohms and 10,000ohms. And then we have these wires that with the little hard pins on them and you can just plug that into any one of the outputs of the Arduino and then plug it into a hole on the board. So something to note about these proto boards, the way they work, they just look like a sea of holes. But if you were to plug in a wire in that hole in the very corner over there and then plug in a wire in that hole there, on the other end, each one of these rows is all connected. So all the holes on that row are connected, all the holes on the next row are connected to each other and so on all the way down. And then on this side as well, they’re connected separately. The idea is that you can put a chip across the gap in the middle and you’ll be able to get access to all of the pins on either side. So that’s why we had to hook up the potentiometer this way so that I can get access to all of the pins. Because there are 3 pins on the potentiometer.

Fr. Robert: Right because if you turn it sideways they’re on the same line.

Mark: Exactly. They’re all in the same row, you just shorted all of the pins together. So that’s how the bread boards work. You can plug components into the bread board and then you can plug jumper wires between pins on the components and make a very simple circuit very quickly, very easily without having to do any soldering, without having to fab any boards or do any circuit layouts or anything like that. It’s very quick iteration. You can experiment and figure out what works. And then once you have a circuit that you know works, then you can solder it and make it more permanent and be done.

Fr. Robert: In just a second I’m going to ask you to give people a preview of what we’re going to be doing over the next three episodes of Coding 101, but something that we heard from Steve Gibson, and one of the things that he told us was look, this is about foundational knowledge. We understand that you could go out and could buy something that could tell you the time. A lot better than this. You could go out and you could buy things that would do most of the functions that you might create with an Arduino, but you don’t get the knowledge. You don’t understand the underlying workings of the things that you’re using. So what kind of advice would you want to give to someone who is going to buy one of these kits? What do you want them to play with between now and next week when you’re actually going to show them how to program?

Mark: What do I want them to play with? Well, the Arduino IDE comes with a lot of good sample code. Looking into those would be a good option. And just think about what problem they have in their life that they might want to solve that they think something like this would solve for them. So that’s where all of my projects come from. It’s not a, oh, I want to play with an Arduino, what should I do with it? This one is more gratuitous. It’s pretty. It’s an art thing. But I’ll give you another example, my fish tank aquarium controller. I have a 55 gallon aquarium at home and I wanted to be able to control the lights and give my fish sunrise and sunset at sunrise and sunset. Again, it’s a little bit gratuitous. But it’s one of those things I thought I could do. So the input would be what time is it? And then the work that the controller would do would be to calculate what time sunrise and sunset are on any given day. And then the outputs would be alright, I’m going to output an analog voltage and I will have to amplify it, I will have to have a board that turns a small voltage from an Arduino into a large voltage for the LED lighting in the fish tank to slowly ramp the lights up on the east side of the tank, and then slowly ramp up the lights on the west side of the tank. And then of course it went overboard and I have red lights for sunset and dawn and dusk and I got a blue light, it just goes overboard. I’ve got 6 analog outputs and I’m only using 2, what could I do with the other 4? So the advice I would give would be to figure out something in your life that you wish you could do. Some problem that you have, or just some sort of an artistic crafty thing, whatever it is. Just start thinking about what are the inputs and what are the outputs. And chances are, if you can enumerate what those are, there will either already be modules that can do that for you, or you can research that one particular thing and there will be some instructional tidbit on the internet that shows you how to do that thing.

Fr. Robert: Mark Smith, thank you very much for coming on. Thank you for being our code warrior for the next couple of episodes. Could you tease the audience with what they’re going to see next week? So we’re assuming they’re going to get all the hardware that they need and they’ve loaded the ID on the platform. By the way, it will work Linux, Mac, PC, doesn’t matter. Get it, get it working. What will they be doing come next week?

Mark: So there is my tease.

Fr. Robert: Every language needs to start with Hello World.

Mark: Every language needs to start with Hello World. If nothing else, it proves that you know how to compile and build and put on to the platform and all that fun stuff.

Fr. Robert: And believe it or not, it’s not very far from what you’re seeing right now to this finished product. Because this gives you all of the information that you need. It gives us a way to get stuff into the Arduino, a way to get stuff out, or outputs, from the Arduino and its showing us that it can count the clock, so that’s all we need. So look for the show notes because they’re going to have links to all the components that you need to buy if you want to follow along. In fact, if you don’t want to build this, if you took Mark’s advice and you just figured out something that you want to do in your life, something that you need, that’s fine and all of the lessons that you’re going to learn from this module will help you because it will show you how to program the Arduino. But if you do want to build yourself a really snappy clock then go ahead and buy all of those components on the show notes and we’re going to show you how they work. Until next time, that’s Mark Smith, he’s been our code warrior and back to … me, in the studio? We want to thank Mark Smith for dropping the knowledge about embedded programming on us. He’s going to be coming back for 3 more segments where we’re going to talk about how you take the Arduino and turn it into something useful. Don’t forget that you can follow him on his Twitter account, it is the way to find out what he’s doing. Just go to Now we will be getting back to some of our discussion about embedded programming but before we do that, let’s take a moment to thank our second sponsor of this episode of Coding 101. We are a tech agency, so of course we talk a lot about communications. In fact, in the shows I do, the Coding 101 and Know How and This Week in Enterprise Tech, I’m every week bringing up new tools, new sweets that people have developed to be able to communicate better. But even in a world of email and chat and 15 different types of telecommunications, we sometimes need a type of communication that’s set up exactly for business. And that’s why we’ve got HipChat. Now what is HipChat? It’s fantastic. It’s business communications. I know there’s going to be people out there going wait a minute, we communicate in my business. We’ve got email, we’ve got text, and some of us have pagers. We have voicemail, we have video calls. But even though that may work and even though that’s a good way to communicate, there are plenty of sweets out there, HipChat is specifically designed for businesses. And businesses are the ones who are going to love HipChat because it allows you to keep a history of what your communication looks like. I’ll explain why that’s important. When your team communicates, when they use a variety of programs, from email, IM, texting, cloud storage, document sharing apps, they have little bits of pieces of the answer everywhere. And if you’ve ever had to do forensics on your project planning to figure out where a good idea came from, or where a bad idea came from, you know that you want an easy way to look back through time. Through the time of your communications and figure out what happened when. That’s what HipChat lets you do. It gives you a time machine so you can see the genesis of that next great idea. They give you IM, video chat, document sharing, screen sharing, system updates, and code sharing integration, which is important for our audience, in one simple platform. Email is too slow, meetings get sidetracked and regular IM doesn’t work well for groups, but HipChat keeps your team in synch. And it works from any device no matter where you are. The best part is that HipChat integrates with the top developer tools like GitHub, Gira, Zen Desk and more. You go to their website and check out the 57 services that HipChat plays nice with to see if maybe you don’t have to do much integration at all. Just turn on HipChat and start working better. They bring your entire project and team together in one communication suite. It’s easy to set up, it’s fun to use, and it makes you productive. Now here’s what we want you to do. We want you to try HipChat Plus. You can get your team on the same page in seconds. I want you to try them for free, no credit card required. Visit, click on “start chatting” to sign up now. Then invite a few team members and all the features are free for 30 days. After the free trial you can always stick with the freemium version. Remember, that’s and here is a super-secret piece for everyone who wants to act now. If you sign up now the first 100 signups are going to get their free trial extended to 90 days. That’s HipChat, your team, your project, in synch, instantly. And we thank HipChat for their support of Coding 101. Now Lou, what did you think about that? I mean, embedded processing, Mark was all about explaining that it’s not necessarily about the hardware, although we love focusing on the hardware, it’s about that idea of finding something you want to do, finding a problem you want to fix, figuring out your inputs and outputs and then, only then, starting to spec out the hardware that you’re going to need.

Lou: Super powerful stuff if you think about it. If you know what the device is that you need and you find a way to hook them together, they become an aggregate of a system that can control a lot more things and do a lot more things than you could actually do by yourself. So that’s where the power of IOT devices come from and it’s some awesome stuff. Looking forward to next week!

Fr. Robert: And that’s really the difference between a lame IOT device and a good IOT device. A lame IOT device is, here’s something that we added a chip so we could connect it to the internet. A good IOT device is something where you said, you know what, this would be better if we had visibility into it over the internet, that’s why we should make it. And I think that’s something that Mark really gets. Now really quickly I want to run through some of the parts that Mark suggested that you get. So if you want to follow along, if you want to go step by step and build your own clock, because that’s what we’re going to be creating, here are the parts you’re going to need. The first one is an Arduino Uno. Now this one you can find on Amazon and you’re going to find it for about $24.95. It’s a fantastic device, very easy to use. You can get a lot of clones out there, but I would really suggest that you try to get an authentic one because some of the clones have issues with some versions of Windows. The second thing is a protoshield. You’re going to find this at This was the device that Mark showed you that goes on top of the Arduino. It’s a shield that plugs into the pins on the side which will allow you to extend the capabilities of the board. It allows you to solder in new components, etc. The third thing is the RTC, the real time clock. You absolutely need this if you’re going to be doing the clock. We’re going to explain why in the next episode, but if you jump over to this you can again, get this from amazon. Its $6.99, its free shipping. And then you’ll need some 10k potentiometers. Get this over at Amazon, it’s not going to cost you that much. Now here’s something Mark and I talked about. You could buy 5 of them for $5.43 or you could buy like 100 of them for $30. So if you’re going to be doing a lot of these projects in the future, consider getting a larger pack. And the last bit that you’ll need are the analog volt panel meters. You can get these from Amazon. But if you live near a Halted Supplies store or a Surplus Supply store, often you can get some much nicer looking ones. Mark was a big fan of the aviator ones. The rounded dials! But those are going to cost you between 3 and 10 bucks a pop depending on what style you like. All together this project is going to cost you just under $70, including shipping. So if you want to follow along, that’s a really good way to do it. If you want to cheap out you can get a clone, a knockoff Arduino and a knockoff protoshield, it’ll knock off $10-20 off the project, but I’d go authentic. Lou, what do you think, is this a project that you might want to play with?

Lou: Definitely. And I would say definitely stay authentic. This way you’ll get better tool support and you kind of know where the compiler comes from and ID and all that stuff. So I’d stay with the authentic stuff.

Fr. Robert: One last bit before we go. These are some of the devices that I use on a daily basis. These are all embedded processors. So this is a KK2.15 flight controller. These are both multi flight controllers that I use, and this was actually the badge. This was the conference badge from DefCon 2 years ago. These are using ATMIL chips, these are using propeller chip sets. But these are all embedded. So whenever I create a custom firmware for my flight controllers, I use this USB controller to tie straight into the serial board. The I2C on each of these boards and it allows me to reprogram the firmware. Now this obviously has a very dedicated use, but the nice thing is that the wisdom that Mark is going to be dropping on you is the same wisdom you’d be using to program any of these. So embedded programming, it’s not just for geeks anymore. Next time we’re going to be going into the actual programming. We’re going to be showing you how to assemble some of the hardware and Mark is going to explain why you need a real time clock. But until then I want to thank my co-host, Mr. Lou Maresca, a Senior Software Lead from Microsoft. Lou, where can they go to find out more about you?

Lou: On Twitter, @LouMM, and about me, Lou MM as well. And all of my work during my day job is at

Fr. Robert: Fantastic, and you’ll be here next week, to help spread the knowledge to all the boys and girls. Until then there is some information that we need to let you know. We know that this is a lot of information and we want to make it easy for you to follow along on the projects. So we’re going to make sure that in our show notes we’ll have links to the places you can buy the individual pieces as well as where you get to download the Arduino IDE and a few helpful hint sites so if you want to move ahead in the class, you can do that. But in order to get that information, drop by our show notes page, at You can find our entire back catalogue of episodes which is important because it’ll let you download entire modules if you want to learn what we did in C Sharp or Perl or PHP, it’s all right there. It also gives you a place where you can use that little dropdown menu to get every episode of Coding 101 automatically downloaded into your device of choice. We make it easy because we love you. Also, we do this show live every week. Now it’s on Thursday at 1:30 pacific time. Starting in March, we’ll move to 2:30 pacific time on Mondays. You can join us at And as long as you’re watching live, jump into our chatroom at Until next time, he’s Lou Maresca, I’m Robert Ballecer, end of line!

All Transcripts posts