Embedded - 260: We Talked a Lot

Episode Date: September 14, 2018

Christopher (@stoneymonster) and Elecia (@logicalelegance) talks about vacations for learning and hobbies then answered listener questions. Chris’ toys include the Prusa I3 Mk3 and the UAD Arrow.... Elecia likes Camille Fournier’s book, The Manager’s Path. She also got to plug her own book, Making Embedded Systems: Design Patterns for Great Software.   Pacific spiny lumpsucker (Eumicrotremus orbis) at the Seymour Science Center

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to Embedded. I am Elysia White, here with Christopher White. And it's just us this week. We're going to talk about vacations, books, and listener questions. Sounds exciting. So let's start with vacations. Okay. I hear you had one recently.
Starting point is 00:00:24 Sort of. Sort of you had one recently. Sort of. Sort of a half a vacation. Well, I gave you my cold. What more do you want from me? And some rodents. Oh, yeah. Okay, so what were the good parts of your vacation?
Starting point is 00:00:40 So I wanted to work on some projects. Yes. The list was long. Well, I tried to keep it manageable. Yeah so i bought a 3d printer yes and what kind of 3d printer was it well i had had the el cheapo uh monoprice monoprice mini select two i think or maybe it was maybe it was a two and we'd played with that for a little while and it worked for a couple of prints and then it just started not working very well. And I'm, you know, 50% certain the problem was me and I just don't know how to,
Starting point is 00:01:15 didn't know how to baby it properly. And then you gave it to me and like none, nothing worked for me. So I think it, I think it was just, it's, it's an okay printer. I think if you're willing to fight with a lot of things that could make your prints go wrong and i decided there were a lot of things i wanted to print um for like synth stuff and parts and airplane stuff uh and and just learn also how to design things um that okay that, okay, I wanted a real 3d printer, not that the other one's not real, less real than others.
Starting point is 00:01:50 Um, so I got the Prusa I three mark three, which is the new version of the Prusa printer. Um, which I'd, I'd looked around for almost a year or two trying to decide if I was going to get another one. And I looked at some of the other ones. There was the Taz Mini, I think, and some others.
Starting point is 00:02:14 And they're pretty expensive. So after reading around and looking at the Prusa and seeing what people did with it and the features it had, it seemed like it kind of struck the right price functionality and quality sweet spot. And it was around, I think it was around $800 for the kit, which is still expensive, but the Mini Select i3 was $200. And after you've bought three of them, because they keep failing,
Starting point is 00:02:43 that didn't happen. So anyway, yeah, so bought that and got the kit and it took me what do you think two solid days maybe two and a half solid days two and a half or three uh to build it it was sort of challenging it was interesting he kept saying do you think this uh this motor's right and i look at it like, I haven't read any of what you've read. I have no idea. And then he would turn it around and he'd rock it for a little while until I thought maybe he was treating it like a baby. And then he'd turn it around again and he'd rock it a little while.
Starting point is 00:03:18 Well, there was a leveling step early on where you had to make sure it was flat. And if you failed, you had to rebuild it all. There's not a lot of actual flat surfaces in someone's house yeah i try table and like well if i turn it a different way it doesn't rock the same way so the table can't be flat and i tried a different table and it would act different uh finally we found a we had a piece of stone it's a pastry marble yeah so that was reasonably flat so um's 750 kit, 1,000 assembled US. So some of the cool things about it that really made me want it over some of the others is bed leveling was such an annoyance on the Mini Select 2. You have to, there were thumb screws, and you had to add a piece of paper, and it was really a pain.
Starting point is 00:04:03 This does the bed leveling before we print automatically, and it can handle all kinds of warping of the bed. So it takes nine points and then creates a grid that's warpable. The bed itself is magnetically attached, so you can just pull it off when the print is done and twist it to free the print or replace it really easily. So if you want to change surfaces or have a whole range of surfaces, that's pretty easy to do. It has a bunch of other safety stuff, like it has a little, I think it's a little mouse sensor, actually,
Starting point is 00:04:32 that they used, that where the... Optical sensor? Mm-hmm. Okay. Where the filament goes into the extruder, and so it can see that the filament's moving, or if it's jammed or stopped,
Starting point is 00:04:42 and tell you there's a problem. It can auto-load and unload the filament. So it's jammed or stopped and tell you there's a problem it can auto load and unload the filament so it's just got a lot of nice it takes care of a lot of the stuff that could go wrong for you there's still some calibration you have to do but it's way easier than some of the more manual ones so anyway we've done several prints um and they've all come out except the ones that i've kind of been the first ones that I've designed that I'm breaking the rules and don't really understand certain things about how to make objects for 3D printing actually printable. Well, let's see, you printed the frog off of the SD card. That was cute.
Starting point is 00:05:17 And then you printed me a 3D coordinate frame for robotics from Thingiverse. Wasn't there something else from Thingiverse? Yeah, the butterfly. Oh, a reticulated butterfly. Because I'm just fascinated by the idea that you can have hinges and gears printed in place. That was neat. And then you started to build some of your own ideas. What were you using to build them? I tried a bunch of things. So,
Starting point is 00:05:47 just Tinkercad, which is, I think, from Autodesk. Is that what you did the bowl with? It's just a web-based, no. Okay.
Starting point is 00:05:55 I don't remember which. I did the bowl. No, I did the bowl with Fusion 360. Okay. So, Tinkercad. Tinkercad,
Starting point is 00:06:03 which is like a baby version of Fusion on the web, which you can do a lot with. Started with that, played around with that, and then played with Fusion 360 and ended up finally realizing that, okay, there's something to watching YouTube videos. Every time I start with these, I just want to read something and it's i know and so i found some youtube videos for fusion 360 for the kind of thing i wanted to build so instead of saying okay i'm going to do the fusion 360 tutorial from the beginning which i tried for a few minutes and i was like but i don't care i want to build the thing i want to build so i kind of looked on youtube for the object closest to the thing i want to build. So I kind of looked on YouTube for the object closest to the thing I wanted to build and found some videos of tutorials of how to do that. And it turns out they were basic enough that it was pretty simple to kind of pick up enough 360 while watching this and be able
Starting point is 00:06:58 to modify it to what I wanted. So it was just a bowl for holding a plant in a larger pot. But I made some special designs on it. And that didn't end up printing properly because I think I had a lot of overhangs that were just not possible. Well, the first one printed fine because it was a solid bowl. It was just too small because we'd measured it wrong. Right, right, right, right. And then you didn't want it to take forever to print. So you opened it up in like this pretty spiral pattern but then that had overhangs and didn't quite attach and then you printed it upside down
Starting point is 00:07:33 no I modified it and then printed it upside down and it mostly came out so there's a lot of it's hard because you're not just learning the program, the CAD program you're also learning well it doesn't matter how capable I am of designing something that looks the program the cad program you're also learning well it doesn't matter how capable i am of designing something that looks nice in the cad program it may not
Starting point is 00:07:50 be printable on any printer it's not just this particular printer can't do it it's for any kind of um filament based printer it's they can't do certain things. It's funny. In electronics, when you're making a board, you do all your schematic and you do your Gerbers, and then whatever manufacturer you're going to go to, they have design rules. Yes. You essentially need the design rules for this printer, and it should whine at you when you have sliced something it can't make.
Starting point is 00:08:24 Some of the slicers, so the slicer that comes with the printer is a very, you know, it's a common slicer program that they've put the right printers in. What's a slicer program? A slicer program takes the CAD model and turns it into layers. So as the 3D printer deposits layers of plastic, you know, it does one at a time on top of each other. So the 3D, the slicer takes the 3D model and generates layers out of that, and then it generates the movements of the extruder head. And so if you had, like, a mug you were making,
Starting point is 00:09:03 and you get to the part where the mug handle goes out. Yeah. The slicer at that point has just been printing circles. Yeah. And then now it needs to print a circle with a bar on it, which is where the mug handle is going to go out. Yeah. But in physics, in the real world, there's nothing holding up the mug handle. And that can be bad because this is hot plastic attaching hot plastic and so it slumps. Yeah. It turns out there
Starting point is 00:09:36 is something holding it up and that's the previous layer. You can have some overlap and the general rule seems to be 45 degrees so you can have something unsupported going up at a 45 degree angle because there's enough of the previous layers plastic to just come over halfway and then print another okay so you can cantilever you can cantilever things but certain printers are better than others certain uh resolutions are better than others so it's tricky to figure out exactly what works. If your slicer was slicing very thin, it would be easier than if your slicer was making big steps.
Starting point is 00:10:11 Yeah. Okay. And there's actually prints you can get on Thingiverse that just test this, and it just goes to increasing levels of cantileveredness until it fails. And then you pick it up off the printer and say, okay, my printer can go to 60 degrees under these conditions. So anyway, there's stuff like that it's um it's tricky and then i i don't know why but i decided okay fusion 360 oh it was kind of annoying i had a lot of crashes with it yeah you were complaining
Starting point is 00:10:38 about a lot of crashes and not just crashes but just hangs. Like it would beach ball and just sit there for minutes at a time after doing what I thought were simple operations. So I thought, well, maybe I want to look at some other things. And I picked up Blender, which a lot of people use. And I didn't realize how powerful it was for 3D printing stuff. This was super confusing to me because I've just started using Blender in a client project. And there's Chris learning it.
Starting point is 00:11:06 And I'm sitting here going, hmm, I should be learning that too. Or I can just run it. And it was weird, but you, okay, Blender. Well, I saw that people were using it for regular CAD stuff, like making mechanical parts and drawings, just like they were in 360 so uh figured okay the blenders blenders free free it's been interesting in the past to me i think i tried to learn it like five or six or seven years ago for games or something yeah around the time we were playing
Starting point is 00:11:35 with unity no way longer than that okay unity was last year oh my god two years ago um and i think those first versions were just inscrutable. And this was the days before YouTube was like the tutorial haven. So I gave up really quickly on that. But yeah, I decided, okay, this time I'll pick a tutorial and actually go through it. So I spent some time with that. And it was not as bad to get proficient with Blender as it was before. It's still a weird program, a lot of weird choices.
Starting point is 00:12:10 The UI is extremely overstuffed and there's a lot of keyboard shortcuts and things. So it's kind of the, I don't know, it's kind of the Unix of... It's the VI. Yeah, it's not quite as bad, but it's sort of VI of the CAD programs. Or the other ones kind of lead you by the hand. Oh, you would like to do this. Well, that's in a drop-down menu.
Starting point is 00:12:31 So, yeah, so going through that. And I ended up, I haven't done any 3D printing stuff out of that, I think. I can't remember. You started to print that donut thing you made. No, I didn't. Oh, I thought you at least sliced it oh yeah yeah no no i did so one of the tutorials has you make this 3d scene which is all nicely rendered of a donut and a cup of coffee with sprinkles and stuff uh and as part of it the
Starting point is 00:12:57 tutorial shows you how you can apply some of the warps and stuff so i took a warp and applied it to the donut and made it this kind of abstract arch thing. And I said, oh, let's try to print that. It didn't print, but it had lots of overhangs and stuff. Probably at a different angle it would print. So I could try that at some point. Yeah, I spent some time with that. It was nice to just kind of do something completely non-work related with computers for once and not feel like,
Starting point is 00:13:26 you know, well, I've already spent several hours with the computer today. I'm done with it. well, you also spent a lot of time with computer and your guitar. Yes. Yeah. I've been working on the second cover song,
Starting point is 00:13:39 which is coming along. Almost done. They were supposed to come out monthly. That was dumb. You know how, how it works with schedules well i don't well maybe if you hadn't chosen an impossible song well no i took a lot of time off too so i wasn't feeling great and uh i did other things and couldn't get into it so because it was an impossible song it's not that impossible and I basically started over on vacation. So I've spent a few days.
Starting point is 00:14:08 Having learned the song. Okay, yes, the guitar was hard. And I've learned the guitar now. Yeah, because you weren't a guitar player before. No. Okay. I just want to point out, what was the gadget you got that you liked so much that let you play on the couch? Oh, so that's
Starting point is 00:14:26 an audio interface. It's from Universal Audio. Basically, an audio interface is something that takes a guitar input or a mic input and then converts the signals into digital and puts them in your computer into the software.
Starting point is 00:14:44 There's a huge wide range of how capable or how expensive they are. Some of the things that are good about good ones are they have good analog circuitry, so they sound really nice doing the conversion. Some have other features. Lots of inputs, for example. This only has two inputs. I wanted something that I could work outside my studio, like working on guitar to sit on the couch or outside. Um, so this is one of the few that's bus powered. So it's USB-C and, or Thunderbolt
Starting point is 00:15:15 three, but USB-C connector. Um, and it, the computer powers it completely, even though it's got amplifiers in it. Um, so that's really nice and it's pretty compact and it's also got a dsp in it so it does some does some special stuff uh to emulate analog gear uh it's a uad arrow so yeah that kind of guilted me into working harder once i bought it i had to use it so well you did seem to enjoy being able to be wherever you were to to do stuff instead of having to be in your basement laboratory it's okay in the basement laboratory it's just it hadn't it hasn't been sunny for a long time so so foggy it's hard to be in the basement where the sunshine does come in if it's sunny, but does not if it's not sunny. It gets cold down here.
Starting point is 00:16:10 And it gets cold. So, yeah, I bought myself some presents for vacation. It was vacation presents. Staycation presents. Staycation presents. Oh, let's see. And we had big plans to go places but then i got sick so we didn't do much we saw a weird play we went up to pacifica and saw a pretty ocean and
Starting point is 00:16:34 oh we went to the seymour science center yes the santa cruz thing um it's a small aquarium and science center and there are a bunch of bike paths and it'd be nice to hike there and it was just really ridiculous because we went on like a wednesday afternoon and we were the only ones there it was like us and all of the docents the docents kept throwing facts at us except you never want to play marine biology facts with me. Because I love marine biology, and I read about it all the time, and I cannot identify the difference between a moon jelly and a sea nettle. Of course I can.
Starting point is 00:17:18 But there were the spiny lump suckers. Yes, the Pacific spiny lump suckers. Those were new to me. They looked hilarious. They're like Simpsons cartoons ofers. Yes, the Pacific spiny lump suckers. Those were new to me. They looked hilarious. They're like Simpsons cartoons of fish. Yes. They're perfectly spherical. And they have like a giant sucker on the bottom.
Starting point is 00:17:36 And they just bounce off rock to rock. Hover bounce. Yeah, it isn't swimming. They're like three millimeters wide. And they're like a couple inches around. So they look ridiculous. There'll be a picture in the show notes, because they were super ridiculous. This has nothing to do with embedded computing.
Starting point is 00:17:52 Oh, it was your vacation. For Christopher's vacation, I mostly worked. And then you were sick. And then I was pretty sick, yes. So, yeah. It was fun. The mostly worked was for like three days. Really?
Starting point is 00:18:07 Yeah. Well, no, because towards the end, I started working again. Okay. Yeah, because I built some hours last week. I also read The Manager's Path, a book by Camille Fournier. And it was kind of cool. It's about, she was a technical manager. She was a, she was an engineer. And then she became a manager, and then she became a director, and then she became a CTO. And a lot of people want to know, how do you go about this path? What do you need to know to stop being an engineer and start being a manager? The funny
Starting point is 00:18:55 thing is that she starts from a point of, you're an engineer and what do you do? How do you mentor people? How do you become a tech lead? What should you expect from your manager and how do you help them support you in your career? It is the book I wish I had had because HP rushed me into management. I wasn't ready. They gave me nice classes, but I was... Wait, you were a manager at HP? Well, they kept trying.
Starting point is 00:19:31 Oh, okay. And then I kept leaving that group until I went to labs, which they stopped that there. It just, I really wish I'd had it because it answered so many of my questions about, is my manager ignoring me? Why is my manager ignoring me? you expect and how to deal with your drive to micromanage people. It was good stuff. I mean, I don't always like the manager books. I don't even usually read the manager books because, I don't know, I've done that. I don't know what they're going to tell me. But I ended up highlighting a lot of stuff, not necessarily because it was new to me, but because she said it in ways that I just wish I had said it that way,
Starting point is 00:20:37 or that I wanted to make sure I kept because I knew it was advice I would want to pass on. There was one thing that I picked out today. And from managing a team in that section, it's valuable for everyone to realize that they can and should focus on the things they can impact and change and ignore the things they can't. Drama in the workplace is usually little more than ego-entertaining drain. I just, I mean, I have felt that way. But how do you express to someone that that's what you think is happening and that you don't want to participate? There were lots of things like that.
Starting point is 00:21:18 So, yeah, anybody out there who's like, well, how do I become a manager? Or am I doing this right? She had really good advice, really concrete and tactical advice. And it was pretty modern, right? So she talks about Agile and stuff in there. Yeah, but it's not an Agile book. Right, right. When she talked about some of the problems, I thought. She talked about Agile. Or things that could be problems.
Starting point is 00:21:41 From a managerial perspective. and I suspect some agile people, as with any agile implementation, will say, you're not doing it right. But her position, if I recall correctly, was that agile is great for a tactical, everyday sort of thing. But that doesn't mean that as a manager, you give up your responsibility for long-term planning. You still need to set a direction. And that direction then is fulfilled with smaller tasks, which means that you need to be able to break up tasks or to help your engineers learn how to break up tasks themselves. And so it was a big, yeah, Agile is fine and great and all of that, but it doesn't stop direction planning. It doesn't stop planning.
Starting point is 00:22:34 This is still something we have to do. Waterfall has a planning step and Agile doesn't. That doesn't mean you can't look ahead. So, yeah, but it wasn't Agile specific. What I'm saying was it's not like people wear something that's 30 years old
Starting point is 00:22:53 and, you know, written in a context that's no longer necessarily the way a modern company tries to work or says they work. It's true. I mean, reading people were super depressing because they said all the things that we wish were happening now, like don't work in open offices.
Starting point is 00:23:12 Yeah. But I also like the fact that she was very specific about engineers, software engineers, and that that is a different path to go through than managing through other teams. Okay, so listener questions? Sure. I guess the first one's pretty related from Peter. And he started his career in 2013.
Starting point is 00:23:43 Says nice things about the podcast. Thank you. Started a job as an embedded software developer and wants to go into a project management role. He's excited. He's educating himself on the topic of project management, software project management. But what about embedded project management? He's already been through Peopleware. He's currently reading The Manager's Path. Yay! And also has The Mythical Man Month in his pipeline.
Starting point is 00:24:15 But none of these deal with the problems of embedded software because how do you deal with hardware? And how do you deal with Agile as it applies to embedded systems? How do you make a sprint for writing a driver for a spy on an IC if there's a bug in the MCU's spy and the errata is updated only after you have figured out the problem? Or you make a prototype and suddenly the MCU is no longer in stock. How do you be a manager for these kinds of things? Glib quick answer is you adapt. Yeah.
Starting point is 00:24:56 Pretty much everywhere is trying agile now once you're above two or three people. So I think you're likely to have to figure out how to make project management work within the context of agile and embedded systems. This is something I'm pretty familiar with, and I don't have good answers, just that we kind of muddle through.
Starting point is 00:25:22 There's a great deal of the software that is not subject to these kinds of problems. Once you get the project going, once the hardware is finalized, once you have prototypes or something that you're building the firmware against, the kinds of problems he's talking about should be outliers, things that happen half a dozen times in the course of a project or less, right? They can be schedule killers. Well, yes, they can be. And that requires some of the planning up front to kind of recognize things that might be potential schedule killers and have backup plans.
Starting point is 00:26:01 And this all goes to planning. We've had things like that where, yeah, and I was just thinking about this today in the context of Agile. What do you do? You've got this whole thing with a complicated board with many chips from different vendors. Vendors don't necessarily, they're not involved in your process. They're not involved in your Agile agile they don't care about your planning except you know to hit the dates that you tell them to produce a new revision or such or that you know we need production by a certain day uh so what do you do if you've got something you just can't figure out and test-driven development isn't going to help you if you
Starting point is 00:26:43 know you have a bus issue, right? Where you just don't know what's physically happening between the CPU, your software, and some peripheral that you buy from somebody else, where timing is just weird, something's not right, and maybe there's 50 parameters that drive it. I defy anyone to tell me how to apply test-driven development to solve this problem because you're not in control of everything. You can't make a mock of an accurate display bus, for example. So these are the kinds of things you just kind of have to expect to happen. In this particular case,
Starting point is 00:27:25 it took several months to figure out what was wrong going back and forth with the vendor and a bus analyzer. And there are often extremely hard problems that you cannot plan for. And so in some ways, you have to expect the unexpected. And you can't let the process be so cranked down that those things will destroy you. And it's like any electronics project where you're making a custom chip, for example. You always put in the schedule for a re-spin, unless you're insane. Well, indeed.
Starting point is 00:27:59 I've worked for insane companies where they didn't do that, but you always say, well, we're going to get the stuff back back but we're going to have to do a respin so you have to we're going to pad the schedule by that much um yeah you get the engineering prototype you get the production prototype you get the first articles and then you finally ship But those are all hardware and software and mechanical cycles. They don't, you don't say, well, here's my hardware, here's my minimum viable software, and let's ship that as soon as it's done. You have to have a proof of concept or prototype to start with, because if you don't, the risk
Starting point is 00:28:44 in your schedule is such that it may not ever happen it may not be possible yeah well i think that gets me sometimes is the idea that well if we just divide this into small enough steps an unknowable thing becomes solvable right if we divide this into small enough steps then us not being able to figure out how to get this bus to communicate properly well you can't there's there's at a certain point some problems are not divisible you can't say okay we're doing agile so every problem needs to fit in a sprint and preferably half a sprint so you can get more than one done okay but taking the bus analyzing problem again that took three months of just fighting and taking
Starting point is 00:29:35 results and seeing what the bus did you're not dividing that's not subdiv it's not divisible so how do you account for that you can't so somebody goes outside of agile for a while to go solve that problem is what happens and that problem like many of these other problems that are unknowable are the interdisciplinary issues yeah is that the right word yeah yeah where you have hardware and software integration and you have physics and you have mechanical and you have acquisitions where you have to buy things. And one reason to make a prototype is to test all of these people can work together and learn to communicate. As well as the need for having prototype hardware and prototype software and prototype mechanicals.
Starting point is 00:30:27 They may not all work together. I mean, a lot of times the mechanical people will make a looks like or a works like without making an actual fits on the prototype hardware. But the idea with the project management for embedded systems is you need to have those extra integration cycles to discover the interdisciplinary issues. It's not a software
Starting point is 00:30:54 problem. He's got a couple specific questions here, too. Like, how can you make a sprint for writing a driver for a SPI IC if there's a potential for a bug in the MCU's SPI and the errata is updated after a few months? Well, for SPI IC, your driver, if you's a potential for a bug in the MCU, spy and the errata is updated after a few months. Well, for a SpyIC driver, if you're architecting it correctly, you're going to have some abstraction.
Starting point is 00:31:11 So you should be able to write the bulk of it without the MCU involved. So you can certainly plan for and do the agile process around the parts of that that are not tweaky and dependent upon an errata for an mcu i don't think that particular example blows up agile because if there's an errata for the mcu something doesn't work then okay that's a new bug you go plan that and fix that but like your bus issue you don't know where the bug is yeah but yeah I guess. Yeah, but... Yeah.
Starting point is 00:31:48 Yeah, that's probably a similar example. I just... I think there's... And for the bus issue, we had a display driver that was mostly finished. So I guess that was done with. I guess what I'm saying is you can still do Agile for the... You can't...
Starting point is 00:31:59 You shouldn't just throw it out because these potential issues exist. Because the bulk of the work you're going to be doing is not constantly being you know blown up by intractable problems with vendors you know going back to the manager's path uh she suggested that almost all projects have 20 percent in system improvement i don't remember what she said. It wasn't refactoring, but it was paying back your technical debt. Yeah. And embedded systems, I think, maybe needs another percent that is anticipating integration issues.
Starting point is 00:32:39 Yeah, integration has been my hobby horse for decades now because I've been on tons of projects where it's just not planned for. It's like, okay, we write the software and the hardware comes back, and then the next week, everything's working, right? If only. And the other question he has is, you make a prototype and suddenly the MCU is out of stock. Well, don't do that. Try to talk to the vendor.
Starting point is 00:33:09 You're kidding. I mean, you make a prototype, the MCU is out of stock, and then you go to production. That's a mistake of procurement. Exactly. And it's a mistake of choosing your MCU. Ideally, you choose an MCU that's in the middle of a family if you can. And then you have the option to go up or down in the family later in the development process. And you should be checking the MCU stocks when you do your prototype, if you're betting the company on it.
Starting point is 00:33:41 You should be talking to the vendors if you're going to buy more than $10,000, maybe even less. And you just... There is no band-aid. It's time, and time is money. And schedule... There's no software methodology that applies to project management.
Starting point is 00:34:01 That's actually... Yes. I mean, we are talking about sort of different things. And I think Agile kind of tries to bleed into project management. God, that always cracks me up. Agile was and always is, and people are going to yell at me maybe, a software development methodology, right? For the most part. So despite the fact that it's kind of bleeding into how projects are managed
Starting point is 00:34:25 i think that's a mistake and i think you can compartmentalize things such that the project management is dovetailed with the software development and but they don't necessarily operate under the same principles but yeah you're gonna have to adapt we've all been doing this stuff forever and nothing ever works right but it does usually eventually work does it my stuff does i say that my project's currently in parts all across my desk it does work but it's the same problem over and over again. Management is desperate to have something out by a certain date. The date is too aggressive.
Starting point is 00:35:11 It can't be done. And everybody else tries to scramble to make that happen. And if you're lucky, it happens three months later. It's about time and money and features and having only one of those, two of those maybe. Yeah, yeah. Okay, so let's go. But we don't have any resources to point him at. I don't have any resources to point him at.
Starting point is 00:35:37 I pointed him a little bit at my book because I have a chapter where I kind of discuss the integration issues. But then when I looked, it was barely a section. So that was not that great. Well, since we're on the topic of my book, we got an email from Tyler, hardware guy taking a Udacity course on software design processes. They mentioned design patterns, and he thinks of them mainly for non-embedded systems question for us do you all use design patterns if so which ones do you see the most any resources for a hardware guy trying to learn the ropes of design patterns with special regards to the
Starting point is 00:36:18 embedded world i do not sign patterns tend to be associated with object-oriented programming. I don't see a lot of C people talking about design patterns explicitly. I know you're booked it, so we'll get to that. It's the subtitle of my book. I'm not saying that you shouldn't. I'm not saying your book doesn't talk about this stuff. I'm saying the people I talk to, the work I'm doing, it does not come up explicitly. It comes up explicitly occasionally for me. A subscriber, publisher. Sure. Okay. Okay.
Starting point is 00:37:02 That's right. Yeah. Source and syncs. Okay. Okay. That's right. Yeah. Source and sinks. Okay. And some of the buffering things that we just take for granted now. I guess it's possible that they've just become so subsumed into the fabric of how we do things. We don't talk about them as explicitly designed patterns. I think that that's what happens.
Starting point is 00:37:27 I think that the thing that was most important about design patterns, about software design patterns, was the idea that there are common problems seen across different things. And there can be canonical solutions that we don't have to rediscover each time. And that was one of the reasons that it was part of my book. It wasn't like the whole book was, here's one pattern, here's another pattern. It was just where it was appropriate,
Starting point is 00:37:59 I made sure to point out this was a design pattern because it's important to talk about the commonality between software, between embedded software, web software, C++ software. We should stop inventing the wheel. And if you're interested in design patterns and you have tried the Gang of Four book, I have to say I liked the headfirst book quite a lot better just because it was easier to read. I mean, it's longer and it's fluffier,
Starting point is 00:38:35 but in the end, you come away with a lot of the same information. I'm finding I'm doing some app work now. And it's weird coming from pure old stylestyle C embedded because design patterns are talked about just so explicitly all the time in app and web stuff. There's whole frameworks devoted to particular design patterns,
Starting point is 00:38:57 like the React framework, I think, is all about the observer design pattern. That's it. It's a framework about, correct me if I'm wrong, people, but from my limited work with this, these things keep popping up. It's like, oh, this is a factory thing, and this is this, and it's just so explicit.
Starting point is 00:39:16 And that seemed to take hold in that world almost as soon as those things kind of were written about. And it hasn't filtered down to embed it that much in an explicit way. Yeah, we don't talk about decorators. I know in my book, I actually talked about flyweight because it's a really good way to do bitmap systems. But I've never called it that.
Starting point is 00:39:49 And I've seen lots of other people use the same bitmap system. Nobody ever calls it that. There's model view controller. Sometimes you see that in embedded systems. Yeah. Because you want to separate your view from your algorithm. That's going to get it eventually. Yeah, schedulers, thread pools, read-write locks,
Starting point is 00:40:16 there are just a ton of these. But I am maybe not as up to the date as I was before, and I'm kind of bummed because I really do think that this is a way of cheating at developing. It doesn't help you. It's not cheating. Well, no, it's a way of getting better at developing. It's expanding our language of things that we do commonly.
Starting point is 00:40:41 Yeah. Because design patterns, I mean, they're patterns. They're things that occur repeatedly without us trying to right so like i don't know a circular buffer and and implementing that as part of your uart um that's a design pattern that comes up over and over and over again nobody called a design pattern until maybe your book. But I don't think anybody's gone kind of retroactively throughout
Starting point is 00:41:10 embedded systems and said, okay, well let's look... let's make a formalism around this, like the Gang of Four did. Yeah. So I think that's what's missing. It doesn't mean the design patterns don't exist. The design patterns exist with or without us giving them names or formalizing them.
Starting point is 00:41:30 Well, an iterator is one of them, and that's something we talk about. Yes, but that's usually associated with parts of languages that have iterators built into them. I mean, C does not, unless you count a for loop which is not an iterator it is a it's a conditional one of you iterator it's a flow flow control a program flow thing so yeah i guess we don't get as many design patterns because they're not built into the language they're not built into the language and we have other things we have to learn like maybe if you did software 100% of the time and you didn't have to read the data sheets for everything you have to deal with you'd have more time to read a computer science book to give you these names I don't know and there are
Starting point is 00:42:19 debugging patterns now and architectural patterns and all the things that, I mean, they've tried to make that go further, but the design patterns themselves are pretty good. I did enjoy reading that headfirst book. And if you are doing embedded systems and you are unaware that I have a book, I do. It's called Making Embedded Systems. That's just so I can say, I wrote the book on making embedded systems. Which I really try not to say because every time I say it, I crack up afterwards.
Starting point is 00:42:55 Okay, how about the question from Danny? I'm a college student majoring in EECS. I first got into embedded programming because of its applications, robotics, automotive, yay. And I'm really interested in a lot of other theoretical topics in such areas as control, signal processing, and computer vision. However, I'm starting to become concerned that if I pursue a career in embedded systems, I'll spend time implementing other people's math and not do any of my own analysis. My question for you as people with good understanding of the opportunities for people with embedded software skills in industry, do jobs exist that involve both of these aspects. I'd really like a career where I can think about interesting mathy questions, but also enjoy implementing and testing code on real devices.
Starting point is 00:43:51 Absolutely. 100%. And if you have those skills, people will seek you out and you will find the jobs, but they're not going to be at places like Facebook. They're not going to be at giant companies. Not likely to be at places like facebook they're not going to be giant companies not likely to be they're going to be at medical device companies if you want to do serious signal processing stuff what i'm thinking about is like one of the founders comes with you comes to you with an
Starting point is 00:44:19 academic paper it says we want to we want to implement. And it's full of physics and math. And you're one of the few developers there. There's nobody there to help you translate that physics and math into code. Those kinds of opportunities are likely to happen in smaller companies. Yeah, I guess... They're going to hire PhDs for the other stuff, for the most giant companies. They're going to have whole research groups that are off in a corner in a dark room, and they'll hand you some MATLAB or some badly written C that you have to fix.
Starting point is 00:44:51 And that's not what TANI wants to be doing. Yeah, and I see where you're going with this, and I keep going back to, well, at HP Labs, I got to do all of that. But that was kind of a special situation there are big companies that will have you do a job and help you cross train yeah but i don't feel like those are there are also big companies that will tell you you can do that and then you're a cog for 10 years yeah um a lot of the startups i work with i do get the opportunity to do more controls and signal processing. And lately, even computer vision and machine learning. So I think absolutely yes.
Starting point is 00:45:31 If you can understand the algorithms, you can do mathy things, you will be able to do mathy things. But you may have to go to smaller companies for it. Because they can't hire two people. Yeah, that's kind of where I was headed. They might have one PhD who's like the kind of founder or the CTO kind of person. And then they need a team of engineers. And that person's not necessarily going to be able to spend a ton of time
Starting point is 00:45:59 doing implementation or even be capable of it. So they might just have a great idea and a paper, something that came out of their thesis or their university work. Now they're building a company around it, and they need somebody to implement it and be able to talk to them. That's the other thing is having engineers who are able to talk to the researchers and understand what's going on, that's a big deal. And if you get a job or two where you've done that well,
Starting point is 00:46:27 you'll become indispensable, I think. Yeah, and many of my favorite jobs have been a super smart PhD whose code looks about like what you don't want and who can talk to me. And because they can talk to me, I can write their code for them. And it's not like I'm not implementing my own algorithms because they're talking with me, not just demanding things. And then, I mean, sometimes that leads to being a co-author on a paper
Starting point is 00:47:01 because you point out something they didn't expect. And it's really a discussion. If you find people like that, follow them. They're great. The other kinds of jobs that you might find are things like the HP Labs kind of companies. Xerox, Parks, they'll be hard to get into maybe, but I'm trying to think, uh, even universities sometimes have, uh, research teams that, that hire people, right? Yeah. Um,
Starting point is 00:47:35 Slack, things like that. Um, how come you made fun of Facebook, but not Slack? Slack without a K. Oh, Stanford, Stanford linear accelerator. Yeah, yeah, yeah. Slack does not do any research except on how to consume more and more RAM. So, no, I think there are a lot of jobs out there, but it's going to be a little bit, you're going to
Starting point is 00:48:00 have to be picky and choosy, which coming straight out of school, you might find yourself accepting whatever you get first and then making sure you keep up your skills. Maybe through grad school. Yeah. I would say I don't necessarily want to encourage somebody to go to grad school because that's just mean and awful but um the your ability to your ability to
Starting point is 00:48:27 interface with the researchers and actually turn papers into code will be increased greatly by getting a master's degree and that's the other way to go about this if you enjoy the deep, mathy, technical algorithms, the theories. If you decide to go that path, if you decide to go the path of an academic or a more theoretical person, nobody on that path is going to tell you, no, you can't also play with hardware. The person in the lab who understands both the theory and can fix the hardware, that's going to be a pretty valuable person. But it's going to be in a lab. So it depends on which aspect you want to go, either as an engineer who has a little bit of extra or as an academic who also has a different bit of extra. But I think it's extra either way.
Starting point is 00:49:25 So good job. Keep going. Do you think we answered Danny's question? We talked a lot. That's all we really need. Okay, one more question-ish thing. So Lady M wrote in and says that she's really interested to build her own CubeSat or TubeSat from scratch. Wanted recommendations on resources, groups of like-minded people, competitions to take part of. Not part of a school. So what can non-students do to
Starting point is 00:50:09 explore more embedded design and real-time systems in space applications? I do not know. I didn't either. So I emailed Stuart McAndrew. That was a good choice. Stuart's a listener and we've talked a few times and I knew that he was working on a satellite himself. And so I decided, why am I trying to answer this question? I have no idea how to answer. And Stuart had some ideas.
Starting point is 00:50:41 First, Stuart suggested not tube sat. Tube sat? Well, there's cube sats and tube sats. Okay. Which just seems like a naming issue. Yeah, it's a little strange. And Stuart says not being a student makes it a lot harder. Yeah.
Starting point is 00:51:01 One of my suggestions there was, well, you can still learn a lot by mentoring students. Some high schools are doing satellites these days. Yeah, that's true. And you can have a lot to offer them, even if it's just encouragement and reading the manuals when they're done. Pocket Cube is a Pico satellite, a non-educational entity. If you actually want to try to get into space, the pocket cubes are cheaper than CubeSats, but still more expensive than the free ride educational CubeSats get.
Starting point is 00:51:39 So you can look at the pocket cubes. There are some public information forums about that for military and civil. Yeah. But the problem that Stuart had is that the question was too broad. It's, it's like asking, how do I get a job at embedded systems? Simplified answer is to learn stuff and do stuff.
Starting point is 00:52:06 But how do you get to the point where someone will pay you? And figuring out what to focus on, do you want to do fault-tolerant processing and FPGA? Machine learning for Earth observation, software-defined radio. Space is cool because it's hard and neat and awesome but it's still got most of the issues that terrestrial processing has too
Starting point is 00:52:35 You know what, I'd just make an undersea rover So Stuart's main advice was to figure out a specific goal. Yeah. And once you have that, then you might be better off. Yeah, because really, I want to build a computer that goes into space. It's pretty broad.
Starting point is 00:52:54 It is. But there are resources out there. I mean, CubeSat has a big following, and looking for stuff on that is helpful. I still say if you can find an educational facility to participate with, you're better off. Yeah. Well, that's it for the outline. All right, then. Let's see.
Starting point is 00:53:16 I didn't even write in thank you. Let's see. Thank you to Christopher for... Nothing. Everything. And for co-hosting and co-producing this show. I've been demoted to co-producer? I'm joking. No, I'm sorry. For hosting and producing this show.
Starting point is 00:53:39 You're executive producer. I'm producer, producer. I don't think I'm executive producer. I never okay at going. They get the big title. Yeah, but I don't have to do any of the work. Right, that's how it is. Oh, then that's fine. You do most of the work.
Starting point is 00:53:56 Thank you for listening. Thank you to our Patreon subscribers and Slack members, because that's been amusing. And thank you to the weather for finally clearing. It's finally summer here in Santa Cruz. And there are whales.
Starting point is 00:54:17 So, Winnie the Pooh? You've got the book. I've got the book. Is that the end of the story? Asked Christopher Robin. That's the end of that one. There are others. About Pooh and me?
Starting point is 00:54:35 And Piglet and Rabbit and all of you, don't you remember? I do remember. And then, when I try to remember, I forget. That day when Pooh and Piglet tried to catch the Heffalump. They didn't catch it, did they? No. Pooh couldn't because he hasn't any brain. Did I catch it? Well, that comes into the story. Christopher Robin nodded. I do remember, he said. Only Pooh doesn't very well. So that's why he likes having it told to him again. Because then it's a real story and not just a remembering. That's just how I feel, I said. Embedded is an independently produced radio show that focuses on the many aspects of engineering. It is a production of Logical Elegance, an embedded software consulting company in California.
Starting point is 00:55:36 If there are advertisements in the show, we did not put them there and do not receive money from them. At this time, our sponsors are Logical Elegance and listeners like you.

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