Embedded - 435: Sad Lack of Gnomes
Episode Date: November 25, 2022Chris and Elecia take an in-studio vacation, chatting about what they’ve been doing. A few technical topics came up, entirely unintentionally. Shirts are on sale James Webb Space Telescope Pop-Up C...ard Spicy Honey Github Codespaces lets you try out some code bases Some quirks of C How do breakpoints even work? (via Memfault’s Interrupt) Transcript
Transcript
Discussion (0)
Hello, and welcome to Embedded.
This week it's just Christopher and myself chatting with each other.
And since it's Thanksgiving, I will be phoning it in.
See if you can tell the difference.
It is indeed Thanksgiving, at least here in the U.S., a holiday in which we celebrate turkeys and remembering to feel grateful for the things we have.
I thought that was headed somewhere else, but all right.
Where was I going to head for?
I don't know, remembering something else.
Remembering to keep your mouth shut at the dinner table.
I don't know
remembering the scripts that captain awkward has given us about how to deal with our family and
all of that okay well uh what's what's on the stack here we have looks like uh you know seven
eight things to talk about.
You have new GitHub code spaces. What's that?
Really? We're going to jump into that? That's a very specific little item.
You ask me what we're going to talk about, and then you say not that.
What do you want to talk about?
Did I mention phoning it in?
You did, yes.
New GitHub code spaces. So I just ran across this today.
Accidentally, I was on GitHub looking at some repository.
And you know in the upper right-hand corner where it's got the thing that says code,
and you can click on it, and you can get the URL for the SSH version,
or the, you know, where you get the clone URL.
Okay.
There's a new tab over there called Codespaces.
If you click on that, what it appears to do, I read some of the docs,
is it creates a little container for you with an environment and a web IDE that you can edit and execute your code inside that.
And it seems to only work for like Python, C Sharp, I think they said Java,
a couple other things.
So it's not really embedded right now.
But it was very interesting.
I haven't quite figured out the usefulness of it, except to give people... I mean, it gives people a place to try a repo without doing anything.
And it's kind of odd.
It seems like we're going back to this era of, I don't know,
timeshare computing, where you don't have a computer. There's just vast computing resources
in the, I don't know, I don't want to call it the cloud, but anyway, fine, the cloud, where
you can take a chunk of some virtual computer and do stuff. But anyway, it was interesting.
I don't know where they're headed with it.
And there's cool stuff you can do with it.
Like within your repo, you can put a configuration file for the code space that sets up how it's created and what resources there are and stuff.
And any dependencies.
So it's kind of like a little, I don't know, configurable.
I don't want to say Docker container because I'm not sure that's how it works.
But a little container that's associated with your repo that you can either share or use for your own kind of development right on GitHub.
And it's not exactly free. It sounds like, for my quick reading, it sounded like you get a certain allotment of free time, free resources every month as a free or pro customer.
But then there's, you can go beyond that.
But yeah, weird stuff happening.
You'll never have to leave GitHub soon.
So I put it for my origami GitHub and I I just logged in, and it's creating the code space.
And it's funny because in the origami, there's mostly Python scripts, but there are Python scripts that run locally and Colab instantiations.
Because I use Colab a lot.
Yeah, similar.
Not similar, but...
Similar.
I mean, somebody else's computer so that you don't have to install a bunch of stuff to your local.
Yeah.
I really like Colab for that.
It's super handy.
And Colab looks a lot like Jupyter Notebooks, right?
Colab looks like Jupyter Notebooks.
And Jupyter Notebooks often runs on a server.
But it doesn't have to.
But it doesn't have to. But it doesn't have to.
And, yeah, I guess the difference for this is it's more of a traditional shell environment.
Or, I don't know, my guess is it comes up with the web version of VS Code as the environment.
It does come up with the web version of VS Code.
It didn't run my
Colab directly
and it looks like it's not going to run
my other one directly. I would have to type
at it. But it gives me
a window that I can
type at it. It's clearly some sort of Linux
machine.
That would be really cool.
I wonder
what packages I would have to install. It would be really cool. I wonder what packages I would have to install.
It would be kind of a pain to have to install each time.
I don't know.
They have a lot of docs, and there's the configuration file,
which I think probably sets up the environment every time.
It's funny.
That is one of my barriers.
I don't like to install stuff if I don't know what it does.
But what if you're installing it to a computer that's not yours and you don't care about?
Exactly.
Exactly, yeah.
It lets me try things out without committing.
Yeah, you can put tons of malware on GitHub.
I'm not that.
I don't want to have a bunch of...
Dependencies.
Well, there's the dependencies problem. And then there's the, I just have a bunch of code that I don't know what it does. I don't remember. It's just mental litter.
Mental litter. Speaking of mental litter, embed. You know, the compiler I used to say, okay, you get an embed board, it's like a step above Arduino because you're writing more directly C code and you're interfacing with different boards.
But there's still a lot of libraries out there to make your life easier.
Yeah, that compiler has been shuttered.
I mean, not just the compiler, the whole thing, right?
I mean, the compiler and the ecosystem and all of that were kind of together. Is there any embed without the compiler?
Well, they have changed it to Kyle Studio Cloud.
Oh, okay.
But it used to be with embed, Oh, okay. getting a blinking light on a particular board was a horrific number of lines,
which I don't want to see.
How many lines is horrific?
Where is the threshold for merely terrifying to horrific
in the number of lines of code for a blinking light?
Just ballpark.
Once you get beyond about 50 to just blink a light, I get pretty disturbed.
See, I can blink a light.
Just, I need no lines of code.
I just can hold the switch and move it up and down.
Thanks for that.
Yeah.
That's why I'm better than computers.
You are.
You are better than computers.
That was a long pause.
I'm trying to log into Kyle to see.
I know, but it was a long pause.
Yes, I know. I know. You're just going to take advantage of me. That's fine.
I don't need to know the exact number of lines, but it does sound like a regression.
And, you know, I don't feel like it had a lot of stuff behind it in the last few years.
No, they stopped working on it.
Yeah, so.
They lost some good people and
then they just.
And I feel like
they got kind of
leapfrogged by some
other things that
are maybe better
ways to go now.
Yeah, this, I
mean, Blinky.c
has 102 lines
as the default.
It has an
operating system.
It has variable
names that are
confusing. How many cores
does Blinking White acquire now?
I think it's
still one core. I don't quite remember which
I set this up for. Oh,
a disco board, an STM.
How much flash do you have
to have? All right, well,
embed as deslonglive, whatever comes after.
Well, I think long dad's long live whatever comes after. Well, I think long live Codespaces over the Kyle Studio Cloud.
Well, I don't think Codespaces is going to be useful for devices for a while.
Because you can't write C.
Oh, you can't write C yet?
Yeah, yeah.
I think not. I think it was just a few environments were supported.
Speaking of supported environments.
Yeah, you're all about the segues.
Yeah, segues. Zoom, zoom.
You set up your own Linux node.
Lin-node.
Linux node.
Lin-node?
Lin-yode? Linode?
You're a few deep in the stack here.
Oh, I'm sorry.
I should have somehow
segued to Twitter.
And then Mastodon.
And then, yeah.
So, Twitter.
Yeah.
We are still announcing the show on Twitter, but Chris and I have both moved our personal accounts over to Mastodons.
Mastodons?
Mastodonia?
Mastodonia, yes.
I should register Mastodonia.social.
Anyway.
You can now.
You put it out in the ether.
Somebody's going to grab it.
I have like three hours.
All right.
That's true.
That's true.
This isn't live.
What?
So with all the shuffle,
if you want to find us on Mastodon,
I will make sure that that is in the show notes.
I will also make sure there's a t-shirt link in the show notes.
Really this time.
I promise.
Really,
really,
really this time.
But Mastodon has been interesting.
Yeah, I, you know, yeah.
I think I have, and I think you have both kind of decided we're not going to invest as much technology into this and instead focus more on our hobbies.
Oh, technology in terms of topic and what we're talking about.
I mean, I usually, on Twitter, I would just put random things.
Yeah, me too.
Now it's been more origami than not.
I followed a lot of techie people.
And I followed so far everybody who i found from twitter who i was
originally following which is you know 30 i didn't follow a lot of people on twitter um so that's
fine so i get that you know i got the led crew and um some of the hacker hackaday kind of people
and companion bat folks yeah so so all that stuff i'm still getting which is nice and but i you know just
mastodon is it's an opportunity to kind of start from scratch and ask why i want to be on social
media and what kinds of things i want to see so i've been looking at different stuff and the nice
thing about mastodon is it's more hashtag oriented than twitter so you can kind of discover stuff a
little differently so i've you know been looking at astronomy and astrophotos and birds and bird photos
and moss and lichen photos and follow a bunch of those hashtags.
And I find people who regularly post that stuff and follow them.
So it's interesting.
Mastodon has some challenges.
And I don't want to get into it because every other podcast in the universe
is talking about it and everyone on Mastodon is talking about it. I'm trying to ignore those
discussions and just use it for community right now. But it has all the usual problems that come
with social networks with moderating and it has some unique problems with the way it's architected
with federations and how all that works and scales and stuff.
But I'm trying to ignore that and just use it.
And if it doesn't work out, then I'll go somewhere else.
But it's not like, I'm trying to get to the point where I'm like,
I don't really need social media.
It's just kind of fun to have a place where I can communicate with a bunch of people
who are interested in the same thing that I am.
Whereas with Twitter, even for the last few years, it became mostly people being upset. And I'm happy to see, I'm not happy to see,
I'm happy to see people upset. No, you know, I'm not filtering out everyone who's like,
you know, posting things that bother them or having discussions like that, but
trying to form a network where it's not just all about that.
So to that end, yeah, Mastodon is, if you don't know what it is,
it's a part of something called the Fediverse,
or the Federated Universe, or the Federated Group,
if you remember the 80s.
No, the Federated Group was a plant store.
Right.
And it had Fred Rated, was the mascot guy.
Anyway, Twitter, you know, is one company, centralized.
Everything happens in their data center, everything connections.
Mastodon is open source.
There's many, many servers, and they connect
together through a protocol called ActivityPub, which is kind of this complicated publish-subscribe
model thing that's akin to email and Usenet in some ways. So each server talks to each other,
and if people follow each other on other servers, then that creates linkages, and so messages and
things get around.
The user interface looks much like Twitter.
Some differences.
It's a little jankier and more open-source-y.
But it's getting better.
But it's getting better.
I mean, given the incredible inrush of people.
Yeah.
And so there's some tension between having lots of small servers and people congregating on large servers.
There's advantages and disadvantages to both. So there's a lot of stuff that has to work out on top of the moderation issues, which are sizable, especially as more people arrive. You went to a big server,
one that got closed pretty early. You're also on a huge server. I'm also on a huge server,
but I'm like not in the first generation. Yeah. Well been yeah i was on there so i actually got a mastodon account back in 2017 i think yeah i still have that one but
i've never posted there was some other initial twitter thing that made me think maybe it was
time to leave but um and that was mastodon.social which is still one of the biggest if not the
biggest instance and it's run by a guy named eugen, who's I think the originator or the main collaborator
on the open source project.
And right now there's a couple hundred thousand people on there.
And yeah, I think it's close to new signups.
Definitely.
Except for invites.
So it's very big, which has the advantage
that there's lots of people there.
So if you want to see hashtags and things,
you'll see a lot of stuff in your feed.
Disadvantage is, it appears right now,
they don't have very many moderators
for the close to a million people or whatever
that they're dealing with.
So there's some things happening there that I've seen.
So there's a lot of people encouraging people to set up their own little servers.
So is this how we...
Sure, and we snagged embedded.social, but I didn't really want to run a server right away.
And it's pretty easy to switch between servers.
Yeah, it's easy enough.
You can switch and your followers will come with you but you'll lose your old posts
and there's a cooling off period
so if you do the full switch and move your followers
you can only do that once every 30 days
but yeah
setting up your own server is an interesting idea
there's some problems with that too
apart from the idea of, oh my God, running a server. There's some legal issues and things that you have to be careful about if you have other people on who you don't have full confidence in.
Yeah, I had to agree to follow the laws in Germany or something.
No, it was US laws too. So you have to register with the copyright office.
Oh, it wasn't just that I, as a user,
had to agree not to sell everybody's data.
Yeah, so if you run a server,
you have to, because people can post whatever they want,
you have to be registered
so that people can report DMCA violations to you.
Ah, okay. So there's some stuff to do there and people suggest getting liability DMCA violations to you. Ah, okay.
So there's some stuff to do there,
and people suggest getting liability insurance, blah, blah, blah, blah.
But if you're running a server for yourself or just your family or people you know,
that's not so much an issue.
So long story short, I decided to fire up a server just to see what it would be like.
And this was stony.monster,
making sure that very few other people
are going to sign up with you.
Nobody's signing up with me
because I blocked it.
Well, yes,
because even I don't want to be
logical elegance at stony.monster.
Exactly.
It's just weird.
It's not my last name.
It could be.
We could be the stony monsters.
Anyway.
You sound like a band, though.
What would you like to know oh you fired so what is linode is it aws no well
i suppose so um so linode is a company they've been around for a very long time, since 2003. And they started kind of very early in this whole virtualization
and, you know, ephemeral server market
where you could sign up and get a server in a data center
and put your stuff on it.
And they're usually, like, fake servers?
No, they are.
They're like part of a big server.
You can choose.
So you can get shared CPU servers, which are very virtualized.
And you're on a machine with a bunch of other virtual servers.
You can get dedicated CPUs.
You can get dedicated GPUs.
There's all kinds of stuff in between.
Storage.
So there's a lot of AWS kind of capabilities similar.
But it's very simple.
So AWS I've used before for things, and it's not simple.
No.
With Linode, I basically...
So to do this, you have to have a server on the internet,
a Linux server that can run the Mastodon software.
So it doesn't take a ton of resources if you're only one person.
The more people you have in a server, the more
resources it requires.
Linode has some very
nice, very small
servers in the $5 to $10
a month range, and you can scale
that up until you're paying thousands of dollars, I'm sure.
So for the
$10 a month range, you get
a Linux box
that is yours that you can log into and install stuff.
And it's accessible on the internet if you hook up your DNS record to it for your domain and all that good stuff.
So, you know, as soon as I fired it up, I had, you know, you get to choose what distribution you want.
Ubuntu, whatever, Debian, CentOS, they have a whole list.
And you just pick, I want this server with this OS.
And you click a button, and like 30 seconds later, it's booted.
And it's yours.
And they have other stuff where you can install from their marketplace.
So if you want WordPress, you can go and say,
okay, give me a server with WordPress now.
And that all gets installed and set up, and you can just get in there okay, give me a server with WordPress now. And that all gets
installed and set up and you can just get in there. So it's kind of cool. It's not very expensive.
You know, 10 bucks a month is kind of the, I can fool around with this for a couple of months
and see what happens, price range. And yeah, so that experience was very, very easy.
I was really surprised.
So anytime I need something on the internet,
that's going to be something I think about.
Setting up Mastodon was not super easy.
And I don't know if it's just because I'm an idiot,
not super familiar with deploying WebStack stuff,
or if I tried to do it through Docker, which was not super familiar with some of the fancy Docker stuff that's happening.
Part of the problem is I felt,
so Linode actually has a how to install Mastodon
on a Linode server with Ubuntu, whatever.
So I followed that guide to the letter,
but I think Mastodon version changed
since that guide was written and things didn't work following that guide verbatim. And so I
eventually found a GitHub that had somebody who had done all the configuration properly and had
a Docker compose YAML file, which anyway, I got it installed and it's working. So I'm going to
play with it some.
I haven't moved there.
I have an account there that doesn't do anything.
I want to try upgrading the Mastodon version and see how painful that is and if I lose anything.
And I want to try setting up backups
and see how that works just before I move anything.
But I don't know.
It's interesting.
Mastodon aside, I think the experience of using Linode
and trying that out was kind of educational for me.
Our service provider for Logical Elegance has virtual private servers.
Yeah, but they were twice as expensive for less resources.
It was like $20 a month.
I thought, I've used our virtual private server.
No.
You have a shell account.
Oh.
You have a shell account on one of their major servers.
They would not enjoy you setting up a Mastodon server on that.
That makes sense, yes.
I just had something that would...
And you certainly can't point your DNS to it.
Run something occasionally. Yeah. Okay, yes. I just had something that would run something occasionally.
Okay, yeah.
No, so you need your own slice of, you need root on it.
Okay, and that you definitely don't get on most of the virtual parts.
Yeah, and an IP address that can be yours and point DNS out.
Do you remember when we used to have V4 IP addresses that we could have for a while.
I mean, I've got one now.
I just need to...
I mean, the Comcast one doesn't change.
It doesn't change, but it could.
It could, yeah.
You can pay extra for one.
They're a lot now.
Yeah.
And now, a word from our sponsor.
Why choose Newark for electronic components?
From humble beginnings as a small electronics shop in 1934,
Newark has grown into a leading international distributor of electronics and industrial components.
They offer products, services, and solutions that support customers in a wide variety of applications.
Industrial manufacturing and maintenance, medical product design, automotive, avionics,
telecommunications, security, and more. From design and testing to production and maintenance,
discover why so many choose to partner with Newark. Newark has operations in the U.S., Canada, and Mexico. They are serviced from a regional
distribution hub in South Carolina. Newark is committed to supporting local language, currency,
product, and shipping needs across North America and around the world. As part of a global business,
Newark has access to stock and strong relationships with electronic manufacturers.
They can easily serve all of your industrial electronic needs.
Learn more at Newark.com.
That's N-E-W-A-R-K dot com.
Thank you to Newark for sponsoring this show.
Other things that are happening include the end of my making embedded systems class at classpert
oh the end the end well i mean the classes are done my saturdays are free
i am still critiquing projects but they they're interesting and I'm excited about that.
Actually, I'm waiting for the mentors to critique the project and then I will critique the mentors and the projects, which is pretty fun, actually.
And now that it's at an end, I'm like kind of sad, but also pretty happy.
I think if I do it again, there are a bunch of things I want to redo.
Like what?
Well, I actually use, I don't use embed in the course, but I do use embed to look at how hardware how it supports so many different boards and how there are different layers to it and what the different layers do as far as adapting versus wrapping.
And now I'm, I mean, I could use it.
It's not terrible, but I probably will do the same thing with like Zephyr or something that is relevant to their future.
Yeah. will do the same thing with like Zephyr or something that is relevant to their future.
And there was one lesson, I was talking about state machines and I used a toy to show it off,
which I'm still happy with, but that toy was so irritating.
What was it?
It was a drive and learn toy. Oh, a kid's toy, a little kid's toy that you push the buttons and it squeaks or squawks and honks or, okay.
Yeah, I can see how that would be.
But it's funny with this one.
So with the first, so I've had three cohorts.
The first cohort, the Saturday live class, I didn't know what I was doing.
I thought I was just answering questions then, like a flipped classroom. They have lectures offline and then you get to class and you ask
questions and do homework, which sometimes was good, but we didn't really get enough questions.
And so I would send them off to discussion groups, and a few people thought that wasn't as useful as it could be.
So I started to work out plans for what to do when I don't have questions.
And that led to mini lectures that I could expand or talk about or do whatever that weren't critically tied to a certain chapter,
but could be sprinkled in as needed.
And for most of them, and then as each cohort went through,
I added to the mini lectures.
And now I have several conference talks that are three quarters prepared.
So I need to do some of that
and maybe do a couple of conferences.
But I'm still fully remote
and I don't want to go anywhere in person.
So we'll see.
Just put them up for videos on Squarespace
and charge people.
I don't know why I'm charging people.
Put them on YouTube.
Yes, yes. But that means video editing. Have your own conference.
The Elysia conference.
Guest speakers, Elysia.
Elysia and Elysia.
Now we have a panel discussion.
Panel discussion with five Elysias.
Has that and the class experience, has that informed how you're thinking about doing a second edition of your book?
Oh, definitely.
There are things that I wish were covered better in the book.
There are things in the book, nothing in the book really got out of date, which is just mind-boggling to me.
I'm so happy with that.
A technical book that isn't truly and horribly out and hard faults and how to set up your main loop.
I mean, we're used to the Arduino setup and loop. That kind of makes sense. And then there's the
whole while one, check this, do that, check this, do that, polling sort of event loop.
And then there's the interrupt-based event loop and all of those.
And I don't think I really described those as well as I could have in the book.
That's one of the conference talks that really worked out well this year, or many lectures.
But I don't know how I would do it at a conference. I prepped slides to go through different main loops and how they could be structured and interrupts and callbacks and schedulers. And then I told them
I hadn't written the lecture and that they had to give the lecture. And it was really fun. It made
me realize that when I do give lectures, I go much too fast.
But having them kind of talk about what they knew and different people had different perspectives and I would look at the different ones.
And I mean, I had an idea of what I wanted them to get through, but it was really way more participatory than just having me spew out information.
So I really like that.
Do you have any projects that you can talk about without identifying anyone?
Or would you rather not?
I don't know who's making their projects public.
Okay.
So I don't think so.
One of my mentors actually ended up doing a project and it's really good.
So I'm hoping we can talk more about that, but not yet.
Okay.
Let's see, what else do we have?
Oh, I found an origami for people who want to try things out
it's not really origami it's a james webb space telescope pop-up card gives you all the instructions
on how to make a little card that is that has the telescope go up oh it, it's neat. It was really cute. Yeah. Although.
It's pretty hands-on.
Yeah.
And you need some cool papers
to make it work right
or to make it look right.
Yeah, you need
a gold foil paper.
But
I wish they had said
you could do that
with tinfoil
if you wanted
or other shortcuts.
I'll put that in a link in the show notes.
I have been doing a lot of origami lately. my brain fog, my brain fatigue, my burnout.
Start to the B.
Is getting better,
because now I have more energy for origami after doing work.
Of course, I haven't been doing a lot of work this week,
so maybe that's not true.
Do you think the frighteningly painful and high-pitched, high-volume
acoustic modem sounds that you've been subjecting yourself
and the neighborhood to have perhaps
cleared out some plaques or something in your brain
allowing you to function better? No.
Oh, okay. Are you telling me
you want me to close the door
when I'm working with the acoustic modems?
No, I just want people to understand
that embedded systems is sometimes a field with irritation.
Yes.
Yes.
I am having fun working on that project.
That's because that's what the project tells you to feel.
Maybe.
Maybe it is reprogramming my brain with little chirps.
The chirps are okay.
When it really gets into it,
when you're transferring data,
that's when it starts,
that's when it really,
they're so loud.
I guess they have to be,
but they're,
so when they're underwater, and now we're off topic.
When they're underwater, so it's very high pitch.
So, it's like, it's got to be like six or eight kilohertz.
It's something...
It's not a...
It's a...
You know, it's a break squealing, that frequency range.
I mean, they sound like modems used to do.
No.
No, modems were far lower because
they were more constrained by the telephone line bandwidth, analog bandwidth. They couldn't get
that high. I think they were very low. I mean, these are much more painful. I listened to a lot
of modems as a kid. I used to talk to the modem and try to see if I could get it to, like, if you call the fax machine, you can make the eee sound, and sometimes
I could do it just right and get it to try to connect to me. Anyway, no, yours are worse.
I mean, I'm sending data pretty slowly.
Yeah, but I think the encoding, where it's put it in the... Yes, it does have a bunch
of features for
multi-path detection
and removal.
Yeah, they're really loud underwater
and I don't really understand. I've got two
right now so they can talk to each other.
And I put one on super
low power and it's still very
loud. And the other
one is very quiet and it isn't on super low power and it's still very loud. And the other one is very quiet and it isn't on super low power.
So that's kind of confusing, but maybe I can make the loud one quieter somehow.
We were going to talk about something else.
Well, I was going to talk more about origami.
Yes, origami yes um i finally made a form for my family and friends uh who want origami
because i can never tell okay back up uh the last few times i've seen people in person uh
a client that i've been friends with came over to drop things off for Christopher. One of my mentors who listens to the show
picked up something
locally, even though he lives far away.
And for these people, I give them origami, whether
they wanted it or not. And so, you know, they come, I
give them origami in a jar, whether they want it or not.
And they always say neat, you know, because you can't not.
And I don't know.
And last year I packed Christopher's parents' gifts in all of my excess origami, which I wanted them to tell me if they wanted any
good origami of that sort, but instead they strung it into a garland.
So that wasn't what I wanted at all, because those were all bad origamis.
But you need like a business card that just says, do you want origami?
And then you can just hand that to people and avoid the conversation.
And then if they say yes, then yeah.
Well, I made a form, and it says, I don't know whether you want origami,
whether you just love it for me and not for you,
or if, you know, it's all just smiling politely.
And I have people, so they can say whether they want a tiny one, a tiny one on a jar, a wall-sized one.
And I've actually been pretty surprised by the people who want the larger ones.
Not many people have wanted the brain sculptures, though.
Really?
Brain sculptures.
Oh, these are the ones where they're all curve-foldy?
Yeah.
They don't look like brains that much.
Well, not that one, but the first one did.
Oh, I see.
You're not going to be publicizing this everywhere.
No, no, this is not going to be a general form for everybody,
because I can't even send you all stickers anymore.
I would like to, but... We probably ought to. And we probably ought to.
And I have new stickers. I just...
I haven't... I'm doing origami
and I'm getting better with burnout. We're not going to add
more things. Okay.
Anyways, I'm very pleased with the form um i'm pleased because it's okay for people to say no
i don't really want origami i do like it keep up the pictures but don't send me any little
you made some breakthroughs i did um because you've been trying to do
something with the curved crease origami for a while and we're kind of stuck.
Yes.
So, okay.
So you put sine waves on a piece of paper and then you fold along the sine waves.
And it isn't just putting them on.
You have to like pre-crease them.
You have to push down hard.
And then you get this piece of paper
that has little waves on it. Kind of cool.
And it goes up and down.
Your
folds should go a mountain fold and then a valley
fold and then a mountain fold, like a fan or
an accordion.
And when you're done, it's
kind of cool. And if you
squeeze one side, it does things
to the other side
that are a little non-intuitive um making it kind of a gripper form sort of thing
and i've done this before and you can do sine waves you can do different patterns and some of them look really cool but i saw someone had this thing that she was calling a spine
uh and it turns out that wasn't really what she was calling it i i eventually
found a paper she wrote in an origami conference book um yeah that exists i'm shocked but
i found the paper and started to understand that the lower the amplitude of the sine wave, the more you can rotate the paper and compress it.
Okay.
And so you have the sine waves, and when they're all up and down, compressing it in line with the sine waves kind of makes sense because you're
making the folds more prominent.
Sure.
But if you take that and then along some of the areas you twist, if your amplitude is
low enough, then it will allow you to twist and it will compress itself.
And then if you keep doing this, you end up with really, really weird things,
which don't always stay.
I had to fix them in place and then put water on them and then they'll stay.
Okay.
Although I was thinking about going to a humid environment,
I may have to put spray paint or other fixative on them so that they don't unravel in humidity.
I think some are going to Hawaii, so maybe I'll find out.
So, yes, origami.
It's been weird.
I still have one pattern I don't know how to do, but I have ideas and I have excitement and I'm making a little cute terrarium with the jellyfish and all kinds of adorable things inside the bottle.
I'm just, yeah, I'm happier.
It's nice.
I guess we should do the whole Thanksgiving thing.
What are you thankful for?
I'm never prepared for this.
I'm thankful for that my family has stayed healthy for the last few years.
I'm thankful that vaccines exist.
I'm thankful that I have, despite my complaining,
a pretty good work situation
that allows me to do other things,
even if I'm too tired to do them.
Yeah.
I'm thankful for my dinosaur converse all-stars,
which is the coolest thing I've acquired in the last six weeks.
He designed them himself.
Wow.
Let's choose a pattern.
And you made the tongue a different color.
Yeah, they're his drumming shoes.
He should be thankful for his drums too.
And new synthesizers?
Wow.
Yeah, there's always new synthesizers.
Buy two, get one free.
They had a buy two, get one free. I can't believe you fell synthesizers. Buy two, get one free. They had a buy two, get one free.
I can't believe you fell for that.
Buy two, get one free.
You know, and they were already kind of inexpensive.
So it was a deal I couldn't refuse.
Yeah, I don't know.
What are you thankful for?
For the show, I'm thankful for the patrons and the sponsor that we had this year and the listeners.
And they talk to us, which is pretty fun.
And for myself, I'm in a good work situation even when I'm not happy with work.
And we live in a very nice place.
And the beach is there. And fossils. I'm thankful for
fossils. Everyone should be.
Because without them, we wouldn't know anything
about creatures. Can you imagine if there were no fossils?
What would that be like?
Like, okay, okay, okay, hang on.
You done?
Go ahead, yeah.
Imagine there were no fossils.
We would have zero historical record of, like,
okay, when do the bones go away?
So let's say bones don't fossilize at all.
So pretty much anything from, like, I don't know, 10 or 20,000 years ago wouldn't be known.
Because right, stuff from the Ice Age was fossilized.
Mammoth bones and things.
So things can be frozen, but they don't trade their calcium for harder minerals.
Yeah, so eventually it breaks down.
So where's the cutoff
where we wouldn't have any evidence
of things? Probably 30
or somewhere around there, right? 30 or 40,000
years? I guess so.
There's just so many different methods
of fossilization.
Yes, but I'm eliminating all of them. This is
my stupid idea. Okay, so you're eliminating
all of them. Even some of
the soft bodies, they've got fossils
of those. That's pretty neat. I know.
But we wouldn't have any
evidence of mass extinctions. We wouldn't
have any evidence of...
Would we have known to go look for
massive asteroid collision evidence?
It's interesting. I don't know.
They were, I guess, thankful for
fossils.
You said you were thankful for them.
I was trying to figure out why.
I was just thinking I like picking them up and seeing how neat they are.
But you've gone a different direction.
So, cool.
What would life be like without fossils?
I bet there's some important things beyond just our own understanding of our place in the world
that we would be missing scientifically otherwise.
I think the paleontologists would agree with you.
Yeah.
So back to our own field, you have an item here for weird stuff in C.
Oh yeah, that just popped up on the Slack today.
Actually, it was a few days ago and I just
noticed it.
I think a person named Lenart
posted it. It's a
gist, and there's a link for it.
It's a gist called Quirks of C.
And it's by
somebody called
Faye59. I don't know who they are.
But it's a list of
about a dozen or two dozen weird little things
in C, not C sharp, little language features that some of which I didn't know about,
some of which are horrifying, and some of which I use all the time. And I'm like, that's a quirk.
Yeah, I was with that too. Yeah.
So, you know, it goes from everything from like, oh, if you declare a struct within a struct, you can use the inner struct as a type without referencing the outer struct.
So like, okay, fine.
That's just the type system as far as I'm concerned.
It's seen the inner struct, so it allows you to use it.
But there's other things like compound literals, which I'd never heard of. And it's
hard to describe, but basically it allows you to declare a variable without a name.
So if you have a struct and you want an instance of that struct, you do the type name followed by
curly braces, empty curly braces, and it grabs you that variable, and you can get a pointer to it.
So where is this useful?
Probably nowhere,
but it's nice for if you have a function
that takes structs as arguments,
you can pass that initialized struct
without having an intermediate variable.
It just instantiates it on the stack,
and there's no reference to it by name anywhere.
Except once you're inside
the function, of course, it'll have the parameter name.
No, this is a terrible idea.
Some of these I agree with.
It's probably a terrible idea.
Well, there are some other examples
elsewhere that made it seem not so terrible.
But anyway,
it's got some other useful
and some scary things.
One of the ones I use all the time, or used to, was flexible array members,
where as the last element of a struct, you have an array with no dimensions.
And to me, like, oh, well, how else are you going to do packets?
Yeah.
But yeah, so there's some scary things and the whole no
void
globals
that was weird
I mean that's how you hide things
yeah
yeah I guess I've done that
I guess it's alright
yeah so
it's an interesting thing to look through to see some stuff.
I think the weirdest thing definitely was the compound literals.
That feels like a non-C feature that somehow crept in.
I think the weirdest thing for me was that type defs can go anywhere.
That seemed like something I should know and is totally wrong.
So normally I do typedef, the type that I'm going to use, you know, unsigned int, and then the name.
So U32.
Yeah.
Turns out that the word typedef can go at the beginning,
it can go between unsigned and int,
or it can go after unsigned and int.
No, I'm not buying that.
I mean, that just seems very bad.
Oh, the other one I wanted to call out was,
there's a couple things that to me seem like safety features
that I either kind of was aware of or not fully aware of with arrays.
So if you, if you typed up an array with a dimension, then if you try to use that,
uh, and get the dimension wrong, it won't let you. Yeah. So if you, if you say type def int,
my array name, and then bracket, I don't know't know 15 and then you have a function that takes
that type as a parameter and you pass it an array with 14 it'll catch you that compile time yeah
um and you can also do that with um just in the uh in the argument definition for a function, you can specify the length of the array.
And I think it says it restricts it to at least that long, so you can't pass in a shorter one.
But those are nice safety features that I haven't really used much.
So, I mean, it's not bounds checking, but it's not not bounds checking.
And how would we live without function type defs?
Yeah, that one, I don't know what that's doing in there.
That's a totally normal feature.
That is not a core.
It's in the show notes.
It's a cool thing to peruse.
And there's some digression on what an L value is, which, yeah, if you're into languages, you can figure that out.
Right.
You don't need to learn a new language.
You can learn the same language, but even more so.
Yeah.
I had one more item in here about software versus hardware breakpoints.
Mm-hmm.
Do you know how breakpoints work?
So there's a little gnome that watches as the instructions go by. And when the instruction at the address that
it has on its clipboard goes by, it has an ax and it takes it and it smashes the clock.
Does the gnome live in your programmer or does it live on your microcontroller?
On the microcontroller.
Yes.
And then when you want to
continue, it gets a new clock from its backpack and puts it in and then starts it up. So I guess
that's a hardware breakpoint? That is a hardware breakpoint. And then I guess a software breakpoint
is it's your programmer desperately trying to keep up with what's going on as your device streams that debug data
and then it tells it to stop when it matches the address it wants.
Yes.
All right, there you go.
And there's only a few gnomes on your microcontroller,
but you can have a lot of gnomes on your debugger.
Except the software breakpoints,
because they are trying to keep up with your code...
Slow down your program.
Slow down your program,
which may change the debugging that you're doing.
So the difference there is that the software gnomes
are standing astride your instructions
and telling them to wait,
and they ask them,
which instruction are you?
Which address are you?
So it has to check with the clipboard.
So it's more like those gnomes are the guys outside the club checking their list, whereas the other gnomes, this isn't working.
All right.
Well, I mean, the hardware gnomes are fast, and the software gnomes have to check everyone.
They have to ask.
Yeah.
So the hardware gnomes know.
They can tell just by looking at you.
Right.
That you're not allowed in the club.
Whereas the software gnomes have to interview you.
Sure.
I hope that explains it for everybody.
I hope we've made software and hardware breakpoints clear.
And if we haven't actually...
There's this blog post that explains it without using gnomes.
Interrupt Memfault's blog post about breakpoints may actually answer your question. But as
Christopher pointed out, there's a sad lack of gnomes. All right. Is that it? Is that enough for
a holiday show that nobody's going to listen to? I think so. We may be late on shows in December
because it's hard to schedule shows around holidays.
So if we miss you, don't worry too much.
We're probably just, I want to say eating eggnog,
but that's not something either one of us would eat.
First of all, I don't generally eat liquids.
And second of all, things that
have egg in the title
without being
and they're cold
or liquid,
I'm not on board with.
Because that implies there's a raw egg somewhere
in the mix and that's not happening.
And don't tell me that the alcohol
kills anything. It does not.
Same with lemon juice and lime juice.
You're lying to yourself.
Thank you for listening to Christopher's food tips.
Cook your food.
And I lost it.
Fine.
Thank you.
Happy holidays.
We'll talk to you soon.
And now for Winnie the Pooh.
Okay.
Winnie the Pooh had just eaten all of the honey he was supposed to get.
Did he get the honey with the habanero peppers in it?
Thank you for that.
Christopher gave me a gift of honey with habanero peppers in it.
And it's good, but it really, really hurts the tongue.
Sorry about that.
But I still want to eat it, but it hurts.
It's kind of a weird experience.
It's funny that the honey was spicier than the sriracha he gave me.
We haven't tried the spicy maple syrup.
Okay, so Pooh ate the honey, his honey, which probably wasn't spicy.
And he wanted to make sure that it was honey all the way down.
Having made certain of this, he took the jar back to Piglet,
and Piglet looked up from the bottom of his very deep pit and said,
Got it? And Pooh said, Yes, but it isn't quite a full jar.
And he threw it down to Piglet, and Piglet said,
No, it isn't. Is that all you've got left?
And Pooh said, no, it isn't. Is that all you've got left? And Pooh said, yes, because it was.
So Piglet put the jar at the bottom of the pit and climbed out.
And they went off home together.
Well, good night, Pooh, said Piglet, when they had gone to Pooh's house.
And we meet at six o'clock tomorrow morning by the pine trees and see how many heffalumps we've caught in our trap.
Six o'clock, Piglet. And have you got any string? clock tomorrow morning by the pine trees and see how many heffalumps we've caught in our trap.
Six o'clock, Piglet. And have you got any string? No, why do you want string? To lead them home with.
Oh, I think heffalumps come if you whistle. Some do, some don't. You can never tell with hevelips. Well, good night.
Good night.
And Piglet trotted off to his house, Trespassers W,
while Pooh made his preparations for bed.