Embedded

View Original

430: Broken Toys All Around Me

Transcript from 430: Broken Toys All Around Me with Chris White and Elecia White.

EW (00:00:06):

Hello and welcome to Embedded. This week it is just Christopher and myself.

CW (00:00:13):

And a long list of random things.

EW (00:00:18):

Let us start with the part that I already have forgotten with the show. I am Elecia White.

CW (00:00:22):

Oh, yeah.

EW (00:00:23):

And he is Christopher White.

CW (00:00:24):

Sometimes.

EW (00:00:26):

Almost always. And my name is spelled E L E C I A, like electricity. There are two Es at the beginning.

CW (00:00:38):

Well, not right at the beginning.

EW (00:00:40):

That is true. E L E, CIA.

CW (00:00:43):

But you can say it like that.

EW (00:00:44):

That is true.

CW (00:00:46):

You can imagine two Es at the beginning.

EW (00:00:48):

It is Elecia, there is no S H. If you call me El, I will totally answer to that. I am fine with it. Okay, let us see. What are we going to talk about first?

CW (00:01:00):

Let us just go in order. Let us just knock these out. Get out of here in 15.

EW (00:01:04):

Okay. I was thinking about the show. When we started, I actually did not know many other podcasts, let alone electronics podcasts. There was the Amp Hour, but I did not know about it. Even with it, I wanted to make sure to have a more diverse set of guests, and to have women talk about technology. And now, Helen Leigh, Alex Glowaski, Carrie Sundra, Jen with the Unnamed Reverse Engineering Show. There are all of these other shows.

CW (00:01:45):

Uh huh.

EW (00:01:47):

Limor with Adafruit, of course, has always been in the public eye. But I am just so happy that there are other shows.

CW (00:01:54):

Oh, okay. I thought you were going to say your work here is done.

EW (00:01:57):

Well, yeah. <laugh> I am not quite there yet, but it does not feel as critical as it used to.

CW (00:02:05):

I mean, what have we got? This is episode 789 or something?

EW (00:02:09):

I think it is 430, 431.

CW (00:02:12):

I am a little bit off.

EW (00:02:13):

That is still a lot!

CW (00:02:14):

It is a lot. Think of how much money I would save on microphones.

EW (00:02:19):

It is true. Do I sound any different to you? Christopher got me a new microphone.

CW (00:02:22):

We will have to see. We have thrown your Microsoft- Your Microsoft?

EW (00:02:28):

I do not think it was Microsoft.

CW (00:02:31):

We have thrown your microphone into my storage drawer and gotten you a new one.

EW (00:02:36):

What did I have before?

CW (00:02:37):

You and I both had Shure SM7Bs. If you see a lot of podcasts on video, high end stuff, NPR, a lot of people have Shure SM7Bs. They are very nice mics. But they require a tremendous amount of gain, which means you have to have a pre-amp that can be turned up a lot. And when you turn up gain on pre-amps a lot, all kinds of noise comes with it.

(00:03:07):

So I have been noticing recently that there has been a lot more noise on your channel, and that is because your voice is a little quieter than the mine, so you require more gain. You were turned up pretty loud. I was trying to find the source of the noise, and I finally realized it was just whatever was turned up with most gain on the pre-amp. It was just your mic was turned up too loud because it needed to be.

(00:03:28):

So, I looked around for other mics. The one you are using now is an Earthworks ETHOS. It comes highly recommended, requires much less gain, which means I have to turn you up less and it is quieter.

EW (00:03:42):

I can talk really quietly now.

CW (00:03:45):

The noise is quieter. You are not quieter. And it has better, allegedly- I am going to find out when I edit this podcast. Allegedly, it has a tighter supercardioid pattern, which the way you have got it aimed now is not really helping anything. You need to aim the back right at- Well, I do not know, because there are reflections, so it is probably fine, just leave it.

(00:04:03):

It has a tighter pattern. So it should get less stuff from behind, which means it should get less of my voice on your mic. We will see how it goes. If it sounds terrible and everybody hates it, then I will adjust the equalization.

EW (00:04:20):

All right. Do you want to talk about my class or about asset download methods?

CW (00:04:26):

Ooh. We talk about your class a lot. What did you want to talk about?

EW (00:04:31):

There were a couple things that I did for the class, that I probably should share with more people. One of them was to try to get a list of international parts providers. Not necessarily all of the Digi-Key and Farnell and Element14 and Newark- Yes, I know those three are all the same. But the littler ones, Pimoroni in the UK. To get a list of those put together, small quantity, small parts, and have that for my students who are all over the world. That went pretty well. I will put the results into the show notes.

(00:05:19):

If you are looking for Adafruit parts or SparkFun parts, a lot of the big names like Digi-Key and Farnell resell those, so you can get them there. But things like where to go in Australia was really new to me. And the idea that Seeed Studio was really good for the whole Asia Oceania area. Yeah, I did that.

(00:05:45):

Then I started one about embedded communities, but that one has been a bit harder because what embedded communities you join really depends on what your other interests are.

CW (00:05:55):

And what is an embedded community?

EW (00:05:57):

Like our Embedded Slack.

CW (00:05:58):

Sure.

EW (00:05:58):

Or, Memfault's Interrupt has a Slack. Adafruit has a Discord. RTEMS has a Discord. Zephyr has a Discord. Golioth has a Discord. Even if you are not using those products, it is an interesting place to hang out and meet people.

CW (00:06:17):

Yeah. Are any of those large? Sometimes larger communities have different dynamics.

EW (00:06:23):

Very!

CW (00:06:23):

But they have more engagement, people are talking more, there is more stuff happening. I worry if there are a lot of tiny Discords, like there is Zephyr Discord, and the RTEMS Discord. They may not have a whole- Maybe they have a lot of whole people. I have not looked at how many people have. Do they tend to be tiny, or is there overlap? Like, if you are in one, there are a lot of people, and you are in the other, there are a lot of people, and they all talk about the same stuff?

EW (00:06:52):

I definitely have had some that have talked about the same stuff. But the littler ones usually are more focused. And so sometimes the people who are more in charge of those projects listen there. But the general ones, like Contextual Electronics or ours, I do not know, sometimes you see the same people on all of them. And sometimes some are more interesting than others.

CW (00:07:23):

I am just idly wondering if it is better to have one big community or lots of smaller communities. I can see the advantages of both, but I get tired of being in eight Slacks or 20 Discords and trying to find- If I have something I want to ask, which of these 20 do I go to? Do I go to 20 and ask the same question of a bunch of people? Or do I find one that I think is the best one? Or do I go to the one where people have the best jokes? <laugh>

EW (00:07:48):

I do not usually talk on the ones that are big.

CW (00:07:51):

Yeah. Neither do I.

EW (00:07:53):

I need the little ones, or I would not say anything at all.

CW (00:07:58):

I know people talk about Discord and those kinds of communities being replacements or adjuncts for like Twitter, but I feel like Twitter is like this big soup where a lot of people are. I do not know. It is weird. I do not know how the social media stuff is going to shake down.

EW (00:08:14):

People use Twitter in so many different ways. For me it has been mostly an output, with an occasional, I will go through and look at people's interesting projects. Or if I am getting information about guests, it is a good way to find information if they have got a Twitter account. But I do not read it much. You read it more than I do.

CW (00:08:36):

I read it more than is healthy for any human being.

EW (00:08:39):

But you read it because it is a good place to get up-to-date information.

CW (00:08:46):

I only follow a hundred people on Twitter, which is actually not that many. Those are mostly people I find interesting, and I want to see their little jokes. I have lists of stuff for keeping up with events. So I have a list I call "Bleah!" that is all about news and stuff, and it has got tons of journalists and news organizations and things. That updates really frequently, and it is more addictive to me than the other side, my normal feed, because there is always something- People commentary on stuff, and what is happening, and who is doing this. It is terrible for my mental health.

(00:09:20):

I have several other lists like that, tailored to different stuff. So I use Twitter a little differently than probably most people do. I am not actually following any news organizations, but I have got them in a list.

EW (00:09:38):

I have heard people say, "You should follow a thousand people and it is like a cocktail party and you are just wandering around getting whatever information."

CW (00:09:46):

I would lose my mind!

EW (00:09:47):

I would lose my mind.

CW (00:09:49):

I am constantly- I am a weird person. I get annoyed when people say things that annoy me in my main feed. So I will mute them or unfollow them for a while. Because that is the feed I go to when I want to see something amusing, or something that is aligned with my interests, or I am not interested in having an argument there, or being outraged by anything. That is where my other list are for.

EW (00:10:16):

Embedded.fm follows all of our past guests. That is where I go if I want the cocktail party experience.

CW (00:10:23):

Yeah, I do not know. Discord and Slack. Slack especially tends to be more personal to me. It is like I am having a conversation with somebody I know. Twitter can be like that, but oftentimes it is just-

EW (00:10:39):

Yeah, but sometimes those conversations are just performance art.

CW (00:10:42):

Twitter or Slack?

EW (00:10:44):

Twitter.

CW (00:10:45):

Oh, because I do a lot of performance art on Slack too. <laugh>. Yes. No, that is true. I do not know why we are talking about Twitter.

EW (00:10:55):

Let us see. More class stuff. I did a talk this weekend about stacks and heaps, which I have done part of that for SuperCon, but every time I give it, that little mini lecture gets longer and longer. It goes through and it talks about how the stacks grow up with functions. Then there is the heap and things get malloc'd, and how that goes on the heap. And how if they meet in the middle, it can be disastrous. And what is in the stack frame, so that if you overwrite them, why is that bad? Then memory fragmentation.

(00:11:33):

I added a new section this time about memory leaks, because somebody asked me about memory leaks last time. I put together a little function that allocated two chunks of memory. One called "good" and one called "bad". It would free them at the end of the function. But then I added the constraint that if there was an error, then we had a coding bug where we forgot to free "bad". But only when there is an error. So I went through the whole presentation of how that leads to you having no memory.

CW (00:12:08):

Right.

EW (00:12:10):

I even said, this error does not happen very often. It only happens at midnight every day. Then I went through and there was this whole dead area of memory because, after a few days it, it does start to add up, especially with embedded devices. And afterwards- This is a fun presentation because there are sea shells and there is coral.

CW (00:12:33):

What?

EW (00:12:33):

I know it is very silly, but I like that to be. If the material is going to be dry, I want it to be amusing. And afterwards, they all seemed really, really depressed. Like, we should never use C again. I got the idea that they were done with computers.

CW (00:12:58):

I guess the wrong lesson. I think not using C is the wrong lesson. I think the lesson you are saying, "Do not use computers." is the right lesson.

EW (00:13:08):

I see.

CW (00:13:09):

Yeah. Did you give them options to replace C?

EW (00:13:15):

Well, they actually started talking about static analyzers. And Rust, of course. And I talked a little bit about garbage collection.

CW (00:13:27):

Yeah, which are not present in any embedded language.

EW (00:13:32):

No.

CW (00:13:32):

That is not something you want.

EW (00:13:35):

Talk about making it non-deterministic. But it was still very hard. Oh, I did find out that CppUTest does check to see if you do that. It looks at the heap, before and after your test. That was interesting. I did not realize it did that. That was another reason to use unit tests, because it is really hard to tell when you are on the system.

CW (00:14:02):

Do not use heaps. Can I just say that stacks and heaps as terms of art are terrible? I mean, the difference between a stack and a heap is a stack is an organized pile of things, and a heap is a disorganized pile of things. Neither of which are really- I mean, I guess that is kind of true.

EW (00:14:19):

If you have a stack of cards, it is organized ish. And if you have a heap of cards, that is what happens when you give a five year old the-

CW (00:14:26):

But heaps can be quite organized. They can be organized in different, you know, there is a structure.

EW (00:14:32):

A heap of dirty laundry and a heap of clean laundry.

CW (00:14:35):

Yeah.

EW (00:14:38):

Right before the show started today, we got a proposal for a new way to listen to the show.

CW (00:14:47):

<laugh> Uh huh.

EW (00:14:50):

You put this in our list of things to talk about, the drinking game to go along with the podcast.

CW (00:14:54):

Yeah. Some people on our Slack are coming up with the official drinking game. As punishment of doing this to us, I am going to read their ideas aloud on the show, minutes after they wrote them.

EW (00:15:07):

They are going to just be so sloshed.

CW (00:15:09):

So you are supposed to take a drink- If you are not somebody who enjoys alcohol, you can do Dr Pepper.

EW (00:15:16):

Boy, will you get sick off of Dr Pepper.

CW (00:15:17):

If you drink enough Dr Pepper, it will not be good for you either. Okay, here we go. You take a drink whenever the guest pronounces "Elecia" wrong, which depending on the guest could be quite dangerous.

EW (00:15:30):

<laugh>

CW (00:15:30):

When Chris hates IAR, which honestly has been happening less because I do not use it anymore.

EW (00:15:39):

If we change it to Chris hates anything, then every show is just a bacchanal.

CW (00:15:44):

<laugh> I do not hate everything. I mean, I hate everything, but I do not hate everything. It depends, as a phrase.

EW (00:15:52):

Yes, of course.

CW (00:15:54):

Which is usually a guest response, let us just be clear.

EW (00:15:56):

Well, I think it is a response to any question that actually has a nuanced answer.

CW (00:16:03):

Marine animals or origami are mentioned.

EW (00:16:06):

Yes. And then you get a double shot from marine animals and origami. So like an origami manta ray is definitely a double shot.

CW (00:16:15):

And finally, the one that will get you in the most trouble is, hates on microchip tools, PSoC tools, or any tool whatsoever.

EW (00:16:23):

I think that should go along with the IAR, because that is just hates on tools is probably-

CW (00:16:29):

I think one show we should play this game, while recording.

EW (00:16:34):

<laugh> I do not think that would be- With a guest, right? Because we cannot just-

CW (00:16:41):

Sure, why not.

EW (00:16:43):

Speaking of how to spell my name, you got a spell checker for VSCode. I did not realize you did not have one, because I have had one for a while.

CW (00:16:52):

I did not really consider it until somebody pointed out a typo in one of my comments in a PR, and I realized there is just no way this is the only typo in the comment of this file. It is not possible. So I was like, I am done with this, I am tired of type- For some reason my typing has gotten much worse in recent years. Maybe I am just lazier. Maybe it is these weird flat Apple keyboards. I do not know. I just make lots of typos. So-

(00:17:19):

<laugh> Veering off for a second. Modern IDEs are really great. I love auto-completion. It makes things faster. But I think it has made my typing really, really bad. Because I do not have to type whole words anymore, so I am getting actually less practice, right? I mean, you just type blah blah blah, and there is a list of things and you hit it and go. The problem with that is if you actually misspell something-

EW (00:17:45):

It is everywhere.

CW (00:17:46):

It just auto-completes it. I have found multiple places in the codebase we work on, where somebody misspelled a variable name in a pretty bad way <laugh>. It is misspelled everywhere because they typed it once and then they auto-completed, and it is like, oh, you want "idnex"? "Idnex" it is.

(00:18:04):

Anyway, so I went looking for a spellchecker, and I picked the first one in the list on VSCode. It is called "Code Spell Checker", and it works pretty well. Puts little blue underlines under things when they are misspelled. Not just in comments, though. It also does it for, I think, pound defines and comments. It does not do it for variables and stuff. So it is kind of annoying, because it might underline a bunch of stuff that you have in macros that are abbreviations and stuff. After installing that, I found six other misspellings in just the file that I had been told to fix the one misspelling in. So, worth it.

EW (00:18:43):

Code Spell Checker, that is the one I have too. I think there was a way you can change some things. Like, it will actually do variables names, with camelCase.

CW (00:18:55):

Yeah. I am sure there is a ton of configuration options.

EW (00:18:58):

Oh, it comes with a bunch of different languages. That is nice. It is not just English.

CW (00:19:01):

Yeah. In my other jobs, I tend to write code in French.

EW (00:19:06):

That is not true. But I suspect people who write code in Portuguese would really prefer not to have...

CW (00:19:14):

All the words underlined?

EW (00:19:16):

All the words underlined.

CW (00:19:17):

Yeah, mm-hmm <affirmative>.

EW (00:19:21):

And now a word from our sponsor. Why choose Newark for electronic components? From humble beginnings as a small electronic shop in 1934, Newark has grown into a leading international distributor of electronics and industrial components.

(00:19:37):

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.

(00:19:59):

Newark has operations in the US, 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 is N E W A R K .com.

(00:20:35):

Okay. Let us see. Oh, burnout update.

CW (00:20:44):

<laugh> Are you all healed? You ready to go?

EW (00:20:50):

After talking to Keith, I actually did decide it was time to talk to maybe a professional, and found myself a psychologist who is nice. She has asked me a bunch of questions, some of which have actually been helpful. One of them was if you are avoiding things by reading, what are you avoiding? Like, just notice, am I avoiding things or am I enjoying what I am doing? And that has been very helpful.

(00:21:26):

Of course, she also asked me to notice when I had physical, emotional or mental discomfort. And it is nothing like looking around to see if you are annoyed, to find out, wow, you are annoyed all the time. That has been fun.

(00:21:43):

Last time we talked about values, which I know is like one of those things. We talked to Keith about that too. We were talking about it, we were talking about it. I am like, this all sounds really familiar to me. And that ended up going back to my resume, where it talks about my objective and what I want in a job. And it pretty much laid out everything that I had been talking to her about. I was like, okay, I have actually done this exercise, I just did not know I was doing it. It was kind of weird to open my resume for my psychologist.

(00:22:27):

She pointed out that, talking to me, one of the things that I clearly want in my life is fun, amusement, play. And I want that in my professional job as well. Maybe not the same level of silliness, but some level. That was okay to have as a value, as something that would drive my search for goals.

CW (00:22:56):

Maybe you should go back to a toy company.

EW (00:22:59):

You know, it was really fun! When the battery folks came in and my business card said "Santa's Elf", and they did not understand, it was so funny! And the silliness. I do not usually like the what you do with your co-workers when you are not actually working, the socialization part.

CW (00:23:21):

Team building.

EW (00:23:22):

Team building. Getting to make a pumpkin. I had a bunch of pumpkins and we were doing a pumpkin carving contest at work. I combined a bunch of toys parts into a bunch of small pumpkins, and made like a little caterpillar of pumpkins. It was so cute! I guess I just really miss having broken toys all around me. That seems wrong.

CW (00:23:50):

That can be arranged.

EW (00:23:53):

<laugh> I do have a lot in my office, but still.

CW (00:24:00):

Do you feel like that has been valuable, that you have got some insight into your burnout? Do you have an action plan? Not, I mean-

EW (00:24:08):

It is still early days yet. But noticing when I am actively trying not to do something, versus when I am enjoying leisure time, is very helpful.

CW (00:24:20):

That is my big problem, is I get into the state of, I am doing nothing. Because if I were to do something, that would mean I am not doing something else. And to choose between these two things is a bad choice, because I should be doing the other thing. I therefore do nothing.

EW (00:24:37):

I am aggressively doing nothing, because I do not want to exercise right now. Or I am aggressively doing nothing, because what I should be doing is exercising, and what I want to be doing is origami. And so I am going to do neither one. Except substitute two different work things in there.

CW (00:24:57):

Usually for me it is like, I should be working, but I do not want to work. And I should not be doing anything fun, because that is even worse not working. That is playing hooky. That is... <laugh>

EW (00:25:12):

See she had me slice up my day. So that I was more focused on work at some times, and accepting of playing hooky at other times.

CW (00:25:22):

Yeah.

EW (00:25:23):

It was not great for my billable hours, but it was a little nice. If I take the idea that in order to get over burnout, I am going to have to work a little less...

CW (00:25:34):

That is true.

EW (00:25:35):

Then giving myself permission to play hooky was okay. Then I really had to sit down and say, "Well, am I avoiding work, or am I avoiding everything, or am I avoiding nothing and I am just enjoying this book?"

CW (00:25:53):

Yes, if you actively want to just be idle and do nothing and watch TV...

EW (00:25:59):

That is valid! We do that!

CW (00:26:00):

At least do it with intention. All right? It is like, you know what? I am totally burnt out and I need to turn my brain off. Today I am watching eight episodes of whatever.

EW (00:26:11):

Please spoon-feed me amusement.

CW (00:26:13):

Yeah. I think that is okay, as long as you are doing it on purpose.

EW (00:26:18):

And not doing it out of a desire not to do something else.

CW (00:26:24):

And maybe not for a week straight.

EW (00:26:25):

That too. Now we have a long list of listener questions and comments.

CW (00:26:33):

Okay. I have prepared my brain to answer these questions by, I do not know...

EW (00:26:41):

You are just going to stop there, huh?

CW (00:26:43):

Yeah. <laugh> That is an indication of how prepared I am, let us just trail off.

EW (00:26:48):

Let us see. Scott came across a lab doing flexible electronics work. The prospect of continuous blood pressure monitoring using a flexible patch with transducers. That was pretty cool. He mentioned that there might be some origami adjacent ideas. I have not quite gotten there, but I have not read the whole paper he sent. It did sound like it would be a fun graduate student group.

CW (00:27:17):

It is using an ultrasonic phased array. So it is a patch with a bunch of transducers on it, and doing complicated doppler stuff. They can look at blood flow and things. Interesting. Yeah. A lot of these things are kind of the holy grail of medical instrumentation. I remember when I was at, I am trying to remember, it was a long time ago... People I was adjacent to were talking about things like various ways of doing continuous blood glucose monitoring, which is a big deal because it is a pain in the neck to-

EW (00:27:57):

Pain in the finger.

CW (00:27:57):

Pain in the finger to take that a lot. Now there are continuous patches you can wear, but even those require a needle that is permanently poked into your, not permanently, but it is part of the patch and it is poked into your arm. They were looking at the obvious attempts like, just shining light through your skin and doing magic to figure out what the glucose level is. I think Google was doing something with your eye, like a contact lens?

EW (00:28:26):

Yeah.

CW (00:28:26):

I do not think that went anywhere. I think it is just the signal is so bad for that kind of thing, that glucose was really hard to extract in a meaningful way. But the blood flow stuff, they do that with ultrasound already. If they can miniaturize that and make it super noninvasive, that would be pretty interesting. Because blood pressure is another one of those things. It is not like blood glucose, but you got to put a cuff on your arm, it has got to squeeze. It is not something you can just silently take.

EW (00:28:57):

I have always wondered about blood pressure. We take it on the arm. With the cuff.

CW (00:29:05):

Yeah.

EW (00:29:07):

If we took it somewhere else, it would be different, but it would be more consistent or less consistent?

CW (00:29:13):

I am not sure it matters. I think it is mostly a big artery it needs. So I think you can take it, I may be talking out of my depth here, but I think there have been ways to take it on a leg or something. But the basic way is it-

EW (00:29:26):

But it have to be on your quad, not your ankle.

CW (00:29:29):

Somewhere where there is a big artery.

EW (00:29:30):

Or knee maybe.

CW (00:29:33):

Yeah, they might have a correction or something.

EW (00:29:37):

Yeah, the glucose sensing contact lens, has come and gone a few times. I think 2005 was when I first heard about it. I am seeing articles that are like 2018, 2020. There is one from 2022, but there is no, "Here we are going into production". Oh actually there is, from 2018, they stopped the project. Alphabet stops the project.

CW (00:30:04):

I think there were major problems that was not- Either it was not a good place to get a consistent read on it, or miniaturization, and stuff was too hard or something.

EW (00:30:17):

Okay. What do you use to make shareable flow diagrams, for a non-technical audience?

CW (00:30:24):

Flow diagrams? Oh, PlantUML. For flow diagrams, PlantUML is pretty much at the tippity-top for me. Because you do not have to draw things with PlantUML. You just...

EW (00:30:46):

Most of the ones I was going to suggest, you do not have to draw things. I really like Mermaid.

CW (00:30:52):

Oh yeah. That is a newish one, right?

EW (00:30:54):

Mermaid is very similar to PlantUML, but Mermaid integrates with .md files, the Markdown files. So that Markdown displays the image, even though you have written down the typey-typey part.

CW (00:31:10):

Oh wow. And it has a CLI? Did they decide to improve on PlantUML?

EW (00:31:16):

Clearly they-

CW (00:31:17):

Inspired by it, right?

EW (00:31:19):

Yes, it is really similar.

CW (00:31:20):

Because they both have a CLI thing, where you can put in your thing and outcomes a png file or whatever.

EW (00:31:26):

And they both have different goal views, whether you want a swim lane diagram, or whether you want a flow chart, they have different.

CW (00:31:36):

All right. I agree. I am wrong. This is better.

EW (00:31:40):

But there were other ones.

CW (00:31:41):

I do not see the need. I am kidding. <laugh>

EW (00:31:45):

You pointed out there was an ASCII one.

CW (00:31:48):

Well, that is for just drawing. It is called ASCIIFlow. I like to use that if you have got to put a diagram in code, in a comment, because you can draw boxes. It is like a drawing program, but with ASCII. So you are sitting there and drawing stuff with arrows and boxes and shapes and stuff and text labels. But it is all in ASCII, so you can just copy and paste once you are done, and that can go into code.

EW (00:32:12):

Those I have found super useful for when you are doing complex buffer stuff, and you need to explain what is happening.

CW (00:32:21):

Yeah. I also do that as a troll sometimes, when I am doing a white paper or something, just because I want to annoy everybody and have an ASCII diagram. Because most of the technical things I wrote when I started my career, were internet RFCs and Internet Drafts. By convention since whatever, 1965 or 9 or 72 or whenever they started doing Internet Drafts and RFCs, those are all just text. No markup whatsoever. So if you want a diagram, you have to draw ASCII, with dashes and pipes and things. I have a nostalgia for that.

EW (00:33:01):

Let us see what else other people suggested. There was Lucidchart, which you have to sign up for, but it is free. It is like draw.io, is more Visio-like, where you drag boxes. If you have yEd (Y E D), that is a local one. Draw.io and Lucidchart are both online.

CW (00:33:27):

Yes. I recently used one for something. I do not remember which one I chose. <laugh>

EW (00:33:33):

There were a lot.

CW (00:33:36):

I needed icons, because I was making a cartoon diagram. I think I might have used yEd, but I would have to go look. Yeah, it depends on your goal, right? Because if you want to make something for a non-technical audience with pictograms and things, then some of these are not the right thing to use.

EW (00:33:57):

Yeah. You mentioned writing papers, and you found a neat Python thing.

CW (00:34:07):

Oh, I did not find it, it found me through Twitter. I think EMSL retweeted it. It is a Python module, and you could point it at your Python function. So if you have got a Python method, sorry, <laugh> using the right term. No, I am going to say function. You have got a Python function that does some mathematical operation. It will take that, turn it into LaTeX and then the LaTeX will produce proper mathematical notation for your Python function.

EW (00:34:42):

And then is that an image? Cause I know LaTeX can create the images.

CW (00:34:46):

Yeah. It will create a PDF or an SVG or whatever LaTeX creates, whatever your render creates.

EW (00:34:54):

Do you have any recollection what that was called?

CW (00:34:57):

See, this is what I was worried about. You were going to ask me what it was called.

EW (00:35:01):

It is like a quiz.

(00:35:01):

And I am going to have to go find it. Stall them!

(00:35:09):

Let us see. Do I have any pirate jokes? I do not think I have any new pirate jokes.

CW (00:35:13):

Okay. It is called La... How do you do this? Because LaTeX is called LateX, but this is like Latexify.

EW (00:35:22):

Well, the X is clearly intended there.

CW (00:35:25):

All right. It is Latexify with LaTex. It is a Python module that I am sure you can get from pip or something.

EW (00:35:41):

Actually, the way it is formatted here, makes me think that maybe they are running it in-

CW (00:35:45):

Maybe you are running it in Colab or Jupyter. Anyway, I do not know. I did not try it, which is cool.

EW (00:35:51):

I will put a link in. Next, from Rick, "I have been starting to hear from more people who are getting into embedded systems via MicroPython or Rust. And the reason I have been hearing from them is because they reach a point where they wonder if they should learn C. It is not necessarily a new phenomenon, but it is somewhat surprising." And then, you had a flip question to that, which is, "In what timeframe do you think veteran embedded developers who know C/C++ will need to learn Rust or get frozen out of opportunities?"

CW (00:36:34):

What?

EW (00:36:34):

Comment further?

CW (00:36:35):

<laugh> Well...

EW (00:36:38):

Do you think people need to learn C?

CW (00:36:40):

This was a discussion on the Slack. Yes, I think people probably should learn C, unless they are fairly comfortable in the job they have. If they would like to expand opportunities in the future, they are going to probably come in contact with jobs that either are totally C, or have a lot of C in the periphery. Because, as we discussed, C is what stuff is still built out of, for the most part. Middleware, if you are getting stuff for your microcontroller from the HAL or what have you, that is all in C.

(00:37:14):

It is going to take a long time for that to be, I do not want to say replaced, but also written in alternative languages. If you think there is a chance that you are going to encounter that, knowing C is extremely useful. I think most embedded projects that are using Rust, there is a lot that are from scratch, which makes it a lot easier. But then you still got the middleware question, which is missing in a lot of cases.

(00:37:42):

There is a lot where people are taking existing systems and saying, "Okay, let us write this part in Rust, and this part in Rust." Which means you are interacting with a system that is part Rust and part C. And if you do not know C, then you cannot deal with that other set of code. So it is not a value judgment on either C or Rust, it is just the state of where we are right now, in my opinion. And C makes you understand how the machine works a little better, even if it is unsafe and dangerous. Knowing how that stuff works is only helpful, as far as I am concerned. What do you think?

EW (00:38:26):

I know C/C++ and I know very little Rust.

CW (00:38:30):

I am not going to claim I know C++ anymore.

EW (00:38:33):

I know old C++. I know the C++ that is part of C/C++.

CW (00:38:38):

Yeah, exactly. C++ has moved way beyond where I last used it. The last time I seriously used it was probably, it is getting close to ten years now, and it has got a lot more features.

EW (00:38:54):

Yes. So, there is the bug that happens when the uint32 number of seconds runs out, from our current epoch that starts in 1970.

CW (00:39:15):

Yeah, it is 2036 I think.

EW (00:39:18):

We are not going to be away from C until after that, for sure. Let us face it, that is all I care about. <laugh>

CW (00:39:24):

Oh, you are answering the second question now? Do we need to learn Rust?

EW (00:39:27):

Yeah.

CW (00:39:27):

No, I plan to be retired before I need to learn Rust, to keep working. There are certainly reasons I would learn Rust. If a client said, "We really need you, and we have got some Rust in here." Then sure I would learn it. Or if I wanted to learn for fun. But I do not feel like my opportunities are going to be limited for quite a while, and probably not long enough that I am going to care at all. I will be whittling stupid shapes out of wood on a bench on the wharf, long before that. Well, it is better than fishing. I do not want to deal with fish.

EW (00:40:06):

I am telling you, we just get fishing rods. We do not put hooks on them and we throw them over and then we can just watch for dolphins.

CW (00:40:11):

You throw the whole rod over! That seems expensive!

EW (00:40:15):

And probably is considered littering.

CW (00:40:18):

Yeah, I mean-

EW (00:40:20):

I just meant you throw the sinker.

CW (00:40:22):

Oh, just that you tie sinker on it, just putting lead into the ocean.

EW (00:40:29):

We can have the sinker out of whatever you want. If we make it out of iron, does not that enrich the local...? Never mind. If you were starting right now, what languages would you suggest people learn?

CW (00:40:48):

I would suggest people learn C and Python.

EW (00:40:50):

<laugh>

CW (00:40:50):

I do not want to suggest people learn C, but the truth of the matter is that is just where we are still.

EW (00:40:58):

If you want to work in embedded systems. If you want to work in frontend development, do not ask us. We have no idea.

CW (00:41:04):

You should learn JavaScript, <laugh> and whatever that whole universe is. And if you want to work on apps, you should learn Kotlin or Swift. But for embedded, C is still king. Most of our clients are still asking for C. We have never had- Have you had a single inquiry that said, "We need Rust. We would like you to do Rust developement"?

EW (00:41:26):

No, but I do not know whether that is-

CW (00:41:28):

Self-filtering.

EW (00:41:29):

Self-filtering. Because we do get some clients from the show, and I think most of our listeners are like, "We are not going to ask them to do Rust. They will make fun us."

CW (00:41:38):

I just think it is a different era, and there is so much inertia behind C, that it is just going to take a long, long time. It is like I was thinking the other day, when I reached for Tcl/Tk to do a Python UI. That was something I used in 1994, and it is still around and people are still using it. It is just a lot of inertia with stuff that works well and that people know.

(00:42:05):

And once you have got code bases- Year 2000 bug, they had to dig up a whole bunch of COBOL, people because half the banking industry or whatever was still running COBOL. That is probably gone by the wayside now. But COBOL was already, I do not know, 50 years, I do not know how old. It was pretty damn old by 2000.

EW (00:42:26):

There is still COBOL out there and Fortran. Plenty of Fortran in...

CW (00:42:30):

Fortran maybe finally getting replaced by NumPy.

EW (00:42:34):

With Python, yeah.

CW (00:42:35):

Python. Yeah, I think I would suggest- Python is super useful to have in your back pocket.

EW (00:42:42):

It is such a nice scripting language.

CW (00:42:47):

That is what everything runs on right now. I know there are initiatives to get some Rust into the Linux kernel. And that is great. But it is going to be a long time and it is going to get murky, because things are going to coexist for a while. And it is more likely there are going to be more projects where you have to learn both.

EW (00:43:09):

Both, yes.

CW (00:43:10):

Than where you can just say, "Well I just know Rust, I do not need to learn C."

EW (00:43:13):

Yeah. If you know Rust and you want to be really useful, figure out how Rust and C go together.

CW (00:43:19):

I will say-

EW (00:43:20):

That edge is going to be important.

CW (00:43:23):

Yeah, exactly. To that end, if you want to be more attractive, definitely learn both. If I wanted more contracts I would learn Rust.

EW (00:43:33):

If I wanted more contracts, with some reasonable guarantee of future contracts, it would be not just learn Rust, but learn how Rust and C work together. How you can call one from the other. What the downsides are. Where malloc and the borrow checker over...

CW (00:43:53):

Oh, I do not even want to think about-

EW (00:43:54):

I do not even know... Anyway.

CW (00:43:59):

Yeah. So that is my thinking on that.

EW (00:44:03):

Chris Gammell over at the Amp Hour and Golioth, messaged us and asked if we had thought about using DALL-E for blog post pictures. It was pretty funny because he did it like right after I had done that for the first time, for Duncan's show. The thumbnail is a DALL-E output.

(00:44:28):

It is funny, I had not really thought about that, but it is useful. There are lots of times where we need just little pictures that do not really mean anything but are related. It was pretty fun to generate a couple of pictures, and then choose one that was, I do not know, like a robot looking at code.

CW (00:44:54):

I have mixed feelings about it. I think there are a lot of problems with those things.

EW (00:44:58):

The copyright?

CW (00:44:58):

Even though I have been using them a lot. Copyright, where they are sourcing their training images, displacement of other people. I think for our use, we are not displacing anybody except maybe stock images. Which people make money from, but we would not use stock images normally.

EW (00:45:24):

It replaces me putting in random pictures of birds.

CW (00:45:27):

Yeah, exactly. So I do not feel like we are taking bread out of anybody's mouth doing that. There are concerns of course, where people would be doing that, and there are plenty of artists who have seen stuff and it was like, "That looks just like my stuff. And in fact I can see parts of my work that have filtered through." Some of the sources for the training are very strange places, because a lot of them are just scraping what is publicly available on the internet. And that scraping goes in weird places!

EW (00:45:57):

And scraping is not copyright free.

CW (00:46:04):

Well, they get around the copyright by doing weird things with research and then, yeah.

EW (00:46:10):

Right. They say we are just doing this for research so we do not have to pay attention to your copyright. Oh by the way, pay us for the output of our research.

CW (00:46:17):

It somehow gets laundered into a commercial product. Anyway, I think it is very interesting. I have been playing with it, but I have not been- I would be hesitant to say use it for something where I would normally pay someone for art. I would not use it for a T-shirt design. I would not use it for something I would normally commission somebody to do.

(00:46:41):

It is going to be interesting to see what happens. I think there is going to be some pushback. Hopefully, there is going to be some resolution on the copyright side, where the training data sets are better curated.

EW (00:46:57):

I would pay more for a data set, that I felt more secure using. Speaking of T-shirts.

CW (00:47:05):

Yeah!

EW (00:47:06):

We did commission an artist. And she did a good job. And it is entirely my fault that I have neither paid her, which I really should do, and I have not set up T-shirts. But at some point soon...

CW (00:47:19):

If we hurry, we can get them in for the holiday season.

EW (00:47:22):

Yes.

CW (00:47:24):

For all those people who live in climates where you can wear T-shirts in January.

EW (00:47:29):

I will put a long sleeve T-shirt on. Actually you know, the design would look really cute on a zippered hoodie.

CW (00:47:34):

<laugh> Anyway, T-shirts coming soon. Watch the newsletter-

EW (00:47:41):

Watch this space.

CW (00:47:41):

The newsletter, this space. Other spaces.

EW (00:47:44):

Twitter, LinkedIn.

CW (00:47:46):

We will get a satellite to fly over and cause a lot of light pollution.

EW (00:47:49):

And it will drag a streamer behind it like the planes do.

CW (00:47:54):

Yeah. What else? <laugh>

EW (00:47:59):

You posted a note about roller coasters are triggering crash detection.

CW (00:48:04):

What? Oh, <laugh>. Yeah. You saw that? The new iPhone 14 and Apple Watch have what they are calling "crash detection" for vehicle crashes, car crashes. The idea is you get in an accident and their accelerometer and a bunch of other sensors say, "Hey, I think we have been in a violent environment, and this is probably a car crash." Then it calls 911 for you or something. Anyway.

EW (00:48:34):

Oh, I see. Yes.

CW (00:48:37):

Yes. It turns out this is triggering on roller coasters <laugh>. So you might be on roller coaster and the alarm on your phone goes off saying, "Are you okay? Do you need me to call 911?" For me, if I were on a roller coaster the answer would be, "Yes, please. Please call 911, because I do not know how I got on this roller coaster!"

EW (00:48:54):

<laugh>

CW (00:48:58):

So that is happening. The reason I thought of that is because way back when, I do not know if I talked about it on this show, Fitbit, we had an accelerometer of course because it is for the step counter. With one product, if you got on a roller coaster where for a moment you were in zero G, it would crash.

EW (00:49:19):

<laugh>

CW (00:49:20):

There was a divide by zero somewhere. There was a whole blog post about this. I think, was it Tyler? I do not remember who was involved, but I will see if I can dig up the blog post for the show notes. Because it was a neat debug sleuthing. Yeah, that just made me think of that. Roller coasters and accelerometers and software. If you got an accelerometer in your product and you rely on it for anything, make sure you test your product on a roller coaster. <laugh>

EW (00:49:53):

Things you might not be thinking about.

CW (00:49:59):

At least throw it up in the air. <laugh>

EW (00:50:00):

No, because the roller coaster is longer.

CW (00:50:04):

That is true. And jerkier, some of the big ones. So I hear. It has been a long time since I have been a roller coaster. 1992 was the last time I was on a real roller coaster.

EW (00:50:14):

No!

CW (00:50:15):

I am still nauseated from it.

EW (00:50:16):

No...

CW (00:50:16):

Was I on a real roller coaster?

EW (00:50:20):

We went to Great America when you left Cisco for Procket.

CW (00:50:24):

We did not ride any roller coasters, because I hate roller coasters.

EW (00:50:27):

I am pretty sure...

CW (00:50:28):

We walked around and ate, and ate, fair food and...

EW (00:50:35):

I am pretty sure I made you go on at least one.

CW (00:50:37):

I cannot imagine there was a single roller coaster at Great America I would agree to go on. Maybe the kid one, if they had a little kid one that was certified for five and under. That would be good.

(00:50:50):

I am still nauseated from 1992. Knott's Berry Farm, Montezooma's Revenge. Why would you get on something called "Montezooma's Revenge" as a ride? That is just a bad idea. And then there was the Corkscrew! Why would you get on something called "the Corkscrew"? I do not know. Why would you get on roller coaster that goes forwards through its loopy loops, and then backwards!?

EW (00:51:13):

It could not have been '92 because we went to Knott's Berry Farm before we graduated.

CW (00:51:17):

This was high school.

EW (00:51:18):

But we did ride roller coasters on that one, because we were with a big group.

CW (00:51:21):

I did not ride any of those roller coasters. I gracefully allowed the rest of you to do it. I would ride on the Log Ride which is safe, because it is just the one drop. And anything of that nature. But beyond that, no. There was a Snoopy roller coaster. I definitely one on the Snoopy roller coaster, in the kids' section of Knott's Berry Farm. That one is fine.

EW (00:51:42):

You have not been on the Matterhorn since high school?

CW (00:51:44):

Those are all fine. Disneyland roller coasters are fine. Any upside down or flipping around, none of that. Just no upside downs.

EW (00:51:56):

Okay. Bailey thought we should talk about taking breaks. Well I think that was a break, so we should go on. <laugh> Cameron asked about systems engineering. Like, "Where do you start a complex project? What methods or tool are helpful for organizing a project, or your part in a project?"

CW (00:52:20):

Yeah.

EW (00:52:22):

"Should I learn to love drawing squares and arrows in PowerPoint?"

CW (00:52:27):

And they mentioned something called "SysML".

EW (00:52:29):

Yes.

CW (00:52:30):

Which I do not know anything about. I am not a systems engineer. But I have done it. The last time I really did it was, well... One company we did a whole design for the whole system, and I did that in collaboration with electrical engineer and mechanical engineers. So it was less about being a systems engineer and more being a cross-functional group, designing a system.

(00:52:58):

There is a more formal thing that is systems engineer. Right? I know Fitbit had a group that was systems engineering, and it was made up of quote "systems engineers". They seem to be more of along the lines of, "Oh my God, we have all these subgroups, and how do we get them to talk each other?"

EW (00:53:16):

Yes, what Tom Anderson said, "Systems engineering, is not that what project managers do in their spare time?" <laugh> Yes, kind of.

CW (00:53:25):

Yeah. And sometimes it is where engineers who have too many ideas end up. They want to tell people how to do things. <laugh>

EW (00:53:35):

Sometimes it is where engineers who have grown out of their role, go in and look at all of the other roles.

CW (00:53:44):

Where to start with a complex project is, my go-to answer for that is, always break it into large sections. Then break those down and find the places things communicate. Block diagram and find the big blocks that have the question mark in them, and find the risks. Block diagramming, a lot of things start- I know it is cliche, but a lot of things start with napkin sketches. Does not have to be on a napkin.

EW (00:54:14):

I agree. We spend the whole section in the class about, diagram your project, diagram it this way, diagram it that way. I think that that is really important, because the way that you look at things changes. A hardware block diagram versus a software block diagram, those are pretty similar. But then if you start thinking about control or data flow, now you are looking at different diagrams, and you are thinking about the system in a different way.

(00:54:46):

Actually, it was talking to someone recently who mentioned that one of the people they were working with, did not want to do the documentation before the design. They only wanted to do the implementation. They were only excited to write the code. And I totally understood, but a lot of the job is that pre-work. It is the thinking about it, it is the documenting it so other people can comment on it.

CW (00:55:18):

I do not want to go on any dates, I just want to get married.

EW (00:55:21):

Yeah, kind of.

CW (00:55:23):

I do not want to learn to draw. I just want to be Leonardo da Vinci.

EW (00:55:28):

I mean it is not that serious.

CW (00:55:30):

No, it is not. The fun part for a lot of people is writing code. The amount of times I have gotten in trouble with writing the worst code, is when I have dived right in and written the code.

EW (00:55:42):

The fun part is writing the code, and having it work.

CW (00:55:45):

Yeah!

EW (00:55:45):

And if you do not define how it works ahead of time, then you can define how it works whenever you feel good enough.

CW (00:55:53):

That is where the dopamine hit comes in, right? "Oh, yay! Look at this! I made this do something. It works!" Meanwhile it is-

EW (00:55:59):

It is not doing anything you actually wanted it to do, or doing it in a way that is sustainable.

CW (00:56:04):

Yeah. That is the difference between work and play.

EW (00:56:10):

Well...

CW (00:56:11):

Sometimes!

EW (00:56:12):

Sometimes, yes. Certainly with some of my origami work, I am basically typing like a monkey at it. Instead of sitting down and trying to figure out the equations necessary to work on curved blah blah, blah, blah, blah. None of you care.

CW (00:56:27):

<laugh> Drink!

EW (00:56:27):

<laugh> That is okay with me, because I am not going to write a technical paper about it. I am just trying to figure out how to do this one pattern.

CW (00:56:41):

Yeah.

EW (00:56:43):

But there is a reason we do design, and design is super important. It feels like something that is like documentation, and nobody wants to do documentation. But this is documentation before the fact, as you are thinking about it. And you get paid for thinking, not for typing. Typing is easy.

CW (00:57:01):

Wow.

EW (00:57:01):

Unless you are Christopher, in which case, install Code, S pell and you will be happier.

CW (00:57:05):

So the thing is, if you are in a role where a systems engineer is required, it is already a complex product or whatever. Product, I hate that word. Content, product, whatever.

EW (00:57:17):

Project?

CW (00:57:17):

Yes. It is already a complicated project, which means you are already in what is probably a larger group. Which means there is already lots of engineers, and subgroups and factions and what have you. Which means that part of the job of systems engineer, after having an overview of how the system works, what the major parts are and how they communicate, is to go to all those people and ask, "What is wrong with this? What am I missing? What is my misconception? Is this a valid representation of the system? Or have I made a mistake?"

EW (00:57:54):

And they are going to say, "It depends."

CW (00:57:56):

Well, they might say, "It depends" and then-

EW (00:57:57):

Drink.

CW (00:57:57):

You need to nail them down. <laugh> But so many times I have been in places where systems engineers, they do not actually understand things. So I have to have a-

EW (00:58:09):

Sometimes you just collate the diagrams and hope everybody understands.

CW (00:58:12):

Yeah, but here is how it actually is working. "But this is what my diagram says." And I am like, "But your diagram is not on 15 million people's wrists." Anyway. That is just something to keep in mind. Your job is not to be the god of the system. It is to be the glue between the interdisciplinary groups, in my opinion.

EW (00:58:38):

I am not going to disagree.

CW (00:58:39):

The technical go-between. Yes, you are going to define things, and you are going to do some of the design, especially at the start of a project. But as that gets away from you, and other people do their implementations, pieces of that design start to change, because you are wrong <laugh> about the details. You are always wrong about the details.

(00:58:56):

And people have different ways of doing things. And those big boxes get filled in with smaller boxes. It is your job to make sure that you still understand what is going on, and keep up with that. So that you can tell people, "Oh, what you are doing inside this box, that is great. But because of the way the whole system works, you are affecting this other group in a negative way."

EW (00:59:20):

"If you change the timing on the SPI flash, the firmware update code will need to be updated. And that is 27 layers away from you. Please do not do that."

CW (00:59:34):

Yeah. And that is really hard. It is really, really hard. That is why systems engineering is a different way of thinking. You have to have, depending on the project, some interdisciplinary knowledge. You have to have some electrical, some software, possibly some mechanical.

EW (00:59:53):

I think that everybody should have a systems view, at least a little bit. If you just focus on what you are doing, there is a decent chance that what you are doing is not going to be useful to other people.

CW (01:00:04):

This is completely different from the systems engineering course that I took, that we all took in undergraduate.

EW (01:00:10):

<laugh>

CW (01:00:10):

That I subsequently took as a graduate, which I did much better in.

EW (01:00:17):

Of transfer functions.

CW (01:00:18):

It is just transfer- This is all Laplace transforms and stuff. And I still do not understand why it is called systems engineering, because there are no systems involved. It is just a bunch of integral transforms. They should call it "integral transforms for engineers." Thank you for coming to my TED talk.

EW (01:00:34):

No, it is about abstracting systems into generalized forms. You can treat a spring dashpot whatever system, the same as you can treat an RLC circuit, if you put them in the right terms. And then you can talk about the things that can be used for both of these very different systems.

CW (01:00:59):

They are the same system in physics. It is the same equations. They all boil down-

EW (01:01:03):

I know. That is what systems engineer is about. Boiling down to the...

CW (01:01:08):

It is just integral transforms! It is just Fourier and Laplace. They make it sound cool. And you know what? It is just a bunch of drawings.

EW (01:01:18):

I like Fourier.

CW (01:01:19):

I know you do. I do too. I just do not want people to get confused, because when I started first hearing "systems engineer" in a work context, I was like, "Oh, wow. You are analyzing the frequency response when we do this." "Oh, no, I am talking to Joe about which part we are going to buy for the LED driver." "What, why are you called a systems engineer? My class was about this." Got a D in that in undergrad, because it was dumb. That was the grade I got, dumb.

EW (01:01:55):

I am sorry.

CW (01:01:56):

There was no Laplace transforms in that course I remember. It was all about buckets and stuff. I do not remember. I do not think I went! I think I went to a few lectures, and he was talking about electronics as pneumatic or hydrodynamic systems. As an analogy. And it was like, this is, no.

EW (01:02:16):

Because they are all the same.

CW (01:02:17):

They are the same enough to cause a great deal of problems and confusion.

EW (01:02:22):

Fair enough. Roberto would like to know if we want to do another show about MISRA C. How do you feel about MISRA C these days? I think Clang is better. <laugh>

CW (01:02:36):

In the words of Don Draper, "I do not think about it at all."

EW (01:02:39):

<laugh> Oh burn! Does that count as a tools burn or not?

CW (01:02:49):

I have no problem with it. It is that I am not working on projects that use it, and it has not come up. When I was working on safety critical stuff, we used a subset of it. That was fine. But I do not know what there is more to say about it. Maybe that is my ignorance. We turn on the checks in the expensive compiler we bought, and we corrected things that were non-compliant.

EW (01:03:20):

And then we commented out all the warnings we did not want to have.

CW (01:03:22):

Commented out all the warnings, for things that made it impossible to write our software.

EW (01:03:26):

Yeah. I feel like there are more static checkers. I think MISRA may have a place, but its expense means that it is very much in danger of losing to free tools.

CW (01:03:45):

My cynical annoyance with MISRA is you have to pay for it, and it is just a list of rules.

EW (01:03:52):

Yes.

CW (01:03:53):

There is no reason this cannot be incorporated into Clang. So it kind of bugs me. Having said that, like I said, I have not really thought about it in a long time. It has its place, it is useful, but it is not going to save you from bad code necessarily.

EW (01:04:24):

No. If you really try, nothing will save you from bad code.

CW (01:04:28):

And I really try sometimes.

EW (01:04:30):

Silas mentioned the episodes with Dennis Jackson, where Dennis mentioned a curated list of reading, as you go from software to embedded. I talked to Dennis, asked if he had updates to it, and he said, "Not really. What was on the show notes, was pretty much still what he recommended." So I will copy that into our current show notes, or I will put a link to those shows. No, I do not have anything new for you there.

(01:05:04):

Silas also mentioned the Agile Embedded Podcast, and a recent show about technical debt, being particularly valuable. I have not heard that show, but it does look pretty cool.

CW (01:05:22):

Technical debt sounds like an interesting topic we have not really done.

EW (01:05:26):

Because it is all technical debt.

CW (01:05:28):

Once you have written a line of code, you are in debt.

EW (01:05:30):

Exactly. I have another question, from Gabriel, who listened to an episode recently with Jean Labrosse. That would have been about MicroC/OS. And wanted to email us about getting more into embedded systems. Let us see. "I have a dilemma. I have been stuck in roles that offer little embedded systems development experience, and I feel like I am not experienced enough to go for senior principal jobs. The reason I was stuck was blah, blah, blah, blah, blah, blah."

CW (01:06:08):

Mm-hmm. <affirmative>, what is the question?

EW (01:06:10):

"I now have no restrictions, but I am finding it difficult to get work. I write C code, from drivers to APIs, application code for my home projects, development boards, STM32, M0, M3s, FreeRTOS. How do these home projects translate into experience that employers are looking for? Home projects are not the same as work projects, where you are asked to deliver a product for a real world application to a market."

CW (01:06:37):

Well, you are in luck, because home projects translate pretty well into <laugh> application to market a lot of times, especially if it is just mostly firmware. The things you are doing to make a home project, especially if you are using FreeRTOS and STM32, M0s and such, I am assuming in C if you are using FreeRTOS, are not appreciably different. The only difference is the process involved, the rigor, the design work maybe. You have seen everything that you need to see, you know all the terms that you need to know.

(01:07:17):

I would apply to many jobs, and take those projects with you. Take one you are particularly proud of and polish it up. If the code is embarrassing to you, because it was a home project and you did it haphazardly, then clean it up. That is going to be a better foot in the door than anything on your resume, or anything you can say in an interview, in my opinion.

EW (01:07:46):

You went on.

CW (01:07:47):

I am sorry.

EW (01:07:47):

No, that is cool. "I feel stuck because I feel unemployable, and yet I have the foundation with my Masters of Science and automotive electronics."

CW (01:07:56):

Wow!

(01:07:56):

"And more than eight years of experience up to a team leader level." Okay. Here is the deal. While what Christopher said was true-

(01:08:06):

It is still a lie.

EW (01:08:08):

The problem is not that you do not have the embedded experience, the problem is that you feel stuck.

CW (01:08:14):

Yeah.

EW (01:08:19):

It is a good time to be looking for an embedded systems job. There are jobs out there. If you want a job in the automotive area, there are definitely places to look for. So email us back and tell us where you are looking, because you have everything you need. Now you just need to go out and ask the right person for a job. Because there is going to be somebody who needs what you have been doing, and what you want to be doing.

CW (01:08:50):

Yeah.

EW (01:08:50):

Even if you are not experienced enough to go for a principal engineer job or a senior engineer job, it sounds like you are getting there. So take a project and take it with you so that you can talk about it. And maybe from Dennis' list of how do you get from software to embedded, like I said, those will be in the links, so you can check out if there are any things you feel like you need in there. Other than that, search for the jobs you want. I think you are probably more employable than you think.

CW (01:09:32):

And if you have got eight years of experience up to the team leader level, maybe broaden your horizons slightly. There are plenty of embedded teams that are looking for project managers, and things along that lines, that are still technical but are senior in a different way. Senior in the sense of you have seen things <laugh>, not senior in the level of you know all the algorithms or whatever. Just reading this, this is an attractive resume. So I am a little confused. There should be things out there, so do not feel too stuck. I think you have more going for you than you think.

EW (01:10:19):

And if you pay the buck to go into Patreon and join our Slack group, we do have job postings there. But more importantly, we have a jobs chat, where you can post your resume and people will give you comments. It is a great way to make sure that you did not have a spelling error, or something like that on your resume.

CW (01:10:42):

And people will do mock interviews too. There are people who have offered that. That is a good practice. If you are finding the interview process is maybe daunting, that can help.

EW (01:10:54):

Let us see. Barry was very complimentary, is an EE who did not attain this degree until he was 52 years old, which was only a couple of years ago. Took the usual classes, as well as assembly language classes. And really enjoyed that so much, that when he ran across a game on Steam that starts with learning logic gates, he was just excited enough to tell us, which I am happy about. The game is called Turing Complete, and it is turingcomplete.game if you are looking on the internet.

CW (01:11:34):

I will check it out.

EW (01:11:35):

There have been a couple of others.

CW (01:11:37):

Yeah. I am drawing a blank, but there is a game company that made- There was one that was like Shenzhen something .io I cannot remember the name. Somebody will write in. There were a bunch of games from the same designer that were very low level computer puzzle solving games.

EW (01:11:59):

I have played a couple of games like that, and they are very fun because of the logic. I mean, it is all just logic tables and logic gates, but how they combine together, it is fun.

CW (01:12:13):

Yeah. For me, I had a little trouble because they seemed too much like my CS60 Final.

EW (01:12:18):

Well, yes. Let us see. From Bishoy, "Could you please talk about using C++ Visual Studio C for embedded system development?"

CW (01:12:34):

I do not understand the question.

EW (01:12:36):

He wants to target STM32 microcontrollers M0. Are you talking about using Visual Studio Code? I hope so, because you have C++ in there.

CW (01:12:47):

Yeah. So if you are talking about Visual Studio, do not do that.

EW (01:12:50):

Run away.

CW (01:12:50):

If you are talking about Visual Studio Code, then...

EW (01:12:52):

Then we are good. What you really want is Cortex-Debug-

CW (01:12:57):

The extension.

EW (01:12:58):

The extension. Then you should be able to target an STM32 with a debugger. ST-LINK, J-Link, OpenOCD, Black Magic sort of thing.

CW (01:13:13):

You need to have the ARM GCC and GDB Toolchains installed too.

EW (01:13:18):

Okay. Yes, Visual Studio Code, you need the Debug-Cortex and you need to also install the ARM compilers. How to do this?

CW (01:13:31):

Yeah.

(01:13:32):

There is definitely a how to do this. It is not supposed to be hard. The students in my class do it. You can get started with the STM32CubeIDE and then move over to Visual Studio Code.

(01:13:45):

You can also use platform.io.

EW (01:13:48):

Platform.io is kind of a path along the way. It is not directly using the CMSIS HALs. It is using something a little simpler, that runs in VSCode.

CW (01:14:06):

If you really like, I guess you have to do some of the Cube stuff sometimes for setup though, anyway right?

EW (01:14:13):

No, you never have to do the Cube stuff. You can always make your own clock tree yourself.

CW (01:14:18):

So you have to use the Cube stuff.

EW (01:14:20):

You really do not.

CW (01:14:22):

If you want to do the clock tree, you got to use the Cube stuff. I am saying use the Cube stuff for the clock tree.

EW (01:14:30):

I am saying you really do not usually have to. I have lived the life without Cube.

CW (01:14:35):

You set up the clock tree by hand?

EW (01:14:40):

I mean, you just let it do all the defaults. Sure, you have to calculate the PLL for the baud rate-

CW (01:14:46):

All right. Sorry, I just had a bad experience with the, guess what?

EW (01:14:50):

Oh, the clock tree on the Cypress.

(01:14:52):

The PSoC clock tree setup, a couple of weeks ago.

CW (01:14:53):

Well that is a different story, that you do have to use the TopDesign.

(01:14:56):

Yeah, I am surprised that STM32 is easier.

EW (01:14:59):

Oh no, because STM32 is just filling in registers. It is not doing anything with the hardware.

CW (01:15:05):

Well I am sure, no, maybe the PSoC is too. I do not know. Anyway, there were a lot of clocks.

EW (01:15:11):

Yes, there were a lot of clocks.

CW (01:15:12):

It was a nightmare. There is a lot of research for that. I will look for a good webpage intro and put it in the newsletter.

EW (01:15:22):

I will put it in the show notes too, not just the newsletter.

CW (01:15:25):

Fine. But then my newsletter is just show notes.

EW (01:15:28):

Well, the top part is just show notes, and then we have a little section about what is going to be coming up next. Then we have a section about bonus stuff, which this week we have like three separate-

CW (01:15:37):

I have renamed that to "Topics of interest."

EW (01:15:39):

Ooh, "Topics of interest."

CW (01:15:41):

It is much more highbrow.

EW (01:15:45):

There were several topics of interest that went into that list. So you get the...

CW (01:15:49):

Yeah. Okay.

(01:15:50):

So feel free to sign up for the newsletter.

(01:15:53):

And if you got stuff that you would like to see in the newsletter, let me know. Different things we can do with it. If you want job postings in there, we can maybe make that happen.

EW (01:16:05):

Then we will have to decide if we are charging for them. Then we will have to decide how much we are charging for-

CW (01:16:09):

That is why I said, "We can maybe make that happen." We have been talking for an hour and 20 minutes.

EW (01:16:16):

Okay, then-

CW (01:16:19):

I am tired.

EW (01:16:21):

All right. I will read some Winnie the Pooh and you can take a nap. In the meantime, thank you for listening. Thank you to Newark for sponsoring the show.

CW (01:16:33):

Thank you to our Patreon subscribers, for subscribing and supporting us. And if you would like to become one for as low as a dollar, you can join our Slack. Although with inflation, that may go up to more than, I do not know, I am raising the price. It is fine. Join for a dollar, join the Slack. You can talk to fellow listeners about stuff. Thank you to Christopher for producing and co-hosting. That is me. Thank you to Elecia for hosting and finding interesting people to be on the podcast.

EW (01:17:14):

At this point, Pooh and Piglet have decided to trap a Heffalump with honey, and Pooh is going to get some. 'As soon as he got home, he went to the larder and stood on a chair and took down a very large jar of honey from the top shelf. It had H U N N Y written on it, but just to make sure, he took off the paper cover and looked at it, and it looked just like honey.

(01:17:43):

"But you never can tell," said Pooh. I remember my uncle saying once that he had seen cheese, just this color. So he put his tongue in and took a large lick. "Yes," he said, "It is. No doubt about that. And honey, I should say right down to the bottom of the jar."

(01:18:01):

"Unless, unless of course," he said, "Someone put cheese in the bottom for a joke. Perhaps I had better go a little further just in case, in case Heffalumps do not like cheese. Same as me."

(01:18:14):

"Aah," and he gave a deep sigh. "I was right. It is honey, right 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?"

(01:18:30):

And Pooh said, "Yes, but it is not quite a full jar." And he threw it down to Piglet. Piglet said, "No it is not. Is that all you have 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.

(01:18:49):

"Well, goodnight Pooh," said Piglet, when they got to Pooh's house. "And we meet at six o'clock tomorrow morning by the pine trees, and see how many Heffalumps we have got in our traps."

(01:18:59):

"Six o'clock, Piglet. And have you got any string?"

(01:19:02):

"No. Why do you want string?"

(01:19:05):

"To lead them home with."

(01:19:07):

"Oh, I think Heffalumps come if you whistle."

(01:19:11):

"Some do and some do not. You can never tell with Heffalumps. Well, good night."

(01:19:17):

"Good night!" and Piglet trotted to his house, "Trespassers W", while Pooh made his preparations for bed.'