493: Put the Peeps in the Chili Pot

Transcript from 493: Put the Peeps in the Chili Pot with Christopher White and Elecia White.

EW (00:00:06):

Hello and welcome to Embedded. I am Elecia, here with Christopher. It is just us today, so we are going to talk amongst ourselves about, I do not know, new podcast ideas, data loggers, telescopes, questions from listeners, all kinds of things.

CW (00:00:26):

Why we have been gone for three weeks? Two weeks? Some weeks.

EW (00:00:31):

We just missed one show.

CW (00:00:33):

Okay. We have been gone for two weeks.

EW (00:00:37):

Why have we been gone for two weeks?

CW (00:00:38):

Just too much. Just too much. Everything is too much. There is just too much of everything.

EW (00:00:42):

It is fine. It was weird that we did okay through the holidays, but then as soon as work started up, it was like, "Uhhh." Anyway, we are happy to be back, and I am madly scheduling through the next six months.

CW (00:00:58):

Excellent! Who are we talking to in six months?

EW (00:01:03):

Well, I have been promising Shimon, the "Nand to Tetris" guy forever. We are going to talk to Kwabena from OpenMV. They have something new coming out. There are rumors that one of the Saleae guys will come by, chat with us.

(00:01:23):

I have an idea about some sensors. I actually just signed up for LinkedIn Premium, so I could spam a bunch of MEMS sensor developers, so that I could ask questions. That is what the show is about really. It is not about the listeners. It is just about me being able to ask the questions I have in my head, to people who believe they are coming on a show for an entirely different purpose.

CW (00:01:50):

Right. It is a trap.

EW (00:01:52):

How are you?

CW (00:01:52):

It is all a trap.

EW (00:01:52):

It is all a trap. Yeah, it has always been a trap.

CW (00:01:55):

I am okay. Yeah. I am okay. Yeah. Holidays were time of relaxation. But you always superimpose on top of a time of relaxation all the projects that you want to do. And so I did not get a lot of them done, or even start them, or even look at them.

EW (00:02:14):

When your project list is 200 lines long, the first project should be prioritize the top three, and do not worry about the rest.

CW (00:02:24):

I know. Yeah, yeah, yeah. So there was that. And then getting back to work has been fine, mostly. I am down to one client now, which means I can focus-

EW (00:02:31):

Which means fine, until they got a great idea to try a different project entirely.

CW (00:02:35):

Yeah. So we are preparing for maybe a different project, which has been a bit of a scramble.

EW (00:02:40):

From the outside, it has been great. Lots of interesting new science! Cool stuff!

CW (00:02:45):

Well, you can do it.

EW (00:02:47):

Yeah. I do not have any time. <laugh>

CW (00:02:52):

I do not think I have recovered from the burnout, that I thought I should have recovered from a year and a half, two years ago. I think I am just stuck now the way I am. And so this will be just a slow glide slope to...

EW (00:03:08):

Retirement?

CW (00:03:08):

Yeah, that is the thing.

EW (00:03:10):

What are you doing to get over burnout these days?

CW (00:03:14):

What am I doing to get over burnout? Well, I tried to reduce my workload, which failed because the <laugh> workload increased at my existing client. Just recently, I have been disconnecting from, not the internet exactly, but a lot of things on the internet <laugh>.

(00:03:39):

I have pared back my social media usage. Well, not just social media usage. But I have pared back my social media usage just to Mastodon, where I have a curated list of people, who generally talk about random things and not about outrages and events in the world.

EW (00:03:58):

Horrifying, terrifying and enraging sort of things?

CW (00:04:01):

Yeah. Mm-hmm. I have disconnected from the news. I have not read any news intentionally since Wednesday of last week, which is my longest run. I have seen some unintentional news, but only a couple of little things. Turns out-

EW (00:04:15):

Some of that was from me. I am sorry.

CW (00:04:17):

Yeah. Uh-huh. So that has been okay. That has helped to keep my anger level down, which is what I was getting in trouble with. Which is not really burnout, but it is not helping with the burnout.

(00:04:27):

I have been reading more. I have gone back to- I decided there is a little bit of activation energy problem sometimes with reading. Like, "Oh, I do not have a really good book I am reading right now." Or, "The book I am reading is okay. I read 20 pages of it a day and it is fine. I am enjoying it." Or, "If I want to find a new book, do I really want to expend the hundred pages of energy it takes sometimes, for me to get into a book and really get addicted to it?"

(00:04:53):

So I have just been rereading some old books, that I knew were good and that I knew that I liked. Sometimes I feel like my eyes just need to read something, and so they used to gravitate- They often gravitated to reading crap on the internet or in social media. Reading stuff. Putting a book in front of my face does the same thing, as long as I can stay into it.

EW (00:05:19):

Hmm! You read "The Lord of the Rings" and some of the bonus material.

CW (00:05:22):

That I did over the holidays. That took me a while. But, yeah.

EW (00:05:24):

And then you started Bujold's Vorkosigan series.

CW (00:05:28):

Restarted, for maybe the third or fourth time.

EW (00:05:30):

Yes. You have read it before.

CW (00:05:31):

It has been a long time. Maybe ten years? Maybe longer, since I read it.

EW (00:05:35):

Do not think I have ever gone that long between rereads on that one. But I do not reread the whole series, usually.

CW (00:05:39):

It is a good series. It was written starting in the eighties. It is classic sci-fi space opera stuff. She is a very good writer, with some strange ideas and a expansive vocabulary. So she is fun to read.

(00:05:56):

Yeah, I have been trying to keep my head down a little bit. But I do not know that I am doing anything else that is particularly burnout reducing. I have not been convinced that anything really works. <laugh>

EW (00:06:14):

You have been learning things. You have been taking an extensive drum course.

CW (00:06:18):

Yes.

EW (00:06:20):

And you have been exercising.

CW (00:06:22):

Less than usual, but yes.

EW (00:06:25):

But some of that is because you have been drumming for an hour and a half a day, or some incredible nonsense.

CW (00:06:30):

Yeah. A little bit. A little bit.

EW (00:06:32):

And we do have the little dog, so we do take walks.

CW (00:06:35):

We have been walking a little more.

EW (00:06:36):

Yeah. What about mental shifts? We talked a little bit about growth mindset versus fixed mindset.

CW (00:06:44):

I talked about that two days ago. I have not had a mental shift since two days ago. No. <laugh>

EW (00:06:53):

Do you think that helps?

CW (00:06:55):

No! No, it does not help me. Mental shifts are not- <sigh> They are fine to talk about. They are very hard to implement. Then the mental shifts I have been trying to implement, have more to do with anxiety related things, than burnout or goal related things. Those are hard enough to deal with. So adding another mental shift is...

EW (00:07:19):

You built a little car. A puzzle. Wood.

CW (00:07:21):

Yeah.

EW (00:07:21):

Does that sort of activity, where you are building something, help the part of your brain, or is it just activation energy?

CW (00:07:32):

I do not know.

EW (00:07:33):

Okay. I do not know if getting things done helps.

CW (00:07:36):

Getting things done does help. Getting things so I do not have to worry about them helps. Unfortunately, there is-

EW (00:07:45):

Always more to worry about?

CW (00:07:46):

Well, I think- I think it is Merlin Mann who has this analogy. It is like a Kleenex box. A lot of people with anxiety just think, "If I can get past this thing that is making me anxious, then I will be able to relax." But there is always another Kleenex in the box.

EW (00:08:01):

Oh! Yeah.

CW (00:08:02):

There is some of that. I do relax after some anxious thing gets cleared, but it is not for a super long time. But things like little projects and things, those are not anxiety provoking to me. The goal of those is, "I need to focus on something, that is completely disconnected from anything that I am worried about, or working on, that has no stakes."

(00:08:23):

Even then, I got a little mad at it yesterday, because I broke some of the pieces. You heard me.

EW (00:08:29):

Mm-hmm. Mm-hmm.

CW (00:08:29):

So I cannot even <laugh> fully relax doing that. I think I watched a movie while I was doing it, so I was not completely focused on that. Yeah, it is a challenge. One of the challenges, at the risk of discussing current events or current anything, is my distaste for the tech industry has not improved, and the tech industry has not worked to improve that. <laugh>

EW (00:09:01):

Did you notify them?

CW (00:09:02):

I did notify them.

EW (00:09:03):

<laugh>

CW (00:09:03):

And they did not listen. Yes. My deletion of accounts had no effect on them.

EW (00:09:07):

<laugh>

CW (00:09:07):

My complaining about them on this podcast, or in other media, or shouting at them loudly from the inside of my head, had no actual consequence. So that, plus thinking about the kinds of things I want to work on and for whom I want to work, is causing me some consternation.

(00:09:29):

The kinds of things I want to work on, and the people involved in them, continue to shrink. Let us put it that way. Not only is tech- Even if something is disconnected from all the bad stuff in tech, I feel like somebody has thrown paint over all of it. Even when I am doing something just normally with a computer, there is always that little thing in the back of my head.

(00:09:58):

It is like, "Well, you know what this company did today?" Or, "You know what these people are doing?" Or, "You know what this person said?" Or, "You know who is in charge of this, or who is funding it?" It is getting harder for me to quiet that little voice. There is a little bit of enjoyment about using technology of any kind, that has been sapped.

(00:10:14):

And then when you put work on top of that, it is like, "Well, I am putting myself into this. I am kind of endorsing this, by working on it or for it. What does that say about me?" And if I do not fully feel on board with this, then it makes it much harder to actually do the work.

(00:10:33):

I think that is what has replaced the burnout for me. I am not as tired as I was about working on stuff. But instead of it being a me problem, it is a me problem plus a <laugh> them problem.

(00:10:50):

I have improved that. I did make some changes in my work, so I was not doing some of those things. But it is still hard, because there is always that- I feel like things have changed. Maybe they have not changed. Maybe it has always been this way and now we just know it, but that does not make it better.

EW (00:11:13):

The global bumblebee population increased 47% in 2024.

CW (00:11:17):

So how can we train the bumblebees to be our bee army?

EW (00:11:26):

The fifth person has been fully cured of HIV.

CW (00:11:30):

Yeah, I saw that.

EW (00:11:32):

Europe could power the entire world with wind power.

CW (00:11:35):

Why do they not?

EW (00:11:37):

It is not distributed yet. Amazon deforestation is at an all time nine year low?

CW (00:11:45):

Yeah. That one I would want to look at the graph though, because <laugh> at a certain point you just cannot go any further. Right? That is a stat that could be- Yeah. Yes. I understand you are trying to give me positive things, but that does not...

EW (00:12:00):

I know. I understand being down on the tech industry, and especially some of the tech industry leaders. I want them to be rational, logical, moral, humane human beings. That is a lot to expect, I know.

CW (00:12:23):

You can be completely rational and logical, and inhumane.

EW (00:12:27):

That is why I needed all of the adjectives.

CW (00:12:31):

<laugh> I think that is where most of them are sitting right now.

EW (00:12:35):

But I have to feel like I have done good in this world, and I have to feel like I still can.

CW (00:12:42):

Mm-hmm.

EW (00:12:42):

Some of that is project choice. If I could work on anything, it probably would be educational toys again. Not only was that fun for me, I could see kids learn to read, and that was just everything I wanted.

CW (00:13:01):

Yeah.

EW (00:13:03):

Medical devices we have worked on, have had an impact.

CW (00:13:09):

Sometimes.

EW (00:13:10):

Not all of them. Not every time. But...

CW (00:13:15):

There were things about at least one of the medical companies- Both of them. Both of them that were, in retrospect, very similar issues to everything else. The product was great. Maybe. Or helpful. But there were a lot of other problems with the people.

EW (00:13:30):

You have worked on more than two, so this is confusing. But that is okay.

CW (00:13:33):

I said, "Two of them."

EW (00:13:34):

Oh, okay.

CW (00:13:37):

Yeah. One of them was fine.

EW (00:13:38):

I see your point.

CW (00:13:41):

I am not trying to convince you of anything. I do not wish this mental state on anyone <laugh>. You are in a better place, I think, because you have not had a string of things that have been challenging that way. You got off one of them way early.

EW (00:14:08):

I go back and forth with ShotSpotter. It did help people.

CW (00:14:11):

You do not work for ShotSpotter.

EW (00:14:13):

Oh, you worry about your current clients?

CW (00:14:15):

No. I mean, there is nothing I can do about my past clients.

EW (00:14:17):

Right.

CW (00:14:17):

I am not sitting here stewing about past clients. I am worrying about future clients.

EW (00:14:22):

And you do not think that you can work on useful, interesting technology?

CW (00:14:29):

I think it is difficult to find, A. And it is difficult to find useful, interesting technology, that is not funded by people I find reprehensible. Nothing you have worked on fits that. You have done very well. I have not. There are a few things I have done that are fine. But I have been closer to the VC realm, than you ever have, in recent years.

EW (00:14:55):

In recent years.

CW (00:14:56):

You have been mostly on research stuff and small little startups and science things. And I have not.

EW (00:15:09):

No matter what you have, you can find a way to make it bad. Like, if I think about-

CW (00:15:15):

That is not what I am saying.

EW (00:15:16):

LeapFrog toys. It is like, all the plastic in the environment.

CW (00:15:19):

So I am trying to be very careful here and not saying anything specific, which is making it very difficult to have this conversation. You have worked on toys, you have worked on many medical products, you have worked on undersea research.

(00:15:31):

I have mostly worked on consumer products, or a couple of medical- Three medical devices? Yeah. Three medical devices, one of which was fine, one of which was insane, and one of which was maybe fine, but the company was run by insane people.

EW (00:15:51):

I have worked on DARPA things.

CW (00:15:52):

Mm-hmm.

EW (00:15:55):

I have worked on- Anyway. Yes.

CW (00:15:58):

You are not going to fix me <laugh> on this kind of stuff.

EW (00:16:01):

I did not need to fix you. I just- This goes back to the mindset, and I do not know that it is fixable that way. You are right. I do not know that helps.

CW (00:16:09):

You cannot shift me to enjoying things that I am not enjoying.

EW (00:16:14):

Oh, but it is an attention economy. If you can pay less attention to the bad parts, and more attention to the goodness, then that is...

CW (00:16:25):

I am not talking about anything, right? Yeah, what am I trying to say?

EW (00:16:31):

You are not talking about your current clients.

CW (00:16:32):

No. I am not talking about-

EW (00:16:36):

Your frustration is not with your current-

CW (00:16:39):

No. That is right.

EW (00:16:40):

It is with some future that you have not investigated?

CW (00:16:43):

No. It is with computers!

EW (00:16:45):

It is with computers as a whole. It is with technology as a whole.

CW (00:16:47):

It is with technology.

EW (00:16:47):

Oh, yes, I know. Yeah.

CW (00:16:50):

Technology right now is dominated by a small set of powerful companies, that have done something politically in the last month, that you and I find distasteful. And you cannot go forward without using those products.

EW (00:17:09):

Okay.

CW (00:17:13):

I am not saying anyone should stop doing anything. It just makes it harder for me, and less fun.

EW (00:17:17):

Yeah.

CW (00:17:17):

Right? So, yeah, it is a consumption thing more than a, "Oh, I do not like what this company is doing. I would stop using his product, but I cannot because it is computer."

EW (00:17:33):

Fair. Okay.

CW (00:17:36):

That was not very much fun. I am sorry, everyone. We will put that to the end of the show. <laugh>

EW (00:17:44):

Yeah. Okay. I do have a listener question from Rene, who is actually the person who helps us with our social media. So he is not just a listener. He is also a friend. And I guess we pay him, so that too.

(00:18:00):

But anyway, "In the recent show with Nathan Jones, there was a discussion about the fact that putting together an embedded systems seems to come down to putting together various parts."

CW (00:18:09):

Hmm.

EW (00:18:09):

Lego bricks approach.

CW (00:18:11):

Yeah. Modular.

EW (00:18:13):

And I know you have some current data logger things to talk about.

CW (00:18:16):

<laugh>

EW (00:18:16):

Rene wanted to know what can he do in the embedded space to distinguish himself from others, if we are all reading the same data sheets and using the same techniques?

CW (00:18:32):

Yeah. Do you have an answer for that?

EW (00:18:36):

Sure. Sorry, I figured you would answer it.

CW (00:18:39):

I feel like I always go for those. You should go first.

EW (00:18:44):

Systems thinking is a big part of it. Instead of- Yes, we have all these Lego blocks. But how do you put them all together? Experience with the Lego blocks is really important. So the first time you work with an IMU, you are not going to understand how it all works.

(00:19:03):

Accelerometers and gyros are like magnets. They do things you cannot see, and it is really cool. But then you start to get confused as to which is which. Until you really have them in your head, you can use them, but you are never going to be quite sure what is happening.

CW (00:19:22):

Yeah.

EW (00:19:22):

That is true of most things. You need time and usage to acclimate to what it is they are supposed to do, and their most common failure mechanisms. So just try it out.

(00:19:38):

But the systems perspective of where the data comes in, how it gets transformed, and where the data goes out. That transformation may be data storage, it may be filtering, it may be AI, it may be whatever. How it goes out could be to the cloud, to the user, to some LEDs.

(00:20:01):

So stop thinking about your system as an accelerometer and a GPS and a data logger and all these individual pieces. And start trying to architect it as a view of what you want.

(00:20:19):

So going back to the Lego idea, your goal is to become familiar with all of the possible Legos, or at least the very common ones. And then to start to understand the language of how those go together. Sure, you can make a nine by nine block out of two by two pieces. Actually, I do not even know if that is true. But out of one by one pieces, for sure. But it does not hold together very well.

CW (00:20:48):

If you hit it with a hammer <laugh>, you can do anything with any combination. Yes.

EW (00:20:53):

So if you want something to be able to hold together, you do not use one by one pieces in Legos, because those just fall apart into columns. So your systems thinking starts going into patterns of how these Legos go together. It is not just what are all of them, but the synthesis of them together.

(00:21:20):

The way to build that sort of thinking is to sometimes look at the things around you and say, "How would I block diagrams this?" I know I am really into block diagrams. But I think it helps to understand your data pathway. And how the common, vernacular? Idioms? Design patterns that we use to build the systems. That requires looking at other systems.

(00:21:53):

I think the short answer is to read. If I want to actually answer Rene's question for a change, instead of just mumbling about it, read all the books. I am not very good at it. I try to get to one technical book a quarter. I have not chosen this quarter's. I usually have a deadline of having a guest on the show, which helps a lot.

(00:22:19):

But if you can read "Code Complete," read the "Design Pattern" book, or read the Java, the "Head First Design Pattern" book, just- What those do for you is to tell you how somebody who really thought it through, wanted to design stuff.

(00:22:42):

"Beautiful Code" is another one. It is not an easy read, but this is code that somebody really thought was worth showing off, and they talk about why. Maybe that can influence you towards more of the architectural thinking, more of the systems design, and more of the, "How do I write less code, and get more functionality." Okay. That was my answer.

CW (00:23:14):

Okay. I have a couple thoughts. First of all, I think that is a good conference topic. Going from modules to, I do not know, I lost it. But <laugh> that whole thing you just did-

EW (00:23:30):

Gaining the skills from-

CW (00:23:31):

Moving from LEGO blocks to systems thinking. So think about that.

EW (00:23:38):

Christopher knows that I am trying desperately to think of a conference topic.

CW (00:23:40):

I have two thoughts on this. I have not read many of those books, so <laugh> I cannot comment on those. I do have a question about those, in a second.

(00:23:54):

A lot of stuff is modular, but the skills to put them together are still not trivial. Even with the arrival of things like Zephyr, which makes some things trivial and many other things non-trivial.

EW (00:24:07):

<laugh>

CW (00:24:09):

But just device drivers, understanding how device drivers work, understanding how data flow works in firmware. From a purely electronic point of view, okay, I do not really know how to speak to that. Yeah, plugging stuff together is no big deal, maybe.

(00:24:23):

But from a firmware standpoint and embedded software development standpoint, being really good at integrating multiple sensors and sensor systems and Lego blocks, if you want to call them that, into a coherent piece of software. That takes the data in, does not have underruns or overruns, handles errors and error conditions, is efficient and low power, all that stuff. Those are the skills.

(00:24:52):

The rest of it- I do not care what I2C device somebody hands me. I can read a data sheet and do the stuff. They are all slightly different, but they are all basically- You have seen one, you have seen them all. They are all misdocumented in different ways, and they do their stuff.

(00:25:07):

But I think that is where the real expertise resides, is in knowing how to make any system work efficiently and cleanly and reliably. That is where you can distinguish yourself.

(00:25:24):

You are right. There are tons of people out there who can grab an Arduino or whatever, and put some modules together, and have something do something.

(00:25:34):

But having it be high quality, that is where the distinction comes from. I do not know how you prove that to someone. Usually in an interview, they will ask questions that probe that, and they are looking for specific answers.

(00:25:50):

I think that is where I would put my emphasis in distinguishing yourself. Not in anything specific about getting better at data sheets or whatever. Maybe some knowledge about the choices of things, too. Because once you get enough experience with the Lego blocks, you know some of them are better than others.

EW (00:26:12):

Yeah. When you talk about data flow, do you mean things like DMA-

CW (00:26:15):

Yeah.

EW (00:26:16):

Circular buffers, ping-pong buffers, and why you would use each of those?

CW (00:26:20):

Storage latency. How to keep pipeline flowing. How to deal with multi-rate systems, where you have one thing that is operating at a kilohertz and another thing that is operating at 10Hz, but they both have to come together in some way that makes sense.

EW (00:26:38):

And those seem divisible, but never quite are.

CW (00:26:40):

Buffering, and all that stuff. That is all the hard stuff that nobody provides for you. Even a nice RTOS or a nice HAL do not really provide for you. At some point, you have the data coming in, and you need to do something with it. You need to centralize the control of all that, and the state management, and all of that.

(00:27:02):

The firmware is where- For me, for an embedded systems developer, that is where the expertise is. The rest of it I could care less about.

EW (00:27:14):

<music> I would like to thank our show sponsor this week, Nordic Semiconductor. Nordic has a vast ecosystem of development tools. It helps us reduce our development cycles, and accelerate the time to market. For example, the nRF Connect for VSCode extension provides the most advanced and user-friendly IoT embedded development experience in the industry.

(00:27:35):

Nordic's Developer Academy online learning platform equips developers with the know-how to build IoT products with the Nordic solutions. Nordic's DevZone brings together tech support and a community of customers, to provide troubleshooting and assistance on technical topics. Visit these key websites to learn more. nordicsemi.com academy.nordicsemi.com and devzone.nordicsemi.com.

(00:28:00):

And to thank you for listening, Nordic Semiconductor has a contest to give away some parts. Fill out the entrance form and you are in the running. That link is in the newsletter and in the show notes. <music>

(00:28:19):

Do you want to talk about your data logger?

CW (00:28:21):

Yeah. So, I do not know-

EW (00:28:23):

Speaking of projects that are basically just grab a handful of boards, and ship them in a box.

CW (00:28:27):

Yes. Smaller handful every day. Yeah, I have a project where I need to make basically a GPS data logger, that I need it to be fairly high accuracy in time. So beyond what just reading the NMEA messages off the UART would give me.

EW (00:28:48):

Beyond the GPS messages.

CW (00:28:49):

Yeah. Which I think a few hundred milliseconds here there probably off, based on UART timing and code and stuff. I need something that will also use the PPS signal.

EW (00:29:00):

Pulse per second?

CW (00:29:01):

Right, thank you. Which is a GPIO that comes off- GPIO that comes off GPS modules. Wow, there are a lot of GPs in there. It is a highly accurate once per second at the start of a second signal. And then software can use that to say, "Okay. This is where the time happened, and this is how many microseconds at this timestamp, and stuff."

(00:29:23):

So I want that. I want to grab that. The GPS location, timestamp it with a high precision, high accuracy timestamp, and store it on an SD card. That is all I want to do. Just put that in the CSV file, and continuously do that forever.

EW (00:29:41):

Do you have more data to put in there?

CW (00:29:42):

No. That is it.

EW (00:29:43):

So it is really just a GPS logger.

CW (00:29:46):

Mm-hmm. If there is an IMU, I might throw it in there for kicks, but I do not have any use for it.

EW (00:29:51):

Why do you not just buy a Garmin?

CW (00:29:54):

Because I have to put it in a very small radio-controlled airplane.

EW (00:29:58):

Huh. Okay.

CW (00:29:58):

And also, those do not do that.

EW (00:30:01):

You do not think this already exists?

CW (00:30:03):

I have looked.

EW (00:30:04):

Okay.

CW (00:30:06):

Yes, I can buy a Garmin or whatever, but they are too big and heavy. I need something that weighs just a few- Ideally, a hundred grams or something. Sure. If there is something out there that weighs nothing, I am happy to do it. But everything I found was big and heavy and bulky. And for tracking trucks, which do not care about weight.

(00:30:28):

Anyway, where was I?

EW (00:30:35):

Maybe throw in some IMU data. I think you are going to end up with more data in there. At least, maybe not right away, but maybe someday.

CW (00:30:40):

I do not think so, because of-

EW (00:30:42):

Oh. I am sorry. I am on a different project again. Go ahead.

CW (00:30:47):

<laugh>

EW (00:30:47):

Sorry.

CW (00:30:47):

Yeah, that project does not have this problem. That project has other problems.

EW (00:30:51):

I love that project so much.< laugh>

CW (00:30:53):

I may hand it to you. All right. So that is what I want. I have tried to piece it together. I started out with like, "Okay, STM32, and I will do this, and I will do it writing C." And then I was like, "I do not want to make this a big deal. It just needs to do this simple little thing."

EW (00:31:08):

And I was like, "MicroPython. MicroPython."

CW (00:31:10):

We talked about this on the last show, where I was talking to- Either the one with Nathan, or-

EW (00:31:14):

Nathan.

CW (00:31:16):

Yeah. Anyway, so this is a recap. So I have a pyboard that runs MicroPython. It is an STM32 based thing that runs MicroPython. It is an older board. It looked nice, because it had an SD card slot. I have a GPS that does PPS. I did some limited testing and everything worked.

(00:31:32):

But now I need to package it up, and write the actual code. I am finding that I want to have a little display on it. And now everything is a mess, because the pyboard is sort of old, and a lot of stuff is not as supported in MicroPython as it was. I am having trouble with power.

(00:31:47):

All this mundane stuff that you have to do. Like, "Yeah, it works great on my desk on a breadboard. But I would actually like to package it in a compact way. And have a battery, and make it so that somebody can charge the battery. And make it somebody in the field knows what is happening with this, and that it is working or not working, who is not me."

(00:32:04):

So I need to make it a little product. It is that where- Today I was starting to piece it together, and like, "This is- These-"

EW (00:32:15):

This is a lot of wires.

CW (00:32:15):

"These pieces are not great." So I went on SparkFun, and looked around some more. It was like, "Oh, there is more support for the GPS stuff I want to do. And the display. And the Raspberry Pi 2040 and the ESP32." I already had tried with the Raspberry Pi 2040, but that would mean more wires, because they do not have SD card. I would have to get a breakout board for that.

(00:32:35):

So I found some ESP32 boards from SparkFun that have SD card slot. They have a bunch other stuff. They have a Qwiic Connector, which I may or may not use. And it has an onboard battery charger and power subsystem. So I am eliminating a board there, I am getting better software compatibility, still using MicroPython, but I think I am moving to this ESP32 board to save me some time.

(00:32:59):

But yeah, this is definitely- This is a quick Lego project, where I do not necessarily super care about doing a great job on the software. I just need something that works, and is as minimal as possible. But also has a red light, green light that says, "Yeah, I have got GPS. I am writing stuff. Battery is good. Go fly."

EW (00:33:20):

You going to do that all with one LED?

CW (00:33:23):

No. There is a little display.

EW (00:33:24):

Oh. Oh, you said, "Display." I still translated that to an LED.

CW (00:33:29):

No, there are LEDs on the boards, and I do not know how to bring them out of a- I might have to pop those off and do something here.

EW (00:33:36):

Straws.

CW (00:33:38):

Straws?

EW (00:33:40):

I believe they are called "light pipes" by fancy folk.

CW (00:33:43):

Oh, okay.

EW (00:33:44):

But I call them "coffee stirrers."

CW (00:33:48):

Oh, the solid plastic ones?

EW (00:33:50):

Yeah.

CW (00:33:51):

Okay. Not an actual straw, because that would- With a hole in it, that would not do anything.

EW (00:33:56):

You could do that too.

CW (00:33:57):

That would not do anything.

EW (00:33:58):

All right. All right.

CW (00:34:01):

I guess you could look into it <laugh>. "Please hold the straw up to your eye, to check the battery level."

EW (00:34:09):

I think I want a podcast where people like me. Which reminds me, I was on the Changelog podcast last week, let us see, the 15th of January. They have two folks, Adam and Jerod, and they were super nice. They are software folks who were interested in asking questions about firmware, and making, and putting together boards, and professional developments and all that. It was pretty fun.

(00:34:44):

It would have been nice if I had remembered before the morning before, so I could have prepared a little bit. But suddenly on my calendar there was a "Record of the Changelog," and I was like, "What?"

CW (00:34:58):

And you had had to do it on video.

EW (00:35:00):

And at the last minute they told me, "We are doing video first." I was like, "Okay. Then do we do the talkie part?"

CW (00:35:09):

<laugh>

EW (00:35:09):

But no, they just meant that video was the most important. And I was like, "As long as you do not care that I look half asleep and drunk, we are great!"

CW (00:35:21):

<laugh> You did fine.

EW (00:35:24):

So I will put a link to that in the show notes. Let us see. How about another listener question?

CW (00:35:31):

Sure.

EW (00:35:32):

I did not really read this one ahead of time. So we are going to hope that Grant P has written this in a way that I will not stumble over too much. Grant is working with a team of embedded developers, trying to make a guide to systematic troubleshooting of returned devices. It could be hardware or software issues, on their battery powered, low power IoT device.

(00:35:57):

Do we have any recommendations for resources to help guide the mindset of troubleshooting the returned devices? Grant is leaning into this with the angle of being forensic. That is, trying to collect as much important information early on, without disturbing the crime scene, such as download internal and external flash. Huh.

CW (00:36:22):

I have very little experience with this sort of thing, except at a distance. I do think that the skillset is sometimes different than the developer skillset. Some of the better testers I have worked with were not developers. Or certainly not the people who are working on the product itself, because there is some bias there, right?

EW (00:36:46):

Right. The engineers tend to think about the good path, the intended path. Good testers and good quality control tend to think more about the, "How am I going to put things in, in semi-random way? How am I going to-"

CW (00:37:08):

"What is the worst thing I can do to this thing?"

EW (00:37:10):

Yeah.

CW (00:37:11):

Whereas like, "Oh, I do not want to break it. I made this!"

EW (00:37:16):

And the engineers tend to do the same thing each time. It is like, "I do these set of steps, because these are the set of steps that I used to develop the system." The tester is like, "Huh. Let us just take those steps and shake them up." Or even better, "Do not talk to me, and I will develop my own steps." When it breaks you will be like, "What did you do? Why did not you do it my way?" And I will be like, "No one should have to do it your way."

CW (00:37:46):

In terms of techniques and things for being forensic, gosh, I do not know.

EW (00:37:53):

It really helps if your developers are on board. Like your-

CW (00:37:58):

Providing visibility.

EW (00:37:59):

Providing the debuggability. Like, "Why did the system reboot? How many times did it reboot with this cause of watchdog? Does the system right now as it is booting, have any information in its power-on self-test?"

CW (00:38:16):

You are writing core dumps, or small core dumps, or things like that. Backtraces.

EW (00:38:23):

I think Nordic is sponsoring the show, but I should mention Memfault. Because a lot of what they do is trying to get these sorts of crash dumps out of your system, in a way that is useful. So if you can get your developers to provide crime scene tape-

CW (00:38:44):

<laugh>

EW (00:38:45):

That would be awesome.

CW (00:38:46):

It depends on the kind of device too. If there is long-term storage, that changes what you can do. If there is-

EW (00:38:54):

Yeah, it would be nice to read everything out, before you modify it. You do not want a system that you have to flash the firmware, in order to figure out what is wrong. Because the chances are you just erased what you needed.

CW (00:39:05):

Is there stuff you can do from the bootloader, that is non-destructive? But it is tricky because-

EW (00:39:11):

Or even a bed of nails, if you are willing to take it apart. But again, that can be difficult if it is only flaky when the board is together.

CW (00:39:21):

I think it is a really hard problem, because anytime you measure something, you run the risk of altering it. So yeah, getting as much information at the time of fault, and squirreling that away, is really helpful. Because trying to reconstruct what happened to something-

(00:39:46):

If it is just not working- You get it, and it is not working, and somebody says, "Blah." Sometimes it is, "Yeah, this component is dead." Or, "There is a firmware-" Well, if there is a firmware bug that is causing some strange behavior, that is the hardest to back propagate to the source, if there is not a lot of trace data.

EW (00:40:07):

Right. You kind of need the stack dump.

(00:40:10):

From an electrical perspective, you probably have a way to open your device. If the place where you open it could have some test points or pins- Not even pins. Pads, so that you can test as much as possible, with only removing a very small part of the system. Just removing a cover, in order to get to those test pins. That will help, because then you do not take apart the board.

(00:40:38):

And when you do take apart the board and you find the solder glob it is, "Oh, okay, that makes sense." But you want it to fail- I guess, okay.

(00:40:48):

So you get the board back. First step, "Does it fail for me?" That has got to be the first step.

CW (00:40:57):

I do not know! Because that could be very destructive.

EW (00:41:00):

Actually, you are right. The first step is, "Do I have any information about how it failed, before I try it again?"

CW (00:41:05):

Yeah.

EW (00:41:05):

"Can I get data from it, without running it?"

CW (00:41:12):

Yeah.

EW (00:41:12):

Which I guess means that if you have an SD card or flash, you want to be able to power the flash and read it. Which goes back to opening the device with a minimal ramification on the board.

CW (00:41:27):

Which I think goes back to, if you want to be forensic, you need to have as sophisticated fault handling and logging as you can possibly get in the firmware. Because anything else- If it is electronic, I do not know how to talk about that. Yeah, you probe it until you find <laugh> the thing that is not working, I guess.

(00:41:46):

But if it is a software fault or suspected software fault, your only choices are, "What logging happened when the fault happened?" Or, "Well, I guess we try it again, in an environment where we can observe it." Right?

EW (00:42:03):

Yeah. As you get boards back, and you start collecting them into battery failures, battery disconnect failures, battery low voltage, battery will not charge, you get all these buckets. Then you get these over here where the firmware will not update for some reason, or it will not boot.

(00:42:28):

Then you start looking at the buckets, and see which bucket has the most in it. That is where you need to spend more of your time doing the forensic information. I mean, I really think it is important to have the basic forensics of, "Why did it crash?" and, "Why did it boot?"

(00:42:43):

But do not build too much in, until you get an idea of what is likely to go wrong. Because you can make the best, absolute most rock solid subsystem, but it turns out that was never going to fail, you could have just put in something cheap. This is about optimization. You do not optimize the fast parts, you optimize the slow parts.

CW (00:43:07):

It is the airplane picture with the holes in the wings.

EW (00:43:10):

Oh, tell that story. I am not sure everybody knows that one.

CW (00:43:15):

I do not know if this is apocryphal or not. I am not sure that it is.

EW (00:43:19):

World War II?

CW (00:43:19):

World War II, yeah. I am going to butcher this story, but the picture goes around on the web. The picture is a picture of an airplane, with a bunch of red circles all over its body in various locations. The question was, "Well, we keep getting these planes back from the field from missions, and they have got damage in these areas."

(00:43:40):

The first thought from whoever apocryphally was doing this work was, "Well, we need to put more armor in those areas." And the twist in thinking is, "No, you do not. You need to put more armor in the areas where there were not hits, because those airplanes did not come back."

(00:43:59):

That is trotted out on the internet a lot of times, for incorrect thinking about fault handling and securing things. "You are putting your safety where things do not happen," which I think what you are saying is, "Do not invest a lot of time in things that are already rock solid."

EW (00:44:27):

Yeah. "Do not invest in the things that are not failing, or are failing in completely expected ways." Yes, getting bullet holes when you are being shot at. That is actually okay failure.

CW (00:44:39):

There is a lot of nuance to that, because you do not actually want bullets to go through airframes, because people are inside them usually. The airplane came back. Whether or not the airmen came back, that is a separate issue. But, yeah. Definitely do not over-engineer areas that- Try not to over-engineer areas that...

EW (00:44:58):

Do not need it?

CW (00:44:58):

Do not need it. Yeah. Like, I do not know. You have an SD card that gets used once every two months to write one thing. Well, do not put a lot of effort into wear leveling system or something, right? Or do not get a really expensive card that can handle a billion writes, because you are not doing a billion rights. Yeah, that sort of thing.

EW (00:45:26):

A related topic that came up on the Slack was, "How do you write unit tests?" I was hoping you and I could talk about it a little bit, because this actually is a harder problem than I expected.

CW (00:45:40):

A lot of people have very strong feelings about a lot of it, down to the level of methodologies. Test driven development is not unit tests per se, but it is a philosophy around testing.

EW (00:45:54):

That you write the tests first.

CW (00:45:55):

Yeah.

EW (00:45:55):

Which, I like the thought of that. I do not necessarily do it. But I do always think about what the tests are going to be, as I am writing.

CW (00:46:04):

Sure.

EW (00:46:06):

Which was a change for me, from the start of my career. To think about, "Okay, well how do I test this? And how do I write this, so it is testable?"

(00:46:18):

But no it was not- It was not even- Oh, maybe it was- That was not what the conversation was about.

CW (00:46:24):

No, it was not. I thought it was about which framework do you like?

EW (00:46:28):

No, no.

CW (00:46:28):

That was a separate one? Okay.

EW (00:46:31):

This was more, "What makes a good test?" Okay, so let us say we are writing this string copy. This is a function everybody kind of knows. You have one string in, you have a bunch of memory in.

(00:46:45):

How do you write a unit test for string copy? You put in "cat," you make sure a "cat" comes out. You realize that a lot of people forget the terminator, so you make sure that the terminator happens in the one you get out.

CW (00:47:08):

Mm-hmm. But is that testing strcpy, or is that testing the user of strcpy?

EW (00:47:13):

No, no. That was, "Did strcpy remember to copy the null?"

CW (00:47:17):

Oh, remember to copy the- Okay. Mm-hmm.

EW (00:47:20):

You test some characters that are not A through Z.

CW (00:47:25):

Sure. You pass null in. You pass null for the source. You pass null for the destination. Yeah.

EW (00:47:37):

And then do you get a Monte Carlo simulation to create a thousand different strings? And then verify they all come in and out the same?

CW (00:47:46):

I would not.

EW (00:47:47):

Exactly.

CW (00:47:48):

But this goes back to the conversation about over-engineering. I think you test- Well, yeah.

EW (00:47:56):

You test the good paths.

CW (00:47:58):

You test the good paths.

EW (00:47:59):

You test what you intended to do. As an engineer I tend to try to think, "Okay, what is the most common, or what are the two or three most common errors, that are likely?" Like failing to put on a null termination, inside string copy. Then I have to admit, I am kind of done at that point.

CW (00:48:19):

It is kind of the 80/20 thing, right? For something as simple as strcpy, how much effort do you want to put in for how much benefit? You listed some major things. Does it copy the string? That is like 95% of what it should do. Right. Does it also copy the null character? Yes. Does it test for garbage, bad input, bad pointers or whatever? Sure. Okay, good.

EW (00:48:46):

Sending null in as the source is really important.

CW (00:48:50):

Beyond those things, I think you have got your 80/20 benefit, right? You have caught most of the things. Now what the unit test is for at that point is, "Did somebody break this?"

EW (00:49:03):

Yeah.

CW (00:49:04):

In the future. Not, "Did it suddenly decide to stop working properly?" Or, "Did it suddenly decide to stop working, if I try to copy this line of Shakespeare?" What is actually likely to happen?

(00:49:15):

You are allowed to look at the code, if you are writing a unit test. You are not a black box developer. So we are looking at the code. Like your Monte Carlo thing, what is that going to catch, looking at the code? Nothing. Right?

EW (00:49:31):

Maybe you also test for a really long string.

CW (00:49:36):

But what is that testing? If you know the code, what is that testing?

EW (00:49:41):

That would test... Well, if I know the code- I am not sure.

CW (00:49:46):

Maybe the for loop was written incorrectly. Maybe it has an artificial limit somewhere.

EW (00:49:50):

Looking for an artificial limit.

CW (00:49:51):

Okay. Okay. Yeah, yeah.

EW (00:49:51):

And the idea that in the future someone might change it. The other- Yeah, see the white box testing, being able to look in the code. It is easy for me to just logic away all of the tests at that point. Which is not good.

CW (00:50:10):

But that is not necessarily bad, because the point of the unit- My feeling about unit tests, is you are trying to establish a base level of functionality, and check that that does not regress. And you are trying to do it- My philosophy has always been, do it around the core stuff. Again, finding the things that are likely to break.

EW (00:50:30):

Make sure it works, and then checks it most likely to break things.

CW (00:50:35):

Most likely to break things with the most critical things if they were to break, which is slightly different.

EW (00:50:40):

Yes.

CW (00:50:41):

So if you have got something that is your device, right? And it is doing some signal processing, and there is a filter, and the filter is the device. Like, that is the most important part of the signal processing chain. If that does not work, then your outputs are all wrong, and the thing does not work right. A Kalman filter, or something like that.

(00:51:00):

I do not know how you would unit test a Kalman filter. Just go with me here. Something like that. This core little building block, that is maybe one function, that does a bunch of processing. That is the thing I would spend all my effort doing. And maybe do what you are suggesting about, have a wide range of inputs and outputs to check from.

(00:51:18):

Not as a exhaustive test like, "Okay, we have to put all the real numbers in, and check that all real numbers are processed correctly coming out. Then after the heat death of the universe, we can say that we can ship it." But a broad range of things, kinds of inputs, and just check those against the expected values.

(00:51:39):

That is, again, just to catch, "Did somebody come in here and tweak something unexpectedly, and now it is not doing what we-" Maybe it is not doing anything wrong. Maybe it is filtering differently, and it is just shifted a little bit, and maybe that is not a problem. Maybe it is still within normal limits, but you still want to catch that and say, "Oh, this changed."

(00:51:57):

So that is my philosophy toward it. Less about test every function in your thing, and have a unit test for it. Because a lot of those functions never change. You write them once, you write a unit test, and then nobody ever goes back and looks at either one again.

EW (00:52:14):

One of the things with unit tests that I have found that I have a strong opinion about, is that they are one of the sources of documentation for the code.

CW (00:52:24):

That is fair.

EW (00:52:26):

I have a strong opinion about that, because I learned about CFFI, which is a Python C runner. You put in some C code, and then Python runs your test. But the C code is in Python, and the headers was actually text in Python, and it was shocking!

CW (00:52:53):

I have no idea what you are talking about. I think I am having an episode.

EW (00:52:57):

I think I did. I mean it totally defeated the purpose-

CW (00:53:02):

It is in Python, but I write C code, which is-

EW (00:53:07):

In quotes.

CW (00:53:08):

In quotes, which is interpreted in Python, or does it go and compile it and then execute it?

EW (00:53:14):

It must compile and execute it. Must it not?

CW (00:53:16):

Is this like putting an assembly block in C?

EW (00:53:19):

Yes!

CW (00:53:19):

Except putting C in Python.

EW (00:53:20):

Yes!

CW (00:53:22):

All right.

EW (00:53:24):

And as far as being able to use it as a documentation method, I ran screaming.

CW (00:53:31):

It was used as a documentation-

EW (00:53:32):

No, no, no. When I write unit tests, part of what I am doing is-

CW (00:53:36):

Got it.

EW (00:53:36):

Is making- Like, the first thing that I do with string copy, is try to copy "cat." Then if somebody comes and looks at the "cat", they are like, "Oh, this is how I use that function."

CW (00:53:45):

What is the ostensible purpose of this?

EW (00:53:48):

Large automated unit tests.

CW (00:53:50):

Oh, so it is a unit test thing, but you put the C in the Python?

EW (00:53:54):

Python. And you drink a Bolt Up, and you call the doctor in the morning. Yeah.

CW (00:54:01):

But, so- The code- <laugh> Just place-

EW (00:54:03):

<laugh> He just like answers the question.

CW (00:54:05):

Bear with me here.

EW (00:54:05):

<laugh>

CW (00:54:05):

The C code that you are putting in the Python, is the test? Or the code under test?

EW (00:54:15):

The test. And the header.

CW (00:54:20):

Why? So the question I have-

EW (00:54:23):

So many questions.

CW (00:54:23):

"You put the peeps in the chili pot, and it tastes bad!"

EW (00:54:29):

<laugh> Yes.

CW (00:54:34):

The question I have-

EW (00:54:35):

Just the one.

CW (00:54:36):

Is once you have the unit test in C, why are you in Python?

EW (00:54:41):

So that Python can run all of the tests, and tell you what went wrong. So you can do like Monte Carlo things.

CW (00:54:48):

"Do you understand?" The person- I am not talking to you, I am talking to whoever made this.

EW (00:54:53):

Unfortunately the person we are talking to is probably listening, so I am going to be in so much trouble. But go ahead.

CW (00:54:58):

I just can think of eight different ways of doing that, that do not involve embedding C code in Python. That is all. I mean you could script- Have Python run the unit tests and check for the output. I mean Python can execute things and check its output.

EW (00:55:11):

But the goal was to be able to have a whole bunch of different inputs to the function. Like we were saying with the Monte Carlo simulation of inputs.

CW (00:55:20):

But isn't the C code doing that? Python is driving the inputs to the unit test?

EW (00:55:28):

Python- So you put the C code in- The unit test C code.

CW (00:55:32):

Yeah.

EW (00:55:32):

As opposed to the code undertake test.

CW (00:55:34):

Yeah, yeah, yeah.

EW (00:55:34):

Unit test C code.

CW (00:55:35):

Yeah.

EW (00:55:35):

Python can update that to have different tweaks.

CW (00:55:42):

Oh, so it is doing code generation?

EW (00:55:43):

I think so.

CW (00:55:45):

It is able to modify the C code?

EW (00:55:48):

Yeah. CFFI. C F F I. It is-

CW (00:55:52):

No.

EW (00:55:54):

It is something, really something.

CW (00:55:56):

No. No.

EW (00:55:56):

It is like when my neighbor told me that my octopus art in the library looks like it was really a lot of work. And I was like, "All right, I can hear that that is not a compliment. And that is okay. You do not have to love everything I do."

CW (00:56:12):

No, no. I am too old for this.

EW (00:56:14):

I am sorry. Christopher has retired.

CW (00:56:17):

No! Wait! Can you put an assembly block inside the C block, inside the Python block?

EW (00:56:23):

No reason I cannot. Why do I not just go ahead and do that right now? Let me go type type type that in.

CW (00:56:28):

I am trying to figure out another level, that we could wrap it in somehow. Can we put Python inside something else?

EW (00:56:36):

There is no reason why Python should not run from a shell script.

CW (00:56:40):

No, but you cannot embed it like that, I think.

EW (00:56:44):

I do not think embedding it is a good idea.

CW (00:56:48):

Can we put the C code inside MicroPython?

EW (00:56:51):

Also, weirdly, as I was doing this, I realized that I am totally dependent on color coding now.

CW (00:57:00):

Oh, in editors?

EW (00:57:00):

In editors.

CW (00:57:01):

Yeah.

EW (00:57:01):

I did not realize how- Because I can type things into Slack or message boards and stuff, and it does not really bug me. But-

CW (00:57:10):

Black and white photography, to color. Yeah.

EW (00:57:12):

Yeah. Yeah. Wow. What do you mean you did not change that to be a variable color, versus a keyword color?

CW (00:57:21):

So you take the C code-

EW (00:57:21):

<laugh>

CW (00:57:23):

And you put it in the Python-

EW (00:57:26):

<laugh> You stir them both up.

CW (00:57:30):

That might make sense, if I think about it and see how it is used more. But my first impression is, "What?"

EW (00:57:34):

No, I put it in Complainatorium and somebody immediately said, "Yes. Yes. So much yes." Or enthusiastically agreed that this was wrong.

CW (00:57:44):

I just think that not every idea is a good idea.

EW (00:57:46):

<laugh>

CW (00:57:46):

There are a lot of ideas out there.

EW (00:57:50):

If you wanted to do mass testing, on the order of trying all the inputs-

CW (00:57:57):

Yeah, but I thought there were other frameworks that did all that.

EW (00:58:00):

There are, and-

CW (00:58:01):

And are driven from Python, or whatever you want.

EW (00:58:06):

<sigh> I am leaving parts out of the story, and-

CW (00:58:08):

All right, that is fine.

EW (00:58:10):

There was a discussion of what way was better, and-

CW (00:58:15):

That is fine. I do not want to make anybody-

EW (00:58:17):

I actually agreed to this way, and I did not realize what the heck.

CW (00:58:18):

I do not want to make anybody mad, and I do not want to- Harsh.

EW (00:58:23):

Tell me about your telescope.

CW (00:58:24):

Yeah! So one of the things I have been doing, is trying to-

EW (00:58:26):

<laugh>

CW (00:58:27):

Look less at things on the earth, and more at things that are hundreds to thousands of light years away, where no one can bother me.

EW (00:58:33):

<laugh>

CW (00:58:33):

So I have been trying to get back into astronomy. It is difficult, because astronomy is expensive and it is difficult and hard, and a pain in the butt and it is cold.

EW (00:58:45):

And we do not- I mean, we have light pollution- We can see stars.

CW (00:58:49):

We have better light pollution than like 90% of people.

EW (00:58:52):

But we cannot see the galaxy, the Milky Way.

CW (00:58:56):

We can see the Milky Way on a good night, I think. We certainly can see it from-

EW (00:59:00):

I cannot.

CW (00:59:01):

We certainly can see it from the beach.

EW (00:59:02):

Yes.

CW (00:59:03):

Which is a quarter mile away. So it is not like it is the suburb that is causing light pollution to be through the sky. It is that our street has- There are houses next, and our eyes are not adjusting properly. So we are at what is called "Bortle 5."

EW (00:59:19):

Bortle 5?

CW (00:59:19):

A Bortle-

EW (00:59:19):

Bortles!

CW (00:59:19):

<laugh> This is a "Good Place" heavy episode.

(00:59:23):

It is a Bortle 5 zone, which I do not remember what that translate into a minimum magnitude. I think it is like you can see magnitude 6 stars, or something like that. But it is the limit. It goes from Bortle 1 to 8.

(00:59:37):

One is the darkest sky on the planet, and that is like you are in the Atacama Desert or something. It looks great, but you will probably be eaten in seconds, or desiccate.

EW (00:59:48):

Eaten by what? The chinchillas?

CW (00:59:50):

The pumas!

EW (00:59:54):

<laugh> We watched this great nature show, but he kept saying, "Pyoo-muh."

CW (00:59:58):

We are past an hour here, so I am just going to- You can stop listening, because nothing here is going to be serious from now on. But. Yeah. Who was it? Was it Hiddleston? Tom Hiddleston was narrating it? Or was it Bumber, Bumber Catch?

EW (01:00:15):

Benedict Cumberbatch?

CW (01:00:16):

Benadryl <laugh> Cumberbatch. One of those two guys. No, Cumberbatch was the guy who could not say "Penguin", and he said-

EW (01:00:23):

Penguins.

CW (01:00:23):

"Penguin." He says, "Peng-gwing." Hiddleston is the one who says, "Pyoo-muh."

EW (01:00:26):

<laugh>

CW (01:00:26):

Which may be a perfectly fine- Anyway.

EW (01:00:31):

That is not how we say it.

CW (01:00:33):

Bortle 1 is where the pumas is eat you.

EW (01:00:34):

Okay.

CW (01:00:36):

And then it goes down from there. Bortle 4 is like you are way out of the city, in California somewhere, you can see the Milky Way. Three and as above. That is a measure of how dark your sky is, most of the time on average. So for visual observation, that is really important, because you simply cannot see stuff if the sky glow is too bright. Your eyes do not work that well.

EW (01:01:02):

But you got a telescope.

CW (01:01:03):

Anyway.

EW (01:01:04):

To defeat all of that.

CW (01:01:06):

<laugh> I like doing astrophotography, and I was never very good at it. I have done a little bit in recent years with my regular camera, for some comets and stuff.

EW (01:01:15):

You used to have a pretty good rig.

CW (01:01:17):

I had a pretty good rig.

EW (01:01:17):

It was kind of expensive.

CW (01:01:17):

Yeah, so I had a pretty good rig, that I bought in the late nineties. It was expensive.

EW (01:01:21):

<laugh>

CW (01:01:21):

It is now very old. And I got rid of that. I got rid of it because it weighed about 75 pounds. There was just no way, at night, I was taking all that stuff out there, and setting it up, and polar aligning it, and doing all of its crap, hooking a camera to it-

EW (01:01:41):

We have a lot of trees. So polar aligning actually is quite an adventure.

CW (01:01:45):

Yeah. Anyway. It is really a pain in the butt. Takes about an hour to set up. I ruin my back doing it, and then I am cold and do not want to do anything.

(01:01:51):

In the last five years there has been some advances with telescopes, amateur telescope stuff. One of the advances has been due to something called "plate solving." Since we have-

EW (01:02:06):

Tectonic plate solving?

CW (01:02:07):

No, nobody solved that. Since we have a lot of really capable computers that do not cost anything now, like Raspberry Pi level stuff. And they can store a lot of data. What you can do for- I am all muddled, but what you can do is you can point something somewhere, and the telescope can figure out where it is pointed, just by looking.

(01:02:30):

So it says, "Oh, there are a bunch of stars. I have a vague sense of where I am pointing, based on my compass and the elevation that I am pointing. So I am looking at these stars. What stars are those?" And it can go through a database and figure that out, and suddenly know where it is looking. So that is very important.

(01:02:49):

What that has made is a lot of GoTo telescopes where you can say, "Go find me the M81 galaxy and point at it." They have always been these things, but they have required a lot of calibration to set up. You have to-

EW (01:03:01):

Polar align.

CW (01:03:02):

Point- Either polar align, or point at three- If it is not an equatorial scope, where it is rotating about the celestial pole. If it is just pointing up and left and right, "altazimuthal," it is called.

EW (01:03:16):

He is doing hand motions.

CW (01:03:17):

It is a duck. Then it has to do look at some particular stars, and you have to calibrate it, and it is kind of a pain. But now you do not have to do that anymore. You can set a telescope out, level it, and if it has a compass in it, which most of them do, you can just press a button and it figures out where it is. Or will just go wherever you tell it to and look at that object. So that has all gotten really easy.

(01:03:39):

So you can build a system with a camera, a mount and one of these little computers, that will not only point where it wants, it will run the camera too, and take the images and store them. And some of them will-

EW (01:03:56):

Stack them.

CW (01:03:57):

Stack them and do some processing. I do not know if I want to get deeply into stacking, it is complicated. Anyway, you can build a system for like that, for like 1500 bucks. It will be very capable of astrophotography and pretty easy to use. It still has a lot of wires and set up, and you have to do some Linuxy things and be an expert.

(01:04:15):

There is something called "StellarMate" that runs on Raspberry Pi. Something called "Astroberry," which sounds like a breakfast cereal.

EW (01:04:24):

"Astroberry! Start your day off right."

CW (01:04:26):

And some other stuff that run on Raspberry Pi and do all this stuff for you. You plug your camera into it, you plug your telescope into it, all telescope mounts. No, you do not plug your telescope into it, because they are just optics usually. But the telescope mount is the thing that moves around and points at stuff. That has a standard interface and has for years, for how to plug into things. So those all work. Lately-

EW (01:04:49):

Not lately. Very recently.

CW (01:04:50):

Companies in the last year or so, maybe two years? But mostly last- Yeah, I think the last year or two. Companies that make some of these parts have started integrating them into little smart telescopes.

(01:05:05):

The great thing about little smart telescopes is I do not have to spend a lot of time worrying about stuff. The little smart telescope has the telescope, it has the camera sensor, it has the mount for moving it. It has a little computer for figuring out where it is going to go, and for taking images and storing them. And-

EW (01:05:23):

It came with a tripod, but you were not into it.

CW (01:05:25):

It came with a little tripod. It is a fine tripod, but it is very short. So if you need to raise it up a little bit, it is for tabletop kind of stuff. If you are in an apartment and you have got a view of the sky, you could do that with a balcony. It talks unfortunately or fortunately to a phone, the Android or iOS.

EW (01:05:43):

Bluetooth.

CW (01:05:45):

Ah, Wi-Fi for the real data stuff.

EW (01:05:49):

But Bluetooth to say, "I want you to go check out Orion's Belt."

CW (01:05:52):

No, I think that is all Wi-Fi.

EW (01:05:53):

Oh, okay.

CW (01:05:53):

Bluetooth. It did do Bluetooth, but I thought that was just for discovery. Like, "Where is my telescope?" And it can run autonomously. So once you said, "Go image M81, and have a ball and take a bunch of shots of it for later integration," you can leave and disconnect your phone.

EW (01:06:15):

And in fact, he did. I think we watched a whole movie.

CW (01:06:17):

It just sits out there and images. Which is kind of cheating. There has been some people on the telescope forums I am on, who were like, "Well back in my day, you had to-"

EW (01:06:26):

"You had to get cold!"

CW (01:06:26):

"Go here to get a star atlas out, figure out where to point things by hand. And then you had to use film and develop-" Whatever. I do not care. I am old, and I have already done all that stuff and paid my dues. At this point, I just want to take pretty pictures.

(01:06:41):

This is getting me back into astrophotography, in a really easy way. And the great thing about it-

EW (01:06:48):

Low friction.

CW (01:06:49):

Yes, low friction. That is what I have been trying to do with my life. Is many of my hobbies I have been trying to make easier, so I can enjoy them, instead of the apparatus around them.

EW (01:07:00):

Yeah, when you are talking about building one, I am like, "Okay, I have seen you do that with before we had TiVos-like things."

CW (01:07:08):

It is not as bad as that now. For that.

EW (01:07:11):

It seems like you are partially building a pet, which is great if what you wanted to do was build something to mess with.

CW (01:07:17):

Those systems are less pets. The telescope system is less pets, because the little computer thing just does everything. But yes, that is certainly further along the pet direction than this thing, which is just put it out there, level it, and the way-

EW (01:07:31):

Maybe remember to turn on the dew meter. Dew heater.

CW (01:07:34):

Dew heater, yeah. Which it has an integrated dew heater. It has got everything! It is really cool. A dew heater keeps condensation from developing on the front lens, because it gets cold and then that will ruin all your images, so it heats it up so that does not happen.

(01:07:49):

It has a battery, so it is not plugged into anything. So it has got a big, big LiPo battery or whatever, that can run for six hours. Or you can plug an auxiliary battery into it. It has got basically no wires.

(01:07:59):

The problem with the other thing, when I was doing astrophotography before, you had to have a computer plugged into it. Because the computer had to talk to the camera. Which meant you had to be out here in the freezing cold, with basically your work setup with the laptop and wires. And the laptop had to survive-

EW (01:08:18):

And it is dark.

CW (01:08:18):

And it is dark, and it is cold. And the laptop is like, "It is 28 degrees out here. Why are we here? My screen does not work anymore."

(01:08:27):

Anyway. It is very cool. The way all this stuff overcomes light pollution, you can do- So you can get one of these smart telescopes, and I have seen fantastic images from people who live in Tokyo, which is probably the worst light pollution thing you can imagine. You probably cannot see very many stars.

(01:08:42):

But information theory being what it is, the photons from all those objects are getting through. If you take enough images over enough time, and stack them mathematically, average them, sum them, whatever- You need a lot of overhead if you are going to sum them. You have to have a big storage place. Or you average them, to divide them as to over time. But that signal will eventually overcome the noise, and the-

EW (01:09:16):

The noise of light pollution.

CW (01:09:17):

Yes, and the light pollution is noise. Whereas the stuff from the stars or nebulae or galaxies is not noise, it is signal. So you take a long enough stuff, you average them together, the noise falls, the noise floor falls, and you get your signal. I have seen spectacular images from people from Tokyo, big cities and stuff.

(01:09:38):

So you can actually do some astronomy in places where you normally would not be able to see anything, even with a big telescope. Because your eyes are not doing that integration, and getting the signal noise fixed.

(01:09:50):

I have started playing with that. It has been a lot of fun, because it is very easy. <laugh> You do get some cool images. You get some cool images quickly.

(01:10:02):

You can also use this telescope and similar ones for something called "EAA," which is electronically-assisted astronomy. Where you are not necessarily trying to take pretty pictures, you are trying to just look at an object that you normally would not be able to see easily with an eyepiece, in a matter of a minute or two.

(01:10:21):

There are definitely some nebula and galaxies, that with 30 seconds to a minute of letting this thing integrate, which you can watch it do on your iPhone or iPad or Android. As the images come in and it stacks them, it slowly gets better, so you can see it developing over time.

(01:10:36):

I showed you a couple things, where it was like the Horsehead Nebula or something. Which is something I had always wanted to look at visually, which you have to have a really dark sky for, have your eyes dark-adapted, a really big telescope to get enough light in. Then you can kind of see the shape basically.

(01:10:55):

With this, in my front yard with cars driving up, after 45 seconds to a minute, there it was. You could even see some color from it. From after an hour of integration, you can see it in full color with lots of contrast and stuff, and another nebula that is next to it, a bunch of other stuff. Anyway. I am going on about this randomly.

EW (01:11:14):

You have been excited about it.

CW (01:11:17):

Yeah. Again, I wanted to get back into it without too much trouble. <laugh> Because the trouble makes me not do it.

EW (01:11:26):

Right. Now you look at the clouds in the late afternoon and shake your fist at them.

CW (01:11:32):

Yeah. Yeah.

EW (01:11:32):

"Get off my land clouds." But yeah. And it does. It is very pretty.

CW (01:11:41):

And it is a toe-

EW (01:11:42):

I think it will help us go out and experience more.

CW (01:11:45):

And it is something so small. That is the thing. I did not mention how big it is. It weighs five pounds.

EW (01:11:49):

Yeah.

CW (01:11:50):

It weighs five pounds.

EW (01:11:50):

It is tiny.

CW (01:11:51):

It comes in a little suitcase, that is about the size of a little bigger than a lunchbox, I guess. You can fit everything in that, including the little tripod. So you could grab that, and go drive off somewhere to a darker sky pretty easily.

(01:12:05):

Because it is easy, maybe I will get back into it more. Maybe I will piece together a system with a better camera at some point, with one of these other boxes. Or maybe I will not. Or maybe I will just get-

(01:12:21):

Okay, the other thing, I am going to talk money here. It was $500, actually it was $450. $450 for anything in astronomy is absolutely insane. I have paid more for an eyepiece for a telescope. This is a complete system.

(01:12:36):

I know it is coming from China, whatever, and there is all this scale, whatever. But a lot of this stuff has gotten cheaper, and having it integrated means they can cut corners in ways that maybe building your own system would be better, but this is really an easy way to go.

EW (01:12:54):

Five pounds. You just take it out, you plunk it down.

CW (01:12:56):

They have a smaller one they just came out with, that has got a smaller telescope, so it is not as good at gathering light. But has a wider field of view, so it is better for big nebula and stuff. And that is only $340, and does all the same stuff. To get into astronomy or astrophotography, it is so, so friendly and easy to do. I am pretty happy with it.

EW (01:13:20):

Depending on where that Howes burnout discussion happens-

CW (01:13:24):

Uh-huh.

EW (01:13:25):

It has either happened before and everybody has heard it, or it is coming up and they have not.

CW (01:13:27):

I am going to leave it where it is. But, yeah.

EW (01:13:33):

This is good technology.

CW (01:13:35):

Yes. But it is made by a random company in China, that I do not know anything about.

EW (01:13:41):

Okay.

CW (01:13:44):

<laugh> Well it is not a random company in China. It is a company called "ZWO." I do not know if you pronounce that "Zoo-woh" or something. But they make a lot of astronomy stuff.

(01:13:50):

They are one of the companies that makes the little box that talks to your camera and your telescope, that you can build a system around, that people- And they make cameras. So they have been doing astronomy stuff for a while. They only make astronomy stuff, as far as I know. Maybe they make lasers for incinerating puppies. I am not sure. I have not-

EW (01:14:11):

Not everybody has to do something terrible!

CW (01:14:12):

<laugh> I know. I am saying I do not think they do.

EW (01:14:17):

Just do not know why that is where you go!

CW (01:14:19):

<laugh> I do not think they do.

EW (01:14:22):

Zed-woh if you want to come on the show and defend your telescope.

CW (01:14:25):

I did not say they did. <laugh>

EW (01:14:31):

Okay, I think that is it for the show.

CW (01:14:33):

I think you want to get rid of me, so yeah.

EW (01:14:35):

No. No. I do not want to get rid of you. But I do want to thank you for co-hosting and producing the show.

(01:14:42):

I want to thank our listeners for listening, our Patreon supporters for supporting, and Nordic for supporting the show. If you could do us a huge favor and go sign up for Nordic's giveaway, we want to see what they give away. I think it will be pretty cool. Totally worth your time.

(01:14:58):

If you want to support us and not get a giveaway, why not? Then please leave a review on- I was going to say Amazon, but that is not where this show comes from, is it? Leave a review on Apple, or wherever you get this from.

CW (01:15:14):

The only place you can review podcasts is on iTunes. No, it is not even called "iTunes" anymore. "Podcasts," whatever Apple's new app for podcasts.

EW (01:15:22):

Wherever. But, yeah, wherever.

CW (01:15:23):

But that is the only place you can review things, really.

EW (01:15:25):

Or you can review my book on Amazon.

CW (01:15:27):

Yeah.

EW (01:15:27):

But mostly sign up for Nordic's giveaway. Please.

CW (01:15:31):

Yeah.

EW (01:15:33):

Let us see. If you want to contact us, it is show@embedded.fm or hit the contact link on embedded.fm and we might answer your question next time. Although we did not get to Embedded Swift, which maybe we will do a whole show about at some point.

CW (01:15:46):

I would like to read about that some more, before I talk about it.

EW (01:15:50):

I guess now we have "Winnie-the-Pooh." Are you ready?

CW (01:15:54):

Yes.

EW (01:15:54):

[Winnie the Pooh excerpt]