 Hi there and welcome to an episode of Visual Steel Toolbox. My name is Dimitri Lyland and I'm one of the co-hosts now helping Robert out, put some good episodes and good content together. I have Stephen Huang with me from the Windows IIT team. Hi. Welcome to Toolbox. Thanks a lot. Yeah. So today we're going to be talking about Windows IIT. It's a really great topic. I'm pretty passionate about it. That's how me you get to know each other. I had some questions and feedback. That was pretty cool that you jumped in and I thought, hey, this would make actually a really good Toolbox episode. So the goal today I think is one to really make sure that you and the audience get a good overview of how to get started. I found out that code wasn't my problem when I decided to play around with Windows IIT myself. I found out that all of this stuff that we have on the table here, that was the learning curve, that was a hard thing for me. So I'm hoping you can help our audience unblock that, the way it's right and I had to do it a little bit harder, but you can have a great description. So jump in and tell people what is Windows IIT? Yeah, totally. So I'm a PM on the Windows 10 IoT Core Team, and we basically build an operating system that is Windows 10, but it's the smallest version of Windows 10, and it's specifically made for Internet of Things IoT. So the Internet of Things is this breadth of connected devices that take data from sensors, they connect to motors and actuators, and they talk to each other and exchange data. You've seen them in houses, in workplaces, it's becoming very popular. This idea of making things smart, your smart fridges, smart thermostats, that sort of thing. So now, basically, Windows 10 IoT Core is designed to help you build those things. We make it really easy to access hardware, which is something you traditionally can't do with a laptop or a tablet. It's very hard to access and connect to hardware, motors, lights, that sort of stuff. It's the wrong form factor, right? You don't want a laptop stuck underneath your car, you want a little device that maybe is running a sensor or something or your fridge, whatever it is. Definitely. So we are like Windows 10, we share the same code base underneath, which means when you write an app, it's a universal Windows platform that you're running on. So an app can basically transfer between the computer on your desktop or Xbox or that sort of thing. You're following your IAT device, it's all the same UWP app. You have to take performance into consideration a little bit as you switch hardware but your code doesn't have to change. Yeah. But it is very specific to writing IoT things. So you can actually access hardware through things like buses. So we have here a Raspberry Pi just on this. You can see on the side, this is what makes it a little interesting is these pins here, allow you to actually connect wires to them and hook up all sorts of cool stuff. Yeah. We've got another example here. I've got a Raspberry Pi hooked on to the back of an LCD display and maybe easier for folks to see the wire in the way we're talking about GPIO. That's what this is called, right? Yeah. So they're general purpose input-output pins. That's what it stands for. Yeah. That's what they stand for. You learn something every day. Yeah. There's lots of boards. The most popular for makers is the Raspberry Pi, but we are actually supporting a bunch of boards. We have here the Intel Jewel, which is made by Intel. We also support a couple ARM boards, like the Raspberry Pi, and we have a Dragonboard. So these devices are interesting because they vary obviously in hardware qualities. So for example, if you want to do something graphical intensive and you want to use the hardware accelerator, the Dragonboard is great. So some of them have different advantages? Totally. Yeah. There's different price points. The Raspberry Pi 3, I believe is $35. Yeah. It's really great for people who want to learn for the very first time, get started, maybe prototype something, try some stuff out. But if you're looking to make a professional product, there's other stuff out there for you to try. People make custom boards for their own productization, commercialization efforts. There's lots of different options out there. Yeah. One of the cool things is, you can use a Raspberry Pi, you can test your idea, you can do it on the cheap. Yeah. You can build your code once, and then you can get a different device that maybe is better suited for the actual prototype you want to build, and then you can keep moving. There's no restriction because the C-Sharp code just transfers with you. That's right. So it totally transfers. You might need to make minor adjustments based on the hardware. Sure. But it's not huge, generally speaking. It's pretty straightforward to transfer code between the different devices. Cool. Well, I think it's good to understand that you have all these options with devices, and that your code is one code base, and it was one of the hardest things for me to understand initially when I started looking at this. I said to myself, well, I've always heard Raspberry Pi, but then I ran into all these other boards, and I was like, is there like a newer board, and then older board? But it wasn't the dynamic, right? It's just there's different boards with different hardware configurations, different performance capabilities. I was testing a Pi 2, then I got a Pi 3, just everything just kept working, just pushed out the device. That's pretty cool. Yeah. So the cool thing with the Raspberry Pi 3 is it actually has built-in Wi-Fi, and Windows is great even though we have a bunch of wires here on the corporate network. So just to make things work nicer, but the Raspberry Pi 3 actually doesn't need to be connected to anything. You can actually have it standalone, connect to power, and it'll connect to your Windows PC. That's what makes us interesting and different is that all of your coding actually happens on the PC itself in Visual Studio. So you write your code in Visual Studio, and when you're done, you can actually push it down remotely onto your device and it'll run. So for example, a lot of people actually build devices and products that don't use a display. We actually call them headless. Yeah. Ones with devices that have displays on them are called headed devices. So if you're building without UI, you don't need an extra monitor, which is kind of a pain if you don't, if you don't have an extra monitor laying around. Yeah. So I had that problem at home. When you're at home, this can actually easily connect to your Wi-Fi network. Your board will actually be found on your Windows 10 PC, and then you can push code remotely down between. Yeah. It's really cool. Then you can use a tangible displays like this. Yeah. Totally. That's what I did at some point. I said, hey, that'd be cool, buy one of them, connected it up, and it was very seamless. There was nothing, it was plug-and-play. Yeah. For basic purposes. Totally. The power even connected out, so I didn't have to have multiple power cords or anything. I could just have one device, one power cord, one display, and then it's a touch screen, so I was able to touch and test my app on it. Yeah. So that was pretty cool. Yeah. Awesome. All right. Well, let's talk about something that I think people often get confused on also is the whole licensing situation on using Windows IT. So what is it like to use this legitimately for your prototyping purposes or moving further down the pipe? So Windows 10 IoT Core is free for everybody. There is a catch. If you are a maker, using it for educational purposes or just for fun, it's free, no strings attached, pretty much plug-and-play. You just grab it and you go. If you are actually planning to build a commercial device, you do need to sign a license agreement, which requires you to make sure you're in compliance and you're updating your images and you make sure updates are working, but it's still free of charge. Cool. So it's nice. All right. So how would people get started? I mean, it's great you bought the board, right? But it doesn't come with the OS on the device, right? So what's that experience like? So there's different ways to get started. If you're new, we actually provide starter kits and there's lots of them around. This one is sold and made by Adafruit. So they basically package together a whole bunch of goodies in here to get you started, especially if you're brand new, kind of want to get a feel, don't have all the equipment. This one actually pre-packaged with a board, an SD card, and noobs. So for those that are familiar with Linux and the Raspberry Pi ecosystem, noobs is on here so you can get started. If you are like someone like me who has stuff already, we actually have applications that help you download the operating system onto an SD card, put it onto your device and get connected. And we can want to that. Yeah, let's take a look at that. I do want to show folks one thing. It's just easier to grab this one. So over here, it's maybe hard to see for folks on the audience, but there is an SD card right here. That's right. And that's how the OS gets onto the device, right? Yeah. The device itself has no operating system. They don't have Linux or Windows or anything. That's right. You plug in the card, we're going to show how you can figure that in a second, and you just start the device, and Windows pops up on your screen. Like we sure have running back here. Yeah. That's already a board that's fully configured, but let's walk people through that experience of, Sure. How did they actually get started from their laptop when they have nothing but their empty SD card in their hand? Totally. So we're actually going to switch to my laptop. And the first thing people need to do is get to our website. Yeah. And so if we're starting brand new, I'm actually going to get a fresh window here on Bing. If we want to search something up, Windows 10 IoT Core, the first one is this website, our Dev Center. If you're looking for a quick link, we actually use WindowsOnDevices.com, which takes you to the same place. It's our Microsoft Dev Center, and it's our home page where everything is. So this website is great. It has a lot of documentation and samples. All these docs explain what the operating system is, all the features, how to use them. We have a ton of samples. They're all code samples that you can download, look, use in your own projects. Just to get you started, they range from very simple to very complex. We have driver samples. Yeah. And it's all in GitHub. Yeah. It's all in GitHub. It's all open source. The big button is the Get Started button. Yeah. So let's click that. We support a bunch of different devices. These are our main suggested devices. There are others. The community has other devices that you can get started with. These are the ones we personally support. So we have a Raspberry Pi 2 starter pack, Raspberry Pi 2, 3, which are our most popular among makers, the Dragon Board, Intel Jewel, and a Miniboard Max. Cool. Actually, I heard of the Miniboard. That's new to me. Lots of devices. So imagining that you're me and you have fresh equipment, you've ordered them online, and you have a blank ST card. This will actually walk you through the different versions. We have IoT Core, our main release branch. And if you're wanting to get the latest and greatest, there's the Insider Preview, which is pretty cool. A lot of people actually choose to get it with the Insider Preview, just because we're IoT and we want to stay up to date and get all the cool stuff. Yeah. I did both, and they both worked well for me. It's cool that you guys have the preview for even Windows IoT, right, the preview program. Yeah. So you do need Windows 10. That is one thing that people need to know, is you do need Windows 10 to run, simply because our whole experience is based on a PC connecting with the device and back and forth. Sure. So once you're ready, it's the IoT dashboard that gets you started. And that's an application that gets downloaded onto your desktop. It looks like this. Yep. So we got it running here, and I found this very useful and very simple. There's not a ton of buttons on the left. That's right. But the main thing is this device setup, right? Right. And so what it does, it allows you to select the board type that you want to flash. Your build, this one is only IoT Core, and it finds the SD card on your device. I don't have one in my computer right now. But it basically finds your SD card, downloads it, flashes it, and when you're ready, you can plug it in, and it will actually find your device. So mine's Steve, Raspberry Pi 3, and you can actually see it. I do want to talk about SD cards, though, because SD cards are actually very important. I had trouble with an SD card. I bought one that I didn't check if it was compatible, and the device couldn't see it. So there you go. I've been one of the troublemakers. Yeah. So SD cards are very important, because if they're not compatible, they won't work, right? You need the proper amount of space, which is, we generally suggest 16 gigs, which seems like a lot. And even though the operating system is not nearly that big, we have updates that we want to push down. If you want to build your apps and you want to store stuff in them, right, you need that space. If you want to build a photo, viewer, frame viewer, a database, whatever you want to do. That's the hard drive for your device. Yeah. So everything that your app does, it needs that space to make it work. Totally. Yeah. And the speed matters. It really. The SD card speeds. The SD card speed matters a lot. So on first boot, we've noticed that this is the card I actually use right here. It's the Samsung Evo. This is my personal favorite. It's tried and true for me. I know it always works. 16 gigs, class 10. This one boots in about four minutes on first boot and about one to two minutes on second boot. We've seen other cards that aren't compatible somehow still work take up to 15 times longer. So you can see how big of a difference it is between the two. You want to have the right card. I mean, I think that's the bottom line there. You want to have a card, enough space that has enough performance that it can work. And it's compatible, so there's no problem. And we actually have a list of suggested cards online. If you go to set up your device, you can actually see SD View Recommended Cards. I found that list after I bought the wrong card. So let's learn, but it's good to have the actual list. And then the one other thing that I learned the hard way was remember that password during setup. So in here, you've got the admin username and password. And I had actually forgotten mine the first time I set it up. So I had to re-burn the card. It wasn't the end of the world. My app still deployed, but it cost me about half an hour. That's right. So don't forget password. Cool. The other big one is, once you've set up, is the device portal, which is a really, really cool app. We have it actually here. I have it actually open. And this is essentially a connection to the device. So there's actually an application running on your board. And it's remotely displaying this web browser. And we're connected to it right now. So you can do all sorts of cool stuff. Like change the device name, change your password once you connect in. Yeah, it's in here. You can connect? You can take screenshots. The big one is obviously controlling apps. This is really how you install apps, switch between them, view what's going on in your device. If you want to take a look at your file explorer, we can see what's on the actual device itself. Process is what you would expect with the task manager performance. You can see CPU usage or IO usage. Yeah, this is very useful for understanding what's going on the actual device, what's installed. Otherwise, you'd have much harder time. Yeah, really great. Super, super awesome stuff. You can even do debugging. Bluetooth, you want to get connected. With network stuff, we have it all here. So this is really the main hub for any debugging, any work you want to do with the board. Outside of Visual Studio, this is your main go-to tool. The other big thing that's a big value prop for us is Windows Update. So security in IoT is something I get asked about all the time. Like are you guys thinking? You're sending the news all the time, then. People are getting hacked with their kettles and their washing machine. So security comes built-in into Windows. And it's not want your fridge to attack you. That's right, that's right. And so when we work with big OEMs and stuff like that, they choose us because we're secure. We do our best to make sure it's secure. Yeah, Windows Update, just like you would expect in your corporate network for your laptops, or machines, or your home machine, whatever. I mean, that's the beauty. And I actually was playing around with it the very first time in this dashboard with my IoT device. And I went in there and I was like, oh, it's doing Windows Update. And I actually got a little bit annoyed. I'm like, oh, it's doing Windows Update. Great, I'm going to have to reboot the device. But then I found out that's actually also really awesome because now this device is more secure, probably fix some bugs, whatever it is. It rolls out patches, and we don't have to worry about it. And you can certainly configure that. You don't have to allow it, but by default, this device tries to keep itself up to date. Cool. Now, we mentioned that application deployment from the portal is possible, but it's worth just pointing out that VS will do that for you, right? In the debug scenario. But this is there in case you've got your package already built. You're not there for debugging purposes. Maybe you just flashed a new device. You just want to fill the app on there, so you can take the package and use the web UI. And if you want to make it a default app that runs every time, if you've built a product that you want to send to your friends, or you're ready to push out, you can actually send it and set it as a default app. So that's the app that comes up every single time. Cool. So you've got the dashboard to get things set up, and then you get in the web interface for the device portal to make sure things are running well, things are updated. You can check performance as you're debugging, keep it open while VS is also running some app. Yeah. Oh, that's pretty cool stuff. All right, so when you get through that part of the journey, all right, you're a developer. What's your next step? How do you jump in there and actually start debugging as the device? So the big thing is Visual Studio. And we actually have some samples. You can actually download them. I can actually show you here. We have a bunch of samples on GitHub that you can download. Yeah, it's quite extensive library. It's a large list that we keep up to date. So you can see there's a whole bunch of stuff to get you going. And I've actually downloaded them onto my desktop. And we're going to run through two of them. The first one is Hello World. You're a standard, very first one just to kind of show you what's going on. And so this is Hello World, very, very simple. It's a UWP app. And all it does is basically shows some text. And when you click a button, it says Hello World. Yep, the canonical Hello World. So I've already configured it. I've pre-configured it. I think you can see it when I click in Properties that I've connected to my device called Steve RPi3, so you can see it. Encrypted, it's just you and I on the network. And we're going to run it. So if we switch to the Raspberry Pi 3, we can see that it's about to deploy. And there it is. OK, so I've connected a mouse. This is a very few times actually use a mouse on the Raspberry Pi 3 when I click it. Switch back to VS. We'll see the break point there. There you go. And there it is. Yeah, it's really, to me, the magic of all of this has been the fact that that's just a standard mouse. That's just standard Visual Studio. There's nothing special about it in that sort of context. So you can hook up any wired keyboard mouse works with Windows IET. I have a wireless Bluetooth adapter I added to my older board, then I added Wi-Fi to my older board. I was playing around. Things just work for the most part. I had trouble with only one Bluetooth keyboard, but that wasn't ever claimed to be a supported scenario. So I just tried to push it. But yeah, these boards do have Bluetooth often, or you can add an adapter. The other thing to show is a lot of these samples work with stuff like this, right? So you get little hardware. That's the learning curve also. You need certain hardware to run certain samples and actually get successful execution from them. Some of them are just plug and play. Some of them use those pin boards, right? That's right. Cool. That's right. And we're actually going to move to the next sample. And I'm going to walk through some of the hardware in this box here so we can see what it takes to make an LED blink. Cool. So let's take a look at that. Yeah, so this is the out of fruit. I'm just going to scooch this out of the way. Let's move it. We've got lots of fun toys here. So it comes with little card. We love our cards. We love little blue cards. I have a collection of them. So it comes with all sorts of cool equipment. You can get, and I'll just kind of walk you through all the different things. So it comes with here a standard SD card. This one's 16 gigs. Your LEDs for blinking, which we're going to do in a second. Comes with push buttons, which are pretty cool. Yeah. You don't make all sorts of cool stuff there. Resistors, for those that don't know, comes with different ones. So there's different resistors. And essentially what they do is they actually change the resistance based on the color codes. And you can find them online. But that's how you tell for those that don't know. These are potentiometers. These are pretty cool. So when you actually connect them, you can potentiate and change the brightness of an LED by turning them. They're just kind of cool. We have a photo cell, which detects light. And we've got some more stuff here. This is a temperature and humidity sensor down here. And on the other side, we have an RGB sensor which detects color. Cool. So you can do all sorts of cool stuff. Yeah, all of these are these little pin type interfaces, right? So they all plug into one of the colors, little white boards. So on the other side over here, we have a breadboard. And this is basically a way to connect all of your stuff. They send signals and route signals through each other. So we also have wires, which are essential. Always need wires. Power cable. And all these power cables for the Pi kits and everything else is just standard micro USB adapters. So I have a ton of those. That's no problem. A case. And obviously the Raspberry Pi 3. So this is a really good way to get started. Just kind of get a feel for the equipment. And I know a lot of experienced people don't need these. They have all the stuff already. Once you start, you kind of get a nice collection of everything. I have so much stuff in this white box that I got originally as a gift. And then it came with the Pi 2. But I bought one of these shells. I just wanted an Amazon. I forget even what company makes them. I don't know if it's Pi or not. But it's really cool. So it's really easy to install, snappable shell for the kit. And it fully comes off. And just I can take my Pi right out of it. So that was cool. So if you need to have, let's say, a Pi as an experiment, let's say, somewhere where it needs to be a little more rugged, you can put it in a shell. There's one in there. You can buy one. The hard thing after this episode is making sure we leave with our own stuff. Yeah, that's right. And still any of your hardware here. But it's pretty cool. And some of the other differences that I found is like when you get one of these seed kits. So I bought one of these grew starter kits for IoT. It was slightly different. So it doesn't have the breadboard instead. Here I'll show you guys. So it has one of these intermediate boards. And you plug in with one of these cables, all the sensors that it comes with. And then you plug this into your Raspberry Pi. And they're all boltable. So we have lots of bolt spots. We can screw these things in together. And it works really well. So there's a bunch of different way you connect the hardware. But at the end of the day, the software will just work with it. Yeah. And there's a reason people like the Raspberry Pi. It comes with a lot of accessories. There's a lot out there since the community is so large and the big community and all that sort of stuff. So good for starters. And I've ran into Haxter that I owe quite a bit when I was searching. What is that site all about? Is that a Microsoft site? So it's not a Microsoft site. But we like Haxter a lot. Haxter is basically a great way for the community to put together projects and show off what they've done. A lot of people put open source code there. So you can look at it. You can use it for yourself. Build on it. Start your own projects. Really great way to find ideas and see how things are done. Cool. Yeah, I found a bunch of cool projects. Not all of them had source code, but some of them did. But it seems like a very active community. There was projects being posted quite a bit. And a lot of them used the Pi. Definitely. The most popular one. Definitely. Cool. So we have one more demo you want to show right from a code perspective. Yeah. It's slightly, you know, maybe two more lines of code than this one, but it gets people going. Yeah. Like we said in the beginning, I think coding is easy. I mean, you can figure out the code. It was figuring out, like, you know, which kids do I buy? What hardware do I need? What the hell is that white board with lots of holes in it? Like, it was all very confusing to me at first. But then it kind of comes together. Totally. So I'm actually going to show you a diagram. We can find it in our samples. Yeah, I know which one you're going for. It was very useful. I'm a Blinky. And so we have a whole bunch of samples with tutorials on them that shows you what you need to get started. This one's a little different. This LED takes a little bit of a different resistor than your traditional 200 ohm resistor. So ignore the colors. But we basically have a diagram that shows you how to hook it up. Right. So it's easy for you. You just need to, you know, count the pins, plug them in. So you can see if we switch to my board, my real board, you can see I've kind of emulated it so you can see exactly what it looks like. So there's a wire that connects to this pin that goes up. And the neat thing about breadboards, for those of you that don't know, is the signal can pass along one of the rows. But it can't go across, up and down, which is kind of important. And the only way to connect them is with other hardware components. So if you look, this wire here connects here. It passes a signal up to this side of the LED. And then the signal goes up and then down. And the current passes down this next row through the resistor up here. And then this black wire goes all the way back to the Raspberry Pi, connecting a whole circuit. Cool. And that's it. There's nothing super complicated about connecting a blinky. So we're just going to go ahead and run it. Let's make it blink. And let's switch to the Raspberry Pi. And you can see it's blinking. And if we switch back to the camera, we can see that it's actually blinking. Cool. Yeah, this is really cool stuff. I think, again, as a visual studio developer, not the intimidating, but the code samples we showed. And in future episodes, I'll bring out a guest. We'll drive into a lot more code samples. I really want to work on this topic over a couple of episodes. But without this base knowledge, it's really like this was so intimidating to me. It was like, if I'd never got one of these boards as a gift from somebody, I wouldn't probably have started. I would have seen it as like, oh, I don't know anything about soldering. I don't know anything about hardware, really. I can put a computer together. But those are parts that snap in. Well, this stuff is just like that. The fact that these boards are basically mostly snap in. That breadboard is the hardest thing in terms of like you have to figure out, or you just know what a ground wire is, or it's basic knowledge. And most of it is up on our sample site, right? And documentation. Yeah, and we try our best to make it super easy to get started, especially for beginners. Because we think it's the future of building connected devices. That's really awesome. Well, I think we've got a lot of good stuff here. Anything else you want to cover? That's it. So I think the next episodes are probably going to cover Azure or connected to Azure, which is a really big scenario. Especially for those that want to make real products, collect data, use Azure, and then talk about our journey. So really Windows 10 and Windows 10 IoT Core is about taking an idea and making it a real product. And so we support people through that whole journey where they want to jump off after making something really fun, or if they want to take it all the way to a commercial product, put it in markets. We work with real builders to make real products, and that's our goal. Yeah, and people don't realize just how much Windows there is out there in the world. Most ATM machines are running Windows embedded. I mean, there's a lot of historic stuff, and I think moving to one Windows has really helped us to clarify the message of, yeah, Windows will run on something this small, something that big, my phone, whichever it is, and you guys support people all the way through. So that's really awesome. All right, well, thank you very much for coming on. I think it's been a great introductory episode. I hope folks out there liked it and be back for more Windows AT. So thank you very much for being here. Thanks a lot. Thanks, folks.