Embedded - 481: The Girl from Evel Knievel

Episode Date: July 25, 2024

Chris and Elecia talk about their current adventures in conference talks, play dates, and skunks.  Elecia’s talks are available on YouTube: Creating Chaos and Hard Faults: An introduction to hard... fault handlings, stack overflows, and debugging hard bugs Introduction to Embedded Systems (O'Reilly Expert Webinar): An introductions to… well, embedded systems These are both advertising for the 2nd edition of Elecia’s book, Making Embedded Systems: Design Patterns for Great Software. You can also find it on O’Reilly’s Learning System and probably read it with your 30 Day Trial (here).  Chris got a handheld game console, the Playdate (play.date), and has been writing a game for it. There is an interesting looking MicroPython port for it. We also mentioned Tiny Tapeout Demoscene which sounds pretty neat. And KiCanvas where you can see KiCAD schematics without loading KiCAD. Our newsletter has been off but will be back to normal next week. The RSS feed is probably not fun to look at but Elecia’s Rebloginator shows some Python tools for parsing feeds.  Neither the dog nor the skunk seem contrite. Transcript

Transcript
Discussion (0)
Starting point is 00:00:00 Hello, and welcome to Embedded. I am Elysia White, here with Christopher White. Today we're going to chat about, well, really nothing at all. It's been a few weeks. I'm sorry, everyone. It has been, and our newsletter has not been going out. It's like we took an incubacle vacation without going anywhere. Or stopping work. Or stopping work.
Starting point is 00:00:32 So it was really great. Yeah. We're sorry about that, but we're back. And soon we will have sponsors, which means we will be on schedule. Or else. Or else. And we'll have guests even. Maybe. I don't know. Maybe we'll just do this for every week. I else. Or else. And we'll have guests even, maybe. I don't know.
Starting point is 00:00:46 Maybe we'll just do this for every week. I don't think so. I did get a lot of listener questions, but most of them were, how in the world would I know that? We'll get to those. Maybe you'll know. I don't know anything anymore. Well, the first thing I have to ask is, do I still smell? No. Are you sure? I'm not sure you ever you ever did so last night i let the cute little dog out for uh her evening potty pre-bed potty and um
Starting point is 00:01:21 she ran right into a skunk 10 feet outside the front door right into a skunk, 10 feet outside the front door. Right into a skunk. The skunk was not pleased. I mean, we live near forests, so... Well, I mean, there were skunks. There's skunks everywhere. Right. But, I mean, we're kind of in their territory. But even though we've had dogs before, even though we've had curious dogs... And cats. Adventurous animals.
Starting point is 00:01:50 This cowering little dog has decided she would be the first to be skunked. So we were up late washing the dog. And I'm not just saying that as a combination of washing my hair slash the dog ate my homework. We were. That has nothing to do with this podcast. But we are a little sleepy. Yeah. Okay.
Starting point is 00:02:08 So announcements first or questions first? Announcements usually go at tops of shows. So? So I think we should put it at the top of the show. Okay. I did a talk
Starting point is 00:02:17 for the Embedded Online Conference. Yes. Do you remember what that talk was about? It was about creating chaos and hard faults. Yes. In which I went through was about creating chaos and hard faults. Yes. In which I went through some different ways of creating hard faults and looking at stack overflows and looking at hard fault handlers and getting used to that whole process.
Starting point is 00:02:37 And as a way of making it so you know how all that stuff works when you eventually run into one that you didn't purposely create. Right. And so that you could learn to read the stack and your debugger and the helpful registers. And log things. And to log things for later, either in a section of RAM for when you reboot and then can send out to the world or however you want to do it. That talk is open now. It is on my personal YouTube. There'll be a link in the show notes, or you can just search for Creating Chaos Elysia.
Starting point is 00:03:15 And if you spell my name right, you probably will find it. Cool. Okay. Okay, so, and then on the subject of talks, I gave an introduction to embedded systems for O'Reilly as an expert webinar in which I talked about embedded systems. And an introduction thereof. Indeed. It didn't seem like something most folks who listen to the show would be all that interested in. But if you've ever wanted to explain some of the details of your job to your manager, well, now there is another talk on my personal YouTube channel. Collecting talks. Collecting random talks, yes. There's also one about snails and origami. Okay.
Starting point is 00:04:04 Let's see. We are not not i am not building a wasp identification system i am not really building uh a parts database for my garage hold horde um just stop asking no need to stop suggesting help no need to uh add additional information on those just things we're not building. For the purposes of the show, they were illustrative. Yes, exactly. Do you know what demo scene is? Yeah.
Starting point is 00:04:42 Sorry. I usually can do the silence better than that. Sorry, I was just pretending I was on the stand in a courtroom. You never say answer more than is asked. Tell me about Demoswine. If it is what you're asking about, I think it's sort of a broad category of writing code to do. Let's see. From what I remember of it back in like when I was in college and even earlier, it was like you'd be on a personal computer like a PC or an Apple II or something, and you would try to make something cool happen, sound and video,
Starting point is 00:05:23 with minimal code or support code. So on the PC, it would be like bare metal, start up with the BIOS, and then, you know, have a thousand lines of assembly code that had some cool video thing that happened, or, you know, like 3D graphics, or weird patterns, or whatever. And you try to do that as high performance as possible with a little as little code as possible and as little support code same thing on the apple too there were people who did weird hacks to make um like video demonstrations to uh they would hack the video subsystem so you could get millions of colors even though it really didn't support it by like changing the palette between every you know getting an interrupt between every scan line
Starting point is 00:06:04 and changing the palette for the next scan line, doing stuff like that. There were a lot of tricks on the PC like that that made it do things that seemed impossible because they were running bare metal and able to adjust hardware stuff on the fly. And I think that's broadened to a lot of stuff now, like, oh, try to, you know,
Starting point is 00:06:20 there's like 1K competitions where you try to have some incredible thing, like a 3D game engine running 1K of code or stuff like that. Is that broadly correct for what you're asking? Is that what you're asking about? Well, when somebody, when Uri Shakid asked me about it, I said, is that the Roman orator who put pebbles in his mouth to improve his enunciation? Oh, see, well, I'm way off. So, one of us was very wrong, and it was me. You were close there.
Starting point is 00:06:54 It is a scene of demos, not a demo scene. Well, and that was Demosthene? There's a TH in there that I was missing. Yeah, okay, so Demosthene. Yeah, it sounded from the Wikipedia page, once I had the right one, that got off the Roman folks. Demosthenes. Demosthenes.
Starting point is 00:07:20 He was a Greek orator. Greek? Roman? Yeah, Greek orator. Greek? Roman? Yeah, Greek. Greek. Anyway, the demo scene seems to be somewhat European-based, and it's kind of like maker culture, except our maker culture does kind of push you to make something. Demo scene really is more about making a demo. You don't have to have something at the end. You don't have to be working towards something with a goal. Yeah, okay. I mean, it borders on artwork sometimes.
Starting point is 00:07:55 Very much borders on artwork. Okay, so why was I talking to Uri about this? I don't know. So, Tiny Tape Out, which is where you can go and make your own little processor and not spend a million dollars creating it, actually getting it produced. Tiny Tape Out is having a demo scene competition
Starting point is 00:08:21 where participants create cool demos in silicon with VGA and audio output. Awesome. Okay. So you can make your own chip. You work with Tiny Tape Out to get it actually fabricated. You get your chip, you put it on your board, and your demo
Starting point is 00:08:39 runs in hardware. Your demo runs in hardware. It sounds pretty cool. It does sound cool. Nothing to do with Pebbles. Something that's pretty much never been done before. Well, I mean, you can do FPGA stuff, but I suspect there's probably some
Starting point is 00:08:53 sort of FPGA demo scene out there that's a small niche of it, but this would be even smaller to start with. And they have good tutorials, and they're really trying to make it accessible to folks who are just interested in understanding the hardware,
Starting point is 00:09:11 not interested in building a system. I am such an engineer. I'm all about building the system. And I forget what joy can be had with just making a fun demo. Or what joy can be had doing things that don't involve, you know, people who you work for.
Starting point is 00:09:29 Sorry. I thought you were going to say code, and then I was going to say play date, and then we were going to... I was just thinking about how much work I've been doing and how I'd like to stop doing it. Why have you been working so much? Because two clients decided to have milestones that were a few weeks apart. And one of them brought in the milestone by like six weeks.
Starting point is 00:09:51 There was some miscommunication about when one of the milestones was. And I thought I had six weeks of time to do something, and I had two. Thus, canceling a vacation and replacing it with working for one client solely. So it's sort of a half a vacation. I took a vacation from one client in order to work exclusively for another client. Working a lot more for the other client. Yes, and I don't know if I was free the last time we had a Just Us, but I am booked again.
Starting point is 00:10:22 Yeah. No, you didn't. I don't think you mentioned it because you would have been. I put it on LinkedIn and a couple other places. And I said I wanted small, interesting problems. And instead, people brought me medium, hard problems. That's close. And I didn't really want hard problems.
Starting point is 00:10:39 I would like to sit around and be able to say, what you need here are brackets and things like that because I think I could do that. Like physical metal brackets? No, like array brackets instead of pointy stars. Pointy stars. Did I mention that I still feel like I smell like a skunk?
Starting point is 00:10:59 You don't. I don't think you ever really did. I think it was just, you know. Ambient? Ambient after the incident for a while. Oh, you. Don't even look at me. I don't care how cute those eyes are. That's right. She's not talking to me. She's talking to the dog that's also here. Don't play with the black and white cats.
Starting point is 00:11:26 Okay. Let's see. What else do I have here? Internships in Tunisia. What? Someone emailed me. Isn't that a jazz song? No. Oh. What am I thinking of?
Starting point is 00:11:43 Anyway, yes, go on. The Girl from Ipanema? The Girl from I go on. The girl from Ipanema? The girl from Ipanema? I'm going to go get some pebbles. The girl from Ipanema. Nima. Ipanema. Anyway, I don't know anything about internships in Indonesia. I didn't say that you did.
Starting point is 00:12:03 What is the context here? I got an email from someone who seemed really nice. And I do feel a little guilty that I didn't reply, but I didn't know what to reply. I mean, you could look at Google Summer of Code because that's international, but I don't know. I don't know how many ideas I had to go about that. I feel like a lot of people are asking me about things that I have no idea about.
Starting point is 00:12:31 It's like, can you ask me? I know a lot of things. Can we talk about those instead? Speaking of which, do you know how to make NTP work? Because I'm having a really hard time with it. This is network time protocol. Yes. But I clearly recall you saying hard time with it. This is network time protocol. Yes. But I clearly recall you saying never work on time. And now if you could go through the last 500 episodes and clip out every time you've said don't work on time. Look.
Starting point is 00:12:58 And just pile them up here. Some sort of Max Headroom like don't work on time sort of thing. I have to. Sometimes you have to. I mean, isn't it a matter of app install, NTP server? Yeah, I think I did that, and I think that was actually the wrong choice. NTP server equals... The thing about Ubuntu is it's got a lot of its own services, and you're never sure which ones are already running.
Starting point is 00:13:24 The networking? And so you read these webpages, and you say, oh, Ubuntu's really easy just to install NTP and do all this stuff, which none of it works. But they don't tell you that also there's another thing running, possibly? You might want to check on that, because that's also doing NTP.
Starting point is 00:13:39 And so, now I've got it all messed up, but yeah, anyway. Well, and then you have to find a good parent server. Well, see, that's not an issue for me. Well, it is. Okay. Very complicated. But what I'm doing is I have a piece of embedded hardware, and it's going to be on a thing.
Starting point is 00:13:56 I'm not going to describe what the thing is, but the thing is disconnected from the world. Okay. It's on a platypus. The platypus is disconnected from the world. The thing has its own time base, and it runs an NTP server. Well, platypus should have their own time base. Or it runs an NTP server from telemetry.
Starting point is 00:14:11 I'm not sure which, but I don't care. I have the IP address for the NTP server. I see. So I need to set up my embedded thing so that when it's installed in this thing, it just automatically comes up and talks to the NTP server. So I have that configured on the thing, I think. The platypus. I think. Compliatable. I think.
Starting point is 00:14:25 Okay. And I'm trying to make a fake NTP server at the IP address of the thing that's going to be on the thing. What are you using as the server? A VM running Ubuntu on my computer. I guess that lets you control the IP address. Yes. That makes sense.
Starting point is 00:14:39 They can ping. Okay. So they can talk, but they're not NTPing to each other, which I can't figure out. So anyway, that's... I have some Raspberry Pis, and I bet if we search for Raspberry Pi NTP server, it will tell us exactly... Well, that's the thing. I'm not sure if the server's wrong or the client.
Starting point is 00:14:55 Well, I mean, that's the first step. You don't know. So we set up an NTP server along instructions that people give us instead of just hoping that your VM is working. Or we use that VM to NTP something. Well, that's the trouble. I've only got one IP address on it right now, so having to talk to another NTP server to sync to make
Starting point is 00:15:16 sure that it's... I was just thinking of asking you questions that perhaps you don't know the answer to. Gary Brown in Arkansas. We got a message that you tried to reach out to us, but we could not get back to you
Starting point is 00:15:34 for reasons that don't entirely make sense to me, but I couldn't navigate. So, Gary, hi. Send us a letter. Okay. You have
Starting point is 00:15:50 opened my stupid... What's happening now? Siri is trying to ask who I want to send a letter to. How would she know how to do that anyway? Okay. I needed to open a KiCad schematic.
Starting point is 00:16:11 And I pronounce it KiCad because that apparently is the way they originated to pronounce it. And I didn't have KiCad installed on that computer. I didn't really want to install it on that computer. Turns out Thea, who we've had on the show, has a web-based thingy. KeyCanvas.org. And you just pop in your schematic and you can see it. And it was great. Yeah, it's very cool.
Starting point is 00:16:34 You already knew about it. I knew about it. I think I saw it on the Mastodon. Okay. Do you want to talk about the play date or do you want to talk about origami? We could talk about the Playdate. Oh, you just said go? Go. What is the Playdate?
Starting point is 00:16:52 Okay, so I was feeling bad about things, and so I bought myself something a few weeks ago. And it's called the Playdate. And it is from a company called Panic, which is actually an Apple software company. They make a lot of Apple software. They make some IDEs that are kind of cool. I think it's called Coda and Nova and some other stuff. But then they started making video games. They produced a video game that people might have heard about
Starting point is 00:17:21 called Firewatch, which was kind of a first person adventure game where you were a fire watch person and then things where you were waiting for fires to happen in the forest and there was kind of a mystery going on that you solved oh you played that yeah it was cool game okay so they branched out into that and later i think they decided let's do more game stuff and so they had an idea for a handheld, a small handheld that they prototyped. And then I guess they went to Teenage Engineering
Starting point is 00:17:49 and said, can you help us make this? So this device is a little gaming handheld from Panic and Teenage Engineering. It has very much Teenage Engineering design aesthetic. It's got a black and white. It's very cute. It's very small. It's not an open board like some of the other Teenage Engineering. Aesthetic. It's got a black and white. It's very cute. It's very cute. It's very small.
Starting point is 00:18:07 It's not an open board like some of the other teenage engineering. Right, yeah. As a case. It's maybe three inches by three inches, something like that. And maybe a quarter, half an inch thick or something like that. And very light. And it has a black and white LCD screen. No grayscale, but it's pretty high resolution. so you can achieve grayscale by dithering. And it has a crank that's one of the, you know, it's got normal video game controller controls, but then on the side it's got a crank you can turn, which is just wild.
Starting point is 00:18:37 And then they have a really weird game distribution system where they give you 24 games over 12 weeks or something like that. So once you buy it, you get two games, and then the next week two more show up, and two more, and two more. And they also have a catalog you can buy separately, other games. And they're very weird little games. They kind of go back to the kind of games you'd buy for early microcomputers, not super vast open-world adventures in 3D graphics. They're very simple, Tetris- level or small RPG kind of things.
Starting point is 00:19:09 It's pretty powerful, so it can do pretty big games. But I think people are purposely keeping things kind of small and simple. So they're kind of duck in and out games. There's no internet, although it can download stuff and get updates. Yeah, and it's just been kind of fun to play with that and kind of feel like, oh, this is how games were back in the 80s from computers to a certain extent. Right. But it also has an SDK, which is one of the reasons I got it,
Starting point is 00:19:39 is I wanted to kind of play around with some game stuff. And their SDK is, so it's totally open. Anybody can download the SDK. You don't have to sign up for anything. They have two versions of it. Actually, sort of three versions. There's a web-based one that has a kind of a game editor, and you can make any kind of tile-based game.
Starting point is 00:20:01 If you're familiar with tile games, it's where you have, gosh, how to describe this? The entire... It's an example of a tile game. Oh boy. Is Angry Birds tile game? It could be done as a tile game, I think. Original Mario? Mario, yeah. Some Mario kind of games can be tile games, I think. It's where kind of everything's built up of squares and you can draw different things in each square and each square is the same size. So you can imagine you've got a character that takes up, that's a sprite, and then it's in a room made up of various squares and you create all the squares. And the square might be a block of concrete and you just build things out
Starting point is 00:20:39 of blocks of concrete. And then another square might be, you know, a light and you put that somewhere and then a chest, things like that. You build it up out of that. Anyway, and you can go from room to room or scroll around or whatever and interact with things. So the web-based thing makes those kind of games, and it has a scripting engine in Lua that you can use. And you can just build your whole game on their website and then download it to your thing or play it in a simulator. So there's that. For more serious game development, they have a real SDK that you have to download on a computer and build things and edit it in an editor. C, Lua, Rust. It's Lua. Or C. Or both. So you can do a whole heck of a lot in Lua,
Starting point is 00:21:20 but if you need more performance, you can do stuff in C and extend Lua. So you can either write your whole game in C or do bare metal stuff or whatever or use their APIs or you can kind of combine them and make, okay I need this to be fast so I'm going to write a module in C
Starting point is 00:21:36 and then call it from Lua, that kind of thing but it's been really cool and it was really easy to get set up and it was kind of striking how fast I went from downloading their SDK to installing it to having something running. It was like, I don't know, 20 minutes. And I'm doing it in VS Code. They have some extensions for VS Code.
Starting point is 00:21:57 They have support in other IDs too. Yeah, it was kind of a weird contrast from installing many other SDKs lately which are embedded of clients it's a fairly complicated full featured SDK it's got lots of graphic stuff, lots of file management stuff
Starting point is 00:22:17 lots of sound stuff signal processing sound synthesis anything you need for a game basically is it's all in there and it's very complete and it was yeah it's just it was a weird experience that these people just we're gonna make a console and also an ide or not an idea an sdk and uh i just felt like wow okay that they made everything so i did do some stuff the C, and that was a little bit harder. So the Lua thing was really, really quick to get going.
Starting point is 00:22:50 I remember you being kind of grumpy about the C part. There's some issues with CMake. So the C part, they suggest using CMake. It also works with PlainMake, and I probably should have stuck with that. But CMake, I don't really understand very well. So there was some weird stuff about running on the simulator versus on the device itself and you had to do some arcane CMake
Starting point is 00:23:10 command to switch it to build for the simulator and point it to it's running a Cortex-M7 so it uses the ARM GCC stuff which the SDK downloads for you if you think you have to go through the, oh my god,
Starting point is 00:23:26 I've got the ARM SDK and install it somewhere, but it's all bundled together, which is nice. And since Lua is interpreted, it didn't matter whether you were running the simulator on the device. It's only when you get to see it that you actually have to cross-compile. And that's where things got a little gnarly. Yeah, and it wasn't
Starting point is 00:23:41 super clear what was wrong. So I downloaded it to the device, and it would run my game, and then I would get an error saying, ah, you're calling the C function and it wasn't super clear what was wrong. So I downloaded it to the device and it would run my game and then I would get an error saying, ah, you're calling the C function. I don't know what's going on. It wasn't like, it didn't say this is missing.
Starting point is 00:23:51 It kind of said it was missing, but it wasn't really clear. And really what had happened was I had built for one architecture and it wasn't putting it over. Anyway. So yeah,
Starting point is 00:24:03 it's pretty cool. It's 200 bucks. It's pretty expensive for what it is, sort of. That's why I kind of hedged on it. But you still have a lot of over. Anyway. So, yeah, it's pretty cool. It's $200. It's pretty expensive for what it is, sort of. That's why I kind of hedged on it. But you seem to have a lot of fun programming for it. Yeah, so I made... The first thing I did, and I'm still poking at, is I wanted to see if I could make a Mandelbrot solver on the screen
Starting point is 00:24:18 and maybe extend that to do other fractals or stuff. Then I got that going in a couple days. Not in a couple. That didn't take me a couple days. It was basically a couple hours. A couple days of working at it like an hour after work. In front of the television before dinner, yeah.
Starting point is 00:24:33 Or after dinner. I did that in C because I wanted it to be fast. Yeah, it was pretty interesting. I don't know. It's kind of a throwback in some ways, but also there's a lot of modern. The software development part of it is modern. It's kind of a throwback in some ways, but also there's a lot of modern, like the software development part of it is modern. So it's funny. And there's a big community around it. They have a developer forum where people answer questions and stuff. I think there's Rust support for it, although they kind of had a hilarious description of it that said basically, you know, this isn't working very well. Use it if you want to try it or try it. But yeah, that's all I've got to say about that really. Well, and I didn't get it, but in the auxiliary way of hanging out with you,
Starting point is 00:25:15 it made me want to create a game. And so I started to plot out what my game would be. And so that was kind of fun. I mean, I'd forgotten that that could just be amusing, particularly since I wanted to be able to use that crank interface. I wanted to have a regular game. How to use that crank in some manner is really interesting, trying to incorporate.
Starting point is 00:25:40 And the games that I've gotten so far, each of them does something weirdly different. Like, there's one where you... It's the only interface is the crank. For this game. For this game. And it makes time go forward or back. And that's it. And so
Starting point is 00:25:57 it's kind of a platformer. Like, you have to jump over stuff. But the time... Okay, the crank only controls time for you everything else in the world proceeds at its normal pace so if there's like a monster or in this case birds come at you and you want to make to hit you in the head so the bird keeps coming at you even if you're time going so you have to time things correctly anyway it's weird it's hard to describe um and then there was another one where you turn it to turn the whole world, and then a marble rolls.
Starting point is 00:26:26 But some just kind of tack it on as, well, we could use this for something. I think there's one, like, there's a birding game, and you just use it to focus the camera. And that's the only real thing it does. I wanted to make a clue-like mystery game where you could only get enough information if you could go back and forth in time. Yeah. And information if you could go back and forth in time yeah and use the crank to go back and forth in time and so you you wouldn't be able to discover
Starting point is 00:26:51 who stole your cat it was the skunk are you sure i don't smell bad because it was really bad it's fine it didn't get you get the dog yeah and yet um anyway oh matt uh mentioned when you mentioned the playdate on our slack uh he he mentioned um pew pew for playdate which is micropython micropython a port oh okay yeah i, yeah, I saw that. Yeah. To make games in MicroPython. Yeah, I think you can, it's very open, so you can pretty much do anything you want, and you don't even have to, if you want to sell games, you don't have to, or
Starting point is 00:27:35 release them for free or whatever, you don't even have to do that on their website. I think there's a ton on itch.io, which is a big indie game site, and you can sideload whatever you want. So, yeah, it's been really good. And the hardware is cool. The battery lasts a really long time because it's LCD with no backlight.
Starting point is 00:27:54 So that's, you know, it has no backlight, so you have to be in reasonably good lighting. But it's pretty good. It has a very similar screen. I think it's the exact same technology or even same part with just a larger uh form factor as what the fitbit surge which was the first smartwatch i worked on had an lcd screen with a uh that wasn't that wasn't trans reflective oh no no it was lcd they called it uh what did
Starting point is 00:28:19 they call it it was was it phillips memory lcd I don't remember if it was Philips, but the part was called memory LCD, and the idea was you could, it had its own frame buffer. So once you put stuff in it, you didn't have to power any of the rest of your chip to keep the LCD populated with stuff. So it was good for low power. Cool.
Starting point is 00:28:44 What are you going to do after the Mandelbrot set? I don't know. It was fun to do that stuff, which kind of made me feel a little bit better about computers. Not a lot, but a little bit. I was like, oh, this could be fun, you know. I didn't feel like I was fighting stuff constantly. Yeah.
Starting point is 00:28:59 Or the problems I was solving were kind of fun. But lately I've just been fighting stuff back at work. Why does everybody have problems with bootloaders right now? I don't know. I'm glad I'm not working on that. Multiple inquiries on bootloaders. And I mean, one potential client was in a world of hurt and they had done everything right. And all I could tell them was, yes, you are going down the right path. And all of those painful rocks in your way are just things you're going to have to get by. And other clients are like, yeah, we've shipped some units, maybe a lot of units.
Starting point is 00:29:38 And we need to update the firmware. And I'm like, yeah, about that. There's no magic fairy wand that just updates firmware. What if you use a high enough voltage? Now, granted, you might not be updating the firmware to anything but, you know. Bricks? Bricks or ash. But if we use a high enough voltage, I'm certain we can update the firmware on every device on the planet.
Starting point is 00:30:18 Uh, let me talk to the sun about the next solar storm. Sure. Okay. Well, let's go on to things like this. Sworn enemy. Hey, did you hear that Goliath open sourced everything? No. Alright, well. Maybe we'll put that in the next newsletter as news. They open sourced their software or their... Pretty much everything. Everything? Yeah.
Starting point is 00:30:41 Okay. And they have good docs. I hadn't seen that. Anyway, Sworn Enemy, Chris Gamble, would like an update on our likes and dislikes of Zephyr. No change. I haven't been using it recently. Well, no, that's a lie. I have been using it.
Starting point is 00:31:05 I've just been modifying some very local code that isn't very Zephyr-y in Zephyr. So it has not altered my opinion. It's fine. Uh-oh. Uh-oh. I mean, talking to new clients, especially ones who a couple of them have been, I made it all in Arduino and now I'm shipping it, sorts of clients, which are great because they're always very excited, but then I worry about disillusioning them.
Starting point is 00:31:34 One of them said, well, should I do this in Zephyr? And I said, maybe, of course,, the answer is always it depends. But the problem was, are the things you are solving things other people need to solve? Yeah. And since they were talking to me about bootloaders, okay, bootloaders are an area where Zephyr can provide some assistance. The way bootloaders work with Nordic is pretty good, as long as you are doing something relatively straightforward. Loading your code to a spy flash, loading your code to the processor itself, and not trying to load secondary processors or do something interesting. I guess that's the thing. I could get Zephyr to do mostly what I wanted to do as long as I stayed on the path.
Starting point is 00:32:34 As soon as I stepped off the path, there was this sucking sound and my foot was gone. Why were you stepping off the path? Were you stepping off the path of Zephyr or stepping off the path of Nordic? Both, actually. Yeah. So you're stepping off two paths simultaneously, which sounds really dangerous. Well, that was, and I mean,
Starting point is 00:32:49 for other, for other Zephyr things, not just Nordic, um, like I could find what I wanted. And as long as what I wanted did exactly what the example was, it was fine. But when I tried to do more stuff, I got lost pretty easy.
Starting point is 00:33:12 And because it is so big that sometimes when I got lost, I really couldn't find my way back. And there were a number of times I just reinstalled everything. Do you think that's specific to Zephyr or had you not ever used, say, STM's SDK, would you feel similar? It's a complexity issue. Yeah. It's a, I don't know what I just did wrong. And with ST and with Zephyr, sometimes not all the files are committed, so you can't find what you did wrong.
Starting point is 00:33:47 So, yeah, it's not really Zephyr's fault. There's so much to it. Were these code things or configuration things? Both. Both. Although configuration things are much harder. Yeah. I think that's still the sticking point.
Starting point is 00:34:01 I mean, nothing's changed since last time we talked about it, but I think that's the... both the promise and the curse of Zephyr is the configuration stuff makes many things possible that really aren't possible without rolling your own stuff, but also
Starting point is 00:34:20 it's really hard to work. Changing processors is so much easier. Right, or boards. And I am more familiar with DTS files. I'm not nearly as stumped by them as I was. So gaining experience does help. But for a client who is just coming up on one system, has a processor that they can source, or isn't shipping enough that that's going to be a problem in the short term i'm still not recommending zephyr that depends on the i would say it depends on the
Starting point is 00:34:51 experience level of the team yes if they're pretty these are new if they're pretty experienced embedded people it's probably a good choice if yeah if you're still coming up uh either well there's two ways to look at it right well? Well, if you're still learning about embedded, might as well learn Zephyr because you're probably going to use it in the future and if you're going to spend any time climbing a learning curve, that's probably the one to choose. Or you could say, it's too hard,
Starting point is 00:35:14 learn something easier first. One of the clients who came had real-time constraints and I assume Zephyr does fine, but I didn't want to try to bash their real-time code into zephyr's framework i didn't know how to do that and i was worried that it would take me too long yeah because i had working code yeah anyway and i i mean the stuff that i'm having trouble with or had trouble with over the last two weeks is i'm doing really crazy stuff like i have a dual core uh zephyr on one
Starting point is 00:35:51 something else on another they're talking to each other a chip that hasn't been released with it's been well anyway uh they're talking to each other over shared memory and so you're on the one processor i set up the shared memory via linker script on zephyr you set it up via some other thing in dts and getting those things to anyway that you know it's system related problems that just i have to i'm bouncing back and forth between two models yeah and that's really breaking my brain. And I guess I've been so long in the bare boards model that Defer innately breaks my brain. I want to like it more.
Starting point is 00:36:35 I think I will like it more once I've used it a few times. But it's not... You should port it to the Playdate. Yeah, do that. I don't know what they run, actually, what they've done for their base system. Not quite here. I don't know who that is, but sure. At least they're not making me say Jakey Poo.
Starting point is 00:37:02 I'd also be interested in your opinion of Yocto. Oh, God. I used it once. I hated every second of it. I quit the company. I don't really have an opinion of it. I've used it once, but I was a manager at the time, so it doesn't count. Yocto and BitBake, something. I just remember entering a command on my laptop and then taking the rest of the day off. I don't do a lot of embedded Linux. Yeah, it's not my... I'm doing Linux, but I'm not calling it embedded Linux because it's desktop Linux on an embedded thing.
Starting point is 00:37:37 So I'm not having to do any of that. That's really not my thing. And if somebody asked me to do it, I'd probably just retire. I don't know that I'd retire, but I would defer that I am not the good person for this. I'm looking for any excuse right now. Yeah, I understand that it is helpful and I know what it does. I have seen it in action and been afraid of it. If I was faced with the need to use it, I would suggest somebody hire someone else.
Starting point is 00:38:04 Someone with experience in that area because it's one I don't. And I do have skills in other areas. Okay. Andrew from the Great White North. Any upcoming get-togethers as he needs a vacation? Honestly, so do I. This whole work instead of vacation thing was not as much fun as I thought it would be. Yeah, and there's been other stressors.
Starting point is 00:38:28 We have nothing planned. We have nothing planned. I do know that 500 is coming up. Probably that will go by with a cupcake. Because 511 is coming after that, and that seems way more interesting to embedded programmers. I don't know. I don't know. I don't know. You have put the idea into our head,
Starting point is 00:38:49 and it will roll around there in the empty space like a marble. Making clinking sounds. Perhaps finding a little divot, which makes a little flag go up that causes a conveyor belt to take a thought from one it which then knocks over the dominoes which falls into the fish tank where the fish is scared and then drives its fish tank the skunk let's go with just a skunk um okay oh this is a good one for the how am i supposed to know that what is rss oh how does the rss html thing work and how do you transfer it to xml what transfer it to xml rss is x rss is wow
Starting point is 00:39:50 no no i'm not making fun of the question i'm just trying to i'm just trying to put it in my into my head formulate the words uh rss how would i describe r? I would have described it as an XML file. Yeah, RSS stands for, I think, something syndication here. Let me pull it up. Really simple syndication. Really? Yeah. Why do they call things like that? So RSS is a way of having things that come out,
Starting point is 00:40:24 like blog posts or podcasts or videos or whatever. Periodic things. Periodic things be published in a way that a client can look at the publishing and say, here's a new episode or blog post and organize things. So in the distant past, when these things were really popular, you would have RSS readers like Google Reader and other things, NetNewsWire, and you would subscribe to various publications, and RSS was the protocol by which the publications put the things out there for those things to consume. And the way it did that was really simple, hence the name.
Starting point is 00:41:02 It's just an XML file, and there's a format, and for every entry or thing you're publishing, you tack on a new entry in the RSS file, and the readers would go look at those things and say, is there anything new? Pick out the new thing, keep track, all that stuff. And so that's basically it. You put it up on a webpage and it's like your website slash rss.xml and that's pretty much it. Well, RSS is well-defined. Yes. So there are things like titles.
Starting point is 00:41:35 Yes. And bodies. And tags. Like this is a podcast. This is a blog post. And everything is dated so that you could say, give me everything after whenever the last time my reader checked was. Well, not really, because the XML file is still just the big XML file. It has everything. True.
Starting point is 00:41:56 So you can't go to the website and say, give me everything after. That's up to you, the client, to deal with. That is true. You download the XML file, and the Python script I wrote said, give me everything after this. Yeah. Although, at the time, I was writing my own Python script for reasons we can discuss or not. And so I could just say, get me the next thing, get me the next thing. And there was a Python library that would already do that.
Starting point is 00:42:26 So it wasn't very hard to parse the RSS. And then because it is a very parsable thing, you can translate it to HTML relatively simply. Yeah, that too. And most blogging engines would produce... Like Squarespace or... Squarespace or WordPress or the blog something, blog face. And I think there are a couple of readers online that will prettify your RSS. Yeah, but those will produce the RSS file automatically.
Starting point is 00:43:04 Right. So you just write a blog post and then you publish, and it tags it onto the XML file. They tell you where that is on your site, and you share that with people, and you press subscribe in the client. So I hope that answers the question. And sites that have been around for a long time often have egregiously large RSS. Yeah. Or what they often do is truncate them. Like, okay, we're not going to, we're just going to everything three years old, we're not going to share with you or something like that.
Starting point is 00:43:36 Well, like on our transcripts, we provide a synopsis of it and you have to click on it in order to get the actual whole thing. So that keeps that RSS feed smaller. Yeah, yeah. Okay, so that's RSS. Python has a really nice library. I would go look at that. Also from Sila,
Starting point is 00:43:58 are you guys considering streaming or switching to a Twitch channel? No. No. No. So, a few reasons. I don't want to be on video, especially right now at this moment. And I smell like a skunk. I feel like they don't have this. The internet doesn't have that yet.
Starting point is 00:44:17 Smell-o-vision. I don't want to set up video. It's a big pain. Editing is not 10 times harder. It's like 100 times harder. Definitely not editing video. Yeah. Our shows tend to be interview shows where we're talking to people who often may not want to be on video or may want to feel like they have a chance to be edited. Let me put it that way, so they don't feel like they're live. If it was just us all the time, I would consider streaming the audio live,
Starting point is 00:44:52 if anybody was really interested in that. Yeah, I would stream the audio live. I don't really mind. If it's us with guests, I'm not going to do that, because I'm not going to put that on a guest. Guests and sometimes we say things that they don't want out there. As part of my intro with guests, I say, and if you say something imprudent, like the folks who told us how to reverse engineer their product. Yeah, we don't post that. Yeah, so I really want a chance to edit shows with guests before they go out.
Starting point is 00:45:25 I don't care if I say something stupid. I say something stupid all the time. People know that. So, yeah, so there's a lot of infrastructure to StreamLive. I don't really want to do it. If there's a huge clamoring for it and people were, like, saying, yeah, we'll do X, Y, or Z if you do that, then think about it. But certainly not video.
Starting point is 00:45:42 Video is just too hard, and I don't want to have to make myself look like a presentable person ever, really. I would consider a live stream for like a special show. Yeah. Like a 500 or something. But I don't know. I mean, if folks are saying that's what the thing is these days, then I would get us a bigger audience for whatever reason. I don't know why we want one.
Starting point is 00:46:11 But let's just say, for the sake of argument, we wanted a bigger audience. We love you just as you are. You are enough. You are perfect. I guess we could consider it. You had the puppet idea. Maybe we could just have avatars true all right i'm fine with that avatars yeah i also i mean this goes back some to my
Starting point is 00:46:37 i don't want to talk about women in tech but i do want to have more women's voices talking about technology i want more diversity and can you even see the diversity when it's just audio? If it's diversity that isn't, you know, vocal range? If it isn't just gender diversity? Because I do try to get other, to get larger diversity than gender diversity. But I don't, yeah, talking heads, there's something about it that kind of makes me unhappy. And it's not like I hate watching myself, which I do,
Starting point is 00:47:16 but everybody does, that's fine. I hate listening to myself, everybody does, that's fine. I just, I would feel the need to do slides or something. And then we're just talking about more work. Well, I don't, yeah, I mean, it's a lot more work. There's a podcast, there's a drum podcast. My instructor actually has one where he talks to various drummers, some famous, some maybe unheard of, but also very good.
Starting point is 00:47:45 And he tends to edit them. They're Zoom things. He's not doing them in person. And he tends to edit them where it's, you know, not both people on at the same time, but going back and forth as they talk. And that's fine. I think that's reasonable.
Starting point is 00:47:57 Is it talking heads? It's their heads that are talking. Well, I mean, you might have, you know, just the hands and drums. No, there's no, yeah, it's just talking. Well, I mean, you might have, you know, just the hands and drums. No, there's no, yeah, it's just talking. There's no musical. Sometimes somebody picks up a stick and demonstrates something.
Starting point is 00:48:11 But yeah, so I mean, that's fine. But I don't feel like that really adds much to our show, given that this has been the format for a long time. Yeah, I'm just getting more weird looking. I mean, I don't think, i guess people could you know watch my piercings count go up or something they did too they did your piercings Okay. Okay. Let's see. Yen loves the content we put out. Okay. I hate the word content.
Starting point is 00:48:50 That's not his fault. I know. What are your thoughts on model-based designs in embedded systems? For example, using Simulink. Oh. I haven't done it much. Have you done any of that stuff? Not in 25 years.
Starting point is 00:49:10 It's like something that engineers with a capital E do a lot. What does that mean? You know, people who graduate with, you know, mechanical engineering degrees or chemical engineering degrees. Not people who graduate with thank god i got out of here degrees okay you know the people who get the the certificates that say you're a legal engineer professional engineer in the state of nebraska or whatever you're a nebraska engineer this is why we shouldn't do podcasts when I'm exhausted. Okay?
Starting point is 00:49:49 Nobody should be offended by anything I'm saying because I actually don't know what I'm saying at this point. I'm just existing in kind of a weird mist. It's the skunk smell. You have a contact high? I have not used model stuff. I know of them. I know of Simulink. I know traditional engineering disciplines tend to use them,
Starting point is 00:50:06 and then code comes out, and people tend to like that. I think if you're designing like a cogeneration gas turbine plant, maybe that's the sort of thing that's applied for. I don't know. For traditional embedded, I don't see that it's all that widely used or useful. With a lot of embedded systems, you're trying to fight a number of different areas. You have the functionality, which we're going to give as a base. And then you have the time to market.
Starting point is 00:50:34 You have the controller cost. And you have the third thing. Jeez. Really? That's where I'm going. I had the third thing. What were the first two things? Maybe I can fill in.
Starting point is 00:50:57 Time to market. Time to market. And bomb cost. Bomb cost. And what is the third thing? Ease of development? Speed. That's time to market.
Starting point is 00:51:09 You can want it good, you can want it fast. Fast or cheap. Or cheap, yeah. So good. Yeah, goodness. Okay, so good must be the... Robustness. Okay.
Starting point is 00:51:22 We're going to go with robustness, yes. Okay. Rel're going to go with robustness, yes. Reliability. Design for manufacturing. Doing good code. Good design. And while we always want to do the best code. Why don't you speak for yourself? Oh, sorry. The size of the processor may not allow it.
Starting point is 00:51:58 Some of the model-based designs do have code that is bigger than it would be if you hand-edited it. It's going to be some sort of, well, yeah, they're generating code sometimes, or they'll have some kind of runtime engine to take their model. And time to market may be faster if you know the modeling tools. If you're doing a complex algorithm generating power from wind turbine, then yes, you may need those tools. But if you are doing the last controller, that is the motor controller that takes a PID loop and only does that code on a real-time basis with some encoding feedback and does nothing else, but maybe can descriptions of where the positions are, you don't want a model there. You want a model for the system. And is the model for the system the sort that should go on each node, or is it the sort that should go on a larger
Starting point is 00:52:54 system view? I have seen model-based code. I've seen code generation. There are times these tools are very useful. And there are times where they generate somewhat bloated code that still can be useful or times where you end up with bloated code that isn't useful because it just can't run and meet your power requirements or your cost requirements or your speed requirements. So, yeah, I don't know if they are the future. I think they're the past. I... Well, I don't know.
Starting point is 00:53:32 I don't know. I haven't seen new developments in there, but it's not an area I follow. So maybe there's cool new model-based stuff happening. But it's going to be in industries that we don't, you know, big... I think it tends to be in big plant kind of stuff. Yeah. You know, controller, big system factory controller, plant, physical plant controller, whatever sort of stuff.
Starting point is 00:53:59 So I don't know. Maybe they use it for like, do they use it for aviation stuff at all? I mean. I would think for like avionics. When I said I used it 25 years ago, I was actually thinking of avionics. Yeah. Although there were some other MATLAB things before that. I don't really think that TensorFlow would count at this point.
Starting point is 00:54:21 No, that's a different kind of model. Yeah. But I mean, it does generate code. Does it? Well, it generates the weights which control the blah, blah, blah. It doesn't generate code. If only it generated code. So, yeah, it's an interesting sub-area,
Starting point is 00:54:43 and it's going to be in some job qualifications that are probably more for, uh, safety critical systems and larger systems. Yeah. So if that's what you want to do, maybe it's something to look into. If it's not,
Starting point is 00:54:58 then maybe not. Okay. I am pretty sure I still smell like a skunk. So something in here does, but I think it's probably the dog. I think I might've washed the dog better than I did pretty sure I still smell like a skunk. Something in here does, but I think it's probably the dog. I think I might have washed the dog better than I did myself because I did pour the hydrogen peroxide and baking soda on her like six times and only like twice on me.
Starting point is 00:55:17 I don't think you used that on you. Probably shouldn't. You understand that when the dog is soaking wet, there's no way anyone around her is not also soaking wet, even though she is only eight pounds. I think it's only fair the skunk should have participated in that cleanup effort. I don't. I don't.
Starting point is 00:55:36 I don't. I don't. Goodbye, everyone. I do, first, before I read from Winnie the Pooh. We have to do the outro thanks and stuff. Well, yes, but I have more. Oh, you have more. You were getting the book, so I figured we were done.
Starting point is 00:55:53 So a little kid went up to his parents and said, How does poo happen? Mom sat down, explained kind of awkwardly, but explained the whole bowel movement thing. And the kid looks up and says, okay, what about Tigger? Thank you for listening. This has been Embedded. This has been the last episode of Embedded. That's not true.
Starting point is 00:56:21 That's not true. Thank you to Christopher for producing and co-hosting. Thank you to our Patreon listener slack for their support and for their questions and for their entirely amusing ness.
Starting point is 00:56:37 If you'd like to contact us, hit the contact link on Embedded.fm where you can find the show notes and the transcripts. And the RSS feed, well and RSS feed, but the canonical one's actually on Libsyn, so don't use the embedded one. Forget I said anything. It's under the subscribe
Starting point is 00:56:54 page, you'll find it if you want to see the RSS feed. You can also email us at show at embedded.fm And now some Winnie the Pooh. I guess before I get started, if you are not familiar with the Drift Off podcast, but you're listening to this to go to sleep, you should try Drift Off.
Starting point is 00:57:14 It was pretty good. I listened to a lot of it last night. Hmm. Eeyore took down his right hoof from his right ear, turned around, and with great difficulty put up his left foot. I must have that in the other ear, he said. Now then. A present, said Piglet very loudly.
Starting point is 00:57:39 Meaning me again? Yes. My birthday still? Of course, Eeyore. Me going on having a real birthday? Yes, Eeyore, and I brought you a balloon. Balloon, said Eeyore. You did say balloon.
Starting point is 00:58:01 One of those big colored things you blow up. Gaiety, song and dance, here we are, there we are. Yes, but I'm afraid, I'm very sorry, Eeyore, but when I was running along to bring it to you, I fell down. Dear, dear, how unlucky. You ran too fast, I expect. You didn't hurt yourself, little piglet. No, but I, I, oh, Eeyore, I burst the balloon.
Starting point is 00:58:28 There was a very long silence. My balloon, said Eeyore at last. Piglet nodded. My birthday balloon? Yes, Eeyore, said Piglet, sniffing loudly. Here it is, with, with many, many happy returns of the day. And he gave Eeyore the small piece of a damp rag. Is this it? said Eeyore, a little surprised. Piglet nodded. My presents, Piglet nodded again. "'The balloon.' "'Yes?'
Starting point is 00:59:08 "'Thank you, Piglet,' said Eeyore. "'You don't mind my asking, hematon, "'but what color was this balloon when it was a balloon? "'Red?' "'I just wondered. Red,' he murmured to himself. My favorite color. How big was it? About as big as me. I just wondered. About as big as Piglet, he said to himself sadly. My favorite size. Well, well. Piglet felt very miserable and didn't know what to say. He was still
Starting point is 00:59:47 opening his mouth to begin something and then deciding it wasn't any good to say that, and then he heard a shout from the other side of the river and there was Pooh. Many happy returns of the day, called out Pooh, forgetting that he had said it already. Thank you, Pooh.
Starting point is 01:00:04 I'm having them, said Eeyore gloomily. I've brought you a little present, said Pooh excitedly. I've had it, said Eeyore. Pooh had now splashed across the stream to Eeyore, and Piglet was sitting a little way off, his head in his paws snuffling to himself. It's a useful pot, and here it is. It's got a very happy birthday with love from Pooh written on it. And that's what all that writing is, and it's for putting things in there. When Eeyore saw the pot, he became quite excited. Why, he said, I believe my balloon will just go into that pot. Oh no, Eeyore, said Pooh. Balloons are much too big to go into pots. What would you do with a balloon in a pot? You hold the balloon. Not mine, said Eeyore proudly. Look, Piglet.
Starting point is 01:00:57 And as Piglet looked sorrowfully around, Eeyore picked up the balloon with his teeth and placed it carefully in the pot, picked it out and put it on the ground, then picked it up again and put it carefully back. So it does, it goes in, said Pooh. So it does, said Piglet, and it comes out. Doesn't it, said Eeyore, it goes in and out like anything. I'm very glad, said Pooh happily, and I thought of giving you a useful pot to put things in.
Starting point is 01:01:25 I'm very glad, said Pooh happily, and I thought of giving you a useful pot to put things in. I'm very glad, said Piglet happily, that I thought of giving you something to put in a useful pot. But Eeyore wasn't listening. He was taking the balloon out and putting it back in, as happy as could be. And I didn't get him anything, said Christopher Robin sadly. Of course you did, I said. You gave him, don't you remember, a little, a little, I gave him a box of paints to paint with. That was it. Why didn't I give it to him in the morning? You were so busy getting ready for his party. He had a cake with icing on top and three candles and his name and pink sugar. And yes, I remember, said Christopher Robin.

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