All right. So as many of you know, I'm RenderMan, and I have a distinct pleasure of moderating this panel and introduction to microcontrollers. And I cannot believe that they're like every seat seems to be filled here. What's that? The pressure is on. Yeah, I mean, I'm not wearing pants, so this just gets a lot more interesting. And your crotch is right at the level of Joe's giant red fist. Excuse me a moment. It's going to be one of those kinds of panels, apparently. Yeah, you don't want to know what's going on behind this podium here. So on my left, is that my left? Yes, that's my left. We have Firmwares. We have Lost, who everybody should know and I have a personal grudge against for the number of years of torture from the Mystery Challenge. Oh, yeah. All right. We got Smitty Halibut on the end here in his very epic hat. And Joe Grand, which ‑‑ I'd like to correct that, Render, that's TV's Joe Grand. Oh, TV's Joe Grand. Discovery Channel. Thank you. Please, no applause, please. So we're basically here talking microcontrollers. I'm elated because I get to pick these guys' brains for an hour here. That is something I would have killed for at any other time. So basically ‑‑ I'm going to go down and have everybody introduce how they got into micros and their history, and we'll go from there. Firmwares? Wow. So I started hacking code on an Altair 8800B. Like a lot of you guys, I loved writing software, but it's like I wanted to do hardware stuff. So I ended up with back in the day of 8051 microcontrollers and that was all for fun. I ended up being an embedded systems engineer. Making my way up to being a VP of engineering for a contract design house. So I love making hardware that does something. And some of it has blown stuff up and some of it has helped people live. So it's probably a good balance. Kind of a 50‑50 thing there. Kind of a net zero. So my first foray into the world of microcontrollers was with the Motorola 68HC11. Anybody in the audience remember that chip? Oh, yeah. We just dated ourselves, right? Yep. Yeah, the 80s called. They want their street cred back. So I've just always been interested in how things work, not just electronics, but just things in general. As a kid I was always taking stuff apart and occasionally able to put it back together. Usually things hacked to have different functionality. I've had numerous jobs over the years. I've worked for Parallax. I've worked as a design consultant for companies doing embedded systems. And specifically embedded systems. I've worked in system security because that's kind of where my interests lie. And you have some experience with some badge design. A little. Not as much as Joe. A little bit. Not yet. Not yet. Working on that. Me? Okay. Yeah, so I'm Joe Grand. TV's Joe Grand. TV's Joe Grand. So I ‑‑ Please, no applause. Please. Yeah, so I got started with computers and electronics really early. In 1982 was an Atari 400. Yeah. And my brother was luckily interested in this type of stuff. So he sort of threw all these tools at me and electronics and didn't literally hit me. But I kind of was exposed to a lot of electronics at an early age, which was cool. So I first started getting involved in kind of non-microcontroller development, so making boards for, you know, red boxes and blue boxes and various phone-freaking stuff. I think the statute of limitations is up. We can talk about that. It's probably up, yeah. Yeah. But I got involved in embedded development kind of in my teenage years and in college. So I was sort of a Motorola HC-05, HC-08 guy for a while, and then got involved with microchip picks and sort of stayed with those. Motorola spun off into Freescale, so I went over and started using Freescale stuff. But if you guys noticed, for DEF CON 14 badge was a microchip pick, and then 15 through 18 was all Freescale, and that was mostly because they would just take me out to dinner more than microchip did. That's the way to Joe Grant's heart is through his stomach. Free food, pretty much, guys, so remember that. Yeah, so I sort of specialize in embedded system development of kind of low-end consumer and household devices, and then, of course, I do hardware security. I break stuff once in a while, too. So interesting side note, Joe. Do you realize that some of the products that you would submit to Parallax for sale, that I was the one that was actually looking at them with John Berriman? I know, yeah. So that's kind of how— Brian was in control of my destiny. That's how kind of Joe and I met, and so before we met through DEF CON, I was looking at his products, and I think it was the GPS module. Probably the GPS. When we were having that— Before dealing with—before GPS was easy to deal with. Yeah, and we were standing outside, and I think, wasn't it—was it John Williams that was busting your balls about something? I just remember a funny interaction that we had, and you were going to— Yeah, and you—I don't know. Like, Ryan was at DEF CON, and I was at DEF CON, but I don't know if we knew each other. And it was like, you work at Parallax? Weird. But yeah, it's a small—sort of like the embedded world is kind of a small community, I think. And for the record, I do not work for Parallax anymore. No. So I think the first question for everyone— What? Oh, shit. And this guy over here. I'm good. Here, let me give you some water. Hold on. Have some water. And the funny thing—the funny thing is, is Smitty is the one who put this whole thing together. Yeah, this whole panel was my idea. I'm not sure how I got convinced of it. It takes these heavies to do this panel with me. My name is Mark Smith, or Smitty. I do—I'm the only one up here who does not do microcontrollers professionally. And so I am a hobbyist with my microcontrollers. I spend most of my time on Atmels these days. Thank you for saying Atmel and not saying the other A word. What, Apple? I'm sure it will come up. I'm waiting for that. I spend—oh, the Arduino word. That will come up. Oh, yeah. Oh, good lord. We got a bad reception on that one. But I got my start in computers when I was at a very young age. My oldest sister got a TRS-80 Model 1. Can any of you beat that? Yeah. Actually, no, I think the 8800 beats that, yeah. So I started on that just doing basic. I didn't get into assembly until college in the early 90s. My first microcontroller work was on an 8051, but I didn't spend a lot of time in Intel because Intel assembly sucks. Then, yeah. I like it. I'm a hobbyist. I am a network engineer and system administrator by trade, and I just do this on the weekends for fun because I like making stuff and I like making things that work, and I've been into electronics for a long time. And then once microcontrollers started getting really cheap in the 90s, that's when I got into adding programmability to my projects. All right. Yeah. So. And thanks for putting this panel together, by the way. Yeah. Yeah. Woo! Yes. Yeah. What was that? I didn't even turn it on. Oh, shit. You're welcome. So everyone who's not played with microcontrollers or is just starting like I am, initially it's the question of where do you start because it is such a huge field and so many platforms, so many development tools out there. How the hell are you supposed to know where to begin? And. And I know some of you guys actually teach classes on this. Where is a good place to kind of start and learn this? Should we just go down the line? Okay. Let's just talk. Okay. Well, yeah, I think that's definitely like people come up to me and ask the same thing. It's like there's so many different choices. And the good thing about nowadays is that there are so many choices, right? Like back in the day, if you wanted to get into microcontroller development, you had to get the individual microcontroller, deal with the development environment, add a bunch of external stuff just to get the part up. The programmers, the platform, the memory, everything else. And then you were writing like assembly, hoping that it was going to work. So now it's like you have Arduino platforms, you have propeller processor, you have all these other modules, Raspberry Pi and the BeagleBone and all of these things. And it sort of depends, I think, on what you want to do with that device, right? Because there's so many different flavors and so many different levels. If you're doing something basic, maybe use a basic stamp. Or an Arduino. If you're doing something complicated, maybe do Raspberry Pi, which is Linux-based. And now you can write. All sorts of Linux stuff. So you don't even have to be a hardware guy. You can just write code and have stuff work on the hardware. So, yeah, it totally depends on what you're doing. And then you can always go to Linux. I agree. It depends on what you're doing. But for somebody who's new, it also depends on the tool chain for me. Because I can't take a new and drop them into certain tool chains that are like slamming your nuts in a door. Certain FPGA development software packages, for lack of a better word, are not. They're not exactly user-friendly. Well, I think a lot of engineering tools suck anyway, right? So you just have to find the one that sucks the least. Yeah, you mentioned the A-word. But the one thing that I think Arduino has above many of the other platforms is that it is meant for artists, not for engineers. Right. And so the thing that Arduino did that made it so popular is that they made everything so incredibly simple and trivial to use. You don't have to buy a programmer. The programmer's on the board itself. So the only problem I had with the Arduino and the Arduino zealots, I don't have any problem with AVR. To be clear, I am not a zealot. Yeah. No, no, no. The thing that frustrates me is they talk as though it's the first time it's been done because there was a lot of money. O'Reilly and the maker crowd started backing it. And, you know, you've got processing and you've got the environment. But they're not doing anything that, like, the basic stamp didn't do. Basic stamps. Yeah. So, I mean, I think really as far as going that route, the stamp was really the first. The first chip to do that. Yeah, that's true. The problem that the stamp has had, and I'm sorry, Parallax people who are out there, is they didn't, they haven't grown with the way that the user space has grown. And they're still charging 50 bucks for a basic stamp, too. And it's, you can't compete at that price point. And I actually have talked to Ken Gracie at Parallax. I was like, Ken, I love the basic stamp. I still do. And on a number of occasions, I've even heard Joe say, when I'm prototyping, I still grab for a basic stamp to do proof of concept stuff that's really simple things. It's off the shelf. But it's ridiculous to charge 50 bucks for that chip these days. And I said, if you're going to stay competitive, at least as far as the stamp is concerned, you're going to need to lower the price on it. So, anyway. I thought that's, I don't mean to be airing dirty laundry, but I think that's the kind of stuff you guys want to hear, right? Yeah. Right? But I think the Arduino, you know, I mean, people always bash on it. And, you know, if there's like an Arduino hack on Hackaday, everyone's like, oh, Arduino, lame. And it's sort of like, there's definitely this religious war, right? Arduino versus other stuff. Just like there was with open source, whatever, and Linux versus whatever. But, I mean, Arduino, for what it is, it's good. If you want to get something done, there's lots of example code out there. There's lots of support from the community versus something like the basic stamp. You have some community support, but you have support directly from Parallax and the engineers and stuff. But the community support tends to be okay. My only problem with Arduino, though, is that a lot of the open source stuff that's out there, the modules that people write, nobody's validating that stuff. You don't know if it's good. Yeah. Yeah. It's sort of a paint-by-numbers, kind of plug stuff together, which is great for prototyping, but once you're done, it's sort of like, if it's a one-off project, that's fine. If you want to move it forward, that's when you have to really start going through and making sure that it's actually good. Yeah, but on the subject of how do you get started, though, you know, I would rather have somebody who is new to the hobby get an Arduino for $30, plug it in with the USB cables, load up the blink code, get it functioning, and go, that's fucking awesome. Okay, but look at the blink code for an Arduino, and look at the blink code. Look at the blink code for a BS2. I can put my mom in front of the code for a basic stamp, too, and she can understand it. My mom does not do computers. Or the prop BOE, like Propeller, Board of Education stuff. But, I mean, yeah. Yeah, yeah, yeah. So I'm not trying to, like I said, I'm not a zealot. I'm not trying to put the Arduino instead of the basic stamp stuff. I'm definitely not doing that. But I want, so I guess we need to make two categories of the kind of the simpler consumer-targeted microcontrollers versus the industrial, I work on this shit all day, I have the programmers, and the, you know, I can write the low-level stuff. And Smitty, just as a matter of confession, I've actually sold Arduinos at DEF CON before. We sold the Teensy one year. So I'm not, like, anti-Arduino. What I'm anti- is the attitude of, this is the holy grail that has come down from on high to save me from my microcontroller ignorance. That's what I do. Or the idea that anything else is way too difficult. Correct. You know, I don't know how many guys I've sold. Oh, the Arduino's great because, well, I don't need an in-circuit programmer, well, until the bootloader blows up. And now you need, you know, and what's an in-circuit programmer? Well, it's just another piece of hardware. You plug it in, you say program. It's not that hard for someone who's used to pushing packets around a network to learn how to use that. Dude, I mean, even TI's MSP430 toolchain is getting pretty good in terms of being usable. I mean, what do you guys think about that? Yeah, but you can't have a beginner load up MSP430 and suddenly not, right? Like, Arduino is a good platform for that. Sure, sure, yeah. One of these days we'll let Render ask another question. Yeah. I just wanted to say, I don't want this to be, like, me pleading questions. There's a microphone here. We want to hear from you guys, too, so if you've got it. Get us to shut up. Ask us more questions. Otherwise, we'll just keep you bitching all day, so. One question I do want to get to here. Walk up to the microphone. It's going to be hard. You're going to have to stage dive over to the microphone. One question I wanted to say was, one of the biggest difficulties I've had in getting into it is that you get the idea and you want to go and build it, but, oh, crap, now I've got to do DigiKey. I've got to order a SparkFun order or something like that, and you've got to wait, you know, weeks, because I'm up in Canada. I've got to wait weeks. Well, that's your problem. Yeah. No, I'm just cheap and don't want to pay FedEx. So one of the things I used to tell my students for getting started for saving money is you can usually get engineering samples from Microchip a lot easier than just about anywhere. Yeah, and that's the question is, you know, inevitably you end up with all these parts, bins, and everything like that, but the problem is, you know, sinking a huge amount of money into that. Is there, like, shortcuts or ways, like engineering? Samples to get that base stuff. Constantly harvest, like pretend you're a squirrel and just start gathering stuff. Yeah. And, yeah, I mean, vendors will basically, if they think, if they, basically vendors think they're going to make money, they'll give you free stuff, but if you, if they think you're doing something cool, they'll also give you free stuff, right? Because then it gives them, there's something they can promote and they can write about on Twitter or whatever, and to give a few samples out to a hobbyist isn't going to kill them. It's only going to help. So for the most part, you can get free stuff, but always scavenge. Like, I'm always, I live in San Francisco, and there's kind of this weird kind of. Cycle of people put stuff on the street, and then you can take stuff from the street and, like, put other stuff on the street. It's weird. Sometimes it makes neighborhoods look really shitty, but other times it's awesome, like, if you can get there before the city comes to pick everything up. So I will always walk around and be like, oh, a printer. Like, I wonder if there's E-Proms in there I can use, and just sort of scavenge and harvest. And, of course, go into, like, your local surplus stores and electronics flea markets. Like, you don't have to pay full price for things, but even if you do, most of the time, full price is, like, pennies or a few dollars for stuff, unless you live in Canada. And make friends with engineers. Because all of my engineers had desks that were filled with samples that they were never going to use. Oh, this part is so cool, and I can call up the distributor and get it. You know, but scavenging parts, I mean, hell, that's how I learned how to solder. I didn't have any money for parts, and it's a lot harder these days with the surface mount stuff. But back in the through-haul day, that's how I got parts. And in the worst case, Radio Shack. I know they had, I'm serious, I'm dead serious. They got a really bad reputation over the last five or ten years when they got rid of a lot of their electronic stuff. But they always kept that one little section where you could get resistors. And capacitors and stuff. You know, now it's like nine-tenths of the store is selling cell phones, but they still have that one drawer of components. Yeah, that's like the last resort. It's the last resort. So at 8.30 at night, my DSL modem just died, and I have an exploded capacitor inside my DSL modem's power supply. I can still go down to Radio Shack and buy that 35-volt, 660 microfarad capacitor to get my internet back online so my wife can watch Game of Thrones. All right? So Radio Shack. And they're also getting into selling things. Thank you, sir. I got a fan out here. Very good. They're also getting into selling microcontrollers like the A-Word and Basic Stamp and a lot of modules and stuff. But that's not a pricing. I totally didn't mean for you to start saying the A-Word instead of Microcontroller. But they're not the cheapest around, but when you need it right bloody now, they're there. So I wanted to throw that out. Well, the fact that they have the modules now, I mean, that's what hardware. That's recent, and I love it. Well, hardware has come full circle as a hobby. I mean, back when I got into it, we built kits and everything. You know, it was Heathkit and all that. And it died out when computers got big. Electronics nearly went away as a hobby because, well, why do I want to do all this hard stuff and get ferric chloride all over my hands and edge boards when I can write code? And I can write code and compile and compile. Oh, it fucked up. Oh, okay, compile it again. It didn't cost you anything. And it's actually moving more towards that with the advent of FPGAs coming down in price now. Yeah. Because now I can, you know, just re-compile the hardware. And now, you know, electronics. Electronics is a hobby. It's more of a systems-level hobby where, yeah, some of us still build our own boards and so forth. But there are so many modules out there now. You really don't have to do that. That's true. It's like Legos. All right. We have a question. Yeah. Yeah. What do you do whenever you're up against a particularly crappy tool chain? What's your method of attack to get past that? Cry. A lot of Mountain Dew. I shoot things. I think it depends. Like, I've had really crappy tool chains. And, I mean. Sometimes you're stuck, right? If that's all that the vendor offers you. If I have a contact to the vendor, I'll talk to them and say, your tool chain sucks. You've got to try to do something with it. But most of the time I'm spent dealing with a crappy tool chain and, you know, saving often and exiting and loading. And usually when I talk about crappy tool chain, what I've sort of encountered is the tool will crash or it will disconnect from the debugger or something just annoying that you have to just restart. And that's, I think, the nature of engineering tools because they're designed for engineers. And they're not designed for the mass public so they don't go through the testing as, like, a normal piece of software would. And, yeah, I mean, they're just annoying and sometimes crappy. But as long as they end up compiling properly and working properly sometimes, sort of like, that's what you get. On the hardware side of that, I don't use KiCad anymore because they piss me off from crashing and losing my code too many times, my board designs. I've got another. A single guy. All right. Thank you. I've got to buy you a beer afterwards. Hey, Joe. Joe just claps at everything you say. Apparently. I've got a fan. Joe, did you hear that when I was doing the stuff for the badges this year, I actually used the free version of Eagle because I wanted everyone that was here to be able to recreate the badges with free software off the shelf. And I found an error in Eagle that says too many pixels in the Y direction. And it says it in German on the bottom as well. And so I took the work and I rotated it to try and see if I could recreate the error in the other direction. And it doesn't exist in the other direction. And now everyone can just make their own. And black badges. Oh, but they don't have the clock piece on it. Yeah. If they can do the mechanical watch movement and make that, then they deserve a black. All right. Next question. All right. Yeah. So I wanted to ask you guys, what do you think the best chip is for like DSP kind of like audio? Religious war. Live audio. DSP, audio. Maybe the best one to start with, you know. Oh, for DSP. For DSP and audio stuff? Yeah. The one you already have. Live audio. Live audio processing. I got nothing. The one you already have code for. I mean, you know, from a professional's viewpoint, right? Well, oh, this one's cheaper. Oh, this one's faster. Well, yeah, but how does that equate to, you know, a few hundred hours of engineering time? And if you've got code, if you can find code that does what you want to do as a project. You know, that whole question, where do I start? Well, find a project that's similar to where you want to go. Or find a vendor that has the reference code or an application node for where you want to go. Well, make really good friends with the FAEs. Yeah, the only experience I have with DSP stuff is the DEFCON 17 badge. We had a digital signal controller. So it was sort of a microcontroller that had internal peripherals, but it also had DSP functionality. That's the only one I know of. And there was, like, actually, the tool was sort of cool. The tool said it's not open source or anything, but it's free. And you can, which is, to me, fine. Good enough. It's even better than open source if it's free. The, there was one thing called the processor expert. And you could actually select modules and say, I want to do it. You know, implement it. You want an FFT. And you double click and there's a GUI and you can set it all up. And that will configure all the DSP side of things. And you could do, like, a modem, like some, you know, old school 1200 baud BPSK or whatever it was, modem. So that's a good place to start. But, yeah, I'm sure there's a reference design somewhere or a project that wants to, that does something similar to what you want to do. That's, actually, I do a lot of audio work, audio electronic stuff as well as digital. And that's generally where I'll start out. I'll look at the different chips and look for, they'll have, like, the application node in there of, you know, this is a typical application for this. And I'll try and find one that matches closely what I'm trying to do. And that's generally how I'll do it. Do you have to do that while standing right behind me? That just looks awful. All of a sudden, Render feels like he needs to pee. It sounds like Render's peeing. So, follow-up, is there, like, a resource that I can go to to kind of, like, browse through all these different chip examples? Google. Just think of all the internets. I mean, they're all going to, each of the different vendors are going to have their own site. And they're going to have their own site. They're going to have their own list of things. And they're going to talk about why their chip is awesome. They don't necessarily say better than the competitor because they don't want to acknowledge that the competitor exists. But they'll say, you know, we're awesome because we have all of these things. And you go to their competitor and they're going to say, we're awesome because we have all of these same things. And you look at the list and they're, like, 95% overlap. That's why you just see which one takes you out to dinner more. Yeah, exactly. Free food, always a plus. As far as searching for parts, though, do you guys use Octopart a lot? Have you used Octopart? Yeah. Octopart's cool. But you have to sort of, that doesn't give you really lots of, it gives you, it gives you data sheets, but it's not as easy as, like, a parametric search on a vendor site. Yeah, yeah. Octopart basically will tell you which distributors have stock of the current part you're searching for and then give you data sheets. But if you search for DSP, you might see stuff. But you can also just go to DigiKey and do a search and then, you know, organize by price or by some feature and see which ones come up. Mouser's search engine works much better than DigiKey's, in my opinion. Yeah, Mouser's is much better. Other than the big dogs, you know, DigiKey, Mouser. Mouser, Jameco, and, you know, places like Electronics, Goldmine, and stuff like that. Are there any other major houses you guys order from? Jameco, yeah. I use DigiKey. I use DigiKey primarily. Well, DigiKey has, they just started doing first-class mail shipping, too. Yeah. So you can pay, like, two bucks and depending on where you live, get it within a day or two, which is awesome. Yeah, they're fast. Yeah, it doesn't work for me. The fun thing about DigiKey was... You guys don't count. The fun thing about DigiKey for the longest time, for those of you who aren't, how many of you guys are familiar, you know DigiKey, right? Okay. Yeah. How many of you... We used to get their catalogs sent to you, and it's like that big-ass phone book. And it was this. I complained, and it got bigger and bigger. And they used to come with stickers so that you could tag the pages because there was so much shit in there. When they stopped making those catalogs, I complained. I sent a message to them and said they should keep making them. Keep making them. I guess I'm against the trees or something, but I like having something that I can, like, flip through and actually look. Like, I really use that catalog. Yeah. Well, it's the only way to find connectors. I mean, chips are chips. Oh, of course. But you're going to find a connector. Try to find a connector on a damn parametric search. Ugh. I'm not going to. All right. So. Thank you. Nice question. So, I'll help myself. I love my Arduino. I'm sure most of the people here are here because they got started on Arduino. Show of hands. Oh, yeah. Good idea. Who's used Arduino? How many people's first experience was Arduino? Who's going to admit to using the E-word? I will. All right. Not that many. How many people said their first experience was, like, a basic stamp? Oh, that was my first. How many it was, like, pick? Cool. Wow. Yeah. I actually... I actually... Really quickly, I want to interject this before you ask your question. My first experience with a pick was hacking your hex code from the DEF CON 14 badge. Yeah. I was the only one who successfully reprogrammed that goddamn badge, and I did not win the badge hack. I have a phone to pick with you. I'll have to... I'll have to review the contest entries, and maybe I can, like... That's right. Yes, you will. Give you an honorary mention. I would, like, put a modified cigarette lighter behind it and made a flamethrower out of it one. Did he win? No, he didn't win that one. No, it was the guy who had the audio. That was pretty cool. I'll have to review the notes. Sorry. Go on. So, no, no, no. So, you know, I've got an MSP launchpad at home. I started off on an embed in 32-bit beefy. That thing is awesome. But going back to the Arduino and just kind of back to the hobbyist artist thing, SparkFun, Adafruit. They're awesome. Do you think... Yeah, definitely. Love SparkFun. Love it. Good stuff. So, the drop-in hardware, the Lego kind of, I can drop it in, copy the code from Adafruit, from SparkFun, you know, compile it, run it there. Yeah. Yeah. Yeah. Do you think that's devaluing the industry at all? No, no way. No. I love the... I'm sorry. No, go ahead. Go ahead. I know the guys over at SparkFun. I love their stuff. Ada's stuff shows up all the time. It's great. I think it's helping people that wouldn't be able to accomplish certain projects because it's making it Lego. Slap the pieces together. I mean, especially, you know, like the lily pad with the folks that are doing the clothing acts and stuff like that. Yeah. I think it's opened up that world to people who... Who otherwise couldn't get through that barrier the same way the Arduino and the stamp both made both the PIC and the AVRs accessible to people that weren't otherwise. Okay. And if I can just interject a question on that. One of the big things I've always found is, you know, just some of the tinkering with, you know, stuff to do in the goggles and that, is, okay, you've built it with, you know, a basic stamp, Arduino, whatever. It's taking you to that next step where, okay, I no longer need all the accessories. I just need, you know, the chip and everything like that. And my problem has always been... Where the hell do I figure out how to do that? Because it's like, how do you... Are you trying to make a product? Are you trying to make stuff for you? Because that's... Just a one-off. Yeah. Just one-off stuff. Like a more refined... Yeah. You don't want to have a stack of shields that fall. You just want to have a single... Yeah, right, right. Stuff that you need. Yeah. I think I want to answer that, but I want to say with, you know, with respect to like Adafruit and SparkFun and all these places, it doesn't only help the people getting into it and it doesn't only help the hobbyists. It helps all of the professional engineers that... Don't want to go through the time of spinning a board to try a new part, right? So they're making footprints and breakout boards and all these things. It saves a ton of time for everybody. Yeah, so it definitely doesn't hurt. Oh, yeah. I mean, it's great for prototyping as well. Yeah. I want this... I want to have a, you know, this particular chip with this controller and see if I can make this product work. I'm going to do it first with all these shields that are already built, slap it all together, make it work, and then say, okay, I've proved the concept. Now I'm going to go design and fab a board that has just these three components that I need. Instead of a stack of shields this tall, it is now a board this big. And that's what Render, that's what you're asking, right? How do you distill it from all the crap down to only what you need? Hey, Render, you hire me. Okay. But if you don't want to pay money, right? Yeah, I mean, I think it's, you know, at that point you need to look at the schematics of every individual module. You have to see which pieces you're actually using. And then what I tend to do is, like, take all, you know, I have a big prototype of all the crap, and then I identify which parts are useful, create a smaller schematic, and then just get a board layout package that, you know, whatever you're familiar with. Or if you're not, try to, you could use KiCad or DipTrace or Eagle or whatever. I use Altium Designer, but that's more expensive. And there's a free version of that. There may not be torrents of Altium. And then you can go spin your board. Use OSHpark.com to get your board's fab. You can, it's like a dollar a square inch or something. And experiment. And because it's so cheap, if you fuck up the board fab, you just do it again and you wait a few more days to get another one back. Am I going to get kicked off the panel if I admit that I use Express? PCB? No, not at all. Okay, good. I know a lot of people that, for prototyping purposes, but there are some not released. So the way PCB Express and a lot of those guys work is they'll release their own proprietary design software, but then they don't give you the actual Gerbers. They create the Gerbers in-house, and that's how they kind of lock you into using them as their service. I know of at least two different groups that were writing stuff to take the stuff that their software produced and actually give you your real Gerbers. Nice. It's like a jailbreak. Yeah, it's like jailbreaking the design process. But Express PCB is a great service because they have their own software that is not nearly as complex as Eagle or KiCad or anything else. It is so incredibly dead simple to use to do circuit board layout. They can do two-layer boards, four-layer boards. They can do a silkscreen on the top, not on the bottom, unfortunately. And then once you have the design, if you can keep your board to two and a half inches by 3.8 inches, then you click a button and give them... I think it's up to a board. So a little less than $60 right now if you don't need a solder mask, or I think $70 or $80 if you want a solder mask and silkscreen for three boards, and they will get them to you in about a week. So it's an incredibly cheap way of prototyping. I mean, two and a half by 3.8 is not a tiny board. It's not huge, but you can fit a lot on that amount of space. And it's a great way of just getting in and, like, I'm going to draw traces from here and kind of connect these pins, and you don't have to worry too much about making it nice and clean because you're not making a product. It's just a prototype. And the service is great. I've never had a problem with them, and it's really inexpensive. Osh Park is also a great way of doing it expensive, but I think they have a much longer lead time at this point. I think he runs boards now like every other day or something. Does he really? Yeah. And I think that, you know, laying out boards is a completely different discussion, but for the most part, if you're doing a prototype and it's not something that has specific board layout requirements, you can get away with a simple tool. I do want to mention, too, for you Canadians out there, there's AP Circuits. Yeah. Right? AP Circuits, eh? Yeah. Someone's like, yeah. So you can use AP Circuits, Alberta printed circuits, and it's a similar type of, you know, prototype, quantity, simple board fab type of house. They're expensive, but they're fast. But they're Canadian. Yeah. So you see the crackdown on shipping. They ship to the U.S. Apparently they ship to the U.S. too. Yeah. Go for it. Sure. I'm not afraid to ask dumb questions. We're not afraid to answer them. Oh, excellent. I bought two boards literally like a week ago. A little development boards. One was the BeagleBone. Okay. And the other was, I think I just went to YouTube and searched on embedded programming and found some guy, statemachine.com, I think, who did a 9-series lecture on using the TI Stellaris launchpad, walking you through like writing a C program to blink the LEDs and that sort of thing. I guess the first question is, are those microcontrollers or are those sort of bigger than... So the BeagleBoard's a great board. I like the BeagleBoard stuff. I don't know if you guys have any thoughts on those. I would consider those modules, right? I mean, there's microcontrollers on them. Yeah. Well, no. The distinction that I think he's trying to make is that they're not microcontrollers, they're CPUs. I mean, so there's this very subtle distinction between a microcontroller where you are writing assembly or C or something that's running directly on the chip. Timer. What's that? Well, Intel considered, yes, there was an 80186. They considered it a microcontroller because it had timer on board. I always thought a microcontroller had onboard peripherals, so memory and things like that on board. You don't have exposed buses going outside stuff. But then a microprocessor was just the CPU where you needed to have everything external in your memory mapping and your address and data bus. That's how I always talk about it. But when you're talking about things like the BeagleBoard and the Raspberry Pi, the main difference there is that you are not necessarily writing code that has 100% control over the CPU. You are writing an application that runs inside an operating system. And so it's a different development environment. And I'm not trying to make a religious distinction here. They both have their place. You know, if you're a software guy and you don't need to worry about, you don't want to have to worry about how to write a bootloader and you just want to have something that does some, you know, stuff and you're comfortable with GCC and you can, you write applications in Linux all day, then put Linux on your chip or put Linux on your, you know, on your embedded environment. And that's fine. It's gotten cheap enough. You know, Dr. Moore solved that problem for us, right? The reason we had microcontrollers is because they were smaller and simpler and cheaper when a full CPU was so much more expensive. That is no longer the case. We can now throw transistors at these things and it is, the cost is no longer the problem. So we can put an entire Linux operating system on this thing and it's still 35 bucks. An Arduino costs about 30 to 35 bucks depending on where you buy it. Sometimes cheaper. The Raspberry Pi is 35 bucks. What's the difference? Well, the Raspberry Pi has a shit ton more resources but it also needs it because it's running a full operating system. All right? So it's no longer a matter of which one is better because they both have their place. It's really a matter of which one suits your application better. So the answer to the question of which one is better depends on what you're trying to do. And a lot of that comes down to like high performance timing and things like that. If I need to get down to the hardware level on something like, that's when it becomes more important to be able to get down to that level and have it under control. Yeah, most of you guys don't say interrupt latency probably as much as we do. So would you rather write a custom application that just runs natively on the hardware then as opposed to writing a device driver for Linux? It depends on what I'm doing. It depends on the application. It depends on what you're trying to do with it. I mean, you know, think about a robot. Do you really want an OS controlling your motors on a robot? You want something that's very simple, very predictable, where you know exactly, you know, what you can do to take control of it. Oh, I'm not waiting on, you know, this to message that and for the OS to decide to come around and then turn the robot off before it drives off the cliff. Well, if you have, but at the same time, if you have an R, if you have like a good deterministic RTOS or something, that's fine for embedded. It's not like you're running, I mean, you could run Windows on an embedded device. I wouldn't. I got friends at Willow Garage who would shoot you for that. And normally you would just have, normally you would just have a simple state machine. Depending on the product, right? It all depends on what you want. Yeah, I'm surprised nobody brought VXworks up before now. So, like in the robotics, I would put the motor controls on a microcontroller, but then I would use a, something like a Raspberry Pi or a BeagleBone to maybe do the route processing and the, you know, the high-level decision-making process and taking in of video stream data and doing an analysis of what's going on around me. But then have it send a signal to the microcontroller and say, you know, turn my wheels on going this speed for this long. And then have the microcontroller that has the very precise timing actually control the motors. So, that's the kind of decision-making process that you have to make at design time of what is it that I'm trying to do and which of these platforms is better for that particular task. Yeah, and it was just briefly mentioned here, the dreaded word that nobody likes to just deal with is dealing with interrupts and interrupt timing. And I think that's why we're now breaking into this point where we've got even what I would call a microcontroller with multiple cores. And things like that, like the propeller, is because of, you don't have to deal with time slicing and interrupt problems and loop timing and things like that. And I think we're starting, and even further than that, I think the real future for all this is going to be what we see coming from the FPGA world. Sure. Thank you. Thank you. Next up. Hi. I'm really happy to see all the embedded stalwarts here, experience, and I thank Smitty for putting up this panel, really. My question to you is, I'm an embedded system student, and being a, I want to be in this field professionally, like, you know, not a hobbyist, but professionally. So earlier it was like, if you're in microcontrollers, you should know sensor interface, you should know actuator interface, and you should know basic control logic design. That was the basic thing in my, stereotype in my mind. But now the time has changed a lot. The programming part, the control logic part has evolved and it's reached such a high level that you can do software systems, you can do database systems, you can do network systems, you can do controls, you know, like, all of the systems. So PCB designing and schematics and, you know, sensor is still there, actuator is still there. My question to you all is, like, as a base, as an embedded systems engineer, what are the basic things which at least I should know firmly? I hope I'm clear. I guess you're just asking what is a basic thing. What is the basic skill set to enter into that world as a professional? Is that correct? Yeah. The basic skill set. Yeah. And what, later on I can decide on my own, like, where I'm interested. Well, I'm not the professional. Never mind. I'm never professional. Go ahead, yeah. Oh, wow. Yeah. I almost feel like that's asking how do you become a hacker. Yeah. I mean, to me it's just a natural progression of hobbyist, you know, building stuff. And then it's like, oh, I'm a hacker. Oh, wait. Yeah. Helping out of the company. And then it's like, wait a second, now they want to hire me. And it's like, they're paying me to just do this stuff. So I think a lot of it is once you get your foot in the door, like, you know, you already named off a lot of the things that are important. Once you find a company or a project that you're in love with, you just start doing it and you will just kind of gain stuff, and I don't really know, you know, what the best thing to know. But especially if you get into a company, the hands on, the real world experience that you get from working in, like, an actual company. Yeah. Whether it's a company that works with embedded systems, whether it's a product development company or whether it's a specific product, you know, not consulting, whatever it is, that's where you get the best experience. So I think as long as you kind of, you know, love what you do and you learn more about all those things you already said, it's just kind of this natural thing. I don't know if there's any better way to explain it. And I know I've been given this answer a lot, but I think it also depends on what the application is that you're trying to do. So what kinds of general skill sets? Well, obviously electronics. If you're going to be doing microcontrollers as well. Then some programming would probably be good. The lower level, the better. Understanding of how assembly works is going to be important. I would second that. You know, here's the big difference, I mean, between embedded guys and, you know, pure software, speaking as a hiring manager, okay, here's the skill set that I would list if I was doing, you know, the official thing, and then I'll tell you what the kind of people I really hire. But, you know, big difference, physics, because, okay, you're going to be turning motors and interfacing with sensors and talking with people about, you know, oh, this frequency of whatever or this coming in and I need to turn it into, you know, this real world thing and I'm going to turn it into software somewhere. So understanding the physics behind that is far more important than, you know, again, pushing packets around. When it comes down to hiring people, you know, I had this one kid and we were interviewing him and went through and, you know, what did you do last summer? Oh, I rebuilt this Chevy 350, just to understand that you're hired, because I want somebody that does hands on, I mean, in the embedded world, you've got to touch the hardware, you know? Exactly. The one big question, have you ever brought up a new system, okay? You know, because, and again, it goes back to what I said earlier about doing hardware, okay, if your code doesn't work, okay, you just recompile. You got a board. You spend all this money, you decide, okay, you're going to take this down, you're going to put it into one board, you've laid the board out, you put all your parts on there, which is a fucked up mistake. But you've got this board and you turn it on and it doesn't work. Okay, now what? You know? Yeah. And you've got to understand what's going on on that board and it could be, it could be something like, again, physics, it could be you laid it out wrong and it ain't going to work. It could be the chip's not running, a trace was left off. Hands on. Yeah. Being able to troubleshoot circuits is a huge skill that, like when I was teaching at the university. It used to frustrate me to no end. I was brutally honest with some students, I would be like, if they come to me and ask a question and I would always say, have you tried it, have you gone out and, tinkerers, we need more tinkerers. And if they hadn't tried it, you don't have the mindset to be doing this type of work. And to be blunt, you know, we need more tinkerers. And I know right now we call them makers, but we need more tinkerers. We need people that are putting their hands on stuff. I'm always championing in the embedded systems world. We teach kids from a young age that electronics are expensive, dangerous, and breakable. Not anymore. Exactly. But in our community, but for the longest time, I mean, everybody, I mean, just even look at the participation in the badge stuff here at DEF CON. We have orders of magnitude more people involved in badge stuff if it's not electronic. Because people just have that intimidation factor that haven't made that first step. That's why we have the hardware hacking village. That's why DEF CON kids is doing the electronic badges this year. And we need to continue to propagate. And keep that momentum moving forward. Cool. Thank you. Just one thing. One more thing. When we're discussing about for getting started for a beginner, we're discussing about Arduino or basic STEM. The thing which I wanted to know is, like, when I use Arduino, I have used Arduino. I've got the things done. But by doing it, by using it more and more, getting deeper into it, will it give me the basic concept of, you know, like, which makes me evolve as an engineer that, you know, if I get any new program or any new microcontroller in future, I'll be able to program it. I'll be able to hook up a programmer into it or something like that. I'm looking for something to get started in that way, you know, like, which makes me able to later on work on any microcontroller and not just Arduino. Pick one. I mean, they're all different in little ways and they're all the same in many ways. So just pick one and get started and then learn it and get comfortable with it and then pick another one and get started. Maybe you start with a propeller and learn spin. Spin's assembly is the most beautiful thing I've ever seen. I don't know if you were involved in spin at all. I'm sorry. Spin is the non ‑‑ Spin is the high level. Yeah. I'm sorry. Propeller assembly is one of the most beautiful things I've ever seen. I don't know if you were involved in that at all, Lost, but it is a great assembly. And then you take that. And then you maybe pick up an Arduino and then you maybe pick up an Atmel programmer and just start working on that or maybe Freescale or something like that. But just pick one and get started. I would be willing to bet that all of us up here have a closet full of dev kits and programmers for different environments. Do you? Yep. I have a barn full of that shit. But I think one advantage of Arduino, I think the question was going from sort of like renders of going from one to, you know, the module down you want to start working with more in a lower level. And then one thing with Arduino is that, and you see this a lot, is because Arduino really is just the code that's running on the Atmel AVR. On the AVR. Right? So you can start with the Arduino platform board and then if you want to like try to refine that or go a level down, then you can just take an Atmel AVR and work or load Arduino software on it and that, you know, use that so it's slightly more refined. And then eventually, but eventually you're going to want to get to the point where you have a microcontroller. Or maybe you don't need to get to that point, but you'll have a microcontroller with just the stuff you want and it's not a module but it's a refined product that's just stuff you want. You can actually go the other way. For those of you who are running the Darknet game this year, the Darknet badges, the software was written in the Arduino IDE even though it is not an Arduino itself. The Arduino IDE is just a way, it's just a front for GCC, AVR GCC. So it takes C++ code and turns it into Atmel code. And if you give it the right hardware files, you can find them online for the ATtiny85, then you can use the Arduino IDE just because it is so incredibly simple and program non-Arduino devices. By the way, if you haven't talked to the Darknet guys, they did awesome work this year and it's an amazing contest. Thank you. You should go talk to them. So we've got five minutes left and I want to bang through as many questions as we can here. Thank you. Come on up. Speed round. Hi. So I started on the propeller and I'm still on the propeller because I'm pretty addicted. So I've built a whole bunch of stuff and they're all unique, they're all completely digital circuits. But I have a problem on one of my boards specifically where when I run it at 3.3 volts, I get data corruption on my UARTs but when I drop it down to 2.8, everything works. So how would you go about starting to debug something like that? You drop it, it works? Yeah. It's bizarre. That's fucked up. I don't know. The first thing I would say is look at the signals on the scope and see if you're actually getting noise outside of the chip or if it's something that's being caused by over voltage or something else inside the chip and then make sure it's noise versus parity issues. Maybe there's just some other weird configuration thing. It has an RF module on it so noise, I guess, is possible. Yeah. Even something as strange as battery placement. He goes back to exactly what he was saying, welcome to the world now of hacking your circuit or troubleshooting. That's really one of the greatest skills that I think some people are. As soon as you start talking about RF, Ryan was mentioning earlier, one of the things you should learn, excuse me, it was firmware, is physics. I bet you have a trace somewhere that is exactly the length of your quarter wave length trace somewhere that's just picking it up. You'll be able to visualize that on the scope and then you'll know where to start. You've got to have a scope. Trying to troubleshoot a board without a scope is like trying to troubleshoot code without a debugger. It happens all the time. There are startups that I've seen in San Francisco that kids have dropped out of school and moved to California to start companies and they don't even have an oscilloscope to debug the most basic things and it's mind blowing. Go get your old tech 465, it'll be rocking. Yeah, I brought a logic analyzer with me but that ain't going to help me. Thank you. Yeah, probably not. Oh, that's old school, 465. Okay. Okay. Yeah, one question for one person up here, we'll just kind of keep the discussion going. Is there a hope? Nice. What's with the porn music? Is that all? I think that's them telling us to go. Are we done? Are we done? I guess, I don't know. Is that the get off stage music? Nice. Dance party, everybody. Keep going. One person, one question. We have four more people. Go for it. Just do lightning round. Just go for it. When you're making a decision designing like, I would say, an RF signal processing board, which point are you drawing the line between saying I'm going to use a DSP or an FPGA for the solution? I'm going to use a DSP. Not me. I would lean towards a DSP just because FPGAs, when I think of FPGAs, I think of just the hard core digital side of things, and DSP might just give you more, I don't know, maybe easier to kind of manipulate, if that makes sense. You could always maybe port to FPGA, but I would tend to go with the DSP first. Next question. Thanks. What can I do to help my young children? I've got an 11-year-old boy who's coming of age. What can I do to introduce them to this world? I don't have a lot of experience. Go get the What's a Microcontroller kit. What? The What's a Microcontroller kit. Get it at RadioShack. What he said. From Parallax. A Parallax What's a Microcontroller kit. It comes with a huge book that was written to help move you forward, and that's the difference between that product and any of the others, is the supporting documentation is a no kidding book. Can you give me a free sample? Yeah. He doesn't work for Parallax anymore. I don't work for Parallax anymore, but I still think it's a great way to introduce people to it. Yeah. Okay. I've got a long list under my palm. Very quickly, the two things I'd say, and I'm a systems engineer, I do mission critical embedded systems. Awesome. And I got started when I was 10 doing basic on GE timesharing system and then did 8080 in 76. So I'm an old fart. The two things I'd say is the tool chain, the Atmel and the Arduino gives you a solid, reliable tool chain. Stay away from the CCS compiler. It should be chucked in there. I lost 60 hours of my life on a professional project because of the frigging CCS compiler on a PIC24. The other thing I'd say, I haven't heard, learn C. Yes. Oh, yeah. Oh, yeah. I second that. And keep your code simple. Yes. I would say learn C and then learn assembly. And to be fair, the CCS compiler is good for certain things. I've found bugs in that compiler, too, but then when you do, you get free subscriptions for longer. The needles are getting restless here. I think they're going to start throwing spears at us. So we got to wrap it up. Are we done? I want to make one comment to that. I tell everyone that's just a programmer, do some embedded system stuff, it will change the way you program. Oh, yeah. It's a restricted environment. Because you'll figure out what the fucking machine is doing. All right. Thank you very much. This one is awesome. Thank you. Thank you. Thank you, guys.