Embedded - 94: Don't Be Clever

Episode Date: March 25, 2015

The linker post for this episode is Be Excellent to Each Other. Dennis Jackson spoke with us about drones (and Airware), simple code, and learning.  Hobbyist drones and UAVs on Amazon: tiny and chea...p,  medium (Christopher's gift), andplease-I'm-drooling-right-now. Only the last one may be an Airware platform (Dennis could neither confirm nor deny). Airware's breakdown of proposed FAA rules Simple code: Cyclomatic complexity Chris Svec's episode on empathy driven design (he'll also be at ESC Boston!) Test Driven Development for Embedded C by James Grenning Don't Make Me Think: A Common Sense Approach to Web Usability Dennis has also worked on DEKA's iBOT and at Avinger's OCT system. Dennis had a list of suggested articles and blogs on safety critical software development: 30 Pitfalls for Real Time Systems (part 1 and part 2)  Rules for defensive C programming Joel Spolsky's blog (see top 10) Why are you still using C The Power of Ten -- 10 Rules for Writing  Safety Critical Code  Dennis' other suggested reading (ongoing blogs): Coding Horror Jason Sachs's Embedded Systems  The Old New Thing Rands in Repose (management and leadership)

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to Embedded, the show for people who love building gadgets. I'm Elysia White, alongside Christopher White, and we are finally joined by Dennis Jackson. Although, I have no idea what we're going to talk about. Hi Dennis, it's great to have you here. Hey Chris, hey Elysia, it's great to finally show up. Could you tell us a bit about yourself? So I've been writing software for about 15 years, maybe actually longer. Okay, I graduated way longer than I thought.
Starting point is 00:00:35 I've always worked in medical devices. I've always wanted to work on something that basically helped people. I've now joined my first non-medical device company, but it's still a regulated company in theory. It's up at Airware in San Francisco. And I like writing software. So embedded software, bigger software, small software, anything. Web software?
Starting point is 00:00:59 No. Not that big. Make that clear. We need to bound it. Yeah, yeah. No, I enjoy writing software. Actually, I enjoy writing software actually I like writing software I like flying, I like robotics so I've always worked on software that
Starting point is 00:01:10 has some kind of physical interaction with the world I totally agree with that of course and what languages do you use? it's always been C or C++ for scripting I had Perl a long time ago but now Python but always C and C++ for scripting. I had Perl a long time ago, but now Python.
Starting point is 00:01:26 But always C and C++. I think that that may be the definition of embedded soon. You know, it's funny because people have these Linux system on chips, and they're like, oh, I'm doing embedded. I'm like, what are you using? They're like, oh, I use Python, or I use Erlang, or I use... Scratch. Yeah, everything. I like Scratch.
Starting point is 00:01:44 It's great. I've scratch it's great i haven't i've heard of it i haven't seen it and everyone's saying oh i do embedded software and i i use this interpreted language i'm like okay that's the that's the world we live in now is like you can buy a basically a full computer that runs on a chip and yeah well even the electric imp and there's another one that's similar that run either on javascript or squirrel which are all interpreted or semi-interpreted where they go to a byte code that runs on it but yeah yeah i think it's awesome because it does give more people access to it i mean they you know you can run your software in something that is interacting with the physical
Starting point is 00:02:23 world um and i don't want to say hey you know you're not really writing embedded software if You can run your software in something that is interacting with the physical world. And I don't want to say, hey, you're not really writing embedded software if you're not writing all the way down at the assembly level or you're thinking about bytecode or individual bytes. You're not writing binary. You're not writing it properly. We'll allow you to write in fourth. Yeah. So anyway, I don't want to be an embedded snob, but I always find that when people start doing things and they're like, yeah, we need more performance, they always fall back to C and C++.
Starting point is 00:02:49 So it's the foundation. So I meant to ask you, what does Airware do? That is your current company. Yes. So we are working on basically an operating system for drones. Wait a minute. We're not, we have to say that again. Drones.
Starting point is 00:03:08 Drones. Watch out. There's a drone coming. UAVs, drones, UFOs. It's the hot, that's the hot new thing.
Starting point is 00:03:16 But, you know, if you look around, they're coming. We're not aiming, not right now. Chris flinched. They're coming. They uh you know there's the
Starting point is 00:03:29 hobbyist market is really ramping up you can buy you can go on amazon and buy like a 40 maybe even cheaper now just a little hobbyist drone like you throw on a battery you got a little it actually plugs in usb powers up and you can take off. Wait a minute. If they're on Amazon for $40, why was that other one so much more expensive, Christopher? Because that one was probably way better. It was only like $80. It was a big one.
Starting point is 00:03:56 It was bigger. I see. I also have the $40 one. It's right here. But you can do it. I mean, you can spend from tens of dollars to hundreds of dollars to thousands of dollars on hardware. So there's the hobbyist market that's coming up, and then there's the military market, which they're all highly customized, and they go off and blow things up.
Starting point is 00:04:21 Well, they do monitoring, too. Yeah. Well, originally they were for blowing things up. Now they're doing monitoring. But Airware is looking for everything in between. We're looking for that whole commercial market. And there's a lot of things. It is actually already big in Europe, but it'll be coming to the U.S. soon.
Starting point is 00:04:46 It's agriculture, infrastructure, monitoring, all kinds of things you can use them for. Right now, you can send someone out and go record something, go measure something, but it'd be really great if you could do it from the air. You can do that. You can go rent a helicopter. You can go hire a pilot. You're going to pay a lot of money for it. But if you had a drone where you could load up whatever your sensors were,
Starting point is 00:05:06 whatever thing you wanted to record and describe a flight plan and just take it out there, put it on the ground, hit go, it goes off, flies the whole thing. You collect all your data, you go back, you do your analysis on it. And then you say, maybe it's a, you know, a farm. You want to go do it like every week well getting a pilot lined up making sure your conditions are right like that's going to be a real pain in the butt but if you're a farmer and you have a drone that can just do it for you you put it out there hit the button takes off you get your data and you do that every week and now you have something you
Starting point is 00:05:37 have a it's you have like a real-time real-time quote-unquote control system for your farm that you are providing the feedback for that you can use to figure out what you need to do next whether it's water more or take care of infestations or any of that because instead of traveling a thousand acres every week you have something that can do that for you. Yeah, exactly. But you're not making the drones. No. So Airware doesn't make any flying hardware.
Starting point is 00:06:15 We make basically the brains that live in there. We make the autopilot and the modules that you'll plug your sensors into or that we've already provided or control your motors. And we have some other things coming down the line as well but um we actually don't make like you can't call up airware and say hey i want a quadcopter or i want to you know i want to fix wing the aircraft i want a quadcopter that will monitor the water levels on this these three reservoirs that are 20 miles apart uh so we'll give you some people you can call and recommend and they're using the airware hardware inside so so you're like the the gyros and the imu and the gps the gps and all the route planning and that kind of thing so we have we have the embedded hardware
Starting point is 00:06:58 we actually have um desktop software so you can do all your flight planning um your you know your job planning or whatever whatever is that you want to do with your flight planning um your you know your job planning or whatever whatever is that you want to do with your aircraft um and then we have a way of getting that all back into you know the cloud the the latest latest latest hot thing oh so do you help them take data as well yep that's pretty cool so there's going to be i mean we're building an entire infrastructure for it. So my role in it is on the embedded software that actually flies the aircraft. We actually have some.
Starting point is 00:07:32 Flight control. Yes, flight controls. We actually have flight controls engineers who actually work on the flying algorithms, the control laws. The Quaternion, the Kalman, the super fun stuff. Yep, yep. And, you know, I've played with that in the past, way back in my day. But now I'm working on, you know, myself and my team work on the, all the other hardware that supports the flight group.
Starting point is 00:08:01 So we work on, the way I describe it. Synchronous sampling of the accelerometers and gyroscopes. Sampling of the gyroscopes. We provide them the data. The way I always describe it to interview candidates who come in is the flight control guys are the brains. My team is the nerves and the muscles. So we take all the sensor data. We provide it to them. They figure out, Hey, we want to bank. We want to, we want to, you know, we want to bank. We want to land. We want to, we want to we want to you know we want a bank we want to land we want to we want to do something and then they say okay in order to do that we have to
Starting point is 00:08:29 power this motor or you know spin the props up or do something and they go back and tell us okay go do this so and you do it in a safe manner that ensures that it doesn't fall from the sky and that they didn't just say fly to the center of the earth as fast as you can. Yes. Don't aim low. So, would a FAA, I mean, there was a question, I was getting to it. Hasn't the FAA said, no, you can't do commercial stuff? So, the Fa has and doesn't the faa like rule the whole world so this doesn't matter and what no well every every so the faa has
Starting point is 00:09:15 come out with rules come out with what they're planning on to be the rules uh they did that just a few weeks ago and there And there are rules to it. I don't know all the details of them. But what they've basically said is you can fly during the daytime, line of sight. There's some other stuff in there, too. That was the annoying one, the line of sight. The line of sight one. Because Airware would allow you to fly on line of sight. It's all autonomous, yeah.
Starting point is 00:09:43 I think also licensed pilot either was or was going to be one of the rules. It was one of the rules, and they relaxed it, I believe. Well, it didn't make much sense because the commercial requirements were very strict. Licensed pilot, line of sight, you know, those sorts of things. But for hobbyists flying the exact same hardware, it was do whatever you want. Yeah, that's the funny rule right now is you can stick a, you can stick a camera on your quad. You can fly up and look over your roof.
Starting point is 00:10:09 Like maybe you want to look, look at the gutters on your roof and say, Hey, look at the gutters are clogged, but it's now your neighbor says, Hey, that's really cool. Can you do that for me?
Starting point is 00:10:17 And I'll buy you a pizza. You're now a commercial operation. The FBA can come in and say, well, we're going to shut you down. Like I was just looking at my neighbor's gutters, and we're going to have pizza later. So it's still very, there needs to be more definition,
Starting point is 00:10:32 and it's going to come. It's just standard FAA doesn't operate at light speed. I think last week Amazon was granted a preliminary okay to go ahead and start trying their delivery service, subject to these rules. So it still has to be line of sight and everything. But the FAA said, go ahead and start working on this. And part of that was they have to submit the type of air.
Starting point is 00:10:55 There were a lot of restrictions on it, like the type of aircraft. If they go and make modifications to that aircraft, they have to get a reapproval for it. Wow. It's really, really strict. So it's going to change. I mean, these are all preliminary rules. It was basically get them out for comment. So all these different organizations.
Starting point is 00:11:12 And boy, were there some comments. There were some comments. So it's going to be a whole process to figure out what's going on. It must be a big additional challenge because you've worked on FDA stuff before with me. Yes. And, you know, the rules were the rules. Yeah. And they'd sometimes change every three years or so, but it would be not a big change.
Starting point is 00:11:33 It would be sometimes relaxing of regulations. Yes. But this is, we have no idea. We're writing the rules as you're making your product. It's actually been really tough. So I started there a year ago in March. And when I started, everyone said, hey, it's a safety critical system. We're going to have all these FAA rules.
Starting point is 00:11:52 So I came in with the mindset of, okay, I've only worked, I mean, I've worked on class three and class two medical devices. And safety critical is always like, it's been ingrained in me since I started working. Like that's the only thing i've ever worked on um and so i came in and said okay you these are all the things you have to do like system level requirements um your your hardware requirements your software requirements your design descriptions your traceability all across the entire thing and people looked at me like just blank stairs i'm like they're, they're like, what are you talking about? I'm like,
Starting point is 00:12:26 what are you talking about? Isn't this going to be a safety critical system? And they're like, Oh yeah, totally, totally safety critical. And, and then it meant something entirely different. Didn't have to do with killing people at all. Yeah. And so that's been one of the growing pains and transitions for me. But what, what it is, is we think, without knowing exactly what the FAA
Starting point is 00:12:49 is going to put on these requirements for drones, we are trying to write as safe software as possible, but we're not following exact, there's no plan yet to say, these are all the requirements that you have to meet
Starting point is 00:13:04 for a safety critical system to fly in a drone aircraft until that comes out it's probably going to be um uh 178 um it's probably gonna be some subset of that but we don't know what it is probably not a b would still be too high too high it might be b it might be c you don't really have that much documentation anymore and it no i think they'll make a class i think it'll be a new one i think it'll be a new one c and a half c minus c plus um the uh so Um, the, uh, so as a culture, especially at Airware, like we, we keep in mind, like we test everything. Um, we, we do have requirements not to the level that I would personally like.
Starting point is 00:13:55 Um, like for example, when I started, I was working on as one part of the software and it's like, Hey, here are the requirements. And it was like 10 requirements. I'm like, but just in the description that you gave me, like I heard 10 more. So, you know, I expanded on all of those. And, you know, things can always be made better. There's always more requirements that you can figure out. The software can always be made a little bit, you know, you can optimize it.
Starting point is 00:14:19 You can clean it up. There's all these things you can do. You just have to know when to draw the line. Like this is good enough for what we're going to use it for and it's safe. So that's been a big struggle. But the FAA side of it is we just don't know what they're going to say yet. So we're writing it to a level that we find acceptable. And it's not just like, hey, we wrote it in a flu.
Starting point is 00:14:42 We do have a lot of feedback inside. We have continuous integration testing. We have a QA group that takes it and runs it on local hardware. We have an integration group that runs it on our own systems, and they fly those. And we get feedback from everyone all the way back to the software about, okay, this was unexpected behavior or did this. It's a bug in the software, or we would like you to do something different. So we have all that feedback loop in there. So when they fly for testing, is that commercial flight?
Starting point is 00:15:11 So you can have, so one, we do some stuff at Airware. We do some testing inside the building. So that's, that's on our property. I hear there's a hangar you can rent in Mountain View. It's very large. Yes, I've seen that one from the highway. Basically, you can get exemptions for flying on private land. You should hope so. Yeah, you can. But then that should cover farms.
Starting point is 00:15:46 There's probably some way. There's probably some way. It's probably not commercial use if you're doing it for yourself. Yeah. I don't know. I don't think they know. We are not lawyers. Did we mention that?
Starting point is 00:15:58 I am not a lawyer either. This is not legal at all. I write software. But so, there's some locations we can fly. fly so we can take our aircraft out and test them. Is that fun? Is that like a field trip and everybody's goofing off? Or is that like a really stressful when you used to go test on? I haven't gone on one yet.
Starting point is 00:16:18 So I don't know. But usually they bring back videos. And depending on how things are going, it's from what I hear, it's, it can go back and forth. The first couple of ones are very stressful because it's like, is everything going to work?
Starting point is 00:16:34 I mean, they did all the building, you know, they, they ran it without props in the building. They ran it with props inside a netted cage and, you know, it flew,
Starting point is 00:16:41 but now you're outside, you're away from all the engineers. There's a wind. Yeah. There's, you know, uncontrolled. engineers. There's wind. Yeah, there's... Uncontrolled RF. Yeah, there's all kinds of stuff. So those ones are a little more stressful. I do know where they...
Starting point is 00:16:53 One of the locations they go, there are a lot of cows and there's apparently one cow in particular that's really interested in their drones. So he's always coming over and checking things out and they have to like, you have to go away, go away. We really should be able to make a title out of cows and drones or something here. Our integration group has said, hey, we want to make sure
Starting point is 00:17:15 everyone gets out in the field at some point, but I just haven't gotten yet. There's a lot to do. Well, in field tests, can feel like boondoggles interspersed with moments of terror that it's your fault it's broken yeah it's true um i i actually do want to do one because i've gone on you know first in man studies first in human studies before and that's always really interesting because now you're in an operating room um and like your software is running and there's a person on a table that is you know depending on what the device is or you know you really want to have that software really good so let's let's actually explore that for a second not
Starting point is 00:18:05 not the good software part i want to get back to that but you uh you mentioned fda experience and i know you worked with christopher on oct optical coherence tomography yep is that right yes good and that's like um well putting it in in fiction terms, that's a lot like the cameras. It's like a camera that can go inside your artery. Yeah, I always describe it to people as a, it's like putting an x-ray machine on a catheter that you can put inside your artery. Because you can see about three millimeters in the tissue. So it's like, yeah yeah it's totally science fiction it's like i'm using a laser beam to look inside your artery to see inside the tissue itself and putting it on the screen so
Starting point is 00:18:51 a doctor can figure out what to do it's pretty cool and one of the things they could do was to clear plaque in people's legs so that they didn't lose their legs yes yes and you went on some of those yeah i did uh first in man studies in poland and first in man studies for a different device in uh paraguay yeah i was very glad to have hired you because then you could go do those things yes chris's aversions the flight is uh well known and so you have brought some of the FDA rigor to your work at Airware. I've tried. With some success.
Starting point is 00:19:29 Yes. So one thing that's really nice is our lead QA, she came from the satellite world. And you don't get a lot of chances to screw that one up, do you? No. And that's the thing I really like about her is that it's like you put this in and you ship it off, like it's not coming back. You can't go hit the reset button. So she is very much on regression testing, thorough testing, automated testing so that someone someone checks something in it runs on hardware so she's put a lot like her and the rest of the group have put in a lot of effort to make it so
Starting point is 00:20:11 that we don't have to think about it we just say hey we make changes and we push them and they either pass or fail and we get that information back so this may be a question you don't want to or can't answer but do you have like a simulated flight environment so you can run the compile down to an application that we can run on the computer and feed in synthetic flight data. So here's your GPS. Here's a wind coming into it, and it'll respond to it. And you can use our ground control station software to monitor the flight and tell it to take off and land. And, okay, I want you to fly this route.
Starting point is 00:21:10 So we can do a lot of testing that way too, of the control laws. Silsim, software in the loop. Yes. Okay. And Hilsim, what is the sum part? Hardware in the loop, I understand. Simulation. Oh, okay.
Starting point is 00:21:23 I'm just saying it wrong. Sim, sim, S-I-M. That was me probably misspeaking. And so I know at ShotSpotter, we had one device that we had ripped out some of the sensors and fed in electrical signals instead of sensors. And then we would put our new code onto that hardware and have it run. And that would be hardware in the loop simulation. Because even though it's a black box at that point, a physical box,
Starting point is 00:21:50 we also had the software in loop simulation. We called it a sandbox, but everybody has different names. Yeah, yeah. That's the beauty of writing software, is everyone has a different name for everything. Everyone ends up saying the same thing, just differently. And then they argue about it. Yeah.
Starting point is 00:22:10 They argue about it yeah they argue about it so do you fly um uavs or drones in your free time the first time i ever flew a uav was on my interview at airwear was that part was that one of the questions can you fly this they came in at the very end they had one of the little like the the amazon 20 ones or something. The controls are super fine. And you can only fly them inside. They're too sensitive to wind. Yeah, you look at it wrong, and it falls over. And so the interview went well, and they came in.
Starting point is 00:22:38 I don't even remember who it was now. He came in. He said, here's the final part. You've got to fly this thing. And I remember being nervous because I'd never even touched one of these things before. I'm like, OK, here we go. And I picked it up. And he's like, OK, the right stick is your vertical and whatever.
Starting point is 00:22:55 And I pushed it. And it took off. I'm like, cool. And then it just went dove right into the table. And he's like, oh, that always happens. OK, put it back up. And I got a little bit higher. And I got about, I don't know know my longest flight was probably like six seconds so that wasn't a requirement for the job no which is good um but uh i have one now um
Starting point is 00:23:16 it was one of the so at the holiday party they had a whole bunch of they had some drones they had some some other hardware that that when they called names, you could go up and grab something. So I figured I should own one at some point. And so I took it to my in-law's house and charged it up and then put the props on, took off, and promptly broke one of the props because I crashed it. I put the prop guards on right after that.
Starting point is 00:23:44 After that. Software is about writing instructions for things that we can't do so that something else can do them yeah that's right that's right you don't have to be able to yeah yeah uh but the amazing thing is um uh our integration team like all those guys all the people in that team all fly like they do it on the weekends they do it at work. And the funny thing to me is they're working on a system that says, you don't actually have to be there. We're going to make it all autonomous.
Starting point is 00:24:13 But they have so much feedback to it. And there's always manual control as well. And they've brought in some videos. They go for these things. They call them fun flies on the weekend. And just once a month, they go to a field somewhere and go flying. And like, these guys are amazing. Like what they can do.
Starting point is 00:24:33 I'm like, okay, you guys know what you're talking about. So, I mean, the people that are working there like love flying. So it's really cool. So how small of a device does AirWear work on? How small of a device? Well, you said the $20, $40 tiny indoor things. Yeah, that's going to be too small. Yeah.
Starting point is 00:25:01 Our main autopilot is probably, I don't know the exact dimensions, it's probably two and a half, three inches by one inch by inch and a half. Sorry for anyone not in inches. It's the world I'm stuck in, sorry. It sounds like it's about the size of one of the half-size Altoids, the small Altoids. A little bit bigger than that. It's definitely tall.
Starting point is 00:25:18 Maybe a full Altoid. So it could run a fairly small craft. Yeah, I was thinking the DJI Phantoms, but that's actually much bigger than you need yeah um i mean most aircraft we have at work that it flies on are probably you know a foot and a half two feet in diameter i mean i mean they're most of right now we're flying our quads quadcopters quadcopters so you know well, now it's a square, so two foot on the side, maybe a little less. So I mean, the autopilot itself, you have the autopilot and you have some other board,
Starting point is 00:25:54 like you have an actuator board, the GPS board. We've separated the components to make it a more modular system. And so you have to have room for all that. Your batteries are probably going to be the biggest constraint. So did this sort of outwith tin-ish size include the batteries in the GPS modules or those additional parts? The batteries are always... So we run off whatever the system power is. So whatever batteries you're going to fly your aircraft, we use that same power.
Starting point is 00:26:21 You could have an alternate battery in there too, but you get the Airware components and you don't get a battery. Battery is not included. We should actually put that on the box. How do you – this is going to come out wrong, so I'll just go ahead and say it. How do you make your software lighter? I mean, fewer ones, fewer zeros? Ones are really, really heavy.
Starting point is 00:26:45 But you do have to think about that. Like how to make it more power efficient, how to make it run on a smaller processor that needs less actual. That's the funny thing. It's actually really funny because I was just thinking about this the other day. When I was at Avenger, we had wall power. Avenger is the OCT company. Yes, Avenger is the OCT company.
Starting point is 00:27:04 And we had infinite power. We just didn't care because we were plugged into the wall company yes i've injured the oct company and we had you know we had infinite power we just didn't care we were plugged into the wall um and you had a big computer there yeah that was quote embedded it was the pc inside of the chassis um um at i worked at st june medical and um there you're running on it like if you're working on a pacemaker that thing's got to run for 10 years so there you really consider power like you think about every piece of power that anything that's going to use power in there when I was at Decker Research when I worked on the iBot that was plugged that was we were also running on batteries there you had to plug it in every day so it wasn't a matter of you had to run multiple days. But you did consider that.
Starting point is 00:27:51 But the motors in that system was going to eat way more power than the processor ever was. So when I got the Airware, I was thinking, okay, we've got to think about low power modes. When we land and we don't use power that's unnecessary, and everyone's like, don't worry about the power. I was like, what? They're like, the motors draw so much power. It's a drop in the bucket. So we could spend all kinds of engineering time figuring out how to do all this stuff. That doesn't matter. Don't optimize the milliwatts when you have actual watts to worry about.
Starting point is 00:28:17 Now, are we going to do that long term? I don't know. Right now, we just don't even think about it. And I know our hardware guys think about it. They think about how much power the board's drawing. They think about it but they have not put the requirement on us like okay when the aircraft is not flying you got to make sure everything comes down to the lowest power mode so we conserve you know milliwatts like we just we haven't even had that conversation um i want to go back to you asked if he flew drones on the weekends, but I know you're actually a private actual airplane pilot. Oh, right. I forgot about that.
Starting point is 00:28:50 Technically, I am not. I saw on our website it says I am. You're working towards it. You have experience. I have experience. I've actually done my solos. I did my short solo. I did my long solo. I did everything except for the three tests that you have to do. I was trying to cram those in. The written tests? The written, the oral test, and the flying test.
Starting point is 00:29:09 And so, yeah, I should have done the written a long time ago because I could have just knocked that out and done. I was trying to get all three of them done. And then, well. Life intruded? Life intruded. My son was born. And literally like two or three weeks before my son was born um i thought i talked to my wife and said hey uh i can i can line up a time to go fly
Starting point is 00:29:32 with this guy she's like no absolutely not i'm like i'm like all right yeah that makes sense yeah so uh so i kind of put on hold since since he's been born, I think I've flown two or three times. And I remember talking to a guy when I was taking my lessons. He's like, yeah, I got 80% of the way through, and I just had to do a little bit more, and I didn't finish. I'm like, how could you not finish? I'm like, oh, that's how you don't finish. So a lot of guys, I keep saying guys in a general sense,
Starting point is 00:30:06 but a lot of the folks I work with actually are pilots. I just need to finish those tests. Does that inform any of your experience there, knowing principles of flight? It does. It helps in conversations. The stuff I'm working on right now, you know, I'm far enough in my career that I understand like things have, there's certain
Starting point is 00:30:31 things that have to be done no matter what, like someone has to write the software that turns the motor on and off or turns the light on and off. Like those are the things that gets, that's just has things that have to work it's not sexy it's not the coolest thing but these things have to work and so i i spend a lot of time working on the things that in my group we we we do all the things that have to work in order to get the aircraft in the sky so we're not worried about you know what's the angle of attack what's the air speed like we have the sensors i'll tell them that but we're like let's make sure we get the right data. Let's make sure we get, you know, this thing could be sitting on a desk. It could be sitting in an aircraft. I don't
Starting point is 00:31:14 know where it's going to run, but it's got to run correctly no matter where it is. But I mean, in terms of conversation with people, it helps a lot you know like when they start talking about actually i missed the con i missed the the brown bag lunch lunch and learn um our our cto talked about um control filters controls and flight controls and uh i was i overheard someone else the next day or the week after i was talking about how oh yeah i had to look up all these terms because i just never heard him before. And he's talking about, you know, yaw and pitch compared, like how they interact.
Starting point is 00:31:49 And I'm like, oh yeah, I just thought everyone knew that. But I mean, it's just one of those things, like you just assume everyone else knows all the, all the things that you know,
Starting point is 00:31:57 but not really. That's a very engineering personality quirk. Hmm. But Chris, you did used to fly. You do still fly occasionally. Not actual things. No, not actual things.
Starting point is 00:32:10 Not him in the aircraft. That's disallowed. I flew RC planes for a while and I have a couple of drones, but just little cheapy ones. Cool. Christmas presents. Yeah. When I was growing up up we had a neighbor had
Starting point is 00:32:25 flew um rc planes and i remember he'd go out there and test the engines on the block and it was so loud and i always wanted to go see him fly and i never did well those were the gas ones yeah those days are gone yeah nobody flies gas anymore yeah well i'm now i'm dating myself um but um yeah so i never actually got to go see him fly, and I never got to fly him. So now I work at a company that does it all. So it all comes around. Although when we talk about delivery, and Chris mentioned Amazon,
Starting point is 00:32:58 everybody looks at it as like the next super freakishly popular thing. That's the way it looks like it's going right now like every day i see an article on drones i know but between safety concerns and just pure energy efficiency i'm not sure i buy it i as a as a data collection system unbeaten just absolutely phenomenal but as a delivery system that system... I don't know yet. The hardest thing on all of this is power. It's exactly like your phone. Anything that's not plugged into a wall, the limiting factor is always power.
Starting point is 00:33:38 And with a drone, you can get more power on it by putting more batteries. But, oh, now you need more power to fly it. So it's the same thing. Now you're going to start saying to start saying oh i'm gonna put cargo on this and fly it like you know is amazon going to deliver a gallon of milk is going to take a pretty darn big plane yeah i doubt they're going to start with groceries or books you know the thing that they started so i don't know i mean in terms of other things drones are going to be used for They already fixed that problem. They just delivered those. Well, that's true. So I don't know. I mean, in terms of other things drones are going to be used for, I mean, they're already doing it a lot in Europe where they do infrastructure.
Starting point is 00:34:16 Actually, one that I didn't know about until recently, there's a company that does mine inspections, open mine inspections. So what they do is they fly over every day. They use LIDAR. They measure it. And they say, this is how much was mine today. And then they go out the next day and do it again. Like, this is how much was mine today.
Starting point is 00:34:33 And you calculate the volume of it. You subtract it from the previous day. This is how much you took out of the ground. I was like, that makes complete sense. It totally does. At the end of the day, go fly over and give us the measurements. It's just like, oh, I never thought of that. I think there's going to be just tons of applications that people haven't even considered yet that are like that.
Starting point is 00:34:54 Yeah. And that's so, I mean, a little plug for Airware, but that's where we're, I said it before, we're going for that commercial. There's the hobbyist, there's DGI, and there's some other ones too and then there's a military side but there's this whole thing in the middle um that no one's really going after right now and actually there probably are we just haven't heard of them yet um but what airway is trying to do is is put ourself in there so that everyone's using our stuff and going back to this is a hard problem to solve yeah i mean i've done inertial systems and well everyone and even your inertial gps fusion and yet we still didn't control anything we only displayed yeah like this is where this is where you are and this is how your your your
Starting point is 00:35:38 orientation orientation is um yeah now now you're going to control it. But going back to the FAA, kind of what we see is the FAA is not going to want a thousand different vendors doing aircraft. They're going to want a few. And they're going to want a few people saying, you know, ideally they want one, which happens to be called Airware. But there's some options involved. But it's the same thing with the FDA and the FAA. People always are like, oh, regulation is bad. But regulation makes things easy for them because they have to certify these things. We're not sure what the FAA is going to say on on drones yet but there's going to be some kind of certification
Starting point is 00:36:28 just what level it is we don't know um but they have to they're going to have to certify that whatever's running that aircraft in whatever way you want to use it if there are a thousand different vendors that's a thousand different things they have to certify now if, if you have to pay for certification, that's a great thing. But then if something goes wrong, they have to track it down. They have to be involved in everything. So if there's a few vendors, it makes their lives a whole lot easier. And this is why there are only a few major aircraft vendors. Yeah, exactly.
Starting point is 00:36:59 It's just too hard to go out alone. Yeah. And they do have companies that feed into them, but even the smaller companies often will work with the larger ones to get the certification because it's just really hard to do on your own. Yeah. So moving along from drones, unless you have more you'd like to add. Let's move on. What is important to know about writing mission-critical software in general? And not really in theory, but more, say, somebody's graduating from college.
Starting point is 00:37:32 How do they figure out what's important to know? I have a whole list of articles that I always give to people. Excuse me, I need to start typing then. And I'll send them to you too uh it's articles i've collected over the years and um i wish i could remember like there's there's like a few simple rules um don't be clever is a big one no seriously it is is. Don't be clever. I tell this to my team all the time. I'm a simple guy.
Starting point is 00:38:07 I like simple code. I want to sit down. I want to just look through it and understand it. I don't want to have to go jump through all kinds of hoops to fully figure out what's going on with something. I want you to be able to explain it to me over lunch or in a few-minute conversation. Now, it doesn't mean like – obviously, I'm first in the subject. So you don't have to explain to me, like, this is what a compiler is and this is what a data structure is. Like, I understand those things.
Starting point is 00:38:38 But in terms of the solution space that we're looking at, which I can't believe I just said that, but like, it has to make sense for that. And when you do something that's clever, it was like, when you're like, Oh, this is, this was really neat. I did this one way that like, I figured out this way to do something. Like I flip bits around. I'm like, that's just asking for trouble. Like like because you're going to be working on you you know it right now because you just did it it's in your head and now you're going to go
Starting point is 00:39:10 work on something else and someone else has to come along and maintain that are they going to get it right away are they going to look at it and say oh that's really weird like why did they shift these things like why did they shift these bits this way do this math and push them right back like unless it's really really well documented they're going to say well that's kind of weird um and hopefully there's a unit test at my companies there's going to be a unit test so they can see if they broke it but um if the next guy coming along and the next guy might be you in six months when you've gone off and done something else and you come back and look at your code, and you're like, who wrote this? And you're like, ah, crap, I wrote this.
Starting point is 00:39:46 We've been there. I've been there so many times. When you do clever things, when you make things complicated, you just make more work for yourself or whoever comes after you down the line. There should at least be good justification. Yeah.
Starting point is 00:40:03 Because one could say that a Kalman filter is pretty clever. Yeah. And that's a very sophisticated piece of machinery. But it's a thing that was developed over years with research. Right. It's a thing. And you can explain it. Yeah.
Starting point is 00:40:14 And you can explain it. But saying, well, I invented my own filter. And it works twice as fast and does this. And nobody else in the company has any clue how you did that. Yeah. Or even if it's right. Yeah. Yeah. and does this and nobody else in the company has any clue how you did that or even if it's right yeah yeah uh actually it reminds me of um one of your one of your recent podcasts where they're talking about do you write your own operating system or not your own real-time operating system or not i'm like why would you do that there are so many to choose from like the hard thing is
Starting point is 00:40:38 choosing the one that you want to use but like yeah it's a cool project to do and you know anyway so my background is actually physics i studied computer science as my minor all my all my teachers all my physics professors thought i was actually a computer science person taking physics classes um and when i graduated that turned out to be true didn't it it actually did when i graduated with a physics degree and they're like whoa. Who are you? I'm like, whoa, welcome to the department. I was always in the department, but I was always writing software. But I forget where I was going with this.
Starting point is 00:41:15 Well, let me interject a story here. Damn. While you think. Because it's related to the don't be clever. It reminded me of when I learned to drive. My stepdad was a professional truck driver. And so even though he did not teach me how to drive, when I was learning, I asked him,
Starting point is 00:41:35 okay, there are all these rules and I'm learning. What is the most important thing for me to do? And I really, I was such a klutz. I expected him to say, don't trip over your feet or something along those lines. And he said, don't be clever. He said, you're a smart girl and you can optimize all of the paths and you can figure out how to do all of this. But the thing you need to do is to be as predictable as possible.
Starting point is 00:42:04 Yes. Predictability is really important in anything. I started looking at what I was thinking about driving and how other people drove. And it was important because what I do now, the reason I indicate changed lanes is because then I'm predictable and it's not about being a jerk. It's about letting other people understand what's happening. And maybe that is a good software idea too, is to not be clever,
Starting point is 00:42:38 to be predictable, to do simple things. Yeah. It's, it's, it's really about making it. So the next i i say this to my team all the time make it just be nice to the person that comes after you yeah we had a a show you asked me for a couple of shows you'd like and you probably would like the one with chris veck from last fall
Starting point is 00:43:00 where we talked about empathy driven development. And the idea is you have, you don't treat your coworkers like they're stupid. And, and because it is going to be you next. Yeah. Yeah. You had some other ideas about simple software. Can you share some?
Starting point is 00:43:17 Sure. So it really comes all the way back to what you learn in school. Like a module should have do one thing. A function should do one thing. Functions should be short. All these things are, everyone knows because they learned it in school. When you start getting in the real world,
Starting point is 00:43:34 you start, like the real world always intrudes. Like, okay, this function does this, you know, goes off and reads this sensor. But oh, you know, it's got to do some processing of it too. And maybe it's got to average it. So let me add these other little, some helper, some helper bits in here and do some more work.
Starting point is 00:43:52 And all of a sudden now this function has gotten really large and it's going to be hard. It's harder to maintain. And actually going back to talking about, we haven't talked about it yet, but we talked about earlier about test driven design. The nice thing about that is it helps. I think it helps you write better code from the fact that since you always have to test your code, you're always thinking about, if I add this little bit in here, if I add this for loop or this if statement or this, you know, some kind of branching mechanism, how am I going to check all the different possibilities?
Starting point is 00:44:23 So going back,, keeping it simple, a function does the thing it needs to do. If you're using C++, the class does the thing it needs to do. You're not trying to cram everything into one file so that you don't have to worry about, okay, I have to look in this file, I have to look in this file. Break it down so that the thing is easy to understand and easy to test.
Starting point is 00:44:48 That's a tall order, though. I mean, you end up with, so you think, okay, I don't want it to be complex, so I'm going to put it all in one file. But then I don't want it to be complex, so I'm going to put it in 10 files. That's all about trade-offs. Yeah.
Starting point is 00:45:02 And I think you and I and Chris are all on the same page that there isn't a single right way yeah and that's that's i think one thing you learn as you i've i've learned as i've gotten older and seen more software is that there is no one right way everyone does something slightly different um and it's just a matter of learning to adapt to what you, what your coworkers are doing and coming to a consensus. That's one thing I think about my team is really great is that, you know, we will go, sometimes we'll go into a room and say, you know, this is the way I want to do something.
Starting point is 00:45:39 And the other people on the team will say, I think that's great. Or someone else will say, ah, you know, I really don't like that because of some esoteric reason. But we don't come out of the room fighting and yelling. We're like, what does the group decide? Okay, we're going to put the opening curly bracket on the line instead of the afterline. Okay, I don't like that, but you do. Everyone else seems to like it.
Starting point is 00:46:05 Let's just go. We're not here to argue over minor little details. Religious wars! Yeah. Religious wars just have no place. Curly braces must go here, and they must have a space after and a space before. They're supposed to have spaces,
Starting point is 00:46:19 and they're supposed to be on the next line. I'm so sick of that. The one thing that I cannot abide is the space after parentheses and before the parentheses. I find that... Oh. What? No, that's...
Starting point is 00:46:31 I love that. That's a... Oh, that's when you have... That's me. That's our Avenger days coming back together. If X, and you have to put a space, you know... If I have, paren, space, A, space, equal, equal, space, one, paren, space, paren space a space equal equal
Starting point is 00:46:45 space one space paren so lots I love white space I love horizontal white space I love vertical white space some other people don't and the curly bracket
Starting point is 00:46:56 goes on the next line that's just wrong but so the style is different a little bit different everywhere we have lots of
Starting point is 00:47:03 horizontal space not so much vertical space. That's my next project. Is it? I mean, are coding standards worth it? I know in medical products and in FAA, you have to have a coding standard. Some people use it as an opportunity to specify curly brace location. But you don't have to.
Starting point is 00:47:23 No, almost every coding standard i've seen says it somewhere in there like where where certain things are going to go i don't think it's as important as people think it is i don't need the code to be that uniform i'd rather it was simple than uniform the um so i i think coding standards are important so that people write their code in a similar similar way like in terms of formatting, there's tools for that. I get really, like, so I am guilty of when I'm doing code reviews, like I see spelling errors, I call them out. Yeah.
Starting point is 00:47:55 I do too. Because I can't help it. I read so much. I've read so much my entire life, like from a kid on, like spelling error. And, yes, I make spelling mistakes and I love when people call me out I'm like damn how did I miss that but
Starting point is 00:48:11 a lot of times I'll call out a spelling error but I'll let them go by until I find an actual error once I find an error then I'm going to call all your spelling errors out because you're already going to go edit that file. So might as well fix all this other little stuff too. But like formatting stuff, there's tools for that. This is, let's not argue over that. I, when I see people in code reviews, you're like, Hey, you're clearly practicing the wrong space. I'm like, okay, thanks for wasting all of our time when we have a tool
Starting point is 00:48:39 that does that for us. But I think coding standards are important from the point of how you name things, how you, like, are you like, if you're doing C++, like, how many things can you inherit from, or can you use templates, or to what scope can you use templates, and you know, things about the language, like, we do not
Starting point is 00:49:00 on an embedded system, especially on a safety-critical system, you can't use malloc. You can't use dynamic memory. And if your tool supports the way to verify that you're not using any dynamic memory, you should definitely turn it on. Because it's really easy to slip that in, and that can cause all kinds of issues. So I think coding standards are important from that point of view, but getting down to the nitty gritty about, even on spacing.
Starting point is 00:49:31 You do know, I'm just giving you a hard time. Oh, I know. I've worked with you long enough to know this. And that's why I still talk with you. I like you. You're on my list too. This is on tape now. I know.
Starting point is 00:49:42 And the fact that you're on my list is on tape too. And the fact that I have a list. At lunch, we were talking about lists of people we would like to work with again. Or people we'd like to poach and all make a company that would be great. And so that we collect these sort of lists of people and maybe it doesn't go anywhere. But you're on my list is not a bad thing. I have two lists. You're on the good list.
Starting point is 00:50:07 I have a bad list too. That list is very short. Fortunately. Mine is too. I do have a few people I would never work with again. That if I found out they were at a company I was going to, I would just say, Oh,
Starting point is 00:50:20 thank you. Bye. Yeah. But it isn't a very long list. It's well, and you can shorten that list. What? The bad list? Yeah.
Starting point is 00:50:30 I'm not killing people. That's recorded now, too. But back to coding standards. I think it's important to have something, something in place so people just have an idea. But the rule, I always tell my team, and I try and follow myself, though. Sometimes I impose my rules a little bit on other people. But when some people leave a company and then they come back as a contractor,
Starting point is 00:50:56 I get to impose the rules. That's true. Is write like what you see. So if you go into a file that hasn't been touched, unless you're going to change the entire thing to the new format or naming conventions or whatever, write like it is. Don't make your code stand out from everything else. I had a client recently who gave me a pretty detailed, and it was a fine coding standard.
Starting point is 00:51:22 But then I said, you also wanted me to use this other code. And it looks nothing like what your standard says. Do you want to pay me to translate? Or do you want me to match their style? Because I don't think I should put your style in what I change in theirs. And they came back with, you should match the surrounding style. That's the highest importance in coding standards. Consistency is far, far more important than specifics.
Starting point is 00:51:51 Yeah. And then, so if I'm working in a file that came from a vendor and we're keeping it in the same style, I usually demote it or mark it up with um you know edited but at airwear or something to say hey yeah this looks exactly like the rest of the file but i mean i know your your revision control tool will tell you who wrote it but when you're reading a file like you're just going through like trying to figure out why something's working or not working you're not going through the repository saying who wrote this was this written by someone that you know the person that
Starting point is 00:52:28 sits right next to me that i can go ask them or is this something at a company i'm never going to meet so i like i like to leave a little tag saying hey we did this just so we know if you if you modifying a vendor file in like six spots or some small number of spots I like to have those because then when the vendor updates their files you can copy it and it's not just about version control it's if you
Starting point is 00:52:54 XXX vendor or company modification here it makes life so much easier later that's an empathy driven development thing we create patches too, but will they ever apply again? Who knows?
Starting point is 00:53:08 They'll never be perfect. Yeah, having that tag there says... And why you made that change there. Yeah, yeah. So do you measure code complexity? I mean, we talk about simple, but the opposite's complex. Do you have measurements?
Starting point is 00:53:22 So we technically do, and I looked at them early on, and I haven't looked at them in months. Do you have measurements? So we technically do, and I looked at them early on, and I haven't looked at them in months. Do you remember anything about them? No. That's fine. At Park, they introduced me to that as a concept that they were desperately trying to simplify
Starting point is 00:53:37 the complexity of their system. And one of the takeaways was they were building an API. And they looked at the number of different words in their API. Like when you write a story and it tells you the complexity, like the reading level of the story? It was sort of like that. Okay. I mean, they had different complexity measures,
Starting point is 00:53:57 but that was the one that really stuck with me. That, you know, if they were going to use, you know, say, sent, they only used the word sent and not transceived, not anything else. It was always very, very consistent. And then they started looking at verbs and nouns and other words and really trying to make it all very simple. When you're learning this API, you don't have to learn 97 different ways to do it. Once you see packet sent, you know what packet means because it can only ever mean one thing. It means the headers on there. It means the tails on there.
Starting point is 00:54:35 And if it didn't have those, it would be called something else. I really liked that, but I haven't come across other stuff like that. I guess I should ask the park guys to be back on i mean so as you were talking i remember like um cyclometric complexity yes that that was another thing they were talking about yeah that's the one uh i used to we used to get it reported when i was at saint jude medical um the tooling that we use there uh tooling that we use here at airwear does report it and i remember looking at it when I first started, and then it was one of those things I realized no one else was.
Starting point is 00:55:10 And it just wasn't – we're not at the phase right now where that's as important. So cyclomatic complexity, according to Wikipedia, has to do with the number of branches you have. You want each function to have a single path through, maybe two paths through. But you don't want if this, if this, else if, else if, until you have 27 paths you might be going through
Starting point is 00:55:41 because that's really hard to test. It's hard to write a unit test for. Yes. It's always interesting in an embedded system because inevitably you have some kind of message handler um which is going to have some huge switch statement in it or some other way of saying you know checking out the id of the message came in and it goes off the different handlers and that thing always grows so you know you can have the retro system down to um you know one and two your count your psychomatic complexity measurement you know very small numbers and then you have this one
Starting point is 00:56:12 function that has like 50 you're like what is that like oh that's that's the message handler yeah and the only way around that is to have a state machine have state dependent uh message which has other different right different kind of No, you put those all in a table, in a variable. And the tool can't see it. And then it's a for statement, and then the tool can't see it at all. There's ways around it. You can totally cheat.
Starting point is 00:56:36 Yeah, I mean, but with any tool, any tool, anything that you're measuring, you can always game the system, but it's not about like... It's better off system, but you're, it's not about like, it's better off to go ahead and say, it's a switch statement. It's a message. It's complicated.
Starting point is 00:56:50 And this is why, and this is how we're going to test it. Yeah. Like, you know, I, when you, you meet a lot of people are like,
Starting point is 00:56:58 these are the rules we have to follow them exactly. Where in reality is like, we follow the best we can. And where there's exceptions, you write, this is an exception to the rule. And this is why we follow the best we can. And where there's exceptions, you write, this is an exception to the rule. And this is why we're taking the exception. Even when you have to deal with complex things like quaternions and Kalman
Starting point is 00:57:12 filters, you, you try to have a, this is not that simple here. Go read this page, go read this book, and it will give you the basis you need to make it. So that this code that I've tried to make
Starting point is 00:57:25 is obvious and simple as possible. I can't explain it to a third grader. I can't explain it to somebody who doesn't have this background. But once you have this background, it won't be too complicated. Yeah, and it goes back to what we were saying earlier about when you describe your code to me,
Starting point is 00:57:40 understand that I also, I understand the system we're working on. Now, if I go, like I did controls work 15 years ago like I understand control loops I understand filtering like there's things I like I now a lot of these things are on words to me but I have some background in them so I'm not going to go sit down and write the controllers for our aircraft there's there's no way that's it's not going to happen but if they start talking to me about it i'm like if i like i'm going to be rusty i'm like okay i asked the right questions and like okay i got a good enough understanding to understand it um but i'm not going to go like
Starting point is 00:58:14 do a critical review of the controllers they're going to do that amongst themselves because they're the experts in it but they can explain to me in a way that I can understand and I can implement software around it. So it's just knowing your audience. And when I say simple software, it's simple for the audience that it's going to be for. And you do need that caveat. Oh, I remember the operating system one. Okay.
Starting point is 00:58:42 It was, would you write your own operating system or not? And it comes down to the, well, we can write our own thing here, but what's your core business? Is your core business going to be writing operating system or is your core business going to be, I don't know, making an autopilot? That being said, we're not writing our own operating system. But I hear this conversation a lot, not just, I mean, I've heard it either, you know, when I've read things online, when I've been at a company that I've been in, like, should we write our own code that does this? I'm like, does someone already do this? Are they much better at it than us?
Starting point is 00:59:17 Let's just buy it. It's tough. I mean, our tosses in particular can be hideously expensive, although last week's was free, which was really amazing. But I had this experience. I interviewed at ShotSpotter, making the gunshot location system, which is such a cool idea. And when I interviewed, I made fun of a previous company that I had stayed at for only a few weeks because they were writing their own GPS parser and they were writing their own software-defined radio. And neither one of those things had anything to do with what they were making. And I didn't understand why they were writing them.
Starting point is 00:59:59 I thought they should just buy them off the shelf and not discuss it. After it's shipped and we talk about cost reduction, we can talk about redoing those parts or expanding our business. And as I was, you know, spouting off, pretty much ranting just like this, during the interview with like four people, because it was one of those group parts of the interview, and the room got quiet. We really were crickets.
Starting point is 01:00:24 It's like we're writing our own. And later, after I had gotten hired, one of the guys told me that they had, with that interview conversation, stopped talking about doing their own radios. That's awesome. And just went for buying them. They just stopped discussion.
Starting point is 01:00:41 I think it's a bigger problem with smaller companies and startups where you get a small group. You don't have any money. Well, that's one issue, but you also get a small group of maybe five or six really smart people and now they feel free. They feel like they have a lot of power and so it's like, well, hey, I've always
Starting point is 01:00:56 wanted to make my own 2D graphics library. Let's do that instead of looking and buying another one. I'm sure I can do it better. Yeah. I totally understand. There's so many things. It'd be so fun to write this thing, but that's actually not really what I want to...
Starting point is 01:01:14 I think what happens a lot of times is people say, I can do this, and I can do it in a very short amount of time, but they don't understand that you have to maintain that forever. Yeah. And it's like, yeah.
Starting point is 01:01:26 It's a product. It's a product at that point and you know internal product which means they know where you sit they know where you sit and you're going to be the expert on it and if something goes wrong you have to fix it it's not a matter of well i mean it's not even about blaming a vendor it's like you have like now now in addition to all the other stuff that you have to do you have to maintain this other thing it's like when i was at avenger like hey we want to do something with uh pdfs and you know you can go download the pdf spec and you can do all this stuff for rendering it or you can go spend a couple thousand dollars buy a license from whoever i bought it from and plug it in. And Hey,
Starting point is 01:02:05 you asked for PDFs yesterday and now they're in the system done. And that's, and it's a cost benefit analysis to people don't run too. It's like, Oh, we have the in-house talent, so we should be able to write this ourselves. And it's free.
Starting point is 01:02:18 Yeah. Free. It's free times. It's free. Plus all of the money that you're paying those developers to do that instead of make the thing that your job is the opportunity cost the maintenance cost and nobody does that and says oh you know two thousand dollars that's you know whatever three days of you know a small team yeah versus you know and it's like you said instantly having it
Starting point is 01:02:40 and you're done and you've got somebody who's supporting you yeah and there's always integration issues there's always like okay their software works a little bit differently than exactly the way we want it but you know what you can probably adapt to it make versus buy if you're small enough everybody feels like they should be making it all but what they really should be doing is buying as much as they can yeah in support of shipping their idea. And I think that was one of the things that when Chris introduced us, it was like, oh, yeah, this is a guy who shipped things. And that's kind of a checkbox. We were talking at lunch about your transitioning into a management role.
Starting point is 01:03:21 Yes. And my question was, have you— Transition to plate, I end up a role. Yes. And my question was, have you... Transitioning to plate is where I end up a lot. Yeah. It either says I'm not a good software developer or I have some decent people skills.
Starting point is 01:03:32 Well, in project management and all of the other... Yeah. But I said, have you written performance reviews? And you said, not yet, but soon. I'm like...
Starting point is 01:03:40 Well, not yet at this company. We'll give you the manager title when you... We'll check that box off. And then when you've laid somebody off or you've fired them, then we'll check that off in our box. And it's like, have you shipped things is one of those boxes that for me makes it, it's a little more comfortable.
Starting point is 01:04:00 You know that projects don't end when you push the release button. Yeah. Everyone's excited about shipping. You know that projects don't end when you push the release button. Yeah. Yeah. Everyone's excited about shipping. And I'm like, that's when it gets harder. Now you have customers. And if they don't like something, then you have to deal with it. And it's super important.
Starting point is 01:04:15 It's really nice when it's still in-house. So do I get a big checkbox for have you shipped things that the president wears? Christopher's new product, the one he worked on with Fitbit, it ended up in the news on President Obama's wrist. And he put it on himself. We didn't shoot it at him. It wasn't just stuck on.
Starting point is 01:04:35 Can you say shoot at the president? I didn't say shoot at the president. I said shoot at him. But you were talking about the president, so the pronoun. And I was talking about shooting a watch at low velocity. Yeah, anyway. President Clinton stood next to the iBot when it was balancing.
Starting point is 01:04:52 That was pretty cool. I don't know if he ever wrote it. But yes, it's been seen multiple times on his wrist. That's awesome. It must have gotten stuck. It's really kind of cool. So actually, we were talking earlier about medical devices and now airwear fa devices like everything i've ever worked on has been a medical device and everything i've ever worked on is
Starting point is 01:05:12 something i don't want any of my friends or family to ever have to use yeah so this is actually really cool about working at airwear it's like it's the first thing i was like i want people to use this um and if they say yeah use your stuff i'm like oh that's awesome um but like before it was like hey i have your pacemaker impl your stuff i'm like oh that's awesome um but like before it was like hey i have your pacemaker implanted me i'm like i'm sorry or or uh you know uh well the avenger was pretty cool because i mean yeah that was a medical device and it saved people's legs so it was like hey i didn't have to get my leg amputated. I'm like, well, that's really cool. But it is really cool.
Starting point is 01:05:47 And yet you're still like, Oh, sorry. You had to have surgery. Yeah. Yeah. But so I'm, I'm really excited about,
Starting point is 01:05:57 you know, when airwear eventually launches something that we, you know, people are using it and, you know, we, we have have little stickers that say maybe there's a
Starting point is 01:06:06 powered by airware on there or something. Hopefully there's a way of knowing it. Actually, back to the operating system one. That's the one that's most fresh in my mind. Joel from Artem said, you asked him, there's no way to know what operating system is running
Starting point is 01:06:24 inside something. So maybe they should have stickers. Well, actually... Powered by Artem. I'm sort of glad you brought that up because I forgot to do the element 14 header, so I'll just stick in the commercial now. That's sort of what I wrote about for Joel
Starting point is 01:06:39 was how hard it would be to work on applications that weren't nifty and cool and how difficult it would be to not be able to see your stuff in other things that were nifty and cool. The episode before, we talked to Lane of Osh Park, and he said one of the reasons he did these brilliantly purple boards is so that he could see them when he walked up. I mean, other people's projects, he's like, oh, I had a little hand in that.
Starting point is 01:07:10 And Joel doesn't get as much of that. But he did get a Mars Curiosity mug, so that's kind of cool. So I think we're almost out of time, but I have just another couple quick questions. Sure. You mentioned unit testing, and I am a proponent of unit testing, and I often do it, but I don't do it all the time. How do you manage to help everybody understand the importance? How do you make the time? What do you use for framework? How do you get started? What's unit testing embedded systems? Make it so we're better unit testers.
Starting point is 01:07:43 Yes, please. So I will first admit, I learned unit testing when I was at DECA and I use the same style I use it there. So that was like your first job? That was my first job, yeah. Yeah, I always fear that it's something you have to get right away. Yeah, and well, so I will, like I said,
Starting point is 01:08:00 I'm the first to admit that given the ability to not unit test something, it's very easy for me to fall back into that trap. Because it's like, I wrote it, I tested it, yeah, it works. I tested it once. Yeah. And I'm very thorough. I try and be very thorough.
Starting point is 01:08:21 That's why it's really good to have a good solid QA guy behind you. Yeah. Or sitting next to you. Sitting next to you, yeah. But what we do at Airware is you can't, your code's not done until all the test coverage. It's part of the whole process. It's not a matter of I developed this module and it's now in there and I'll get to the testing later.
Starting point is 01:08:40 As you commit it, the review says, okay, where's the testing that goes along with it? And we did the same thing at DECA. Testing was a deliverable. It wasn't done until you had that. And also documentation. We're not at that point yet. But it's really setting up the infrastructure, setting up the CPPU test, that's what we use.
Starting point is 01:09:08 And that's the same framework that James Grunning has in his test-driven development in Embedded C. Yeah, so actually after listening to that podcast, I knew that someone had that book, our QA person had that on her desk at work. I went in the next day and said, I need to borrow this. And I went home and read it. And now everyone on my team has read it now too. So the testing on the embedded system side, we do testing on our actual local processor, like on our PCs.
Starting point is 01:09:35 We've run all our unit tests there. And then we do what we call functional tests on the embedded software, where we have the framework as part of it, and we run the test and verify that um the test still passed we're not running so when i was at deca we actually ran the exact same unit test on the hardware and here we're running a slightly different variation on it and i don't know which way is better yet maybe neither one of them is better um but i do know uh for all the uh errors that all the bugs that have been filed against our system,
Starting point is 01:10:06 we don't have that many on anything that my team has touched. That's gratifying. Yeah, it is. And now, you know, you could argue our boards are a lot simpler than the other boards in the system, but we're also maintaining more boards. Did Airware have unit tests before you got there? Yes.
Starting point is 01:10:26 So it wasn't, yeah, that was actually one thing that was really nice coming in. Like the framework was already in, the continuous integration server was already running, and it was all part of the whole process. Now, listening to the podcast about TDD and reading the book, it was really interesting to learn how to do drivers. I haven't done it myself yet. We were talking earlier about tech lead versus manager. I lead a team. I also still write a lot of software. But like just yesterday I was updating some software and I was like, okay,
Starting point is 01:10:56 I go in to fix a test. I'm like, okay, what are, how do I do this again? Like what are the pieces? Like I'm just really rusty and it hasn't been that long. It's only, you know, it's been a couple of months since I've worked on that one the pieces? I'm just really rusty. And it hasn't been that long. It's only been a couple months since I've worked on that one little piece, but it goes really quickly. But one guy on my team read the book
Starting point is 01:11:12 and was like, wow, this is amazing. I'm going to do all this for all of our drivers from here on out. And he's just been doing it. And it's just, if you don't find anything, it's not a problem. But now if anyone goes and change that and breaks it, like we know right away,
Starting point is 01:11:27 it's just, it's fantastic. He just, he soaked it right up and he took it right to heart. It's been, it's really awesome. And he's not someone like, who's just right out of school and like,
Starting point is 01:11:36 like, okay, I have to learn everything is possibly new and apply everything new. Like he's been developing for a number of years and said, wow, I just never knew about this. And now that I see it, I see why it's better and I will do it. So he's much better than me because I will very easily put something together.
Starting point is 01:11:51 I'm like, yeah, it works. I think what you said was important too is having the infrastructure and making it easy to do so that you don't feel like, oh, I have to figure out this with CPPU test and do this and I'll have to put it in a script which is a pain in the neck i have to do something by hand yeah if it's just okay i write this piece of code that goes along with my code it goes here and it integrates in the system and then the the server takes care of running it and verifying that's great i mean because if you can
Starting point is 01:12:17 reduce friction out of the things that are tedious and a little bit boring sounding you know on the face of it it'll be more likely that people use it yeah and making it simple to run too it's like you want to build the the application make you want to make the test make test like it has to be there you can't go through a whole lot of hoops in order to do it like it just has to be really simple well that was one of the things granny in his book was trying to do was to make the framework simpler yeah it's tough to set up but once it's set up the idea is that it's not very tough to use yeah yeah so well cool i will let james know that you're using it i think he'd be quite pleased i think he would i hope he is because i mean we're all
Starting point is 01:12:57 excited about it that is very cool that's very cool so do you have any last thoughts you'd like to leave us with? You know, standard, leave the world a better place than you found it. Boy scouts. It's the same thing with code. Make it look consistent and just try and clean it up as you go along. Make it nicer. Is Airware still hiring?
Starting point is 01:13:19 Yes, we are. Am I hiring? Yes, I am. What are you hiring for? I'm specifically hiring for an embedded software engineer. There may be a few who listen to this show. We actually are hiring. In Silicon Valley, in the Bay Area, when people say we have a full stack, they're usually talking about a Linux system, a database, some web interface.
Starting point is 01:13:43 At Airware, we have the full stack. We have hardware engineers all the way up to people writing web stuff. And we have everything in between. And we're hiring across the board. And so do people email you? Do they email me for an intro? Do you have a... You can email me. We actually have recruiters.
Starting point is 01:14:01 Actually, if you email me and it comes through embeddededded from the podcast, then I'll put a little star on it. Okay. So go ahead and email show at embedded.fm and we'll pass it along to Dennis and let us know that that's why you're emailing it. Or, of course, you can hit the contact link and I will just introduce you to Dennis.
Starting point is 01:14:22 That'll work too. My guest has been Dennis Jackson, Embedded Software Tech Lead at Airware. I'm happy he finally agreed to be on the show as he's been a friend to Chris and me for years. He was the first person to send me a picture of his kid reading
Starting point is 01:14:37 my book and it made my day. Who was six months old at the time? It might have been staged. If you have a physical copy of my book and can send a picture along, it would make me smile. Show at embedded.fm will let you attach the picture. But you can hit the contact link if you want stickers or just to say hello. Thank you for listening and thank you to Christopher White for co-hosting and producing.
Starting point is 01:15:04 And for introducing me to Dennis. Christopher White for co-hosting and producing and for introducing me to Dennis. Well, thank you for having me on. And a final thought for this week? Let's go with Shakespeare. A fool thinks himself to be wise, but a wise man knows himself to be a fool.
Starting point is 01:15:20 God knows all my software makes me feel like that. So we turned off the mics and we talked about our show title but Dennis and Chris and I always have a lot to talk about one of the things that I did want to get on the mics was about maker stuff this is going to be a short segment you don't do any uh extracurricular no i i read a lot um so yeah i don't go home
Starting point is 01:15:52 and i don't i don't build anything at home i don't write software at home um you do still have a small child i do have a small child but even before even before him he doesn't write he doesn't write software yet yet doesn't write software yet. Yet. Although, you know, my wife is an electrical engineer, so he could have a hardware. He could have a hardware side on him. He's definitely going to be an engineer, though. Like, you see him checking out tires or looking at how things work. He's also got a little bit of an OCD tendency.
Starting point is 01:16:19 Like, things have to be lined up right. So we're a little nervous about that, but not too nervous. But, yeah, even before he came along, I didn't, you know, I think I've done a little bit of scripting at home, like maybe to do something on my machine. I can't remember. The last thing I, I mean, really the last thing I remember writing was something to synchronize iTunes playing on two different computers. This was before like Apple came out with their airplay and their remote speakers, like a couple of years before that. So I could have,
Starting point is 01:16:51 we were having a party and we wanted music playing on both ends of the house. And so we didn't have anything wired between them. The only way I could do is like this. And then it was just enough of a phase change between them. We're like, nevermind, turn it off.
Starting point is 01:17:01 But I mean, I just don't write software at home. I write a lot of software at work, but I read a lot. Like I read blogs, I read... Technical? Technical stuff. Mostly fiction, nonfiction? Both.
Starting point is 01:17:14 I mean, the nonfiction, or sorry, the fiction, I read a lot of, I used to read a lot of science fiction. Like I go on vacation, I usually read a couple novels. But this has always been true you've never even when you were out of college yeah work at work and then yeah technology is yeah i mean i mean i read i read technical blogs when i'm at like i used to when i was commuting down the peninsula i'd read them on the train now like sometimes also uh my son wakes up usually around 7. I, unfortunately, wake up usually around 6 or 6.30. I think I've reached the age in life where I just start waking up early.
Starting point is 01:17:53 You're not that old, I know, because I think you're younger than I am. Only by a little bit. Yeah, like a month. Yes. Yeah, you two youngsters. You're like eight months older. Right. But so, I mean, I read about stuff.
Starting point is 01:18:12 I mean, I read about software development. I read about best practices. I just read. So, it's interesting because we have the podcast and we're more hooked into the maker community than we used to be and a lot more i feel a certain amount of pressure to do technology stuff outside of work and it's a little weird for me because i'm a contractor so my hours are strange and i'm never sure when i'm working or when i'm not working but um you do feel that pressure that other people are doing these amazing things
Starting point is 01:18:45 outside of their day jobs. And so, yeah, I don't know what to make of that exactly. And I'm not sure if that's necessary to make you a better engineer because you do home projects or don't. So, I mean, for anyone who's going to be sending me, you know, happens to send resumes, like if you're fresh out of school or only have a couple years experience, as I'm looking at resumes and talking to people,
Starting point is 01:19:08 I really like seeing that experience. The projects, the home projects? Yeah, or like projects that you did at school that you really owned. Like I had to do this thing because it was like part of like – I was on a team with six people. Yeah. Those are not as good. If you led that team or if you were a major contributor that's
Starting point is 01:19:25 good but i i want to see that you're you're you're trying to learn the things that you you don't have that experience because you were in school that you're going to get in the first few years that you work now if you're coming in as a senior developer and like you say yeah i don't work on home projects i'm like okay that's cool because i don't either but you have a lot of product history and you've shipped products and you've done all this work and you can talk about it and you can point to things like, yeah, I have code in there or I have hardware in there. We're still going to do a coding test because I want to make sure you can still do it. But I'm not going to hold that against you. Where does that transition from I want to see home projects to not home projects?
Starting point is 01:20:03 I don't know. I don't know. About year three? Yeah, three, four years in probably. And I work with guys that, I work with folks that they, they go home and they work on, they work on projects there. The thing is like, I, I, I really like to focus my energy on making the place I work, the best place I can work, the software, the best I can make it. Like I think about our build system. I think about our tooling. I think about all these things. Cause I, it's funny. Cause I actually don't want to think, you know, and there's that book. Don't, don't make me think I read that one
Starting point is 01:20:34 years ago. And it's about user interface design, but I actually apply that. And again, I tell my team this all the time. Like I, when I, when I, when I use our tools, when I use our software, I don't want to think about it. I don't want to have to think i have to do this esoteric command in order to do something i want to hit one or two keys and i want it to work yeah think ahead of time so you don't have to think later yeah yeah and think once and think thoroughly yeah and then just sleepwalk there really is i mean i come back from vacation a vacation i don't have to relearn how to do all this stuff. I just say, oh yeah, I hit this thing
Starting point is 01:21:08 and it works. Just don't make me think. There's all these things I have to think about already. Don't make me think about more things. I wanted to record this part because at least one person thinks that when I get done with my day
Starting point is 01:21:24 at contracting, I go into the lab and start tinkering. And that's not true. I do. I mean, I have this thing here that a dentist can see, and it's got wires coming out of it, sparkly tape, and it's in a tennis canister. So it's clearly not a pay for
Starting point is 01:21:47 sort of project but it's for a conference presentation and uh and it's sort of my my test thing so i can show people don't yeah i did that off hours and my conference presentation is sort of off hours but that is sort of advertising for the business and all that yeah but i don't on average do much technical work that i don't get paid for yeah and i i don't want to be one of these people that is pressuring other people if you want to get a dev kit and you want to play with it you want to learn raspberry pi your son is actually going to be programming soon maybe it's time for you to start scratch in the next 18 months before he learns how to type i'll just have
Starting point is 01:22:30 have have benjamin teach it to you i mean yeah exactly yeah yeah um but there shouldn't be a huge pressure you should learn what you want to learn yeah i early so really early in my career, when I started at DECA, I thought, okay, I go home, I'm going to work on this thing, and I work hard all day long. I net was early, but I would surf the web. I'd be reading things. I'd be doing these things. I don't want to be thinking about how do I turn on this GPIO pin in order to turn this thing on. I don't want to do that at home. Well, and it's hard for me too because unless you have something you really want to make. Yes.
Starting point is 01:23:16 That's the other thing. Well, I want to learn this, but it's impossible to learn something if you don't have a goal in mind. Yeah, and that's the other thing too. I'm far enough in my career. I have a certain number of hours per day. I make a certain amount of money. I can trade those two things off. Yeah.
Starting point is 01:23:32 So if I need this thing to light up the room when we turn the lights off, well, I'm going to go buy a nightlight. I want to spend a few dollars and be done with it. Like not have some photo sensor that I read and then I turn on LEDs in order to do a certain pattern. I'm like, I just really want to light on. Okay. I'm going to go buy a $5 nightlight. And yet if, if your son said, I want a nightlight that is purple and lights up a dragon, you
Starting point is 01:24:02 might at that point take that opportunity to think, okay, yeah, I can show him that I can do this. Yeah, well, that's also, that would be a goal. It would be a goal. And he would ask me for it. Yes. I don't personally want to light up purple dragon right now, so I'm not going to make that. It's easier if you have a goal.
Starting point is 01:24:19 The little guy asked me. Somebody else. And most of my even my little home projects you know I have I wore my ring to your birthday party
Starting point is 01:24:30 that gives when you tap it it gives you a new word and I did that for myself because I wanted to learn the micro view but also
Starting point is 01:24:37 I had a goal there were a couple of parties I was going to go to I know that I'm awkward at parties I know that the words would crack me up even if
Starting point is 01:24:44 and you were between contracts. And I was between contracts, so I had time. I wasn't doing it after putting in eight hours at a job. I don't know. I just kind of wanted to make sure people heard that it's okay. It's okay either way.
Starting point is 01:25:00 No, no. I think it's great. And actually, truthfully, I'm jealous of that. People have that drive. Because I just have the idea and go home and do it. I used to work with a guy. He'd come home. He'd come in on Monday.
Starting point is 01:25:17 I'm like, what did you do over the weekend? He's like, I made a satellite receiver out of measuring tape. I'm like, what? This is a thing? He's like, yeah. And you cut it to a certain length. And you use measuring tape because I'm like, what? This is a thing. He's like, yeah. And you cut it to a certain length and you'd measure tape. Cause it already has the measurements on there.
Starting point is 01:25:28 I'm like, okay, that's really awesome. And he like received like a Noah data signal, a national ocean weather information. And like with his, with his media, his measuring tape satellite dish.
Starting point is 01:25:41 I'm like, okay, that is really cool. But it's not something I'm going to go home next weekend and work on. I'm going to go over to your house and I'm going to check it out. Yeah, exactly. It's amazing.
Starting point is 01:25:53 And when I hear people who do that and they're hitting out, am I just not as efficient as them? Or are they just, do they drink way more coffee? I don't drink coffee, so maybe I should drink coffee. I recently started drinking coffee. I haven't done any yeah well i do more music oh it's like when i was actually back to the goal thing like i i used to play i played trumpet all through school all through college and i played a few years after and then i stopped meeting the
Starting point is 01:26:21 people that play like i if i didn't have a concert I was practicing for or a gig that was coming up, I didn't play. So I think it's the same thing. It's like I don't have something going in that direction. I'm like, I'm going to go work. I'm going to do something else. Well, my brain gets tired. I mean, it gets tired in different ways.
Starting point is 01:26:39 If I had to spend the whole day at work reading, then maybe after work I might code. Or when I was a manager, I was more likely to code after work. But when I'm coding at work, I want to go home and I want to do something different. Yeah. I think you have to, to reset.
Starting point is 01:26:55 Yeah. And different coding isn't enough reset for me. Yeah, yeah. That's where spy novels and fantasy novels and mystery novels all the novels all the books I do worry about that with some people who are always
Starting point is 01:27:17 making and I'm sure people can do it but you've got to have that down time to let things soak back in in order to get back up to a good level like at work when i do have the time and inclination to make stuff it does help my work so i think you shouldn't like forbid it because it is very useful yeah totally but i don't think that it is required and i don't think we should make it an industry requirement that we're on 24 hours a day. And we only get paid for eight of them. That's a whole other conversation right there. And how do you feel about open offices?
Starting point is 01:27:56 Well, that was the question. But that's what Cisco was like when I first started working there a long time ago. Yeah, which time? The first time. Right out of college. And, you know, I'd go there and I'd work and then I'd go home. And then I'd come in the next day and somebody would say, well, you know, I went home and I had dinner
Starting point is 01:28:12 and then spent a half an hour with my wife. And then, you know, I coded until 2 a.m. and I made this. And they would do that like every day. It was just like they'd get up in the morning, they'd come to Cisco, they'd code at the office, then they'd go home and then they'd, you know, eat. And then they'd code until they fell asleep. And those weren't even make projects.
Starting point is 01:28:30 That was just work. We're just working on it. And it was a big company. It wasn't a startup. It wasn't like, oh, my God, if we don't get this done, we're all going to be looking for new jobs. And that's a kind of passion that I respect, but I just couldn't make sense of it. Yeah. And the other thing, too, is like when I work at a place and I'm working on a project, I think about it probably an unhealthy amount. Yeah.
Starting point is 01:28:55 Like, that's like, again, on my train commutes, I would solve a lot of problems on the train because I had a laptop, but I just wouldn't open it. I would stare and I'd be reading something or looking out the window i'm like ah that's how we're gonna do that you mean actually thinking about a problem it happens sometimes instead of just typing on it yeah that works um but like at my current gig i i go home and i'm still thinking about okay how can we make all this better how can we make it all work and i i think about all the time so and so you can do a lot of stuff without fingers to keyboard yeah and i think the making parts of it you can do a lot without fingers to keyboard there too yeah and you don't have to build things yes you can just think up something and then make somebody else do it that's you become a tech lead or a manager hey i had this
Starting point is 01:29:42 idea last night in the shower i I think you should implement it. Open offices are the great lie of our century, of our time. I think that's for another show.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.