Embedded - 481: The Girl from Evel Knievel
Episode Date: July 25, 2024Chris 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)
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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,
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
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,
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.
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.
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.
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
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
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
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,
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.
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.
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.
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.
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?
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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.
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.
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?
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
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
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.
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.
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.
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,
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.
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
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,
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
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.
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
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.
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
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,
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
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.
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,
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
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.
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,
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.
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
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.
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
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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,
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.
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.
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.
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
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
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,
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
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.
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.
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.
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.
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.
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,
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
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,
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.
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.
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.
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.
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.
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.
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,
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.
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,
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.
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.
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.
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
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,
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.
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.
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.
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.
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.
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?
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,
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.
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.
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.
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.
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.
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
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.
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.
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.
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,
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,
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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?'
"'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
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.
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.
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.
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.