469: Saving the World Is Not a Hobby
Transcript from 469: Saving the World Is Not a Hobby with Christopher White and Elecia White.
EW (00:00:06):
Welcome to Embedded. I am Elecia White, here with Christopher White. We are going to be chatting about this and that, sundry and myriad things.
CW (00:00:15):
The other thing. This, that, the other thing?
EW (00:00:19):
Well yes, of course. The other thing.
CW (00:00:21):
The computer that is now banished and on the floor closed, because we could not get the podcast going today? Because seven years is apparently ancient for a computer, and no longer can function as a computer.
EW (00:00:34):
And yet it is not that computer's fault that this show is late.
CW (00:00:37):
Oh, no, no. It is the fault that we are starting recording late, from where we intended today. But it is not the computer's fault that we are recording on Saturday, for a podcast that we intended to release on Thursday. True. The fault also lies on the floor.
EW (00:00:57):
<laugh> Dog.
CW (00:00:58):
But it is a dog.
EW (00:01:01):
She is still cute.
CW (00:01:02):
A dog that the ER vet said was charming and stable.
EW (00:01:08):
Right.
CW (00:01:09):
She was less charming and less stable, before we brought her to the vet.
EW (00:01:13):
Yes. Much less.
CW (00:01:14):
Anyway. The dog is fine.
EW (00:01:15):
We are fine.
CW (00:01:16):
And we are mostly recovered. <laugh> But this is a show about computers!
EW (00:01:21):
Yes. Do you want to do straight technical things, to get started?
CW (00:01:25):
Whatever you have on your agenda. That is fine.
EW (00:01:27):
Before we get into all of these things and the meat of the show, I do want to announce the two winners for the Nordic Power Profiler Kit II. The first is Evils. Thank you for putting that down as the name you would like to be called. I believe it is Evils Devils. And the second is Ken Chen. I did not mean for them both to rhyme.
(00:01:55):
They are winning the Power Profiler Kit II, with its wide current measurement range and its eight digital inputs, which allows it to also function as a logic analyzer. That is Ken's reason for wanting it. Evils' reason for wanting it is the PC software works on Linux, and can be used to control things like dynamic range and battery power usage measurement analysis.
(00:02:26):
Those are our two winners of the PPK2. We will be starting a new contest, with a different question. Look for that in the ad spot coming up.
(00:02:35):
Okay. So you have a motor. And you have an encoder. The encoder basically is a piece of paper with black and white strips.
CW (00:02:46):
Or something transparent that you shoot a light through, that also has black and white strips.
EW (00:02:51):
But we are talking about edges of- You are getting electrical edges of ups and downs.
CW (00:03:01):
Every number of- Some number of degrees, it switches from being occluded, to white to black, or whatever.
EW (00:03:06):
Or up to down.
CW (00:03:09):
Or it has- Never mind <laugh>. Not going to get into quadrature. Go ahead.
EW (00:03:14):
No. No, we are not doing quadrature. Okay, so how do you hook up that up and down line to your microcontroller?
CW (00:03:23):
Okay, so the up and down line has to be detected by something. So I am going to assume it is like a light sensor.
EW (00:03:29):
Oh, we are past that, and into electrical.
CW (00:03:32):
Okay, so you just got an up and down-
EW (00:03:33):
It is just an up and down line now.
CW (00:03:34):
Okay. So that line goes to another motor, that when it is up the motor goes left, and when it is down the motor goes right. That goes to a little door, and the little door opens. When it is open there is a little food pellet that a mouse can eat, and when it is closed then the mouse cannot get the food pellet. And so as the motor goes, the thing goes back there.
EW (00:03:56):
<laugh>
CW (00:03:57):
So what you do is, at the end of the day you measure how much food the mouse has eaten, and that is how many times your thing has gone around.
EW (00:04:04):
<laugh> All right.
CW (00:04:09):
I am sorry.
EW (00:04:09):
Thank you.
CW (00:04:09):
You have an input GPIO, a general purpose I/O digital logic input, that either reads high or low, or whatever. Or is bipolar, or whatever. But electrically, these are on and off kind of indication that comes into your GPIO.
(00:04:25):
You can either use an interrupt, that will signal you when the state changes, and then you count and then your higher level code looks at that count periodically or whatever. Or you can be in a tight loop, and look at the state of that variable and see it changing. Depending on how fast it is changing, one or both of those might work.
EW (00:04:51):
This question actually came from Sila, who asked about if your actuator motor is running too fast, would an encoder interrupt service routine miss it?
CW (00:05:03):
Sure.
EW (00:05:07):
With your method, there is a GPIO set to "edge detection," and when the edge detection interrupt happens, it counts and then goes away.
CW (00:05:20):
Sure. At most basic.
EW (00:05:22):
And we are only talking one direction. We are not going to worry so much about going in the negative direction. Let us just go one direction for now.
CW (00:05:27):
<laugh> Yeah.
EW (00:05:27):
But the problem is that if your interrupt speed is too high, that whole...
CW (00:05:35):
Interrupt speed is-
EW (00:05:36):
If you are-
CW (00:05:38):
If it is signaling too fast.
EW (00:05:39):
Signaling too fast, then you are stopping the processor, pushing down the stack, going to the interrupt space-
CW (00:05:47):
Meanwhile-
EW (00:05:49):
Counting.
CW (00:05:49):
The motor is still spinning.
EW (00:05:50):
Counting something, and then going back to your normal code. Should you have any areas, critical sections, where you have disabled interrupts, if your motor is moving, you just do not get those counts.
CW (00:06:01):
Right.
EW (00:06:01):
Okay.
CW (00:06:04):
On the small microcontroller, it is entirely possible that the motor- That you have got a system configuration where the motor is spinning too fast. Or you have too fine pitch resolution, you have too many edges. So there are all kinds of ways to configure that, that you cannot keep up with an interrupt-based scheme.
EW (00:06:24):
What if you wanted to know the speed of the motor?
CW (00:06:27):
If you want to know the speed of the motor, then you have to periodically look at the difference between counts at periods, at moments in time.
EW (00:06:36):
So like every millisecond you would see what the count is now, versus the count one millisecond ago?
CW (00:06:42):
Yeah.
EW (00:06:44):
And then you would do dx/dt, the distance traveled-
CW (00:06:48):
Well-
EW (00:06:48):
The number of counts over the amount of time.
CW (00:06:51):
You have to know what a "count" means, in terms of degrees. Then you can convert that to-
EW (00:06:57):
Revolutions per second.
CW (00:06:57):
Fractions of revolution. Yeah.
EW (00:07:00):
Okay. You can connect it to a timer/counter input.
CW (00:07:06):
Yes.
EW (00:07:07):
I mean-
CW (00:07:08):
That will do this work for you.
EW (00:07:09):
Counters are not just for outputs anymore.
CW (00:07:12):
<laugh> Were they ever?
EW (00:07:12):
No.
CW (00:07:14):
Okay.
EW (00:07:16):
So you connect it to a counter, and every time it sees an edge it counts. Shocker! And you can- Like, interrupts, you can do rising edge, falling edge, either. Most counters also have a mode that when it triggers, it will tell you what time it is. The timer is going all the time-
CW (00:07:44):
It timestamps the trigger.
EW (00:07:45):
It timestamps the trigger. So when I said about velocity and doing it every millisecond, what if you were not traveling that fast? So there is not only the problem with going too fast-
CW (00:07:57):
There is too slow.
EW (00:07:57):
There is the too slow problem. This triggering when you get an interrupt, doing a timestamp when you get an interrupt, allows you to do lower velocity movements, slower movements.
CW (00:08:10):
Because it is going to count up until it has got what you want it to count to, or whatever.
EW (00:08:18):
Yeah. You can set the counter to go at whatever speed you think you are going to be at, in your inputs. But that is actually the critical piece here, is you cannot set any of this up until you have an expected velocity range.
CW (00:08:32):
Right. Is not sampling theory implicated here too? You have to be able to- Right? <laugh>
EW (00:08:42):
Yes.
CW (00:08:43):
Yes, okay. <laugh> Sorry, I am very tired. So that sentence just trailed off.
EW (00:08:47):
Go ahead with the sampling theory.
CW (00:08:49):
You have to be able to sample twice as fast as the smallest feature change you want to detect in time.
EW (00:08:57):
If you were polling.
CW (00:08:59):
If you were polling, yes. With interrupts, you are guaranteed to be getting when the edges happen.
EW (00:09:05):
No, no.
CW (00:09:06):
You are guaranteed to get when the edges happen, when things are constructed correctly and you are fast enough.
EW (00:09:12):
"And you are fast enough."
CW (00:09:14):
Yeah.
EW (00:09:14):
So even this interrupt thing cannot work, if your interrupts are coming too fast.
CW (00:09:18):
But what were you saying about-
EW (00:09:18):
Or even the counter thing cannot work, if the counts are coming too fast, because there are limits on your processor. When you think about setting up a timer counter system to toggle an output, you know that there is a maximum speed that that output can toggle. If you have a 2MHz processor-
CW (00:09:38):
What? You cannot output a terahertz from your GPIOs?
EW (00:09:41):
Not if I have a 2MHz processor.
CW (00:09:44):
How are you making a radar system with your 8051?
EW (00:09:48):
Exactly.
CW (00:09:48):
Yeah.
EW (00:09:48):
So when you look at the outputs for the timers, those are usually the same as the inputs for the timers. So, just to- Yes, you absolutely can get yourself in a world of hurt, if your counter velocity measurement system is either too fast or too slow for your motor speeds.
(00:10:10):
We have finished a cohort at Classpert and I did the critiques, which are really interesting and really hard. Students spend a lot of time making these projects, and they do a good job of writing it up. Because I stress that writing it up is a big part of it. And they try to make their code. I mean they just do a really good job.
(00:10:37):
There was one person who spent a lot of work, but he did not do the math at the beginning. It was never going to work the way he wanted it to. But if he had sat down and thought, "What are my input speeds? What are my output speeds? What does that mean in terms of resolution?" You have to sit down and do the math upfront, or you can get into this position where it is just like, "I promised this and it cannot work."
CW (00:11:04):
That is something I do on almost all systems, when somebody is asking me for something. I think the term that we used at Cisco, that the people I worked with were always talking about "speeds and feeds."
EW (00:11:15):
Yeah, that is a term you have infected me with.
CW (00:11:17):
It is like, "Okay, how fast does our processor go? And how fast is data coming in, and do we need to move data in and out? Does that whole thing compute? Does that all add up? Can we do that?"
(00:11:31):
In a lot of systems, like when you are doing camera work or signal processing, yeah, you should look at, "Okay, I have a camera. It is taking a picture every five frames per second, let us say. It has got this many pixels, and I have got to push it over this kind of interface. That has got to go to the CPU, which has to do this processing on it. And then ship it out, say another interface."
(00:11:54):
It is really important that those things add up, because <laugh> it is really easy to buy the wrong part. Or use the wrong interface. Or have the wrong clocks configured. And so you cannot make it work, because there are just too many bytes and too little time, to go through what the system you have designed. These are not hard computations. Usually it is just arithmetic.
EW (00:12:18):
But it is sometimes hard to identify where the bottlenecks are. At the beginning of a project, I often feel that I do not know all the numbers.
CW (00:12:32):
Right. It is a situation I am in right now, with something I am working on for a client. It is, "We would like to use this interface, for this data." And I am like, "Well, it is a standard interface. It is USB. Standard interface. You read USB-" I always get high speed and full speed confused, because USB is stupid.
EW (00:12:50):
<laugh>
CW (00:12:51):
But the 480Mbps speed, that is what the wire rate is of what we are using. But you do not know how fast the microcontroller can keep that full. And you do not know how the driver layer and the RTOS- There are a whole bunch of things.
(00:13:06):
So yes, like you said, until you test it, you may not know how fast something that on paper is "a gigabit." That is just how fast it can wiggle the wire. It does not mean the computer behind it can actually put <laugh> wiggles on that fast.
EW (00:13:23):
But as you start to design a system, you start with, "Okay, I want 2GBps to go from here to there." And then you realize the wire in between is 480Mbps. And then you are in these bits and bytes and you are like, "Oh no." And it just-
CW (00:13:42):
Aha. Yeah. Oops, I have to multiply by eight. Or divide by eight.
EW (00:13:45):
Yeah, you do have to sit down and do the math. So anybody who is out there thinking, "I just do not know how all these things are going to go together." Let me recommend that you just sit down and think about how those things are going to go together, instead of doing the driver that you know how to do.
CW (00:14:01):
The thing I found out yesterday was that the USB, we could push about 68Mbps, which is fine for our application, I think. <laugh>
EW (00:14:12):
For now. For testing.
CW (00:14:13):
But it is not 480. Or 480 minus overhead, which-
EW (00:14:17):
But that could be in your computer, in your stack, in your microcontroller, in your DMA processing.
CW (00:14:23):
Right.
EW (00:14:23):
In your DMA buffer size.
CW (00:14:23):
I tried different computers, and they differed a little bit. Yeah, I changed the DMA buffer size to every variation I could think of, and it did not change.
EW (00:14:31):
Oh, sorry. I was hoping that would be useful.
CW (00:14:33):
<laugh>
EW (00:14:34):
But there is a whole pipeline there, and you do not know where the bottleneck is. But at least now you have a number to start with. You cannot really improve upon it until you have a number to start with.
CW (00:14:44):
Yeah, exactly. It is useful to have those numbers, because if you test again and they have gone down, because you have made some change-
EW (00:14:53):
Yes, the make-it-slower bit.
CW (00:14:55):
Then you know, "Oh, this is not broken. I have made a change that has created a new bottleneck. Or there is some tuning that has to happen." But getting computers to perform at peak, to actually fill- To get them to operate at a hundred percent or as close to a hundred percent.
(00:15:10):
When you have some application where you have data coming in and out, and you want to optimize things. Such that you are paying the least amount possible, but getting the system to work. So you are filling up the part that you have bought, its CPU capability and its bandwidth capability, so it is running with just a little bit of overhead.
(00:15:30):
That is really hard to do. It is really hard to get things past a certain point and get them tuned.
EW (00:15:40):
It is funny, we had a question recently on a show, about why do people pay for processors that are too big? That was the 6502 show. I was like, "Oh, oh, I know this one. I know this one. It is because we are too lazy to optimize. Optimization is hard. It is a skill."
CW (00:15:59):
I do not say "Too lazy." It is a trade-off. I mean it is like cost benefit, right? If you want to spend- I was listening to a podcast yesterday. I guess there is a person. I do not have a link for it. I can go find it.
(00:16:13):
They have been going back to the original Nintendo 64, and optimizing Super Mario 64 more. So that they have the original Super Mario 64, which had all kinds of compromises, because it was running on the Nintendo 64. Which while cool for 1996, was possibly less powerful than your thermostat is now.
EW (00:16:30):
<laugh>
CW (00:16:30):
But they have been going in, rewriting the code of Super Mario 64, to get rid of fog and draw distance and fix texture mapping. So it is better, and finding ways to make it go faster. So Super Mario 64 runs at a higher frame rate, and looks cooler on the original hardware.
(00:16:45):
I forgot where I was going with that. Optimizing. <laugh>
EW (00:16:53):
Optimizing can be fun. Yes.
CW (00:16:55):
Oh, and the 6502. Yeah, you can do that. Or you could just get the next thing, and not worry about it.
EW (00:17:06):
I have been having trouble with my hobbies lately. At their pointlessness.
CW (00:17:11):
Oh, are we going back to the optimizing guy? <laugh>
EW (00:17:14):
No, no. I mean- That came out really wrong, did it not? Ouch. Sorry. Ow.
CW (00:17:19):
That is all right.
EW (00:17:19):
That was not what I- If your hobbies are pointless, that is great. Nope, that still did not work. Let me see.
CW (00:17:27):
<laugh> Just talk about yourself. That is fine.
EW (00:17:28):
Pointlessness is fundamental to the human cond-. Nope, nope. Where am I going with this?
CW (00:17:34):
<laugh> I am still stuck on where I was going with the Super Mario 64 thing in optimization.
EW (00:17:38):
Do some people like to optimize? I thought-
CW (00:17:40):
I think the point was Nintendo had to release it.
EW (00:17:43):
Yeah.
CW (00:17:43):
Oh, yeah. Nintendo had to release it. Sure. 30 years later, people have been spending 30 years optimizing this game or whatever, right? But Nintendo did not have 30 years. So the trade-off between buying a slightly bigger part and spending less time optimizing, could be quite important.
(00:18:02):
Yes, I could get Doom running on a completely underpowered system, if I spent years finding mathematical tricks and things.
EW (00:18:12):
And that is probably worthwhile-
CW (00:18:13):
Nobody is going to-
EW (00:18:13):
And interesting in compiling-
CW (00:18:16):
As a problem to solve, it is fine.
EW (00:18:17):
As a problem to solve.
CW (00:18:19):
But as...
EW (00:18:20):
As a business to run?
CW (00:18:21):
As a business, it is a bad idea. Yeah. Okay. You think your hobbies are pointless?
EW (00:18:27):
Yeah.
CW (00:18:28):
Let me tell you about hobbies. They are supposed to be pointless.
EW (00:18:31):
I know, but should I not be doing something pointful? Pointy?
CW (00:18:36):
What does "pointful" mean to you?
EW (00:18:38):
Saving the world, saving the environment, making other people happy.
CW (00:18:41):
Saving the world is not a hobby.
EW (00:18:43):
<laugh>
CW (00:18:43):
I hate to break this to- Except to maybe Superman, who is overpowered in every sense and pretty bored probably most of the time. Yeah, I do not think saving the world qualifies as a hobby. Saving the whales? Less. No. No, not a hobby. I think saving anything, except baseball cards and coins, I do not think is a hobby.
(00:19:07):
Do you feel like your work is not impactful? Is that the problem? Do you feel like you need to be doing something important? Do you have a sense of missing glorious purpose, like Loki or something?
EW (00:19:25):
I do. I do.
CW (00:19:28):
Millions of people prior to us, and our ancestors and generations before us, worked very hard to make it so life would be easier for the next generations. So that not everyone would have to always be thinking about dire consequences all the time.
(00:19:47):
I think you have done a lot of good things. That is the thing, you do not give yourself credit for things you have already done. A podcast is good. People like the podcast. I believe that once every ten or 12 episodes, we say something that helps one person.
EW (00:20:02):
That is exactly- <laugh>
CW (00:20:02):
So that is pretty good. That is a good track record. <laugh> I do not know where that was all going. We started with motors. We ended with saving the world. So I think we have done a pretty good job today.
EW (00:20:15):
Thank you for listening. I guess it is weird, because I have this "my hobbies are pointless," and I also have this New Year's resolution of doing more silly things.
CW (00:20:26):
Aha. So you want to save the world, in an exceptionally ridiculous manner.
EW (00:20:29):
That has always been my goal. I just have not figured out the details yet.
CW (00:20:35):
Details are where the devil lives. I do not think that is the phrase, but I am going to <laugh> go with that. I am very punchy. What is next on the agenda? <laugh>
EW (00:20:46):
What is next on the agenda? We are not making it to the Evil Mad Scientist Laboratory garage sale. Much to my sadness.
CW (00:20:55):
Which is happening right now.
EW (00:20:56):
Which is happening today. They are having a garage sale, selling kits and parts and tools and-
CW (00:21:04):
Odds and ends, and bits and bobs.
EW (00:21:05):
Raw materials. It sounds glorious as a party, let alone actually buying cool stuff. But they are moving from their very nifty Sunnyvale warehouse, to New York.
CW (00:21:27):
New York City!?
EW (00:21:29):
I do not know that it is New York City.
CW (00:21:31):
It is Poughkeepsie.
EW (00:21:32):
Poughkeepsie.
CW (00:21:32):
Poughkeepsie.
EW (00:21:32):
That is actually even funnier.
CW (00:21:33):
Poughkeepsie.
EW (00:21:33):
"Poughkeepsie" is so hilarious.
CW (00:21:35):
Poughkeepsie.
EW (00:21:35):
It has many more letters than you would expect.
CW (00:21:38):
I wonder if it is actually pronounced "Pew-kepsie," now that I think about it. Anyway, yes, very sorry to see them move to the other side of the-
EW (00:21:46):
Continent?
CW (00:21:47):
The continent.
EW (00:21:48):
But very happy for them, that EMSL has been purchased by Bantam Tools.
CW (00:21:52):
Bantam. They are now the COO and CEO, or? No, CTO and COO respectively. Although I did not say who which, so "respectfully" applies to nothing.
EW (00:22:03):
Windell is CTO.
CW (00:22:04):
Right. Okay. Windell is CTO, and Lenore is COO.
EW (00:22:05):
And Lenore is COO.
CW (00:22:07):
Of Bantam.
EW (00:22:09):
Congratulations to them on their new adventures.
CW (00:22:12):
Look forward to new devices coming out of Bantam, with their inputs.
EW (00:22:17):
That is true. We are going to have to keep a much closer eye on Bantam, with them having the ability to have a little creative freedom. Let us see. Other things that are going on, Embedded Online is happening.
CW (00:22:32):
April?
EW (00:22:33):
I think in April. It is something I should know, since I have already started working on a talk for it. I have not only started working on a talk, I have an outline. I have practiced it.
(00:22:43):
I have decided that it does not have enough fun in it. I have gone back to the drawing boards, trying to figure out how to add in D&D characters or chaos theory or earthquakes, possibly soccer teams. I have not decided. Probably only one or two of these things. But it will be about hard faults and-
CW (00:23:05):
Putting the fun in dysfunction.
EW (00:23:07):
That is better than my title of "Causing chaos and hard faults." Putting the fun in dysfunction. Would it be 'DYS' function? Or would it be "dis" like "this" function? Or-
CW (00:23:27):
<laugh> I do not know. That is the kernel of the idea. You can have that for free, and do what you want with it.
EW (00:23:32):
For those of you who do not want to go to the Online conference, there is embedded world in April, in Germany, in Nuremberg. And in May in Montreal in Canada, there is the Open Hardware Summit. I mentioned these because they have been mentioned on Slacks and Discords I am part of. They both seem like really fun things, that I will not be going to.
CW (00:23:54):
<laugh>
EW (00:23:56):
Other people will be going to. I think it will be great.
(00:23:58):
Let us see. I have a book coming out, blah, blah, blah. I need to have a praise quote for the cover. The one by Jack Ganssle is super cool right now, but I am going to get another one or maybe two others. It seems like it is important. The name is more important than the quote, from the very limited amount of research I did.
CW (00:24:28):
So you need like Oprah.
EW (00:24:31):
Well, I need somebody who is popular in the embedded systems field.
CW (00:24:36):
Oh, so not Oprah.
EW (00:24:39):
I do not know that she knows. I mean, Jack Ganssle.
CW (00:24:45):
Jimmy Carter is still around. He was a nuclear engineer. It is close enough.
EW (00:24:49):
I do not think you are helping. Were you intending to help?
CW (00:24:52):
I do not know what kind of help you were looking for.
EW (00:24:54):
Right. Anyway, if anybody has ideas for who you would buy a book because they said it was a good book, let me know and I will talk to them.
CW (00:25:04):
<laugh> Or attempt to.
EW (00:25:05):
Or attempt to.
CW (00:25:06):
<laugh> Sorry, not just randomly talk to people.
EW (00:25:06):
Yes, that is actually-
CW (00:25:07):
You know you cannot just call anyone. <laugh>
EW (00:25:09):
I could try. Yeah. That is going well. I am in the process of waiting for the images to come back. I requested a few images early, and-
CW (00:25:25):
Needed more chicken.
EW (00:25:26):
Needed more chicken. Needed to be less terrifying.
CW (00:25:30):
No, I gotta disagree. I think more terrifying.
EW (00:25:32):
I do not see how that picture could get more terrifying.
CW (00:25:35):
Oh, I have plenty. There are lots of ways that picture could have gotten more terrifying.
EW (00:25:38):
Adding blood to that picture would not have made it more terrifying.
CW (00:25:40):
I do not think you should put blood in an embedded systems textbook.
EW (00:25:43):
I do not think you should put terrifying pictures in.
CW (00:25:46):
I do.
EW (00:25:48):
There was definitely not enough chicken, and the chicken was not silly enough.
CW (00:25:51):
Did you not say that the picture should be slightly scary?
EW (00:25:55):
Slightly scary. Not horrifyingly nightmare inducing.
CW (00:25:59):
Oh, come on. It was just a-
EW (00:26:00):
Oh, I will show it to you again. You had a nightmare that night. I know.
CW (00:26:03):
No, I did not. It was one of those- The teddy bear skulls that- Remember? Did not Elmyra in one of the Looney Tunes, have teddy bear skull barrettes or something? Who am I thinking of?
EW (00:26:21):
I know who you are thinking of, but name is not going to-
CW (00:26:25):
Maybe it was in Animaniacs or something. Okay.
EW (00:26:30):
Okay.
CW (00:26:30):
Your book is coming out.
EW (00:26:31):
My book is coming out in March.
CW (00:26:34):
March. Which is, like, a month.
EW (00:26:36):
Wow!
CW (00:26:37):
Because February is only like a week long.
EW (00:26:40):
I am not sure I should have taken that contract.
CW (00:26:42):
Should I cut that? <laugh>
EW (00:26:43):
No, no. It is fine. None of the clients who I have recently taken contracts with, know which one it is that I am talking about. I am sure it will all be fine.
(00:26:59):
<music> We would like to thank the sponsor of this show, Nordic Semiconductor. A market leader in IoT connectivity, providing hardware, software, tools and services to create the IoT devices of the future. Together with Nordic's vast ecosystem of development tools, developers can reduce the development cycles and accelerate time to market.
(00:27:21):
The nRF Connect for VSCode provides the most advanced and user-friendly IoT embedded development experience in the industry. Nordic has a number of academies and DevZones and tools to help you get started. If you would like to know more about Nordic Semiconductor, it is nordicsemi.com. Please check them out.
(00:27:47):
We are giving away another Power Profiler Kit II. The question for this month and next month and the one after, so there will be three giveaways, is "If you could make one modification to the Power Profiler app or kit, what would it be? How would you make this better?" If you win, then well, you can get one. <music>
(00:28:10):
Let us see, what else do I have on my list? Praise quote for the book that is coming out. Chris Lott asked, "What sort of manufacturing and board information do folks typically write into the info flash on their microcontroller?"
CW (00:28:30):
I do not know. I have not done that in a long time.
EW (00:28:32):
Serial number, lot number. Possibly manufacturer location, or some sort of manufacturer ID if you have multiple manufacturers.
CW (00:28:41):
A date.
EW (00:28:42):
That is a good one. What year of manufacturer. Week of manufacturer.
CW (00:28:46):
Board revisions, if you can do that somehow.
EW (00:28:48):
Board model number, and board revision. That seems like a pretty comprehensive list.
CW (00:28:55):
Yeah, I am trying to think of anything else that would be super important. Sometimes you put calibration data in there.
EW (00:29:00):
Of course. Okay. Let us see. We had another person who asked about soldering iron recommendations on the embedded.fm Slack channel.
CW (00:29:14):
What recommendations? Soldering irons!
EW (00:29:17):
Soldering irons.
CW (00:29:17):
Yes. Sorry, I heard "Saturn something."
EW (00:29:20):
Saturn rocket recommendations.
CW (00:29:22):
Yeah, Saturn V was the best one. Soldering iron recommendations. You want to just go through their recommendations? Because I do not have one.
EW (00:29:32):
I was really surprised that the ones that I use were not in the list at all.
CW (00:29:39):
Somebody mentioned Hakkos.
EW (00:29:41):
I guess so. But that was not-
CW (00:29:43):
They are nice fixed position ones.
EW (00:29:47):
But there were ones I had not heard of. Had you heard of-
CW (00:29:49):
I have heard of the Pinecil, and those little pen ones, yeah. They are intriguing. I do not know if they are good for building a whole kit or something, or doing a lot of soldering. Or just for rework. That was a question I did not ask in there, but maybe somebody has an opinion. But they are nice because they do not have- Well, I do not know. Some of them, I think they are USB powered, but they do not have batteries. Right?
EW (00:30:15):
The Pinecil was USB powered, but it also had a wall wart.
CW (00:30:20):
Right. Okay. It could be either.
EW (00:30:22):
Which is nice, because you want to be able to provide enough power, but-
CW (00:30:26):
Well, if it is USB-C, you can provide more than enough power.
EW (00:30:31):
But there was also a USB pen-style one as well. It was quite a bit more expensive, but it seems-
CW (00:30:40):
Who is that one from?
EW (00:30:43):
TS80.
CW (00:30:45):
Okay. TS80.
EW (00:30:46):
"Chic and smart soldering iron powered by USB Type-C and QC3.0 standard. Normally we would scoff at trying to power a soldering iron off of USB, but thanks to the USB-C standard, it is powerful." Blah, blah, blah.
CW (00:31:05):
Yeah, you can get a couple hundred watts, I think.
EW (00:31:08):
But this Adafruit one is temperature adjustable.
CW (00:31:12):
Well, that is really important. <laugh> That is one of the things I like about the Hakko. Huh, interesting.
EW (00:31:19):
The Pinecil one seemed like you could program it, if you wanted to.
CW (00:31:24):
Mm-hmm. I think its name comes from Pine-
EW (00:31:27):
Pine64.
CW (00:31:28):
Pine64, which does...
EW (00:31:30):
I was boggled that those were the getting started and being kind of serious about it. There was another pen, from Tindie.
CW (00:31:41):
Pinecil runs RISC-V, just so you know.
EW (00:31:45):
That used Weller RT tips. Something cool about the RT tips. I do not know, I just am so used to-
CW (00:31:55):
I mean the Pinecil is only 25 bucks too, so it is kind of like-
EW (00:31:57):
Yeah.
CW (00:32:00):
A big soldering station is usually much more expensive than that. So just having it around would be useful. They have tip- The tip set costs as much as the soldering iron.
EW (00:32:16):
I have not decided whether or not I want to get a soldering project. Just so I could get a new soldering iron, which seems-
CW (00:32:23):
You could just get the new soldering iron.
EW (00:32:25):
Backwards. Well, yes, but I need a good reason to use it.
CW (00:32:29):
You could buy one for me for my birthday.
EW (00:32:32):
Is it time to be thinking about that already?
CW (00:32:34):
I do not know. Five months away until I am officially super old.
EW (00:32:41):
Oh my God. Oh my God!
CW (00:32:43):
Anyway, moving on.
EW (00:32:47):
Christopher and I are six months apart, so as soon as he becomes super old, I become six months later super old. So he cannot say that sort of thing to me.
CW (00:32:53):
<laugh>
EW (00:32:53):
You do know that the best person-
CW (00:32:56):
What? What?
EW (00:32:56):
To complain about your age to. The best person.
CW (00:32:58):
Oh, stop.
EW (00:32:59):
Is your parents.
CW (00:32:59):
Stop it!
EW (00:33:00):
Because they laugh, and they laugh.
CW (00:33:01):
Stop it.
EW (00:33:02):
One time I did it. I think my mom laughed for a year afterwards. She just thought it was great that I complained about my age to my parents. I mean, my mom did often laugh at me. So there is that.
(00:33:16):
Andy MacGregor asked about giving schematics to your software team for review.
CW (00:33:24):
Please do.
EW (00:33:25):
"What are review comments that you are looking for to hear from them, if you give them schematic comments?"
CW (00:33:30):
Well, I am not-
EW (00:33:31):
Or as a software engineer-
CW (00:33:33):
Flip it around.
EW (00:33:34):
What comments can you usually offer?
CW (00:33:38):
Test points is the number one thing that I look for. Are there any? Is there some device that is like I2C or SPI or something else that is going to be annoying, that I would need to put a logic analyzer on?
(00:33:50):
I2C tends to be one where I have a lot of trouble with addressing or something else. And it is nice to see on a scope if I am doing something wrong. Especially if it is on a device with a terrible data sheet. Or with some opaque initialization procedure with tons of registers that they just hand you.
(00:34:07):
Or you have it from an example project, and you actually- Like, I have had to <laugh> comment on one device. I had to use a Saleae to copy their- So they sent a dev kit example kind of thing, which was a complete system. It booted up and configured a display. But they did not document the initialization procedure. So it was like a hundred registers you had to write, that were not part of the data sheet.
EW (00:34:31):
Nice.
CW (00:34:32):
This is very common with displays. And cameras. It is just like, "Okay, write 600 bytes." But I could not get it right. I had example projects from other code, but they did not work. What I ended up doing was snarfing their dev kit with the Saleae, and copying the bytes they used to initialize it, the undocumented ones, and putting them in my code. And then it worked. So test points can be important.
EW (00:35:02):
One of the people on the Patreon Slack had already typed their answer before I got to it, but check the UART polarity.
CW (00:35:10):
Polarity of-
EW (00:35:11):
RX and TX.
CW (00:35:11):
All things.
EW (00:35:12):
I found one of those recently. I was so excited, because RX and TX were swapped as they should be, in all the places they should be.
(00:35:19):
But then MISO and MOSI were swapped and I was like, "No, you do not swap those! You just-" And then he was like, "Yeah, you can fix that in software. So I will just switch those pins and it will all be fine." And I was just like, "But I found a hardware bug. It was so exciting."
CW (00:35:40):
<laugh> Make sure things that you think should be connected are connected, especially like GPIO things, stuff like that. If there is a device that has- Might be a SPI or I2C device, but sometimes they have GPIOs to control all this stuff.
EW (00:35:53):
Right. That reset or command line or-
CW (00:35:57):
Yeah, just make sure those are hooked up. Make sure they are hooked up to- <sigh> This is one I have not really come across too often, but make sure they are hooked up to things that actually work on your micro.
EW (00:36:08):
I was thinking make sure they are hooked up to lines, that are not the ones you are using for SWD.
CW (00:36:12):
This is what I am saying. Yeah.
EW (00:36:13):
<laugh>
CW (00:36:14):
Things like that. Or you have I2C coming in to an I/O port. And oh by the way, that I/O port, you cannot put I2C on there.
EW (00:36:22):
Yes.
CW (00:36:23):
A lot of these chips, they have multifunction muxing. So you-
EW (00:36:29):
Alternate functions.
CW (00:36:29):
Have got these gangs of pins, and you can set some of them to be SPI A and I2C A or zero or one or whatever. But some of them cannot be. It is how they route it inside the chip.
(00:36:39):
But there are limits to that, so you cannot just willy-nilly say, "Well, I am just going to put I2C here and here and here and here and here and here and-" No, you have to probably spread them around, to ones that can support it.
EW (00:36:51):
So that is something I agree with you. As software engineers, we need to do it. But usually I ask for a netlist for that. Because it is a much simpler process to have it be on the netlist, than to try to trace all of the lines on the schematic. But when you are doing a schematic review, it makes sense to do the netlist review as well.
CW (00:37:18):
I would not look for bypass capacitors. Another nonsense that have nothing to do with electronics. Or software.
EW (00:37:22):
I do not calculate the resistor networks. One, they are easy to change. And two, I have no real facility with what it is supposed to do.
CW (00:37:36):
There is looking for things that are wrong, and there is also looking for things that would cause you pain.
EW (00:37:41):
Oh, it would be really nice if the programming and debugging headers are on the edge of the board.
CW (00:37:46):
Well yeah, that is true. Yeah.
EW (00:37:48):
If they can be. Because I have had programming headers that were between two giant capacitors and you cannot get the programmer in.
CW (00:37:55):
Or worse. Yeah, clearance issues.
EW (00:37:57):
Clearance problems.
CW (00:37:57):
Those are hard to see on a schematic though. Because usually these days when you get a schematic, it is basically a block diagram with pins, right? <laugh>
EW (00:38:06):
Yes. But it is a good time to say, "Will those be on the edge of the board?"
CW (00:38:13):
What was I going to say? If there is power sequencing stuff.
EW (00:38:18):
That one I have trouble seeing.
CW (00:38:19):
If there are a lot of power domains. Not necessarily finding problems there, but asking, "Okay, I have got several different voltages that need to come up. Is there an order they need to come up? Is there-"
EW (00:38:32):
And it does not have to be an accusation.
CW (00:38:34):
No, it is just clarification.
EW (00:38:35):
It is just, "How am I supposed to make this work? Is it supposed to be the three volt comes up first, and then the 1.8, or the other way?"
CW (00:38:46):
What else is on schematics? LEDs? LEDs can be quite good, and if there are not enough of them, sometimes that can make things a challenge. Like, if you have got an LED- If you have got no LEDs-
EW (00:38:58):
Hate LEDs.
CW (00:38:59):
You hate LEDs because you do not like things blinking at you.
EW (00:39:04):
Right. Blinky. Horrible.
CW (00:39:10):
My feeling is <laugh> that maybe you want at least one LED, that you control from software. To see that you can control something from software, <laugh> that something is running. Or that once you have got the firmware out there, it turns on and quite possibly blinks to indicate that the system is working. I am sorry that is how the world works.
EW (00:39:34):
Test points. You can do that with test points in Saleae.
CW (00:39:37):
Yeah, but what if you do not- What if- That is ridiculous.
EW (00:39:38):
No, you are right. It is nice to have a blinking LED.
CW (00:39:42):
I am sorry you do not like blinking lights. We have five senses. Would you rather have a clicking speaker?
EW (00:39:47):
No!
CW (00:39:47):
Okay. Well, there you go.
EW (00:39:49):
Oh, no.
CW (00:39:49):
You get a blinking light.
EW (00:39:52):
Okay. I can handle the blinking light.
CW (00:39:57):
<laugh> What else? Do other people have good suggestions?
EW (00:40:00):
"What things can I monitor?" So voltage, current, temperature, fan speed.
CW (00:40:05):
Oh yeah, good. What things should I monitor?
EW (00:40:11):
"What things would be useful to have as test points, so I can look at them during debugging?"
CW (00:40:13):
Yeah. That is more of a question for you, the developer.
EW (00:40:19):
Yeah, but they are- It is fair to ask your hardware engineer what signals should I be monitoring? And then making sure that those are also available on the boards. That what you monitor inside your processor, is the same as what you can monitor on a scope.
(00:40:41):
Apparently this question came up, but Phillip at Embedded Artistry actually has a whole blog post. So this was all not necessary.
CW (00:40:54):
Oh, okay. We will put that in the show notes.
EW (00:40:55):
You should just go to the blog post. System architecture, I assumed we had already talked about that. Voltage domains, pull-ups and busses, pull-downs and default states. Default states is something you should talk about with your EE as you are doing the schematic review, especially if you have a low power system. Alternate functions and pin mappings. Do both sides of a connector have the correct pinout? The answer to that is always "No." No, they do not. They really do not. Debug options. Signals to test. Is there an LED to indicate that the board is powered?
CW (00:41:43):
That is weird. Somebody just said something about LEDs.
EW (00:41:47):
Is there a block diagram? If not, why not?
CW (00:41:52):
All right. Well, we will put that in the show notes.
EW (00:41:54):
Yeah. I should have looked further. Phillip's list is fantastically complete. So we can go on. Let us see. There was another question about looking for a new job.
CW (00:42:11):
I do not recommend it.
EW (00:42:15):
<laugh> Why not?
CW (00:42:17):
Jobs are for suckers.
EW (00:42:20):
<laugh> We have been rewatching-
CW (00:42:23):
Parks and Rec <laugh>.
EW (00:42:24):
Parks and Rec. I realize how many of the things that Christopher and I say to each other just to make each other laugh, have a lot to do with that show. It is kind of embarrassing to realize that there is a whole language we have around it.
CW (00:42:40):
"I like to tell people 'No,' it lowers their enthusiasm." Okay.
EW (00:42:47):
Okay. Questions regarding a new job. "How do you do expectation management during applications?" Like the person who asked, Osau, "I have worked with different things at a small company, which I think makes my resume look better on paper than in reality. I do not want them to get the impression I know everything. I am mediocre at best at anything."
(00:43:11):
Well, first of all Osau, this is like the time where somebody wrote in with a very simple question, and then we had a whole long episode about imposter syndrome.
CW (00:43:24):
Yeah. Well first of all, make sure you put things that cannot be tested on your resume. So like jujitsu expert, it is not going to come up in embedded systems very often. So this is a situation where you might be a mediocre jiujitsu practitioner, but they cannot really test you on that, so that is perfectly fine.
EW (00:43:45):
So you should put "expert," because it cannot be tested?
CW (00:43:47):
Right. Yeah.
EW (00:43:48):
I do not think you are giving good advice.
CW (00:43:48):
Same thing with embedded systems. You can kind of branch out from there and be like, "Well, I have done a lot of GPU design." Not going to come up in embedded systems. You are fine. They cannot test you on that.
(00:44:00):
What else? Radar transmission engineer, depending on the job, not going to come up. So you can put things on your resume that you do not know how to do, as long as they do not apply to the job. That is completely ethical. I have heard.
EW (00:44:17):
From people wearing orange?
CW (00:44:20):
<laugh> I do not think you could go to jail for lying on your resume <laugh>.
EW (00:44:23):
No.
CW (00:44:23):
But you can be fired or sued. Right.
EW (00:44:27):
Okay.
CW (00:44:27):
So he has got things on his resume, but he does not feel good about them? So he is like, "I have done this, but please do not expect me to do it well." Is that-
EW (00:44:35):
So you are a director at a four person company.
CW (00:44:39):
Yeah.
EW (00:44:39):
That is a lot different than being a director at a Fortune 500 company.
CW (00:44:43):
I feel directly attacked.
EW (00:44:45):
You were a director at a bigger company than I was a director.
CW (00:44:48):
I was a director at a 20 person company, yeah.
EW (00:44:51):
Oh, was it only? No, there were more people.
CW (00:44:53):
When I started at Avenger?
EW (00:44:55):
Yeah. But later there were a lot more people.
CW (00:44:59):
Yeah, but I already quit being a director because I hated being a director.
EW (00:45:02):
Anyway.
CW (00:45:03):
Yeah. Yes. There are definitely situational things where something means something different, depending on the context.
EW (00:45:12):
But I think that is well understood.
CW (00:45:13):
Yeah, I agree. That is the thing is, you have to put yourself in the interviewer's shoes a little bit. People who are good at interviewing at least, know what resumes say and mean, versus your expectation of- I mean, unless you are lying. Do not lie. But if something is on your resume that you have done, that is totally fair.
EW (00:45:40):
Not only is it totally fair, I want to say "Do not hold back."
CW (00:45:44):
Yeah, do not hold back. Yeah, exactly. That is where I am headed.
EW (00:45:47):
Okay. You want to put concrete things. I have on my resume, or I did for a long time, "PID servo controller made from a 50 cent DC motor." Because-
CW (00:46:02):
It was cool.
EW (00:46:03):
It was cool. It was made sense at LeapFrog, where things needed to be cheap. I could talk about the puppetry of it and how we recorded the puppetry, which is something I love to talk about. I talk about the PID. I could talk about the servo.
(00:46:17):
And the encoding feedback and all of that, and how there was very little feedback and it made it really hard. But it made it cheap. It was something I could talk about. It was very numeric and eye-catching. Could I also talk about mentoring other people, and all of that? Sure. As long as I liked it.
CW (00:46:47):
I think what you said about "I can talk about it," is the important thing. If you feel like you are putting something on your resume, that you are not comfortable being excited about a little bit talking about, and you can go in depth. Then maybe do not put it on your resume.
EW (00:47:05):
Or at least push it to late second page.
CW (00:47:06):
Example. I used to put things like x86 assembly on my resume, because of course-
EW (00:47:13):
Sounds good.
CW (00:47:13):
I had some experience with it. But if somebody asked me- In retrospect, I realized if somebody asked me an x86 assembly question, I would be pretty screwed. It is something that if you handed it at me in the morning, a problem that involves assembly and I have got some books, I can deal with it. That is the kind of experience I have.
(00:47:33):
But I do feel like sometimes putting something on your resume invites people to ask you questions about it, and you should be able to expect them to talk about it. So if you want to put something like that that you are not fully comfortable with, I think there are ways to do that. Like, "debugging experience with assembly." You can calibrate your experiences a little bit.
EW (00:47:59):
Yes. "Explored assembly to fix bug," with more words in there.
CW (00:48:09):
"Bug fixing knowledge of assembly."
EW (00:48:13):
That indicates-
CW (00:48:13):
I am not going to write a program in assembly, but if I look at ten lines and I have a reference manual, I can figure out what is going on.
EW (00:48:19):
So your resume should have things you want to talk about.
CW (00:48:23):
Yes. And you should focus on those.
EW (00:48:25):
Things you want to do. Like, I do not have SQL on my resume, even though at one point I was nearly expert level SQL.
CW (00:48:34):
Me too, right. I did a huge database project on a medical device, learned all about MySQL and how to deal with it. And if you asked me a question about it right now, I would say "SELECT * FROM, and that is all I remember."
EW (00:48:46):
At ShotSpotter, I did not use it for my embedded systems. But anytime I needed to test or check or monitor something, I needed a query. I needed a query from a certain place and a certain sensor, but it never made it on my resume. Because I do not really want to spend my life doing SQL queries.
CW (00:49:08):
<laugh> Right, right. Yeah, that is a good-
EW (00:49:11):
I love that for you.
CW (00:49:12):
Do not put things on your resume that you do not want to do.
EW (00:49:16):
So things you want to-
CW (00:49:17):
Unless they are impressive things, that are like, "I did something super cool and therefore I am a cool, smart person." Right.
EW (00:49:22):
But even that, you have to be careful. I would put SQL in service of something else.
CW (00:49:29):
Yeah, that makes sense.
EW (00:49:30):
But be careful with that. I mean, SQL is kind of a skill, not a major part of life. So things you want them to ask you about, the keywords for the robots. And things you want to do in the future, but not things you do not want to do.
(00:49:49):
So if you have worked at a startup and you have gotten to do a lot of things with great titles. And you have gotten to do a lot of things in a broad scattershot sort of way, breadth instead of depth, that is okay. We need engineers who are deep and we need engineers who have a lot of breadth. And it is okay to travel between them.
CW (00:50:15):
We used to be called "generalists."
EW (00:50:17):
Thank you.
CW (00:50:17):
I am a generalist and a software engineer. I have been since the beginning of my career, because I have had to do a little bit of everything at various companies. From mobile apps, to twiddling GPIOs. That is a fine person to be, and they are very useful and in demand. <laugh>
EW (00:50:39):
But looking at somebody's resume and seeing that they are a generalist, already gives you some clue that they are probably not a depth in any one area, unless they highlight that.
CW (00:50:52):
There are probably a few depths you have. But yeah.
EW (00:50:56):
But you have to highlight those. You have a hundred words in your keyword list, and then you have another keyword list that is like deep skills.
CW (00:51:04):
Errgh.
EW (00:51:04):
Anyway. I think you are selling yourself short. And I think "Mediocre at best" is not the way to describe yourself to anyone. Not even yourself.
CW (00:51:19):
I would put "Mediocre at worst" for myself.
EW (00:51:21):
<laugh>
CW (00:51:21):
No worse than mediocre. Yeah. No, I think you are right. I think when people say things like that, I do want them to pause a little bit and make sure they are really evaluating themselves correctly. I have met mediocre engineers. It is immediately apparent. <laugh>
EW (00:51:46):
I had someone who I was told was a mediocre engineer, join my team. I took a look at what they were doing, and I talked to them a bit about what they liked to do. And I switched them to a different project, and they became like a secret weapon. They were great at the other project. Other teams loved that project.
(00:52:11):
My team was not really sure about the value of it, but the other teams got so much value out of it. They were so much happier, because they felt like they were contributing. So I am not even going to say "Mediocre." I have met people who are not in the right job. And I have met people who do not care.
CW (00:52:32):
That is fair.
EW (00:52:33):
People who do not care, those are harder. But usually we are in this for the puzzles. We like the puzzles. Okay. The other question from Osau was, "What do you use to compare jobs, to make an objective comparison as you are looking to accept an offer?"
(00:52:55):
"Like how interesting do you need to find the company’s product or technology? Or how important is the maturity of the organization? Or the difficulty level of the role? What do you look for to compare potential positions?"
CW (00:53:10):
Wow.
EW (00:53:12):
It is all about the money, right? <whisper>Show me the money.
CW (00:53:15):
That is a big part of it. But it is really tough because just as it is difficult to interview a candidate, because you only got effectively a few minutes to make-
EW (00:53:28):
Judgment.
CW (00:53:28):
Meet someone, assess their skill level, assess their ability to work on your team or on a team, and all of that stuff. It is actually- It is more asymmetrical, right, because when you are interviewing, they are mostly asking questions of you. You get some time to ask questions of them, but it is really hard to get a sense for things.
EW (00:53:48):
Even that is an interview question.
CW (00:53:50):
Companies have a- You talk about putting things on your resume that you are uncomfortable with. Companies are lying to you too.
EW (00:54:01):
<laugh> They have put on their best shirt and shined their shoes.
CW (00:54:05):
All of them are pretending to get along.
EW (00:54:06):
<laugh>
CW (00:54:06):
There are no interpersonal issues happening. "Oh, the project is going well. This, that, and the other thing." And the instant you show up there, it is a different place and you start learning about what is really going on.
EW (00:54:19):
I remember interviewing a company. They said that they really do not want people who carried grudges.
CW (00:54:24):
What!?
EW (00:54:26):
That was such a big red flag. I was like, "Who on your team is such a jerk, that you are basically filtering people out that cannot work with them? They are such a jerk."
CW (00:54:37):
<laugh> "Please tell us you are not someone who gets mad at things."
EW (00:54:40):
Yes, exactly.
CW (00:54:42):
Yeah. Where I am headed with that, is a lot of the stuff you want to evaluate is unknowable without joining the- Or sneaking around the company for a week.
EW (00:54:55):
And some of it is-
CW (00:54:55):
Going to some meetings and seeing people. That is the thing. It has always been eye-opening to me. It is like, "Oh, we are happy fun." And then you go to a meeting after two weeks of being there, and people are yelling at each other and it is like, "Uh-oh."
EW (00:55:06):
Is that how you have fun?
CW (00:55:09):
Or the one company I went to, where everything was fine for a month until the person who apparently was the CEO decided to show up. And then the company changed that. "This is no longer a fun place. This is a very stressful place." Because they wanted something different than I thought was happening. There was no way to know.
(00:55:30):
So yeah, try to get some sense of that through interviewing. Ask good directed questions of the people you are talking to, especially other engineers. Because the management people are going to- If they want you and they want to impress you with the company, they are going to make everything sound like puppies and roses.
EW (00:55:50):
And remember, after you have an offer, you can ask-
CW (00:55:53):
More questions.
EW (00:55:53):
To talk to one of the people you interviewed with.
CW (00:55:56):
Yes.
EW (00:55:57):
Maybe have lunch with the person you are going to work with most, or your new boss.
CW (00:56:03):
The interest level, that is something you can- The application interests, that is something you can gauge.
EW (00:56:08):
Application has always done it for me, but this is so different for everybody.
CW (00:56:10):
Yeah.
EW (00:56:11):
There are the necessary things. The things that you do not even look at a job, if it is not going to cover. Money. Location. Maybe PTO is one of those things that is on your list.
CW (00:56:24):
Intensity. If you are somebody who is not interested in working 70 hour weeks, that is something you need to gauge.
EW (00:56:31):
That is hard to find.
CW (00:56:32):
Something you need to gauge.
EW (00:56:32):
It is something you need to gauge.
CW (00:56:35):
Luckily at some places, they were really upfront with that. Like Apple who told me I would never see my family again.
EW (00:56:40):
<laugh>
CW (00:56:40):
So that was cool, that they were clear about that.
EW (00:56:45):
Yes. Then you could cut the interview short.
CW (00:56:49):
Actually, the question-
EW (00:56:49):
You were not going to see summer.
CW (00:56:50):
The question was, "Do you like summer?" And I was like, "Yeah, I love summer. Summer is great." And the answer is, "Well, you will never see it again." I was like, "Why would you tell me that?"
EW (00:57:02):
He wanted to measure your commitment upfront.
CW (00:57:05):
Commitment to iPod. "Do you have a passion for iPod?" I did not. Sorry. Yes. Next?
EW (00:57:13):
One person pointed out that mentorship is something that you can try to figure out during an interview. Is there someone who will be willing to teach you, and that you can ask questions of? And see what the arrangements are for learning.
CW (00:57:34):
Even better if the company volunteers that. Says, "You will have a mentor." Or, "I will be guiding you." But it is a good question. Yeah. Bigger companies tend to be much better at that. Cisco was like, "Here is your mentor. Have a nice year." <laugh>
EW (00:57:51):
Well, we were new college grads.
CW (00:57:52):
That is true.
EW (00:57:52):
There was a process for that.
CW (00:57:55):
Junior people need mentors more than senior people. Although senior people still need them.
EW (00:58:04):
There is really no good answer. You can ask about what processor they are using, if that is important to you.
CW (00:58:14):
You can ask quality of life things like, "Which computer environment do you guys use to program on? What compilers are you using?" You can get a sense for the organization like, "Okay, what is your source control scheme? What is your software development process? Are you doing Agile? Are you doing something with Scrum? Are you doing Scrum and Agile? Do you have professional Scrum masters?"
EW (00:58:42):
"Do you have daily standup meetings that last in excess of 30 minutes?"
CW (00:58:45):
"What is the meeting load here for a working engineer?" Stuff like that. It is easy to get answers that they probably will not tell you lies, because it is hard to come up with a lie that fast about stuff like that. Most of the lies tend to be along the lines of, "The culture is great. The team is great. Everybody loves working here." That kind of stuff.
EW (00:59:06):
Rah, rah.
CW (00:59:08):
"If you work here, you will be a millionaire by Tuesday."
EW (00:59:12):
So there is a site, adafruit-playground.com. It seems to be like hackaday.io in that it is projects.
CW (00:59:24):
Oh, posting projects?
EW (00:59:25):
Yeah.
CW (00:59:25):
Okay.
EW (00:59:25):
Or hackster.io where you are posting tutorials and projects and maybe continuing on later. The comments on the projects are nice and it is all pretty positive and supportive. Seems to have been around since about November.
CW (00:59:43):
Okay.
EW (00:59:43):
So it is kind of new.
CW (00:59:44):
Huh.
EW (00:59:44):
We have had at least one person on the Slack post there and was happy. I just wanted to bring it up, because I had not seen it and it seemed neat.
CW (00:59:56):
Cool. I will check it out.
EW (00:59:59):
Let us see. We have a Patreon Slack group, as mentioned a couple of times. If you want to see that, you have to give us a buck on Patreon or coffee. And then you get access to these people who are really cool, much cooler than us.
CW (01:00:15):
If only we could convince them to record the show, we could just sit back.
EW (01:00:19):
I am easing into that. Do not give away my plans that quickly. We also have a newsletter, which was totally on time, just like the show was on time.
CW (01:00:31):
Hmm. Totally on time. And under budget.
EW (01:00:34):
Last week, it was about music stuff. Various posts, like-
CW (01:00:40):
Because of your project, your class.
EW (01:00:43):
Because of my class.
CW (01:00:43):
A lot of the projects.
EW (01:00:44):
I coughed up some of the [links]
CW (01:00:45):
<laugh>
EW (01:00:45):
Sorry. I put down some of the links that I found interesting as I critiqued student projects. I just kept opening tabs of things that I would look at later, and finally wrote them up. A lot of them were music related, because we had a number of good music projects this time. And that is it.
(01:01:10):
Thank you for listening. Thank you to Christopher for producing and co-hosting. Thank you to our Patreon Slack group for all that they do. And of course, thank you for Nordic for their sponsorship. We really appreciate it. All of you.
(01:01:24):
[Winnie the Pooh excerpt]