531: Sequestering the Mess
Transcript from 531: Sequestering the Mess with Christopher White and Elecia White.
EW (00:00:06):
Welcome to Embedded. I am Elecia White, here with Christopher White. Oops. I meant to say, "Welcome to Embedded, an award-winning podcast!"
CW (00:00:17):
Congratulations to us.
EW (00:00:19):
Congratulations to us.
CW (00:00:21):
Two awards now.
EW (00:00:22):
It is. It is. I got the Signal Award for the giraffe bird armpit with Meredith and Akiba, the story of ecology and technology. Which is great. I am excited about it, but Signal is one of those where you pay for it, mostly. It is still a little competitive.
CW (00:00:50):
Uh huh. And what have we won now?
EW (00:00:53):
We have won the IEEE Educational Activities Board, Meritorious Achievement Award in Outreach and Informal Education.
CW (00:01:04):
That is a lot of words.
EW (00:01:07):
Okay. So IEEE, I think most people know what that is. It is the engineering organization for electrical engineers, a lot of computer general people involved.
CW (00:01:20):
Yeah.
EW (00:01:21):
They have a bunch of different activities boards. The educational one is all about helping people take more education in, basically. But this one, this particular award is about outreach and informal education. So it is not teaching classes. It is specifically not teaching classes. But it is somehow teaching people about engineering, without teaching classes.
CW (00:01:52):
Okay.
EW (00:01:53):
So it is one I am really excited about, because, gosh, that is what we do. We do provide a level of informal education. Most podcasts do. And we definitely-
CW (00:02:04):
Go with most. <laugh>
EW (00:02:06):
Most of the ones I have listened to do. And we definitely provide outreach, talking about what engineers do in their daily lives, and trying to keep people in engineering.
CW (00:02:18):
Yeah.
EW (00:02:20):
This was based on the nomination from Mark Omo, who took the pile of my planning after I had given it up and decided to put it in the trash, and got it all done. And helped everyone who offered to be a nominator, to write their papers and get them all in on time.
(00:02:45):
I am actually really shocked we won.
CW (00:02:48):
Why?
EW (00:02:49):
Well, it is an award that you do not pay for.
CW (00:02:51):
Right.
EW (00:02:52):
In fact, you get money for it. Not a ton, but it is an actual award, not...
CW (00:03:00):
Yeah. And we get a trophy, right?
EW (00:03:03):
I assume we get a trophy.
CW (00:03:04):
I <laugh> was kidding.
EW (00:03:05):
I do not know. Because it is the first time we have ever tried to get the award. And so it does not seem plausible.
CW (00:03:18):
Okay. You have been interested in getting awards for the show for some time. Does this satisfy your award-getting-ness?
EW (00:03:26):
Yes!
CW (00:03:27):
<laugh> Okay.
EW (00:03:28):
Yes, it absolutely does. My New Year's resolution was to apply for awards every month, until we won one. This was part of it. Even though other people had to do most of the work, I am still- I was actually- After the whole packet went together and got submitted, I was actually really just honored to be nominated, because-
CW (00:03:59):
That is what they all say.
EW (00:04:00):
Several people had to put in time, serious time to write- Maybe not like days of time, but hours of time, to put this together and write up something that was nice about the show, about what we do with the show. After that went together, I was like, "Okay, no. I really am honored to be nominated for this." That was really cool. But to also be selected is actually even cooler.
(00:04:28):
Okay. So yes, I do think this satisfies my desire. We have one outstanding submission that I did earlier in the summer, for a science communication award. That was one where the entrance fee was very low. But it is competing against Science Friday and Radiolab.
CW (00:04:53):
Yeah, but they are old. They do not need any more awards.
EW (00:04:55):
Well, if it was me, I would probably give it to Ologies.
CW (00:04:59):
Science Friday was not even a podcast. It was a radio program for like a decade, before they just put it on the internet. That does not even count.
EW (00:05:08):
I would be really pleased if we heard back from them. But if we do not, I am done. I do not need any more awards. I think this actually was a nice exercise in external validation of-
CW (00:05:21):
And thinking about the show, and what you wanted to do with it, and what we have done with it. It is nice to look back and realize that you have produced something.
EW (00:05:31):
We do not do that often enough. We do not celebrate our victories often enough. Maybe we, Christopher and I. But I think-
CW (00:05:39):
We got cake yesterday, and I regretted it.
EW (00:05:42):
Common engineering thing, that we spend a lot of time identifying and dealing with problems. Critical thinking skills is one of the things you have as an engineer.
CW (00:05:55):
Problem solving.
EW (00:05:56):
Problem solving.
CW (00:05:57):
Has the word "problem" in it.
EW (00:05:59):
Right. But we do not often say- When you fix a bug, it is like, "Oh! Thank God. Now I will go on to the next bug."
CW (00:06:07):
Yeah.
EW (00:06:08):
Nobody ever throws us parties and parades.
CW (00:06:11):
Threw a party once. Not a parade. We could try that.
EW (00:06:14):
<laugh>
CW (00:06:14):
We have never thrown ourselves a parade.
EW (00:06:19):
I do not think that is going to happen. There would be so many glowing things. It would be so cool.
CW (00:06:25):
Well, "Boldog vagyok."
EW (00:06:28):
Ah, "I am happy." Yes. I am happy as well. Chris has found that a grandparent is Hungarian.
CW (00:06:39):
Great grandparent.
EW (00:06:40):
Great grandparent is Hungarian. That makes him eligible for a Hungarian passport, so long as he can speak some of the language.
CW (00:06:49):
Yes.
EW (00:06:50):
So we are learning Hungarian, which I am finding to be very amusing. I had forgotten how much fun it is to learn a language.
CW (00:06:57):
It is a strange language. It is not strange. It is a very unique language, compared to most European languages. It is not from the Latin family. It is not from the-
EW (00:07:10):
Germanic family.
CW (00:07:11):
Germanic family. It is not from the Russian family, or whatever that would be called.
EW (00:07:16):
Uralic?
CW (00:07:17):
It is Uralic.
EW (00:07:18):
It is closer to Finnish.
CW (00:07:20):
It is close to Finnish. I think Latvian, and some parts of inner Russia, speak little bits of Uralic things.
EW (00:07:29):
It is funny because English is basically a Romance language and a Germanic language that got mashed together.
CW (00:07:38):
<laugh> Mutual theft of both.
EW (00:07:40):
Yes, but it is somewhere in between. That is why we have so many two words for one concept. It is because you have to do both the Romance and the... But yeah, Hungarian has been fun. Duolingo has been fun for- I am not-
CW (00:07:53):
For the initial stages, it is great. Yeah.
EW (00:07:55):
Learning how to say, "Thank you," and "Please," and "Goodbye."
CW (00:07:59):
Which has nothing to do with anything. But we were joking about Hungarian notation, that we will be experts in it.
EW (00:08:04):
Yes, exactly. <laugh>
CW (00:08:07):
Look out future code reviewers.
EW (00:08:10):
It is all going to be in Hungarian.
CW (00:08:15):
Yeah.
EW (00:08:17):
What else have you got going on?
CW (00:08:18):
What else do I have going on? I still have a client, improbably.
EW (00:08:22):
You are doing engineering work.
CW (00:08:23):
I am still doing engineering work. Pretty close to shipping or actually shipping now, like this week or last week or- Yeah. Firmware has solidified to the point where there is less to do right now, because nobody really wants to touch it. There are some small bugs and stuff.
(00:08:44):
I am working around the edges of our Memfault implementation, add some new metrics, figure out how to do a few things. People are starting to use it and they are asking me questions like, "How do I do this? How do I get this data out?" I am like, "I do not know."
(00:08:59):
And then I go, look, and turns out you cannot. So now I am having support conversations with people, because I do not know why I cannot get this time series in a non-AI MCP way. I just want to put it in a spreadsheet.
EW (00:09:16):
You know if Tyler is listening to this, he is like-
CW (00:09:18):
Oh, I am hoping.
EW (00:09:18):
"All you have to do is this."
CW (00:09:19):
Well then, he can tell me. Because the email I got back from support was not that. It was, ""You can use our S3 continuous thing or MCP." All I wanted to do is give an EE a way to take one's device's battery chart and put it in CSV, which turns out to be way more difficult than I expected. But other than that, it is great.
EW (00:09:40):
Funny how hard things are easy, and easy things are hard.
CW (00:09:43):
Oh yeah. Yeah. Yeah. Well, that is the way we do things. We do not want to do the easy things. They are boring. But other than that, yeah, I have learned a lot of Zephyr, again. This is my second actual Zephyr project. So I have done quite a bit of Zephyr in there.
(00:10:00):
I finished up my little Rust project, bringing a Rust library into our code to just experiment with it. That had some positive results. That was a little easier than I expected. Turns out you can put Rust code in Zephyr with not too much difficulty, given Zephyr and Rust.
(00:10:20):
But yeah, learned a few things. I like any project where I am learning things. If I am turning over the same kind of thing, I feel like, "Wow, I just feel like a cog." I have not felt that way with this job.
(00:10:36):
You are still on your extremely long-term project.
EW (00:10:38):
I am. Robotics, which is complicated. We have new team members who are early in their career, which is a lot of fun for me. For mentoring, and just trying to figure out what I can chunk off, without then later regretting how much I have to do to make sure it works.
(00:11:02):
It has not been a lot of hardware for me, because it is a robot. So the hardware is large and somewhat dangerous, or do not really want it in my office. So I spend a lot of time simulating stuff, which gets old, but. I am in a slump right now. Hopefully it will get better soon.
CW (00:11:27):
That is the way it always goes. Yeah. Especially on long-term projects. My pattern has always been that I enjoy it for six months to a year, and then either the new stuff slows down, or you get in maintenance mode and that is less interesting. I do not think that is what is happening to you. It does not sound like you are in maintenance mode yet.
EW (00:11:46):
We have not shipped yet.
CW (00:11:47):
Yeah. Sounds like you are still pushing rocks up hills.
EW (00:11:51):
So many rocks. But there are some really fun parts about it. And I should not say too much more about it.
(00:12:01):
Let us see. We have got some books to talk about.
CW (00:12:04):
Books!
EW (00:12:07):
You have been reading books in French.
CW (00:12:09):
Yes.
EW (00:12:10):
We are becoming so multilingual. Would you rather read Tolkien in French, or Pratchett in French?
CW (00:12:17):
Well, I am doing both. <laugh>
EW (00:12:19):
I know.
CW (00:12:21):
So I had been reading "Lord of the Rings" in French, a translation obviously. It is a challenging book to read in English, just not in terms of it is difficult to understand or anything, but-
EW (00:12:32):
It uses big words.
CW (00:12:33):
It is flowery language. It is a little archaic. And there is a lot of verse in it and stuff. So I got about halfway through "Fellowship of the Ring" and got a little bored. Not bored, but I was a little tired of it, and would come back to it. But I was like, "I need a break. I need to read something lighter."
EW (00:12:50):
Well, it is not like you do not know the story. You can jump in.
CW (00:12:53):
It does help. Yeah. Yeah.
EW (00:12:54):
Yeah.
CW (00:12:55):
I was finding a lot of vocab I was having to learn, and some of it is archaic and not that useful, except when you are reading books. One of the things about French that is a little bit different than English, is there is a lot of written language that is very different from, let us say, current spoken language.
EW (00:13:11):
I cannot believe your French tutor made fun of you for talking like an archaic old man.
CW (00:13:15):
I just used a verb that was only used for writing.
EW (00:13:17):
<laugh>
CW (00:13:17):
But there are verbs only kind of used for writing. And then there are verb tenses that are definitely only used for writing. There is an entire past tense that is only for writing. And you will see it in books a lot, but nobody speaks it, ever. So it is a bit confusing.
(00:13:34):
Yeah, so I was just like, "Okay, maybe this is too hard. This is slow going, because I cannot just read it. I can read, but every page there are four or five vocabulary words I do not know. So I said, "Okay, well, I want to read something fun, that is a little lighter." And I went and found a translation of the Pratchett books.
EW (00:13:54):
Terry Pratchett. Discworld.
CW (00:13:55):
Discworld. Yes. Sorry. So I am reading the eleventh book. It is the one where-
EW (00:14:03):
Death dies?
CW (00:14:03):
No. Well, he gets fired.
EW (00:14:05):
Oh, okay.
CW (00:14:06):
So a lot of bad things happen <laugh> in the wake of that.
EW (00:14:10):
Ramifications, people.
CW (00:14:11):
That are very funny. But yeah, I am reading that, and I am finding- I had forgotten that Pratchett is one of the few English books I can read, where I have to look up words occasionally.
EW (00:14:20):
<laugh>
CW (00:14:20):
It sounds funny, because you think of Pratchett as silly books, but he uses a lot of- Anyway. So I am having to look up a lot of vocabulary there too, but it is more...
EW (00:14:29):
Fun?
CW (00:14:29):
It is more fun. It is easier to read, in some sense. I can go a lot longer before I run into something I do not know. But Tolkien sentence structure- Boy, we are not talking about computers today, are we?
EW (00:14:46):
Natural language processing. It is hard. Go ahead.
CW (00:14:48):
Tolkien sentence structure is simpler, but the vocabulary is more difficult in "Lord of the Rings." Pratchett's sentence structure being sarcastic, has a lot of ellipsis and commas. He can have a sentence that is harder for me to parse in a different language than English.
(00:15:04):
It is hard to parse in English and keep your place in a sentence, which is going into an ellipsis, and then maybe an ellipsis for the ellipsis, and then a parenthetical. And then it comes back to the main, so it is long. When you are trying to translate that or read it in a different language, it becomes even more challenging.
(00:15:19):
So Pratchett, while the language is simpler, the sentence structure is more complicated. I did not quite realize that. What I really need is like Sesame Street books. I also bought a murder mystery I had not read, from a native French writer. I am going to start that as soon as I finish the Pratchett book. Maybe that will be less vocabulary. There are a lot of words out there.
EW (00:15:42):
So many words.
CW (00:15:43):
So many words. And of course there are zombies in this, so I am learning all the words for shambling and stumbling and a bunch of stuff, that is not all that useful in everyday conversation.
EW (00:15:55):
We are also reading "Reverse Centaur."
CW (00:15:59):
Yes. Cory Doctorow's new book.
EW (00:16:01):
Can you describe it?
CW (00:16:03):
I have only read a couple of chapters so far. It sells itself as an overview of AI- AI being LLMs and that kind of AI. And how we should think about our relationship to them. It is Cory Doctorow, so there is a lot of -
EW (00:16:25):
Opinions.
CW (00:16:26):
Course language and opinions, and a lot of anti-corporatism, which I am not wholly against, but yeah. The first couple chapters, he has introduced this concept of "reverse centaur," which I already forgot what it meant, but. <laugh>
EW (00:16:42):
The whole book's title is "The Reverse Centaur's Guide to Life After AI: How to think about artificial intelligence - before it's too late."
CW (00:16:50):
Yeah. Before it is too late. Yeah, great.
EW (00:16:53):
The description is in modern tech parlance, a centaur is a person who is able to use technology to be a better, more productive version of themselves.
CW (00:17:04):
So somebody with a calculator.
EW (00:17:06):
A reverse centaur is a person who is forced to use technology to work at an inhuman pace. A driver made to deliver all day long. A warehouse worker made to work without food or bathroom breaks. A programmer made to crank out impossible amounts of code.
CW (00:17:20):
Okay.
EW (00:17:22):
This is about using AI in a way that helps us, where "us" is the most number of people, as opposed to the person with the most amount of money.
CW (00:17:39):
Right. Okay.
EW (00:17:40):
Doctorow is very- It is fine if you get a cash register and it helps people who were cashiers who used to add everything up by hand, which was a very skilled set of things to do. You get a cash register, and now you do not need somebody who can add correctly. Do you fire half of your cashiers and make them do twice as much work? Or do you use that technology to allow the cashiers to help people more?
CW (00:18:08):
Or do something else.
EW (00:18:10):
Or do something else that is important to the job, but without trying to make them go faster.
CW (00:18:15):
Yeah. I think the difference, that reverse centaur, centaur thing reminded me of something that Steve Jobs once said. Not a huge fan of Steve Jobs, but he did say this. I think he said this. If he did not, correct me and tell me who the right person was. They said something like, "The computer, it should be a bicycle for the mind."
(00:18:33):
Bicycles, they are great. They helped you get from one place to another faster. They are good for your body. They are an accelerant for things we already do, and they do not necessarily have a lot of downsides. Whereas computers in the 80s that felt like that is kind of what it was. Now we have got the AI stuff, which feels like, "Okay, it is the bicycle and the rider." And then-
EW (00:19:01):
It is worse when it is the rider and I am the bicycle, which is Doctorow was heading.
CW (00:19:07):
Right. Right. I think that is where I was heading. Suddenly we are the bicycle for the-
EW (00:19:10):
The AI is getting to do all the art and fun work, and I am trying to put together a website that does not crash.
CW (00:19:16):
I have seen a lot of people say, "Well, we just need to adjust-" I have not read the whole book, so maybe he discusses this. But, "We just need to adjust how we think about software development. Now we are the people who just write specs and all that stuff."
(00:19:27):
As you know, programmers, coders, software engineers love to write specs and do designs. So it will be interesting to see if that is what actually happens. And we become better designers who guide the AIs through the drudgery of coding. But, I do not know.
(00:19:45):
So yeah, the book- I am not a huge fan of Doctorow. The problem with Doctorow is I agree with a lot of what he says, but then he makes me mad about it. So I cannot really describe what that means. So yeah, I am trying to pace myself through it.
(00:20:05):
There is a lot of stuff he said in the book already that I agree with. A lot of stuff that I did not know. A few descriptions that I found torturing. But we will see how it goes. This is for a book club. A bunch of us are reading it.
EW (00:20:19):
And we are doing it slowly. This is not going to happen fast. Although at least one person on the Patreon Embedded Slack read it and found it interesting. Not life changing, but interesting.
CW (00:20:35):
I do wonder, given the pace of how things are changing, whether any book can be written right now that is going to be applicable in a year, but we shall see.
EW (00:20:46):
It is funny you say that, because I have been reading a book from 1986 called "Programmers at Work," which is a series of essays by a whole bunch of programmers, some of whom are very famous. Some of whom are billionaires, some of whom are professors. And it has been 40 years.
CW (00:21:09):
<laugh>
EW (00:21:09):
Sorry. And they did not- This is from then.
CW (00:21:19):
Yeah.
EW (00:21:20):
Much of the advice that they are giving- Even for things that have sunk into the mist of time, Lotus 1-2-3 and whatnot. It is about having a good idea of what you are building before you start building it. It is, if you do not have a spec, at least have a goal. And, as I become a manager, people interrupt me more and I only get to do fun work at night.
(00:21:45):
So there were a lot of things that I am like, "Okay, yeah. I hear that all the time now. This is advice I would give." Not the manager part, that is the sign of a new manager. But I am having trouble with- I do not want to take advice from these people who are what I think of as ethically questionable.
(00:22:07):
People I would not want to have to dinner. People I would not want to be in the same room with, for physical safety or just emotional safety reasons. Am I really going to take advice from somebody I dislike? I do not dislike Doctorow. We have seen him in person speak once. He did not seem-
CW (00:22:29):
Oh. No, no. He just gets on my nerves.
EW (00:22:30):
Yeah, he gets on my nerves.
CW (00:22:33):
I think he would agree that he gets on many people's nerves. I do not think that is a controversial statement.
EW (00:22:37):
I think he thinks that as a feature. Some of the concepts he has had have been really great, but I do not tend to like his writing.
CW (00:22:49):
Yeah, it is fine.
EW (00:22:50):
I wish we could Wikipedia Cory Doctorow's every book, so that I could just read that. But we are reading "Reverse Centaur," and I am reading this "Programmers at Work." It has really made me think about, "How do you decide if you are going to take advice from somebody you do not respect? Do you just ignore all of them?"
CW (00:23:11):
Well, this goes back to the old adage or whatever, the claim that you need to separate the art from the artist.
EW (00:23:21):
When they are giving you life advice?
CW (00:23:24):
It is a similar thing, right? It is like, "Can I enjoy this work piece from this objectively horrible person who did terrible things? Because the art is separate, right?" But even if you can separate the art from the artist, I know what the person did. So that is in the back of my head the whole time. So even if the advice is good, I find that difficult.
(00:23:46):
There are definitely people who I do not like, who have given me advice that has been good. But not liking someone, is different than not respecting them. There are plenty of people I do not like, that I respect.
EW (00:24:03):
And there are a few people I like, whom I do not respect.
CW (00:24:09):
Okay. Well, hopefully nobody in this room.
EW (00:24:11):
No, of course not.
CW (00:24:13):
The dog. But yeah, so it is hard to take advice from somebody you do not respect. That is like listening to music from somebody whose artistry you do not like. I may have ruined that metaphor. But I think "respect" is the key word you use there.
(00:24:32):
I do not think you should take advice from people you do not respect, because it might not be trustworthy. Why do you not respect them? Because they are dishonest? Or are they in some aspect of their life trying to pull one over on you or get something out of you, then their advice is suspect. Get it from someone else.
(00:24:49):
I do not know. There is technical advice. Like, if somebody awful told me, "Never use tabs, use spaces," and I agree with them. That is a silly example, but.
EW (00:25:05):
You do not just start using tabs, because somebody you do not like said you should use spaces. That has got a reverse psychology thing going on.
CW (00:25:13):
I do have a little bit of oppositional defiance disorder, but not that much.
EW (00:25:21):
It is hard to decide what to pick and choose. Sometimes it is hard to find out more about the artist, for fear that you will not be able to like the art afterwards.
CW (00:25:30):
Yeah, sure. That is why I think the post social media internet has made that more of a problem, because we do know more about the people who make our art, or who give us advice. It is not a problem, but it is a different environment, where we actually are aware of things that we were not before.
(00:25:51):
I think on the advice thing, I find it hard to believe it is common for there to be a piece of advice that only one person can give you.
EW (00:26:04):
That is a good point. I see this in this book, that there are a lot of commonalities. I would be much happier taking the advice from a Turing Award winner, than a billionaire, even if it is the same advice.
CW (00:26:21):
Were they billionaires when they wrote the book?
EW (00:26:24):
No. No, they were not.
(00:26:25):
Okay. Let us see. There is a new book coming out about AI and embedded. I am not going to tell you a lot more about it, other than I am pretty excited about it, because it means that I am not going to write that book. And I do mean AI techniques on embedded devices, edge AI, inference. Not how to use agents or tools to use AI to do embedded software. This is making smart devices.
CW (00:27:04):
Okay. Smarter devices.
EW (00:27:07):
Smarter devices.
CW (00:27:09):
That is by whom? And when is it coming? And what is the publisher?
EW (00:27:12):
It is... Gosh, I do not know if I am supposed to say or not. Oh no, no, no, no. They have it on their website. It is called "Embedded AI: Intelligence at the Deep Edge," by David Such. It is from No Starch. It is on early access right now. And it is supposed to come out in September, October.
(00:27:34):
Ooh. They are predicting it at 600 pages, which actually, yeah, maybe. It is a lot of material.
CW (00:27:43):
That stuff is difficult. If it is a starting from scratch sort of book, you have to introduce all of the deep neural network stuff on its own.
EW (00:27:55):
Some of that. But also there is a whole third section that is all projects and applications.
CW (00:28:01):
Oh. Nice.
EW (00:28:02):
Actual code and stuff. So I am looking forward to that.
(00:28:05):
DougG asked us, "Have you found a good general book on AI? Something you could recommend to a non-technical person?" Sadly right now, that is Doctorow's "Reverse Centaur" book.
CW (00:28:18):
Yeah, I cannot think of- It depends on the angle you are going for. Is it, "What people are calling AI. How does it work at a high level? And general overview of the current situation"? Which if somebody was writing a book on that, I would caution them against it right now.
EW (00:28:36):
Is it about LLMs and convolutional networks? Or is it how is this going to affect our society?
CW (00:28:41):
Yeah. Yeah, yeah. So there is a lot going on there. Or how does a person use AI responsibly? Or is it a practical cookbook of- Yep. So I do not understand. I do not know the scope of the question, or the scope of the book desired. But no, I do not know of one.
(00:28:58):
If you are looking at social impacts and future looking what might happen, I think Doctorow's book is probably good. But it is definitely directed toward people who might be affected or replaced by "AI."
EW (00:29:17):
I would go even further than that. It is directed towards people who work in technology.
CW (00:29:21):
Yeah. Yeah. Yeah.
EW (00:29:26):
A technical person could read it. I mean, a technically minded person could read it. But there is a little bit more context? Jokes? That are available to folks who-
CW (00:29:38):
Developers' kind of stuff.
EW (00:29:39):
Who are developers and have seen some of the tropes before, that we end up with.
CW (00:29:46):
Metrics. Key performance indicators.
EW (00:29:49):
KPIs. Yeah.
CW (00:29:50):
Yeah. Right.
EW (00:29:52):
Let us see. I have some cards here that we are going to try. Otherwise more listener questions.
CW (00:29:57):
Okay.
EW (00:29:59):
What skills have been most valuable in your career path?
CW (00:30:06):
Hmm. Let us see. Well, this is difficult to not say, and I am pretty good at this. Typing.
EW (00:30:13):
<laugh>
CW (00:30:15):
I am pretty fast at typing and I learned to type at an early age, so I am pretty quick at typing. Having a model of what a computer is and how it works in my head from an early time, that has not really changed much, especially for microcontrollers.
(00:30:31):
I think that is really useful, because that explains a lot of things that happen in code, like pointers and how memory is structured and stacks and all of that garbage. If you know kind of how the machinery works, then that stuff is less mysterious when you see it for the first time, or the 11,000th time.
EW (00:30:55):
Because it is usually the same set of things, just in different places.
CW (00:30:58):
Yeah. And even all this AI garbage, it is all arithmetic. I mean it. It is arithmetic. It is literally addition, for the most part. And some multiplication. It is just a lot of it. All that happens with the same kinds of structures, just on a much larger scale, with some fancy tricks that early computers from the 80s and the 70s were using. I do not think there is anything lost in understanding computer architecture at a base level.
(00:31:28):
I do not know how to express this, but I feel like I have some skill at deduction and eliminating things that- Like when debugging. Eliminating things that are not possibilities early and evaluating risks early.
(00:31:50):
But that is off the top of my head. Those are the kinds of things that I think serve me well in the jobs that I do, and have in the past. I do not think I am a particularly genius coder, or elegant coder, or anything like that. I think I am probably all right. Because I have a lot of bad habits that I learned early, and have not kicked.
EW (00:32:16):
Like what?
CW (00:32:17):
Oh, I do not know. Just the way I-
EW (00:32:19):
Spaces.
CW (00:32:19):
Yeah, spaces. The way I structure stuff sometimes, or... I do not know. I am fine. I am not a bad coder. It is just I have seen well architected stuff that looks beautiful, and I do not feel that way about my own code. My stuff works. It is fine. It is clean. It is good. It is just, I have seen better. What about you?
EW (00:32:41):
We were playing a game recently with friends and somebody asked, "What major skill made me most successful?" I answered, "The ability to count to ten," because I was playing this game, but I was not playing the game.
CW (00:33:01):
Right.
EW (00:33:03):
She took that to mean, "The ability not to get angry," which is not how I meant it.
CW (00:33:08):
<laugh>
EW (00:33:08):
I feel like many people stop after the fourth effort.
CW (00:33:16):
Oh, yeah.
EW (00:33:17):
The fourth thing. Or the sixth. I guess it is part of detail oriented, but I am not going to stop early. I am going to count all the way to ten.
CW (00:33:34):
Do you mean that in a sense of perseverance, or in the sense of doing everything you are supposed to do?
EW (00:33:41):
Perseverance more.
CW (00:33:42):
Okay.
EW (00:33:43):
Not about ticking boxes. More about exploring all the options in more of a breadth for a search, instead of going down deep on one. Because there is always the chance that you can knock things out.
(00:33:55):
I think another skill that has been good for me is diagrams. This came up last week with a junior engineer that was writing drivers all over the place. I was like, "Make me a diagram." I am pretty sure he though I wanted him to make a diagram, because I had been making all these diagrams to do some documentation preparation.
(00:34:24):
No, I wanted him to make a diagram, because I wanted him to think about how all of these things went together. How we went from I2C to device to peripheral, and built that up into a whole subsystem, and then into multiple subsystems. Because I am working on a pretty big project. There are subsystems of subsystems.
(00:34:46):
I have always thought about things in more of a diagram method. This is in my book too, that you can build like an org chart diagram to see who talks to what. And then if you squint and your org chart looks really weird, like there is only one thing at the bottom instead of one thing at the top, all of your devices go through one protocol and that is a point of weakness, a point of failure.
(00:35:17):
Or if you have ten things talking to one little thing, then you have a lot of complexity in this area. Being able to use diagrams to find complexity before you write it, in order to simplify before you write it, is so much better for me.
(00:35:39):
I think those two, the perseverance and having this system view. Or forcing myself to have a system view, even when all I want to do is write the thing that is in front of me.
CW (00:35:54):
I think visualization is something that people sometimes lose sight of. <laugh> I think you are right. It is easy to think about something, because code makes- The way we write code is words, and it tends to be ordered and structured in a kind of a non-visual way. There are linkages and things, but that is not apparent in the code very obviously.
(00:36:21):
But the things we are writing code about, tend to be modules that interact with each other. They are graphs and networks. I think it is impossible, once you get past a very base level of complexity, to have that in your head and get any insights from it. That you can from a picture of how the modules interact with the hierarchy, their connections.
(00:36:53):
It can reveal things instantly to you, that you could not see otherwise. Like loops. "Oh my God, there is a loop here. This module talks to this module, and goes back to this module, and now I have created a loop that I did not want."
(00:37:01):
Or, like you said, you have a hierarchy where everything is funneled through one place, and you did not mean that. Plus, it is good to start there. Because it is easier to start with a good design-
EW (00:37:16):
Yes.
CW (00:37:17):
Where you consciously do not funnel everything through a single point of failure. Than it is to draw a diagram after the fact, and then notice it and then have to unwind everything.
EW (00:37:29):
If you are drawing a spaghetti, your code is going to be spaghetti. It is so much easier to shift large things around in the drawing. If you are using a drawing program, sure, maybe it is tedious. But if you are just using a paper and pencil, it is erasing and not difficult.
CW (00:37:52):
I think some people get lost in, "Oh, nobody ever looks at this documentation."
EW (00:37:57):
That was not what I wanted.
CW (00:37:59):
It was not the point.
EW (00:38:00):
I did not want the documentation.
CW (00:38:03):
People say, "I am not going to do that, because nobody is going to update it or nobody is going to look at it again." But that is not the point.
EW (00:38:10):
Yeah. My point with the drawing last week was not, "This is documentation."
CW (00:38:14):
I mean, to a certain extent, you hope that nobody looks at your source code again after the product ships, right?
EW (00:38:18):
Right.
CW (00:38:18):
But that does not mean you do not write it.
EW (00:38:22):
Yeah. It is engaging with the thought process, and trying to find the complexity, and reduce it or hide it under the rug or something.
CW (00:38:33):
Hide it under the rug.
EW (00:38:35):
I told one of the engineers recently, "Look. The reason we have magic numbers all in a header file, is that we are trying to pretend that we are not toddlers. That we are not messy human beings that have all of these things."
(00:38:49):
"So this whole file here that is full of magic numbers and ifs, and entirely things that we agree are just kind of gross, because they depend on the state of the system today. Let us all put that in one file, and then we can pretend that does not exist, and the rest of the code will look so pretty."
CW (00:39:11):
There is something to be said for sequestering the mess.
EW (00:39:13):
Exactly.
CW (00:39:14):
"This is where the mess is. You are not allowed to have mess anywhere else. This is the mess file. And if you blow that mess file away, you can replace it with a different mess and your code still works." <laugh>
EW (00:39:23):
<laugh> Exactly.
(00:39:23):
Let us see. Scott H asked, "What is a decent way to go about handing over a largish codebase, with all its context and notebooks and tooling, to someone else?" Scott is dreading this process, and is not sure that it is a sign that it is not a great job of documenting. Possibly yes.
(00:39:45):
Is it worth making diagrams in this world of generic AI slop?
CW (00:39:55):
I think yes, you should probably make a diagram. We just had this discussion. <laugh>
EW (00:40:01):
Well, the main question is, "What is a good way to go about handing over a largish codebase, with the context?" My opinion on this has changed recently, due to AI. The last time I needed to walk up to a decent sized system- Well, actually, I am going to take a step back there.
(00:40:22):
I often will search whatever I want on GitHub, to see if there exists code already. And then if it is a driver that has a nice license, I will go read it. Even if my driver needs to do something else, it is nice to see how somebody else has done it. Because they will have answered some of my questions.
(00:40:40):
I have found as I look at larger things, some of the drone utilities, some of the flying code, even large control systems, that if I pull those into LLM and AI, I can get it to explain what that does to me much faster. And I can ask it what it is doing and who calls what.
(00:41:10):
All those things that I used to use Graphviz for, and other tools that would help me figure out, "Well, how many times does this get used?" Is this- Direct me through the main flow of how this code normally runs.
CW (00:41:26):
That is not something for them to do. That is something for the recipient to do.
EW (00:41:31):
Well, that is actually what I am telling Scott, is that-
CW (00:41:33):
Just give up and say, "Throw it into a chatbot"?
EW (00:41:35):
No, I am saying I used to not want to have large codebases handed to me. It was a pain in the ass. Now I am much more willing to take that work on myself, because I have to do that thought process interrogation anyway. And somebody else's diagrams are not always worth it.
CW (00:41:59):
Fair. Although if you are the creator of the codebase, you by definition should have the most knowledge to create some diagrams. I would say at a minimum, you should create some diagrams. If you do not have them, you should have made them. And as penance, you should make them now.
EW (00:42:13):
I would at least want a README on how to build everything.
CW (00:42:17):
Yeah. Definitely.
EW (00:42:19):
At the very least.
CW (00:42:19):
You definitely need to provide, "These are the prerequisites you need to install, at these version numbers of the tools. This is the toolchain you need on this system."
(00:42:29):
Or, "Here is a container. Here is a pointer to the container with all that stuff that you can run and build, and I have tested it." That would be very nice to have. I love it when people deliver that, because it means I do not have to sweat for a week or so trying to get everything-
EW (00:42:45):
Version numbers.
CW (00:42:45):
Set up. You just got it. That is a very nice thing to do.
(00:42:48):
Sitting down with somebody and walking through the codebase at a high- If you have got an opportunity to actually have a face-to-face conversation, I think that is a lot better than just saying, "Toss it over to Claude or whatever." Because they can ask questions of the person who actually did it.
EW (00:43:04):
Yeah!
CW (00:43:07):
There are varying steps here. Certainly many developers now will take code and throw it into the thing, and have it help them organize it or understand it. And that is fine.
(00:43:17):
But if you have the opportunity to actually engage with the person who owned it and then wrote it- It does not have to be a code review. It does not have to be a, "I am walking you out through every line and function."
(00:43:27):
It can be, "All right. Well, here is how this tree is structured. You have got your drivers in this directory. You have got some other stuff in this directory. You have got this stuff in this directory. And then we have screwed up and we have got some stuff bleeding between two directories, that we understand is-"
(00:43:41):
You can lay out- You can say where the mines are, much easier than something that did not write it is going to. No matter how genius the machine is at figuring out the structure, it is not going to say, "We have had trouble with this in the past."
EW (00:44:01):
Well, and the AIs can lead you down rabbit holes. I watched somebody replace a perfectly good circular buffer system, because the AI said there was a race condition. That was not the problem. The problem was their code had not set a critical area. Yes, there was a race condition. It was not the circular buffer's fault.
CW (00:44:33):
Another thing to consider- It depends on your codebase, but sending all that stuff to a cloud-based AI service means that they have your code.
EW (00:44:41):
Unless you pay for it.
CW (00:44:43):
Mm-hmm. Sure.
EW (00:44:44):
Yeah. I know. I know!
CW (00:44:46):
You are talking about two large companies, which have admitted that their little agents went for a little walkabout in the last two weeks.
EW (00:44:53):
Wait. Not everybody has heard that. Will you give the summary?
CW (00:44:56):
Well, both OpenAI and Anthropic had incidents. OpenAI had an incident where they were "testing some new models" in their internal sandboxes, and they got out and decided to solve- They were running a benchmark. They do this when they are developing new models. They run their benchmarks in sandboxes.
(00:45:13):
I think it was a cybersecurity model or something like that. But in order to solve a problem they gave it, it decided to hack its way out of the sandbox, out of OpenAI and into some other companies. Including I think Hugging Face, which is one of the big open source model websites.
(00:45:31):
Yeah. They basically committed a cyber crime. But since it is a company, I guess nobody is going to charge them with that.
(00:45:40):
And then about a week later, Anthropic said, "Oh yeah, that happened to us too."
EW (00:45:47):
So the little AIs, as they are being tested, are escaping their test facilities so that they can cheat.
CW (00:45:57):
I do not think it knows that it is trying to cheat. It is trying to-
EW (00:46:00):
It is trying to do the best job it can.
CW (00:46:01):
It is not trying to do the best job it can. It is following its training, and its training has given it the ability to write code.
EW (00:46:13):
So maybe somebody should not have given it the hacking handbook?
CW (00:46:16):
I think somebody should look at how they make their sandboxes. Because I think somebody made some mistakes, and they are not very good at it.
EW (00:46:23):
They should not have asked this AI, "How do I make a sandbox that keeps you enclosed?"
CW (00:46:28):
That is my worry, is that that is exactly what happened.
EW (00:46:30):
<laugh>
CW (00:46:30):
But apparently it did all sorts of things. Left little paper trails all through their network and on their servers, for follow on models to breadcrumb through and stuff. Anyway, it is all very great.
(00:46:43):
But keep in mind, and this is mentioned in the Doctorow book, these guys- And I suppose gals, but I think it is mostly guys. These guys like to talk up their own capabilities. You got to be careful when they say, "Oh my God, our model did this amazing, horrible thing to our own company," whether or not they are actually trying to sell you something.
EW (00:47:05):
Right! That was in the Doctorow book, where they talked about how subliminal messaging, and how that was talked up as, "Advertisers can make you do whatever the advertisers want."
CW (00:47:19):
Which was advertisers trying to sell-
EW (00:47:21):
Advertisement.
CW (00:47:22):
Companies on advertising. Yes.
EW (00:47:25):
Yes. It was just snake oil.
CW (00:47:29):
Right. So when they come out and say, "Oh, AI is going to take all your jobs." Or, "Oh, we got to be careful, because AI is going to come and become a super being, that takes over the world and slaves us all." You have to take that with the grain of salt.
(00:47:41):
That A, they are insane people possibly. No offense. And B, they are trying to talk up their product, so you think how great it must be now, to give them the money.
(00:47:51):
Because if you believe that you were about to create a super intelligence that was going to obviate the entirety of human society and usher in a new era of whatever, robot overlords, why do you need to go public right now? Why do you IPO? Money is going to be gone as soon as you finish this, so why are you running a company?
EW (00:48:16):
Why did you write a book about how to be rich?
CW (00:48:21):
Instead of just enjoying your richness?
EW (00:48:22):
<laugh>
CW (00:48:22):
Yeah. Anyway. I do not know. Where do we end up from? What was the precipitating documentation? Oh, handing off codebases. <laugh>
EW (00:48:34):
Handing off codebases. Scott, I hope that is what you wanted from the show. <laugh>
(00:48:41):
Another random card question. Who or what do you compare yourself to most often? Is it the dog? Because you are as cute as the dog. I promise.
CW (00:48:59):
In terms of a negative self-talk comparative sense, it is usually musicians.
EW (00:49:03):
Anika.
CW (00:49:05):
<laugh> No. Although she is much better than me, but she should be. No, I mean musicians, because that is the thing that I am most wanting to develop myself into. A better version of myself.
(00:49:17):
I think I have ceased doing that with computers. I think I used to. I used to think about, "Oh, this guy is better coder. This person is a smarter algorithm person," but I do not think I care anymore.
(00:49:30):
And I think I compare myself to myself a lot, which does not make a lot of sense. But like, my past self, or what I think my future self should be.
EW (00:49:46):
That is interesting. Tell me more.
CW (00:49:49):
Well, I should be always improving in some skill or facility.
EW (00:49:56):
Oh, like when you say, "Oh, I have not practiced languages today." And I say, "Were not you just reading a book in French?"
CW (00:50:02):
Right.
EW (00:50:03):
And you are like, "Yeah, but that does not count." And I am like, "In what world does it not count, that you are-"
CW (00:50:08):
I was not sitting down here at my desk with a textbook, and transcribing something and correcting my faults and things. Or working on Hungarian.
(00:50:16):
But same thing with music. I might practice drums for an hour and then feel really bad about it, because I did not do it the right way or did not do the things I wanted to. Or I have still got to record that song that I have not done yet, and I am just sitting here practicing. But. Yeah.
(00:50:36):
Beyond that- I am trying to avoid- I have deleted my Instagram. I am mostly backing away from social media entirely. I still have my Mastodon account, although I blew up half of it. <laugh>
EW (00:50:48):
Moving servers.
CW (00:50:49):
Yeah. But I am not- I do not post much. I read it occasionally to see what people are up to. But I think I have reached the end of my social media era. But Instagram was really bad for that, because it is really tuned. It knows you want to see- Like, if you have a skill, it knows you want to see other people doing that skill.
(00:51:06):
And the way people get more views on videos and things, is to be more demonstrably flashy and cool. So there are a lot of drum videos and stuff, where people are doing amazing things, and I do not know how many times they tried it.
EW (00:51:22):
Yeah, they are doing amazing for-
CW (00:51:23):
And they are there for 30 seconds.
EW (00:51:24):
15 seconds. Yeah.
CW (00:51:24):
But that just keeps coming at you, and just makes you feel inadequate after a while. It is like, "Look at all of these drummers who are better than me. I never see a drummer on here who is worse than me."
EW (00:51:36):
Huh. That is interesting.
CW (00:51:38):
That do not. Seriously do not.
EW (00:51:40):
Origami does not have that problem.
CW (00:51:42):
Yeah. Right. Right, right. That is a different art form.
EW (00:51:48):
I do see incredible origami, but it is not something I want to do. It is like watching a jazz drummer and you are like, "Oh, that is great. But it is not what I want to play."
CW (00:51:57):
Sure. Yeah. Yeah. You occasionally see the wild-
EW (00:52:02):
Oh. I see beautiful things.
CW (00:52:03):
Multi-thousandfold things, but that is not what you want to do.
EW (00:52:08):
I see things I find inspiring, as opposed to things I find competitive or depressing.
CW (00:52:13):
That may be a difference between origami as an art form, and where music has ended up. Because music has a competitiveness, especially rock and popular music. There is a skill competitiveness to many instrumentalists. Especially guitar. Especially drums.
EW (00:52:29):
Well, I am pretty confusing to the algorithm, I think. Because there are some forms of origami I will just flip right by, and some that I will stop at. And it is not necessarily the same ones more traditional origami people like.
CW (00:52:46):
But yeah. So where was I headed with that? Oh, the comparison. So I used to compare myself to that kind of thing a lot. I think the other thing is I tend to compare myself to multiple people, because I like doing a lot of things.
(00:52:59):
So I might be comparing myself to a drummer, and somebody writing a video game, and somebody writing music, and somebody, I do not know, learning a language. And all these things I like to do. And instead of-
EW (00:53:12):
Yeah, compare yourself to the number one in each thing, in order to make sure you do not feel like you are the number one in anything.
CW (00:53:18):
But that is the thing with social media is, "Oh, these are things I am interested in." So I have subscribed to 70 people who are good at the things I am interested in. Suddenly it is like, "Well, I have to embody the skills of those 70 people, who are all at the top of their game." It is not very healthy.
EW (00:53:32):
No. No. I have stepped away from Mastodon because I was not good at picture descriptions.
CW (00:53:38):
<laugh>
EW (00:53:38):
I want to be good at picture descriptions, but I am not. The vitriol you get when you fail is just not worth it. I am still doing Instagram, but mostly just so I can show off origami stuff. I do look at it a little too much, but mostly because it is origami and silly things.
(00:54:06):
If you start looking at the ridiculous stuffed animal advertisements and occasionally click on one, then most of your advertisements become stuffed animals. So I am there for that. National Park Service, Monterey Bay Whale Watching, a billion origami.
CW (00:54:25):
See, I feel like we should be able to get that from somewhere else.
EW (00:54:29):
Oh, I would love to, yes. I have been thinking lately about newspapers, and missing them. Missing reading the newspaper in high school and in college.
CW (00:54:37):
Who do you compare yourself against? Whom do you compare yourself against?
EW (00:54:43):
Is it whom?
CW (00:54:44):
Yeah.
EW (00:54:44):
Do you compare? Okay. I should not have asked the question, unless I was going to be answering it in return.
CW (00:54:51):
Aha!
EW (00:54:51):
I try not to compare myself against you.
CW (00:54:54):
Why would you compare yourself against me?
EW (00:54:57):
That way leads to madness. You are so talented. You speak French really well.
CW (00:55:05):
No, I do not! <laugh>
EW (00:55:08):
You only recently started relearning it, and now you are doing Hungarian.
CW (00:55:12):
It is over a year ago.
EW (00:55:16):
I can barely speak English, and you are maintaining both. And you play-
CW (00:55:20):
Come on. Hungarian is easy. We both learned that if you want to say, "What is that?" you say, "What that?"
EW (00:55:30):
<laugh> "Mi az?" Your musicality is incredible. And you are kind. And you are really smart. Okay. So I try not to compare myself with you. There are people in my life who are role models, but I do not really compare.
CW (00:55:56):
Okay. That is super healthy.
EW (00:55:58):
Yeah. I do not- Or if I do, it is with fictional characters.
CW (00:56:06):
<laugh> Well, you know they are not real.
EW (00:56:09):
Yeah, but sometimes I want them to be.
CW (00:56:12):
You said there was another listener question.
EW (00:56:14):
Simon asked, "When is it really worth the effort to get embedded development off the hardware and do it on your PC?"
CW (00:56:23):
Ooh. Good question. I like doing it when there is a core algorithm of some kind. So if your thing is a Bluetooth device that has one-
EW (00:56:34):
Uploads a sensor?
CW (00:56:36):
Uploads a sensor or something, it is not that attractive. But if you have an algorithm that computes something, that is an ideal place to have a unit test that is off the device. Because you can run it more. At your leisure. Infinitely, with more inputs and outputs and stuff. Faster. Stuff like that is very useful.
(00:56:57):
I think if you have- Sometimes you have a platform. Like if you have got more of a complicated, embedded platform that runs dynamic code. More of an operating system kind of thing, like the smartwatches. I think that is another case where the complexity is such, that it is hard to develop on the hardware with the iterative speed you want.
(00:57:19):
Those are the two things I would say. You have got an algorithm that is complex and you want to develop it. And you have something where the iteration speed of development on the hardware is a limiting factor. Both of those are the same answer actually. Because if you are doing the algorithm, you do not want to be messing with developing an algorithm on a microcontroller.
EW (00:57:42):
Oh, yeah. If you have something you can have a file replace the input, and a file replace the output, then do that.
CW (00:57:50):
Yeah.
EW (00:57:54):
Simon did have some more context, regarding pain with networking and Zephyr's native_sim.
CW (00:58:02):
Oh! Oh, right.
EW (00:58:03):
"It is faster, maybe more professional, if you can avoid using your target hardware for a lot of the software development process?"
CW (00:58:11):
Sometimes.
EW (00:58:15):
"Should we not just make it work with a couple of targets we are 99% likely to use?" Actually not sure I understand that last question.
CW (00:58:23):
I do not understand the last one. But it is very difficult to emulate a complete SoC. <laugh> You can do it. Like, you can do it. You can do it in a QEMU. And there was that other thing we talked about a while back. I forgot the name of it. Starts with an N. Anyway, there are platforms you can do that. You can run, I think, Zephyr on QEMU and do all that stuff.
EW (00:58:47):
Well, and I think Zephyr does have- I think native_sim-
CW (00:58:51):
It does have some. But he has a specific issue with networking. I thought he was using WSL too, to run it.
EW (00:58:57):
Yeah. But the question itself-
CW (00:59:01):
It was a hat in a hat, and a box in a box, kind of going on. So once you add a lot of complexity, it gets more complex.
EW (00:59:08):
When your peripherals are the driving force of what you are doing, simulating those does not do you a lot of good. If your complexity is out on the edges of your device, it is not running software inside your core, that is harder to simulate. Not impossible. You can still do unit tests. Unit tests are still great. You can have mocks so that you still get files in and out.
(00:59:35):
But the first thing you want to get off of your microprocessor are the algorithms. The second thing might be whatever is most complicated.
CW (00:59:49):
It is a pain in the butt. This is why it is a judgment call, because- I think I can count on less than one hand perhaps, how many times we have actually had an embedded thing with an emulator or a simulator, of the whole thing.
EW (01:00:06):
Oh, of the hardware too? No.
CW (01:00:08):
The whole system?
EW (01:00:09):
No.
CW (01:00:10):
Zephyr does make that a little easier, because there are the sim targets now. There are a bunch of sim things for peripherals. You can do a lot more in Zephyr, out of the box, than you could with FreeRTOS or ThreadX or whatever you had on a PIC or a Cortex-M3 back a few years ago.
(01:00:28):
But it is a lot of work. It is another thing to maintain. So it is not like you just get it for free, and suddenly I am running my code without any hardware a lot of the time. There is a lot you can do with Wokwi, too. I do not know if you could do Zephyr on that or something that heavyweight, but I have to try that.
(01:00:49):
But there are emulation platforms out there, other than Zephyr's, if you are having trouble with Zephyr's. But yeah, I have not really done that a lot, because a lot of times the hardware is fast enough.
(01:01:02):
The iteration time is not that- It is a few seconds most of the time with a good JTAG to download new firmware. They boot fast. It is not like it used to be, where I am waiting a couple minutes between finishing compiling and getting new code running.
EW (01:01:20):
Yeah. When you said only five times done this, I was like, "What? I do this all the time." But the truth is I only do part of the system.
CW (01:01:32):
Right. Yeah. Yeah.
EW (01:01:32):
Whatever system has the most complexity, or whatever system has the most need to change, or that somebody else is in charge of-
CW (01:01:43):
The riskier parts.
EW (01:01:44):
The risky parts.
CW (01:01:44):
Yeah.
EW (01:01:45):
But even when I am doing a key-value store or a simulated EEPROM on a flash, I mocked those up. I did, when I first developed them. But now that there are five different versions you can get off the shelf, and most vendors have them as part of their HAL, no, I am not going to mock those up anymore. I am just going to trust they work.
CW (01:02:10):
There was one thing I think he said. This is the same person who set something up multicast and networking? I thought they might have mentioned that in Slack. If it is, and you are doing something with networking that is challenging or complicated, or you have not done before, I would encourage you to not think of emulation at all or simulation.
(01:02:28):
I would write the thing you are trying to do in desktop software or Python or whatever. Write it to do the thing you want to do networking-wise, and make sure you understand how to make that work.
(01:02:42):
Because multicast is weird. Networking is weird, if you are doing any kind of active thing. Because it is not just like TCP/IP unicast, where you have an IP address and you send something to another IP address, and you go back and forth. Multicast involves joining groups and leaving groups, and the network has to believe you, and the interface has to be configured correctly to do the right thing.
(01:03:06):
So if it was something like that, I would do a prototype. A prototype, not on the hardware, that I am going to throw in the trash, but at the end of it, I will know at least it can work, and I understand it from a conceptual standpoint.
(01:03:20):
Then when it does not work on the hardware, then I can at least have some angles to try to figure out why. Instead of, "This just does not work." "Well, is it the hardware? Is it a bad driver? Or is it that I do not know what I am doing?"
EW (01:03:37):
Yeah, especially with networking. It is really easy to say, "This does not work." And then you realize your masks or your networking was set up wrong, and you did not even know that was a thing.
CW (01:03:49):
Or maybe it is not even your device. Maybe your network is not set up correctly. But you are focusing on your device so much, that you did not configure the router properly and it is not doing IGMP snooping or- Whatever. A network is a network. It is not a single device.
EW (01:04:04):
All right. Well, that covers our listener questions.
CW (01:04:08):
I think that covers everything.
EW (01:04:10):
All right. Then we are going to call that the show. Thank you so much for listening. If you would like to contact us, hit the contact button at embedded.fm, where the show notes will be.
(01:04:22):
And thank you. Thank you for listening. Thank you to Mark and everybody who volunteered and who actually wrote letters for our Meritorious Achievement Award in Outreach and Informal Education, which I am really pleased by. I am really pleased the show actually makes a difference for people.
CW (01:04:47):
Me too.
EW (01:04:48):
Ready for some Winnie-the-Pooh?
CW (01:04:48):
Mm-hmm.
EW (01:04:50):
Okay. [Winnie-the-Pooh excerpt]
