481: The Girl from Evel Knievel

Transcript from 481: The Girl from Evel Knievel with Christopher White and Elecia White.

EW (00:00:06):

Hello and welcome to Embedded. I am Elecia White, here with Christopher White. Today we are going to chat about, well, really nothing at all.

CW (00:00:18):

It has been a few weeks. I am sorry everyone.

EW (00:00:21):

It has been. And our newsletter has not been going out. It is like we took an in cubicle vacation, without going anywhere.

CW (00:00:30):

Or stopping work.

EW (00:00:31):

Or stopping work.

CW (00:00:32):

So it was really great. Yep.

EW (00:00:35):

We are sorry about that, but we are back. Soon we will have sponsors, which means we will be on schedule.

CW (00:00:42):

<laugh> Or else!

EW (00:00:43):

Or else.

CW (00:00:44):

And we will have guests, even. Maybe. I do not know. Maybe we will just do this for every week.

EW (00:00:48):

I do not think so.

CW (00:00:49):

No? <laugh>

EW (00:00:51):

I did get a lot of listener questions, but most of them were, "How in the world would I know that?" We will get to those. Maybe you will know.

CW (00:00:59):

I do not know anything anymore.

EW (00:01:01):

Well, the first thing I have to ask is, "Do I still smell?"

CW (00:01:05):

No. <laugh>

EW (00:01:05):

Are you sure?

CW (00:01:05):

I am not sure you ever did. <laugh>

EW (00:01:11):

So last night, I let the cute little dog out for her-

CW (00:01:16):

Evening potty.

EW (00:01:16):

Evening potty. Pre-bed potty, and...

CW (00:01:22):

She ran right into a skunk, ten feet outside the front door.

EW (00:01:26):

Right into a skunk.

CW (00:01:28):

<laugh> The skunk was not pleased.

EW (00:01:30):

I mean, we live near forest, so-

CW (00:01:32):

Well, there are skunks. There are skunks everywhere.

EW (00:01:35):

Right. But- We are kind of in their territory. But even though we have had dogs before, even though we have had curious dogs-

CW (00:01:42):

And cats. And all sorts of-

EW (00:01:43):

Adventurous animals, this cowering little dog has decided she would be the first to be skunked. So we were up late washing the dog. I am not just saying that as a combination of "washing my hair" / "the dog ate my homework."

CW (00:02:01):

That has nothing to do with this podcast. But yes.

EW (00:02:05):

But we are a little sleepy.

CW (00:02:05):

Yeah.

EW (00:02:05):

Okay. So announcements first or questions first?

CW (00:02:10):

Announcements usually go at tops of shows.

EW (00:02:13):

So?

CW (00:02:14):

So I think we should put it at the top of the show.

EW (00:02:16):

Okay. I did a talk for the Embedded Online Conference.

CW (00:02:19):

Yes.

EW (00:02:19):

Do you remember what that talk was about?

CW (00:02:22):

It was about creating chaos and hard faults.

EW (00:02:25):

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.

CW (00:02:38):

As a way of making it so you know how all that stuff works, when you eventually run into one that you did not <laugh> purposely create.

EW (00:02:46):

Right. And so that you could learn to read the stack, and your debugger, and the helpful registers.

CW (00:02:53):

And log things and stuff.

EW (00:02:54):

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 will be a link in the show notes. Or you can just search for "creating chaos Elecia", and if you spell my name right, you probably will find it.

CW (00:03:19):

Cool.

EW (00:03:20):

Okay. 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 <laugh>.

CW (00:03:36):

And an introduction thereof!

EW (00:03:38):

<laugh> An introduction thereof, indeed. It did not seem like something most folks who listen to the show would be all that interested in. But if you have 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.

CW (00:03:57):

Collecting talks.

EW (00:03:57):

Collecting random talks. Yes. There is also one about snails and origami.

CW (00:04:03):

Okay.

EW (00:04:05):

Let us see. I am not building a wasp identification system. I am not really building a parts database for my garage hoard. Just-

CW (00:04:17):

Stop asking.

EW (00:04:18):

No need to-

CW (00:04:19):

Stop suggesting help.

EW (00:04:20):

No need to add additional information on those things we are not building.

CW (00:04:26):

For the purposes of the show, they were for illustrative- <laugh>

EW (00:04:29):

Yes, exactly. Do you know what "demoscene" is?

CW (00:04:36):

Yeah.

EW (00:04:43):

<silence> <laugh> Sorry. I can do the silence better than that. <laugh>

CW (00:04:46):

Sorry, I was just pretending I was on the stand in a courtroom. You never say an answer more than that. <laugh>

EW (00:04:54):

Tell me about demoscene.

CW (00:04:56):

If it is what you are asking about, I think it is a broad category of writing code to do... <sigh> Let us see. From what I remember of it back when I was in college and even earlier, you would 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, with minimal code or support code.

(00:05:26):

So on the PC it would be like bare metal, start up with the BIOS, and then have a thousand lines of assembly code that had some cool video thing that happened. Like 3D graphics or weird patterns or whatever. And you try to do that as high performance as possible, with as little code as possible, and as little support code.

(00:05:47):

Same thing on the Apple II. There were people who did weird hacks to make video demonstrations to- They would hack the video subsystems so you could get millions of colors, even though it really did not support it. By changing the palette- Getting an interrupt between every scan line, and changing the palete before the next scan line. Doing stuff like that.

(00:06:06):

There were a lot of tricks on the PC that, that made it do things that seemed impossible. Because they were running bare metal, and able to adjust hardware stuff on the fly.

(00:06:15):

I think that has broadened to a lot of stuff now. There are 1K competitions where you try to have some incredible thing like a 3D game engine run in 1K of code, or stuff like that. Is that broadly correct for what you are asking? Is that what you are asking about?

EW (00:06:36):

Well, when Uri Shaked asked me about it, I said, "Is that the Roman orator who put pebbles in his mouth to improve his enunciation?"

CW (00:06:44):

Oh see, well, I am way off. <laugh>

EW (00:06:46):

So one of us was very wrong, and it was me. You were close, there. It is a-

CW (00:06:54):

It is "a scene of demos," not a "demo scene."

EW (00:06:59):

<laugh> Well, and there was "demosasthene."

CW (00:07:03):

There was a "demosasthene"?

EW (00:07:04):

There was a "th" in there that I was missing. Yeah. Okay, so demoscene. Yeah, it sounded from the Wikipedia page, once I had the right one- I got off the Roman folks.

CW (00:07:19):

"Demothonese." Demosthenes. He was a Greek orator?

EW (00:07:24):

Greek? Roman?

CW (00:07:25):

Yeah, Greek.

EW (00:07:26):

Greek. Anyway, the demoscene seems to be somewhat European based. It is like maker culture, except- Or, maker culture does push you to make something. Demoscene really is more about making a demo. You do not have to have something at the end. You do not have to be working towards something with a goal.

CW (00:07:52):

Yeah, okay. It borders on artwork sometimes, right?

EW (00:07:55):

Very much borders on artwork.

CW (00:07:56):

Yeah.

EW (00:07:56):

Okay, so why was I talking to Uri about this?

CW (00:08:02):

I do not know.

EW (00:08:04):

Tiny Tapeout-

CW (00:08:05):

Oh!

EW (00:08:07):

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 Tapeout is having a demoscene competition, where participants create cool demos in silicon with VGA and audio output.

CW (00:08:28):

Awesome. Okay.

EW (00:08:29):

So you can make your own chip. You work with Tiny Tapeout to get it actually fabricated. You get your chip, you put it on your board, and...

CW (00:08:39):

Your demo runs in hardware.

EW (00:08:40):

Your demo runs in hardware. It sounds pretty cool.

CW (00:08:44):

It does sound cool.

EW (00:08:46):

Nothing to do with pebbles.

CW (00:08:47):

Something that has pretty much never been done before. Well, you could do FPGA stuff, but I suspect there is probably some sort of FPGA demoscene out there. That is a small niche of it, but this would be even smaller to start with.

EW (00:09:01):

And they have good tutorials, and they are really trying to make it accessible to folks who are just interested in understanding the hardware, not interested in building a system. I am such an engineer. I am all about building the system, and I forget what joy can be had with just making a fun demo.

CW (00:09:22):

Or, what joy can be had doing things that do not involve people who you work for. Sorry. <laugh>

EW (00:09:31):

I thought you were going to say "code," and then I was going to say "Playdate," and then we were going to-

CW (00:09:35):

Oh. I was just thinking about how much work I have been doing, and how I would like to stop doing it. <laugh>

EW (00:09:41):

Why have you been working so much?

CW (00:09:43):

Because two clients decided to have milestones that were a few weeks apart. And one-

EW (00:09:48):

One of them brought in the milestone by like six weeks.

CW (00:09:51):

Well, there was some miscommunication about when one of the milestones was. 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 was sort of a half a vacation. I took a vacation from one client, in order to work exclusively for another client.

EW (00:10:13):

<laugh> Working a lot more for the other client. Yes. I do not know if I was free the last time we had a just us, but I am booked again.

CW (00:10:23):

Yeah. No, I do not think you mentioned it, because you would have been-

EW (00:10:26):

I put it on LinkedIn and a couple other places. I said I wanted small interesting problems, and instead people brought me medium hard problems.

CW (00:10:36):

It is close.

EW (00:10:37):

I did not really want hard problems. I would like to sit around and be able to say, "Oh, what you need here are brackets," and things like that, because I think I could do that.

CW (00:10:48):

Physical metal brackets?

EW (00:10:49):

No, like array brackets, instead of pointy stars.

CW (00:10:55):

Pointy stars.

EW (00:10:56):

Did I mention that I still feel like I smell like a skunk?

CW (00:11:00):

You do not. I do not think you ever really did. I think it was just...

EW (00:11:05):

Ambient?

CW (00:11:06):

Ambient after the incident, for a while. <laugh>

EW (00:11:10):

Oh, you! Do not even look at me. I do not care how cute those eyes are.

CW (00:11:14):

<laugh>

EW (00:11:14):

That is right.

CW (00:11:18):

She is not talking to me. She is talking to the dog that is also here.

EW (00:11:21):

Do not play with the black and white cats.

CW (00:11:22):

<laugh>

EW (00:11:22):

Okay. Let us see. What else do I have here? Internships in Tunisia.

CW (00:11:34):

What?

EW (00:11:35):

Someone emailed me.

CW (00:11:37):

Is that not a jazz song?

EW (00:11:39):

No.

CW (00:11:40):

Oh. What am I thinking of? Anyway. Yes, go on.

EW (00:11:44):

The girl from "Epanevalma"?

CW (00:11:46):

The girl from Evel Knievel? <laugh>

EW (00:11:49):

<laugh> I am going to go get some pebbles. "The Girl from Ipanema." Anyway. I do not know anything about internships in Tunisia.

CW (00:12:02):

I did not say that you did. <laugh> What is the context here?

EW (00:12:05):

We got an email from someone who seemed really nice. I do feel a little guilty that I did not reply, but I did not know what to reply. You could look at Google Summer of Code, because that is international, but I do not know. I do not have any idea how to go about that.

(00:12:24):

I feel like a lot of people are asking me about things that I have no idea about. I know a lot of things. Can we talk about those instead?

CW (00:12:37):

Speaking of which, do you know how to make NTP work? Because I am having a really hard time with it.

EW (00:12:42):

This is Network Time Protocol.

CW (00:12:44):

Yes.

EW (00:12:45):

But I clearly recall you saying, "Never work on time." Now if you could go through the last 500 episodes and clip out every time you have said, "Do not work on time." Just pile them up here. Some sort of Max Headroom, "D-d-d-do not work on t-t-t-time," sort of thing.

CW (00:13:07):

<laugh> I have to. Sometimes you have to.

EW (00:13:12):

Is it not a matter of "apt install NTP server"?

CW (00:13:15):

Yeah, I think I did that, and I think that was actually the wrong choice.

EW (00:13:18):

"NTP server equals"...

CW (00:13:19):

The thing about Ubuntu is it has got a lot of its own services, and you are never sure which ones are already running.

EW (00:13:25):

The networking?

CW (00:13:25):

So you read these webpages that say, "Oh, NTP on Ubuntu is really easy. Just 'apt install NTP' and do all this stuff," which none of it works. But they do not tell you that also there is another thing running possibly. You might want to check on that. Because that is also doing NTP. So now I have got it all messed up. But yeah. Anyway.

EW (00:13:42):

Well, then you have to find a good parent server.

CW (00:13:47):

Well see, that is not an issue for me. Well, it- Okay. Very complicated. But what I am doing is, I have a piece of embedded hardware and it is going to be on a thing. I am not going to describe what the thing is, but the thing is disconnected from the world.

EW (00:14:01):

Okay. It is on a platypus, and the platypus is disconnected from the world.

CW (00:14:04):

The thing has its own timebase, and it runs an NTP server.

EW (00:14:07):

Well, platypus should have their own timebase.

CW (00:14:09):

Or, it runs an NTP server from telemetry. I am not sure which, but I do not care. I have the IP address for the NTP server.

EW (00:14:14):

I see.

CW (00:14:15):

So I need to set up my embedded thing, so that when it is installed in this thing, it just automatically comes up and talks to the NTP server. I have that configured on the thing. I think.

EW (00:14:24):

Platypus.

CW (00:14:25):

I think.

EW (00:14:25):

Okay.

CW (00:14:25):

And I am trying to make a fake NTP server at the IP address of the thing, that is going to be on the thing.

EW (00:14:31):

What are you using as the server?

CW (00:14:33):

A VM running Ubuntu on my computer.

EW (00:14:37):

I guess that lets you control the IP address.

CW (00:14:38):

Yes.

EW (00:14:39):

That makes sense.

CW (00:14:40):

Yes. They can ping.

EW (00:14:40):

Okay.

CW (00:14:40):

They can talk, but they are not NTPing to each other, which I cannot figure out. So. Anyway. That is-

EW (00:14:47):

I have some Raspberry Pis. I bet if we search for "Raspberry Pi NTP server," it will tell us exactly how to set-

CW (00:14:53):

Well I was thinking, I am not sure if the server is wrong, or the client.

EW (00:14:56):

Well, that is the first step. You do not 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 to-

CW (00:15:10):

Well that is the trouble, is I have only got one IP address on it right now. So having it talk to another NTP server to sync, to make sure that it is- Anyway, I was just thinking of you asking questions that perhaps...

EW (00:15:22):

I do not know the answer to?

CW (00:15:23):

You do not know the answer to.

EW (00:15:26):

Gary Brown in Arkansas. Oh. We got a message that you tried to reach out to us, but we could not get back to you, for reasons that do not entirely make sense to me, but I could not navigate. So, Gary, "Hi."

CW (00:15:45):

Send us a letter.

EW (00:15:49):

You have opened my stupid...

CW (00:15:53):

What is happening now?

EW (00:15:54):

Siri is trying to ask who I want to send the letter to.

CW (00:16:00):

<laugh> How would she know how to do that anyway? <laugh>

EW (00:16:06):

Okay. I needed to open KiCad schematic. I pronounce it "key cad," because that apparently is the way they originally pronounced it. I did not have KiCad installed on that computer. I did not really want to install it on that computer. Turns out Thea, who we have had on the show, has-

CW (00:16:26):

Has a web-based thingy.

EW (00:16:28):

KiCanvas.org and you just pop in your schematic and you can see it. It was great.

CW (00:16:33):

Yeah, it is very cool.

EW (00:16:34):

You already knew about it.

CW (00:16:35):

I knew about it. I think I saw it on the Mastodon.

EW (00:16:39):

Okay. Do you want to talk about Playdate? Or do you want to talk about origami?

CW (00:16:45):

We could talk about Playdate. <silence> Oh. You just- <laugh>

EW (00:16:50):

Go.

CW (00:16:50):

Go? Okay.

EW (00:16:50):

Go. What is the Playdate?

CW (00:16:52):

Okay. I was feeling bad about things. So I bought myself something a few weeks ago. It is called the "Playdate." 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. One that I think it is called "Coda," and "Nova," and some other stuff.

(00:17:14):

But then they started making video games. They produced a video game that people might have heard about called "Firewatch," which was a first person adventure game, where you were a fire watch person, then things-

EW (00:17:29):

Oh. Where you were waiting for fires to happen in the forest?

CW (00:17:32):

Yeah. And there was a mystery going on that you solved.

EW (00:17:34):

Oh, you played that.

CW (00:17:35):

Yeah, it was a cool game.

EW (00:17:36):

Okay.

CW (00:17:36):

So they branched out into that. Later I think they decided, "Let us do more game stuff." They had an idea for a handheld. A small handheld that they prototyped. Then I guess they went to Teenage Engineering and said, "Can you help us make this?"

(00:17:51):

So this device is a little gaming handheld from Panic and Teenage Engineering. It has very much Teenage Engineering design-

EW (00:18:00):

Aesthetic.

CW (00:18:00):

Aesthetic. It has got a black and white-

EW (00:18:02):

It is very cute.

CW (00:18:03):

It is very cute. It is very small.

EW (00:18:05):

It is not an open board like some of the other Teenage Engineering-

CW (00:18:07):

Right. Yeah.

EW (00:18:07):

Has a case.

CW (00:18:11):

It is maybe three inches by three inches, something like that. And maybe a quarter, half an inch thick, or something like that. And very light. It has a black and white LCD screen, no gray scale. But it is pretty high resolution, so you can achieve gray scale by dithering. It has a crank, that is one of the- It has got normal video game controller controls, but then on the side it has got a crank you can turn, which is just wild.

(00:18:36):

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. They also have a catalog you can buy separately, other games.

(00:18:52):

They are very weird little games. They kind of go back to the kind of games you would buy for early microcomputers. Not super vast open world adventures and 3D graphics. They are very simple, Tetris level or small RPG kind of things. It is pretty powerful, so it can do pretty big games. But I think people are purposely keeping things small and simple. They are duck in and out games.

(00:19:19):

There is no internet, although it can download stuff and get updates. It has just been fun to play with that and feel like, "Oh, this is how games were back in the eighties on computers, to a certain extent."

EW (00:19:33):

But.

CW (00:19:33):

But-

EW (00:19:33):

Da da dum.

CW (00:19:33):

It also has an SDK. Which is one of the reasons I got it, is I wanted to play around with some game stuff. Their SDK is- So it is totally open. Anybody can download the SDK, you do not have to sign up for anything.

(00:19:49):

They have two versions of it, actually sort of three versions. There is a web-based one, that has a game editor, and you can make any kind of tile based game. If you are familiar with tile games, it is where you have- Gosh, how do to describe this? The entire-

EW (00:20:07):

What is an example of a tile game?

CW (00:20:09):

Oh, boy.

EW (00:20:10):

Is Angry Birds tile game?

CW (00:20:12):

It could be done as a tile game, I think.

EW (00:20:15):

Original Mario?

CW (00:20:16):

Marios, yeah. Mario kind of games can be tile games, I think. It is where everything is built up of squares, and you can draw different things in each square, and each square is the same size.

(00:20:26):

So you can imagine you have got a character that takes up- That is a Sprite, and then it is in a room made up of various squares. You create all the squares. The square might be a block of concrete, and you just build things out of blocks of concrete. And then another square might be a light, and you put that somewhere. And then a chest. Things like that. You build it up out of that.

(00:20:45):

You can go from room to room, or scroll around, or whatever. And interact with things. So the web-based thing makes those kinds of games. It has a scripting engine in Lua that you can use. 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 is that.

(00:21:02):

For more serious game development, they have a real SDK that-

EW (00:21:06):

Real?

CW (00:21:07):

That you have to download on a computer, and build things and edit it in an editor.

EW (00:21:13):

C, Lua, Rust?

CW (00:21:13):

It is Lua or C or both. So you can do a whole heck of a lot in Lua, but if you need more performance, you can do stuff in C and extend Lua. You can either write your whole game in C, or do bare metal stuff or whatever. Or use their APIs. Or you can combine them and make, "Okay, I need this to be fast, so I am going to write a module in C, and then call it from Lua." That kind of thing.

(00:21:37):

It has been really cool. It was really easy to get set up. It was striking how fast I went from downloading their SDK, to installing it, to having something running. It was like, I do not know, 20 minutes. I am doing it in VSCode. They have some extensions for VSCode. They have a support in other IDEs too. Yeah, it was a real weird contrast from installing many other SDKs for things that are embedded-

EW (00:22:05):

Yeah. Lately we have been setting up a lot of clients.

CW (00:22:10):

It is a fairly complicated full featured SDK. It has got lots of graphic stuff, lots of file management stuff, lots of sound stuff, signal processing, sound synthesis. Anything you need for a game basically is all in there. It is very complete.

(00:22:28):

It was a weird experience that these people just, "Yeah. We are going to make a console, and also an SDK." It just felt like, "Wow. Okay. They made everything." I did do some stuff with the C, and that was a little bit harder. The Lua thing was really, really quick to get going.

EW (00:22:50):

I remember you being grumpy about the C part.

CW (00:22:53):

There are some issues with CMake. So the C part, they suggest using CMake. It also works with plain Make, and I probably should have stuck with that. But CMake I do not really understand very well.

(00:23:02):

There was some weird stuff about running on the simulator, versus on the device itself. You had to do some arcane CMake command to switch it to build for the simulator, and point at the- It is running a Cortex-M7, so it uses the Arm GCC stuff.

EW (00:23:20):

And Lua is interpreted.

CW (00:23:21):

Which the SDK downloads for you. So if you think you have to go through the, "Oh my God, I have got the Arm SDK and installed it somewhere..." But it is all bundled together, which is nice.

EW (00:23:31):

And since Lua is interpreted-

CW (00:23:32):

Yeah, you do not have to do anything.

EW (00:23:33):

It did not matter whether you were running the simulator, or the device. It is only when you get to C, that you actually have to cross compile. That is where things got a little gnarly.

CW (00:23:41):

Yeah. It was not super clear what was wrong. So I downloaded it to the device and would run my game. Then I would get an error saying, "Ah, you are calling the C function. I do not know what is going on." It did not say, "This is missing." It kind of said it was missing, but it was not really clear. Really what had happened was I had built for one architecture, and it was not putting it over- Anyway.

(00:24:00):

So yeah, it is pretty cool. It is 200 bucks. It is pretty expensive for what it is, sort of. That is why I hedged on it.

EW (00:24:08):

But you seemed to have a lot of fun programming for it.

CW (00:24:11):

Yeah. So I made- The first thing I did and I am still poking at, is I wanted to see if I could make a Mandelbrot solver on the screen. And maybe extend that to do other fractals or stuff. I got that going in a couple days. Not in a couple- That did not take me a couple days been busy. A couple hours. <laugh> Over a-

EW (00:24:27):

A couple days of working at it, like an hour after work. Yeah.

CW (00:24:31):

In front of the television, before dinner, yeah. <laugh> Or after dinner. Yeah, I did that in C because I wanted it to be fast. It is pretty interesting. I do not know, it is kind of a throwback in some ways, but also there is a lot of modern. The software development part of it is modern, so it is funny.

(00:24:49):

There is a big community around it. They have a developer forum where people answer questions and stuff. I think there is Rust support for it. Although they had a hilarious description of it, said basically, "This is not working very well. Use it if you want to try it." But yeah, that is all I have got to say about that, really.

EW (00:25:10):

Well, I did not get it, but in the auxiliary way of hanging out with you, it made me want to create a game. So I started to plot out what my game would be. That was fun. I had 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-

CW (00:25:36):

Yeah. How to use that crank in some manner, is really interesting trying to incorporate it. The games that I have gotten so far, each of them does something weirdly different. There is one where you- It is the only interface, is the crank, and-

EW (00:25:53):

For this game.

CW (00:25:53):

For this game. It makes time go forward or back, and that is it. So it is 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.

(00:26:08):

So if there is like a monster or- In this case birds come at you, that you do not want to hit you in the head. So the bird keeps coming at you, even if you are time going. So you have to time things correctly. Anyway, it is weird. It is hard to describe.

(00:26:20):

Then there was another one, where you turn it to turn the whole world, and then a marble rolls. But some just tack it on as well, "We could use this for something." I think there is one, there is a birding game and you just use it to focus the camera, then that is the only real thing it does.

EW (00:26:37):

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. And use the crank to go back and forth in time. So you would not be able to discover who stole your cat.

CW (00:26:54):

It was a skunk.

EW (00:26:57):

Are you sure I do not smell bad? Because it was really bad.

CW (00:27:01):

It is fine. It did not get you. It got the dog.

EW (00:27:05):

Yeah. And yet.

CW (00:27:08):

<laugh> Anyway.

EW (00:27:09):

Oh. Matt mentioned- When you mentioned the Playdate on our Slack, he mentioned PewPew for Playdate, which is MicroPython. A port-

CW (00:27:22):

Oh, okay. Yeah, I saw that.

EW (00:27:25):

To make games in MicroPython.

CW (00:27:29):

Yeah, I think you can. It is very open. You can pretty much do anything you want. If you want to sell games, you do not have to- Or release them for free or whatever. You do not even have to do that on their website. I think there is a ton on itch.io, which is a big indie game site, and you can sideload whatever you want.

(00:27:47):

It has been really good. The hardware is cool. The battery lasts a really long time, because it is LCD with no backlight. It has no backlight, so you have to be in reasonably good lighting. But it is pretty good.

(00:27:59):

It has a very similar screen- I think it is the exact same technology, or even same part with just a larger form factor, as what the Fitbit Surge- Which was the first smartwatch I worked on. Had an LCD screen with a-

EW (00:28:12):

That was not OLED?

CW (00:28:12):

Trans reflective-

EW (00:28:12):

Oh.

CW (00:28:16):

No, no, it was LCD. They called it- What did they call it? Was it Phillips? Memory LCD. I do not remember if it was Phillips, but the part was called "Memory LCD." The idea was you could- It had its own frame buffer, so once you put stuff in it, you did not have to power any of the rest of your chip, to keep the LCD populated with stuff. So it was good for low power.

EW (00:28:43):

Cool. What are you going to do after the Mandelbrot set?

CW (00:28:47):

I do not 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. It was like, "Oh, this could be fun." I did not feel like I was fighting stuff constantly. Or the problems I was solving were kind of fun. But lately I have just been fighting stuff back at work.

EW (00:29:06):

Why does everybody have problems with bootloaders right now?

CW (00:29:09):

I do not know. I am glad I am not working on that.

EW (00:29:10):

I have had multiple inquiries on bootloaders. One potential client was in a world of hurt. They had done everything right. All I could tell them was, "Yes, you are going down the right path. All of those painful rocks in your way, are just things you are going to have to get by."

(00:29:29):

Other clients are like, "Yeah, we have shipped some units, maybe a lot of units. And we need to update the firmware." And I am like, "Yeah, about that. There is no magic fairy wand that just updates firmware."

CW (00:29:49):

What if you use a high enough voltage?

EW (00:29:50):

<laugh>

CW (00:29:50):

Now granted, you might not be updating the firmware to anything but-

EW (00:29:57):

Bricks?

CW (00:29:57):

Bricks or ash. But if we use a high enough voltage, I am certain we can update the firmware on every device on the planet.

EW (00:30:06):

Let me talk to the sun about the next solar storm. Sure.

CW (00:30:09):

<laugh>

EW (00:30:09):

Okay, well let us go on to things like this. Swornenemy- Hey, did you hear that Goliath open-sourced everything?

CW (00:30:27):

No.

EW (00:30:28):

All right, well maybe we will put that in the next newsletter as news.

CW (00:30:33):

They open sourced their software? Or their-

EW (00:30:37):

Pretty much everything.

CW (00:30:38):

Everything?

EW (00:30:41):

Yeah.

CW (00:30:41):

Okay.

EW (00:30:41):

And they have good docs.

CW (00:30:43):

I had not seen that. No.

EW (00:30:44):

Anyway. Swornenemy, Chris Gammell, would like an update on our likes and dislikes of Zephyr.

CW (00:30:53):

No change. I have not been using it recently. Well no, that is a lie. I have been using it. I have just been modifying some very local code, that is not very Zephyr, in Zephyr. So it has not altered my opinion. It is fine. Uh-oh, uh-oh.

EW (00:31:14):

Talking to new clients, especially ones who- A couple of them have been, "I made it all in Arduino, and now I am shipping it," sorts of clients. Which are great, because they are always very excited. But then I worry about disillusioning them.

(00:31:30):

One of them said, "Well, should I do this in Zephyr?" And I said, "Maybe," of course, because the answer is always, "It depends." But the problem was, "Are the things you are solving, things other people need to solve?" Since they were talking to me about bootloaders, okay, bootloaders are an area where Zephyr can provide some assistance.

(00:32:00):

The way bootloaders work with Nordic is pretty good. As long as you are doing something relatively straightforward. Loading your code to a SPI flash, loading your code to the processor itself. And not trying to load secondary processors, or do something interesting.

(00:32:19):

I guess that is the thing. I could get Zephyr to do mostly what I wanted to do, as long as I stayed on the path. As soon as I stepped off the path, there was this sucking sound and my foot was bogged.

CW (00:32:34):

Why were you stepping off the path? Were you stepping off the path of Zephyr? Or stepping off paths of Nordic?

EW (00:32:39):

Both actually.

CW (00:32:41):

Yeah. So you are stepping off two paths simultaneously, which sounds really dangerous. <laugh>

EW (00:32:50):

For other Zephyr things, not just Nordic. 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. Because it is so big that sometimes when I got lost, I really could not find my way back. There were a number of times I just reinstalled everything.

CW (00:33:23):

Do you think that is specific to Zephyr? Or had you not ever used, say, STM's SDK, would you feel similar?

EW (00:33:31):

It is a complexity issue.

CW (00:33:31):

Yeah.

EW (00:33:31):

It is a "I do not know what I just did wrong." With ST and with Zephyr, sometimes not all the files are committed, so you cannot find what you did wrong. So yeah, it is not really Zephyr's fault, just there is so much to it.

CW (00:33:53):

Were these code things or configuration things?

EW (00:33:55):

Both. Although configuration things are much harder.

CW (00:33:59):

Yeah, I think that is still the sticking point. Nothing has changed since last time we talked about it. But I think that is both the promise and the curse of Zephyr, is the configuration stuff makes many things possible, that really are not possible without rolling your own stuff. But also it is really hard work.

EW (00:34:21):

Changing processors is so much easier.

CW (00:34:22):

Right. Or boards.

EW (00:34:24):

And I am more familiar with DTS files, I am 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 is not shipping enough that that is going to be a problem in the short term, I am still not recommending Zephyr.

CW (00:34:50):

I would say it depends on the experience level of the team.

EW (00:34:54):

Yes. These are new experience.

CW (00:34:54):

If they are pretty experienced embedded people, it is probably a good choice.

EW (00:34:57):

Yeah.

CW (00:34:59):

If you are still coming up, either- Well, there are two ways to look at it, right? If you are still learning about embedded, might as well learn Zephyr, because you are probably going to use it in the future. And if you are going to spend any time climbing a learning curve, that is probably the one to choose. Or, you could say, "It is too hard. Learn something easier first."

EW (00:35:16):

One of the clients who came had real-time constraints. I assume Zephyr does fine, but I did not want to try to bash their real-time code into Zephyr's framework.

CW (00:35:29):

Yeah. Yeah, yeah.

EW (00:35:29):

I did not know how to do that. And I was worried that it would take me too long.

CW (00:35:37):

Yeah.

EW (00:35:38):

Because they had working code. Yeah. Anyway.

CW (00:35:43):

The stuff that I am having trouble with, or had trouble with over the last two weeks, is I am doing really crazy stuff. I have a dual core Zephyr on one, something else on another. They are talking to each other.

EW (00:35:54):

By chips that has not been released.

CW (00:35:58):

They are talking to each other over shared memory. And so 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, it is system related problems that just I have to- I am bouncing back and forth between two models, and that is really breaking my brain.

EW (00:36:24):

And I guess I have been so long in the bare boards model, that Zephyr innately breaks my brain. I want to like it more. I think I will like it more, once I have used it a few times. But it is not-

CW (00:36:42):

Should port it to the Playdate.

EW (00:36:44):

Yeah, do that.

CW (00:36:46):

<laugh> I do not know what they run actually, what they have done for their base system.

EW (00:36:54):

NotQuiteHere, who I do not know who that is, but sure. At least they are not making me say "jakeypoo." "I would also be interested in your opinion of Yocto."

CW (00:37:05):

Oh God!

EW (00:37:05):

<laugh>

CW (00:37:05):

I used it once. I hated every second of it. I quit the company.

EW (00:37:13):

<laugh> I do not really have an opinion of it. I have used it once, but I was a manager at the time, so it does not count.

CW (00:37:18):

Yocto and BitBake. Something. I just remember entering a command on my laptop, and then taking the rest of the day off.

EW (00:37:27):

I do not do a lot of embedded Linux.

CW (00:37:29):

Yeah, it is not- I am doing Linux, but I am not calling it "embedded Linux." Because it is desktop Linux on an embedded thing. Not having to do any of that. That is really not my thing. And if somebody asked me to do it, I would probably just retire.

EW (00:37:44):

I do not know that I would retire, but I would defer them, "I am not the good person for this."

CW (00:37:48):

I am looking for any excuse. <laugh>

EW (00:37:48):

You are looking for an excuse.

CW (00:37:50):

Yeah, I understand that it is helpful, and I know what it does. I have seen it in action, and been afraid of it.

EW (00:38:00):

If I was faced with the need to use it, I would suggest somebody hire someone else. Someone with experience in that area, because it is one I do not. And I do have skills in other areas.

(00:38:09):

Okay. Andrei From The Great White North, "Any upcoming get togethers?" as he needs a vacation.

CW (00:38:16):

<laugh>

EW (00:38:16):

Honestly, so do I. This whole work instead of vacation thing, was not as much fun as I thought it would be.

CW (00:38:26):

Yeah. And there has been other stressors.

EW (00:38:27):

Skunk.

CW (00:38:27):

We have nothing planned.

EW (00:38:31):

We have nothing planned. I do know that 500 is coming up. Probably that would go by with a cupcake, because 511 is coming after that, and that seems way more interesting to embedded programmers.

CW (00:38:42):

<laugh>

EW (00:38:42):

I do not know. I do not know.

CW (00:38:47):

You have put the idea into our head, and it will roll around there in the empty space like a marble.

EW (00:38:55):

Making clinking sounds.

CW (00:38:56):

Perhaps finding a little divot, which makes a little flag go up, that causes a conveyor belt to take a thought from one end-

EW (00:39:07):

Which then knocks over the dominoes-

CW (00:39:10):

Which falls into the fish tank-

EW (00:39:12):

Where the fish is scared, and then drives its fish tank over to...

CW (00:39:18):

<laugh>

EW (00:39:18):

The skunk. Let us go with just a skunk.

(00:39:27):

Okay. Ooh, this is a good one for the, "How am I supposed to know that?" "What is RSS?"

CW (00:39:36):

Oh!

EW (00:39:37):

"How does the RSS HTML thing work? And how do you transfer it to XML?"

CW (00:39:43):

What? Transfer it to XML? RSS is X- RSS is-

EW (00:39:48):

<laugh>

CW (00:39:50):

Wow. No, I am not making fun of the question. I am just trying to put it into my head.

EW (00:39:57):

Formulate the words.

CW (00:39:59):

Ah. RSS. How would I describe RSS?

EW (00:40:03):

I would have described it as an XML file.

CW (00:40:05):

Yeah, it is- "RSS" stands for, I think, something "syndication." Here, let me pull it up. "Really simple syndication." So, yeah.

EW (00:40:18):

Really

CW (00:40:18):

Yeah.

EW (00:40:18):

Why do they call things like that?

CW (00:40:21):

So RSS is a way of having things that come out, like blog posts or podcasts or videos or whatever-

EW (00:40:28):

Periodic things.

CW (00:40:29):

Periodic things, be published in a way that a client can look at the publishing and say, "Here is 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.

(00:40:50):

RSS was the protocol by which the publications put the things out there, for those things to consume. The way it did that was really simple, hence the name. It is just an XML file and there is a format. For every entry or thing you are publishing, you tack on a new entry in the RSS file.

(00:41:11):

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 is basically it. You put it up on a webpage. It is like your website /rss.xml and that is pretty much it.

EW (00:41:30):

Well RSS is well-defined.

CW (00:41:32):

Yes.

EW (00:41:32):

So there are things like titles and bodies and tags.

CW (00:41:38):

Like, "This is a podcast," "This is a blog post."

EW (00:41:41):

And everything is dated, so that you could say, "Give me everything after whenever the last time my reader checked was."

CW (00:41:48):

Well, not really. Because the XML file is still just the big XML file. It has everything-

EW (00:41:55):

True.

CW (00:41:55):

So you cannot go to the website and say, "Give me everything after." That is up to you the client to deal with.

EW (00:42:00):

That is true. You download the XML file, and the Python script I wrote said, "Give me everything after this."

CW (00:42:07):

Mm-hmm. Yeah.

EW (00:42:07):

Although at the time I was writing my own Python script, for reasons we can discuss or not. 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.

(00:42:25):

So it was not very hard to parse the RSS. And then because it is a very parsable thing, you can translate it to HTML relatively simply.

CW (00:42:40):

Yeah, that too. Most blogging engines would produce-

EW (00:42:47):

Like Squarespace or-

CW (00:42:48):

Squarespace or WordPress or the blog something, Blogface.

EW (00:42:53):

I think there are a couple of readers online that will prettify your RSS.

CW (00:43:00):

Yeah, but those will produce the RSS file automatically.

EW (00:43:03):

Right.

CW (00:43:05):

You just write a blog post and then you say, "Publish," and it tacks 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. Yeah. I hope that answers the question.

EW (00:43:19):

Sites that have been around for a long time often have egregiously large RSS.

CW (00:43:25):

Yeah. Or, what they often do is truncate them like, "Okay, everything three years old we are not going to share with you," or something like that.

EW (00:43:36):

Well, 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.

CW (00:43:48):

Yeah.

EW (00:43:50):

Okay. So that is RSS. Python has a really nice library. I would go look at that.

(00:43:56):

Also from Sila, "Are you guys considering streaming, or switching to a Twitch channel?"

CW (00:44:05):

No.

EW (00:44:05):

No.

CW (00:44:06):

Few reasons. I do not want to be on video, especially right now at this moment.

EW (00:44:13):

<laugh> And I smell like a skunk.

CW (00:44:16):

The internet does not have that yet, smell-a-vision. Do not want to set up video. It is a big pain.

EW (00:44:23):

Editing is not ten times harder. It is like a hundred times harder.

CW (00:44:26):

Definitely not editing video. Our shows tend to be interview shows, where we are 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 do not feel like they are live. If it was just us all the time, I would consider streaming the audio live, if anybody was really interested in that. But if it is us-

EW (00:44:58):

Yeah, I would stream the audio live. I do not really mind.

CW (00:44:59):

If it is us with guests, I am not going to do that, because I am not going to put that on a guest. And sometimes we say things that they do not want out there.

EW (00:45:09):

As part of my intro with guests, I say, "If you say something imprudent, like the folks who told us-"

CW (00:45:13):

How to reverse-engineer their product.

EW (00:45:14):

"How to reverse-engineer their product, yeah, we do not post that."

CW (00:45:19):

Yeah. So I really want a chance to edit shows with guests, before they go out. I do not care if I say something stupid. I say something stupid all the time. People know that.

(00:45:29):

Yeah. There is a lot of infrastructure to stream live. I do not really want to do it. If there is a huge clamoring for it and people were saying, "Yeah, we will do X, Y, or Z if you do that," then I would think about it. But certainly not video. Video is just too hard. And I do not want to have to make myself look like a presentable person. Ever, really.

EW (00:45:51):

I would consider a live stream for a special show.

CW (00:45:55):

Yeah.

EW (00:45:55):

Like a 500 or something.

CW (00:45:59):

But I do not know. If folks are saying that is what the thing is these days. And that would get us a bigger audience, for whatever reason. I do not know why we would want one. <laugh> But let us just say for the sake of argument, we wanted a bigger audience.

EW (00:46:15):

We love you just as you are.

CW (00:46:16):

<laugh>

EW (00:46:16):

You are enough. You are perfect.

CW (00:46:19):

I guess we could consider it. You had the puppet idea. Maybe we could just have avatars.

EW (00:46:26):

Sure. I am fine with that. Avatars. Yeah.

(00:46:30):

This goes back some to my I do not want to talk about women in tech, but I do want to have more women's voices talking about technology. I want more diversity. Can you even see the diversity when it is just audio? If it is diversity that is not vocal range, if it is not just gender diversity. I do try to get to get larger diversity than gender diversity.

(00:47:06):

Talking heads. There is something about it that makes me unhappy. It is not like I hate watching myself, which I do, but everybody does. That is fine. I hate listening to myself. Everybody does. That is fine. I would feel the need to do slides or something, and then we are just talking about more work.

CW (00:47:32):

Yeah, it is a lot more work. There is a podcast, there is a drum podcast. My instructor actually has one, where he talks to various drummers, some famous, some maybe unheard of, but also very good. He tends to edit them.

(00:47:46):

They are Zoom things. He is not doing them in person. He tends edit them, where it is not both people on at the same time, but going back and forth as they talk. And that is fine. I think that is reasonable.

EW (00:47:57):

Is it talking heads?

CW (00:47:59):

It is their heads that are talking.

EW (00:48:02):

Well, you might have just the hands and drums.

CW (00:48:06):

No, there is no- Yeah, it is just talking.

EW (00:48:07):

Oh, okay.

CW (00:48:07):

There is no music- Sometimes somebody picks up a stick and demonstrates something. That is fine. But I do not feel like that really adds much to our show, given that this has been the format for a long time.

(00:48:20):

Yeah, and I am just getting more weird looking. I mean, I do not think- I guess people could watch my piercings count go up or something.

EW (00:48:32):

They did, too.

CW (00:48:34):

They did?

EW (00:48:35):

The piercings count.

CW (00:48:36):

Oh, yeah.

EW (00:48:37):

Okay. Okay.

CW (00:48:40):

Okay!

EW (00:48:40):

Let us see. Yen loves the content we put out.

CW (00:48:49):

Okay.

EW (00:48:49):

I hate the word "content."

CW (00:48:50):

That is not his fault.

EW (00:48:51):

I know. "What are your thoughts on model-based designs in embedded systems? For example, using Simulink?"

CW (00:49:02):

Oh. I have not done it much. Have you done any of that stuff? It feels like something that-

EW (00:49:08):

Not in 25 years.

CW (00:49:10):

It feels like something that engineers with a capital E do a lot.

EW (00:49:15):

<laugh> What does that mean?

CW (00:49:17):

You know. People who graduate with mechanical engineering degrees, or chemical engineering degrees. Not people who graduate with, "Thank God I got out of here" degrees.

EW (00:49:29):

<laugh> Okay.

CW (00:49:33):

<laugh> The people who get the certificates that say, "You are a legal engineer-"

EW (00:49:36):

Professional engineer.

CW (00:49:37):

"In the state of Nebraska," or whatever. "You are a Nebraska engineer." This is why we should not do podcasts when I am exhausted.

EW (00:49:45):

<laugh>

CW (00:49:45):

Okay. Nobody should be offended by anything I am saying, because I actually do not know what I am saying at this point. I am just existing in a weird mist.

EW (00:49:56):

It is the skunk smell. You have a contact high.

CW (00:50:01):

I have not used model stuff. I know of them. I know of Simulink. I know traditional engineering disciplines tend to use them, and then code comes out, and people tend to like that. I think if you are designing a co-generation gas turbine plant, maybe that is the sort of thing that is required for it. I do not know. For traditional embedded, I do not see that it is all that widely used or useful.

EW (00:50:22):

With a lot of embedded systems, you are trying to fight a number of different areas. You have the functionality, which we are going to give as a base. Then you have the time to market. You have the controller cost. And you have the third thing.

CW (00:50:46):

<laugh>

EW (00:50:46):

Jeez. <laugh> Really? That is where I am going? I had the third thing. It was there.

CW (00:50:54):

Wait, wait. What were the first two things? Maybe I can fill in.

EW (00:50:56):

Time to market.

CW (00:50:57):

Time to market

EW (00:50:59):

And BOM cost.

CW (00:51:00):

BOM costs. And, <laugh> what is the third thing? Ease of development?

EW (00:51:05):

Speed?

CW (00:51:05):

No, that is time to market.

EW (00:51:07):

Cost.

CW (00:51:07):

You can want it good. You can want it fast.

EW (00:51:11):

Or cheap.

CW (00:51:12):

Or cheap. Yeah.

EW (00:51:13):

So good.

CW (00:51:13):

Yeah. Goodness.

EW (00:51:14):

Okay, so good must be-

CW (00:51:15):

Robustness.

EW (00:51:21):

<laugh> Okay. We are going to go with robustness. Yes.

CW (00:51:24):

Okay.

EW (00:51:24):

Reliability.

CW (00:51:27):

And design for manufacturing, all that kind of stuff.

EW (00:51:30):

fail-safe. All of this.

CW (00:51:32):

Doing good code.

EW (00:51:32):

Doing good code.

CW (00:51:33):

Good design. <laugh>

EW (00:51:39):

And while we always want to do the best code-

CW (00:51:45):

Wait! Speak for yourself! <laugh> Oh, sorry.

EW (00:51:50):

The size of the processor may not allow it. Some of the model-based designs do have code that is bigger than it would be if you hand-edited it.

CW (00:51:59):

It is going to be some sort of- Well, yeah, they are generating code sometimes, or they will have some kind of runtime engine to take their model and- Yeah.

EW (00:52:07):

And time to market may be faster, if you know the modeling tools. If you are doing a complex algorithm generating power from wind turbine, then yes, you may need those tools.

(00:52:20):

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 do not want a model there.

(00:52:43):

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 system view? I have seen model-based code. I have seen code generation. There are times these tools are very useful.

(00:53:03):

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 is not useful, because it just cannot run and meet your power requirements or your cost requirements or your speed requirements. So yeah, I do not know if they are the future.

CW (00:53:29):

I think there is a past. Well, I do not know. I do not know. I have not seen new developments in there, but it is not an area I follow. Maybe there is cool new model-based stuff happening, but it is going to be in industries that we do not- I think it tends to be in big plant kind of stuff.

EW (00:53:46):

Yeah.

CW (00:53:46):

Controller. Big system, factory controller. Physical plant controller, whatever sort of stuff. So I do not know. Maybe they use it for- Do they use it for aviation stuff at all? I would think for avionics-

EW (00:54:06):

When I said I used it 25 years ago, I was actually thinking of avionics. Although there were some other MATLAB things before that. I do not really think that TensorFlow would count at this point.

CW (00:54:22):

No, that is a different kind of model.

EW (00:54:23):

Yeah. But it does generate code.

CW (00:54:26):

Does it? It does not generate code.

EW (00:54:29):

Well it generates the weights which control the blah, bub-blah, blah.

CW (00:54:33):

It does not generate code. If only it <laugh> generated code!

EW (00:54:39):

So yeah, it is an interesting sub area. It is going to be in some job qualifications, that are probably more for safety critical systems and larger systems. If that is what you want to do, maybe it is something to look into. If it is not, then maybe not.

(00:54:59):

Okay. I am pretty sure I still smell like a skunk.

CW (00:55:03):

Something in here does, but I think it is probably the dog.

EW (00:55:06):

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 six times, and only twice on me.

CW (00:55:18):

Think you used that on you. Probably should not.

EW (00:55:20):

You understand that when the dog is soaking wet, there is no way anyone around her is not also soaking wet. Even though she is only eight pounds.

CW (00:55:28):

I think it is only fair the skunk should have participated in that cleanup effort.

EW (00:55:35):

I do not. <laugh> I do not. I do not. I do not.

CW (00:55:38):

Goodbye everyone.

EW (00:55:40):

I do first, before I read from "Winnie the Pooh"-

CW (00:55:43):

We have to do the outro thanks and stuff.

EW (00:55:46):

Well, yes. But I have more.

CW (00:55:48):

Oh, you have more?

EW (00:55:48):

I have more.

CW (00:55:49):

You were getting the book, so I figured we were done.

EW (00:55:53):

So little kid went up to his parents and said, "How does Pooh happen?" Mom sat down, explained kind of awkwardly, but explained the whole bowel movement thing. The kid looks up and says, "Okay, what about Tigger?"

(00:56:14):

Thank you for listening. This has been Embedded.

CW (00:56:19):

This has been the last episode of Embedded.

EW (00:56:20):

That is not true. That is not true.

CW (00:56:22):

<laugh>

EW (00:56:22):

Thank you to Christopher for producing and co-hosting.

CW (00:56:27):

Woo-hoo!

EW (00:56:27):

Thank you to our Patreon listener Slack for their support.

CW (00:56:31):

Woo-hoo!

EW (00:56:32):

And for their questions. And for their entirely amusingness.

CW (00:56:35):

Woo-hoo!

EW (00:56:35):

If you would like to contact us, hit the contact link on embedded.fm, where you can find the show notes and the transcripts.

CW (00:56:45):

And the RSS feed. Well, an RSS feed. But the canonical one is actually on Libsyn, so do not use the Embedded one. Forget I said anything.

EW (00:56:53):

It is under the "subscribe" page. You will find it if you want to see the RSS feed. You can also email us at show@embedded.fm. And now some "Winnie the Pooh."

(00:57:05):

I guess before I get started, if you are not familiar with the "Drift Off" podcast, but you are listening to this to go to sleep, you should try "Drift Off." It was pretty good. I <yawn> listened to a lot of it last night. <yawn>

CW (00:57:17):

<laugh>

EW (00:57:17):

[Winnie the Pooh excerpt]