Embedded

View Original

453: Too Dumb to Quit

Transcript from 453: Too Dumb to Quit with Nathan Jones, Christopher White, and Elecia White.

EW (00:00:06):

Welcome to Embedded. I am Elecia White, here with Christopher White. Our guest this week is Nathan Jones. We are going to talk about speaking and teaching.

CW (00:00:17):

Hi, Nathan. Welcome.

NJ (00:00:19):

Hey, Chris. Hey, Elecia. Thanks so much for having me.

EW (00:00:21):

Could you tell us about yourself, as if we met at the West Point Open House, Parents' Day.

NJ (00:00:33):

<laugh>

CW (00:00:33):

Do they have that?

EW (00:00:35):

I assume so.

NJ (00:00:36):

They have got lots, yeah. Yeah, I would say I am Nathan Jones. I am a- Well, probably wearing my uniform, but for those of you that cannot see me, I am an active-duty Army officer, in the rank of major, and an instructor at West Point. And if it is a parent I am meeting, I would probably say that I am actually probably teaching your student either this semester or the one next, in either Cyber Fundamentals, or Intro to Physics.

EW (00:00:59):

I have more questions about that. But you also are giving a few talks in the next month. Next week? Oh, next week.

NJ (00:01:09):

Yeah. Coming up.

EW (00:01:10):

What are your talks about?

NJ (00:01:12):

I will be speaking at the Teardown Conference in Portland, Oregon. And the two proposals that they accepted were, a talk called "Make Your Own MCU Boards," where I am just going to share some tips that I picked up, in taking a micro controller and just putting it on a breadboard or on a printed circuit board. And, I wanted to hit the "easy" button, so I submitted a workshop proposal to just take some folks through a HackerBox kit, where they are playing around with the PIC microcontroller. Thankfully, HackerBox is donating all the kits. I just got to show up and help folks play around with PICs.

EW (00:01:48):

Will you show up in your uniform?

NJ (00:01:50):

No, I am not really going in an official capacity. This is more just, you know, it is the reason I am in embedded. I just love learning myself, and love sharing what I learn.

EW (00:02:01):

Are you ready for lightning round?

NJ (00:02:02):

Is anyone ever?

CW (00:02:04):

We are never ready.

NJ (00:02:05):

<laugh> Let us go.

CW (00:02:07):

We are not very good at it. The largest vehicle you have ever driven?

NJ (00:02:10):

Driven? It is probably nothing crazy, just a personal vehicle. But I have been able to ride in C-130s, in Chinooks, and everyone qualifies, so I have got to fallen out of a couple of helicopters. Yeah, that is the big one with the double rotors.

CW (00:02:24):

Largest ground vehicle you have ever sat in?

NJ (00:02:31):

Probably just a coach bus. I mean, nothing huge.

CW (00:02:34):

I got him beat.

EW (00:02:36):

Christopher has been in a tank.

CW (00:02:37):

<laugh>

NJ (00:02:38):

Oh yeah, you do. Very nice.

EW (00:02:41):

Maximum number of pushups you have given a student, for getting something wrong or doing something wrong in your classroom?

NJ (00:02:47):

<laugh> You know, the grads I find are way more strict in the classroom, but since I did not go to West Point, I am a very laid back individual. I have told my students before, like "If they walk in and they are like, 'Hey sir, it is going to help me study better if I just take my boots off and get comfortable,' I would be like, 'Drive on. Let us do it.'" So, probably zero.

CW (00:03:08):

What is the proper pronunciation of "hooahh"?

NJ (00:03:11):

Hooahh!

EW (00:03:13):

What is your favorite embedded processor for use by college students?

NJ (00:03:17):

For a college course?

EW (00:03:19):

Yeah.

NJ (00:03:23):

Honestly, I think I would go with either the PIC or the MSP430. I think the architecture is simple enough, that you can really get your teeth into the datasheet and understand it, but there is still lots of support.

CW (00:03:37):

I am sorry, worst MRE you have ever tasted?

NJ (00:03:40):

Oh, God!

CW (00:03:40):

<laugh>

NJ (00:03:40):

You know, it was not as bad as people thought it was, but the cheese omelet was really bad.

CW (00:03:45):

Oh, God! <laugh>

NJ (00:03:50):

<laugh> It is every bit as bad as you are thinking of it right now.

EW (00:03:53):

Oh, what is your favorite fictional robot?

NJ (00:03:56):

<laugh> Okay. I want to let you know, I thought long and hard about this.

EW (00:04:00):

<laugh> Listen to the best.

NJ (00:04:02):

It is Deborahbot 3000 from "Mitchells vs. the Machines."

CW (00:04:06):

Oh! Gosh, what-

EW (00:04:07):

That is a new one.

CW (00:04:08):

I do not remember that one. We saw that movie, but I do not remember that particular robot. I have to go back and look at it.

NJ (00:04:14):

It is one of the two comic relief robots, that follows with the family-

EW (00:04:18):

Ohh.

CW (00:04:19):

Oh, right, okay.

EW (00:04:19):

That was a good movie.

CW (00:04:19):

Yeah.

NJ (00:04:21):

Yeah. Stupendous.

CW (00:04:23):

What is your favorite tool for schematic capture?

NJ (00:04:26):

I am most familiar with EAGLE. But I have had the luxury, I think over the last five years, of being able to lean on a lot of educational licenses. I hear really good things about KiCad. Honestly, I ended up liking a lot of just browser based tools. I know it is not the heaviest lift, but they are just so- It takes away a lot of the pain of having to install anything.

EW (00:04:52):

And do you have a tip everyone should know?

NJ (00:04:55):

Yes. Although, I will tell you ChatGPT stole mine-

CW (00:04:57):

<laugh>

NJ (00:04:57):

The one I was going to go with-

EW (00:04:59):

<laugh>

NJ (00:04:59):

Which was, "Just take a break." I called that my superpower in grad school, because there is a lot of really good science behind that. But the one I will go with instead is, if you take a public Git repo, and you change the first part of the URL from github.com to github1s.com, you will open what looks like an instance of VSCode in your web browser. You can navigate the repository.

CW (00:05:24):

I have got an addition to that, which is a very good tip.

NJ (00:05:26):

Really.

CW (00:05:26):

But if you are on a page, if you are on a GitHub repo-

EW (00:05:30):

Github.com.

CW (00:05:30):

And you are in github.com, and you just type period, it does that.

EW (00:05:34):

Yes. It is beautiful.

NJ (00:05:35):

No way.

EW (00:05:36):

Yes. It is awesome.

NJ (00:05:36):

Nice.

EW (00:05:36):

All right. First of all, we know what West Point is. Your brother went there for a little while?

CW (00:05:47):

No, he went to the Air Force Academy for a little while.

EW (00:05:49):

I suck so much.

CW (00:05:50):

And then he did ROTC for the Army.

EW (00:05:54):

Okay. I knew the tanks for the Army, so he did do- Okay.

CW (00:05:57):

He was in the Army.

EW (00:05:59):

What is West Point for folks who do not know?

NJ (00:06:01):

West Point? The full name is the United States Military Academy. So it is a part of the Army, where students go to earn not only a college degree, but also to commission as second lieutenants. It is a neat institution, that the whole place is set up to take high school graduates and turn them into officers.

(00:06:24):

They call it "the 47 month experience," from when they show up, to when they graduate. They have got their time all planned out, taking college courses and doing military training. When they exit, just like ROTC cadets will, they will put on the rank of second lieutenant, and perform some job in the military.

CW (00:06:46):

And it is very competitive.

NJ (00:06:48):

Yeah. Extremely.

EW (00:06:50):

Okay. So how how did you become an instructor there?

NJ (00:06:55):

I think I got cold-called, like a blanket email as a first lieutenant, when I had just been in the military for a couple years, based on just my degree, getting the engineering degree from Harvey Mudd. And I always had a thought that I would enjoy teaching, but I needed to try it out. So it was on my radar for a long time.

(00:07:18):

When I finally got in that window in my career where it was going to make sense, I worked as hard as I could to get it. The stars aligned and I was able to go to grad school on the Army's dollar, and then spent the last three years here.

CW (00:07:30):

Elecia is just remembering that you were a "Mudder". Somehow that slipped her mind. Otherwise you would have gotten a lot worse lightning round questions. <laugh>

NJ (00:07:39):

<laugh>

EW (00:07:43):

What did you go to grad school for?

NJ (00:07:45):

I ended up getting my degree in computer engineering. But I wanted to do embedded systems stuff. There is a professor there, where I went at NC State, named Alex Dean. He has got a couple of TRIO courses that are very embedded focused, using the KL25Z, at least it was when I was there.

(00:08:06):

And then another one getting into embedded Linux. So it just really worked out that I was in that area at the time. I was stationed at Fort Bragg and my wife was working in Raleigh. So it really worked out well to do that for my master's.

EW (00:08:21):

And what was your degree at Mudd?

NJ (00:08:24):

It was in engineering.

EW (00:08:27):

All right. And for those of you wondering, "How you are going to get a degree in engineering?" that is a good question. But you can.

CW (00:08:35):

What is wrong with getting a degree in engineering?

EW (00:08:37):

Get electrical engineering, mechanical engineering-

CW (00:08:39):

Nice.

EW (00:08:39):

Computer engineering.

CW (00:08:40):

Just engineering.

NJ (00:08:41):

<laugh> There are only half dozen to choose from.

CW (00:08:43):

You never know when you are going to have to combine electrical, civil and chemical engineering, in a single job. Yeah.

EW (00:08:53):

They are nice, too. Yeah. All right.

NJ (00:08:53):

Well-rounded engineers and scientists who understand the impact of their work on society, you know?

CW (00:08:56):

Wow.

EW (00:08:57):

Oh, come on. You sound like an ad now.

NJ (00:09:00):

<laugh> I gave tours for a year or two. I loved that school.

EW (00:09:05):

So you have been giving a lot of talks recently. You have the two upcoming for Teardown, which are very close. And you recently gave two for the Embedded Online Conference. For a total of four totally different talks. That seems like a lot. I know how long it takes me to prepare talks. Are these part of your lectures for class, or are these fully prepared talks?

NJ (00:09:34):

Fully prepared. I try often to make the work stuff align, but at this point I am still really new to the whole conference stuff. I mean, the first time I presented was at the Hackaday last November. So at this point, I think I am still really just like the guy on the red carpet that is just happy to be there. I am trying to find the proposal that I think has the highest possible chance of being accepted. And I am as giddy as a school kid when I get an email that says, "Hey, we are happy to have you."

EW (00:10:04):

What has driven you to start doing speaking in public?

NJ (00:10:09):

When I was in grad school, I discovered that there was a desire to do that. I did not do too much embedded stuff, really any, when I was in the military, even though it was still a latent hobby, a latent interest. When I got to go to grad school, my job full-time was to just go to school, get my degree, and play around with electronics. So it reawakened that love of putting stuff together and tackling difficult challenges.

(00:10:36):

Chris Svec came to talk to the Embedded Systems class that I took from Alex Dean, and that is when I first heard about the Embedded.fm podcast. So I started reading a lot and just wanted to do that, wanted to be able to see my name on a speaker panel. Maybe not in any tremendous way, but be able to say I was contributing to the body of embedded systems knowledge.

(00:11:06):

So I applied to a couple when I was in grad school, and it all got turned down. And I think it is just one of those things you just- The world rewards those who are too dumb to quit. So just kept applying, kept trying to think of fun talks that would be accepted. And Hackaday was the first one. That was just a dream come true.

EW (00:11:32):

What did you talk about for Hackaday?

NJ (00:11:35):

I led a workshop called "Beyond Arduino." So trying to get folks set up with the STM32 environment, and blink some LEDs and maybe talk to a I2C light sensor, using the CubeMX software. I think a couple folks got there. It was maybe a bit ambitious to bite off in a couple hour workshop.

EW (00:11:58):

It is. When people bring their own computers, they have a base level that is totally different.

NJ (00:12:05):

Yeah.

EW (00:12:05):

And it is hard to run around and try to help everyone, when maybe you do not have the experience in their particular brand of Linux or Mac or...

NJ (00:12:19):

Yeah. And I ran into the issue too where, in order to get done what I wanted to get done, there were some stuff that I was thinking that a lot of folks would do ahead of time, in terms of at a minimum installing certain pieces of software.

CW (00:12:31):

Right.

EW (00:12:31):

They never do.

NJ (00:12:31):

Right. So a lot of folks showed up being like, "Eh, the title sounded cool. Here I am." So not only are they trying to install software, and I am walking through stuff, but I wanted to give them a little more than we had time for.

(00:12:47):

Instead of saying, "Here is this code, run it, and later on you can pick it apart, and see how it works," I tried a little too much to help walk people along. "Here is where you find the data sheet. Here is where it shows you what it is. Here is how you pull up the reference manual for the CubeMX." Like, their HAL, and how you find which functions are available to you when you turn on a GPIO in the code configurator. I think that was not a good format for the workshop.

EW (00:13:20):

I went to a workshop years ago at one of the embedded conferences, where they had a bunch of Raspberry Pis hooked to monitors, and they all had the tools set up. And then you took your Raspberry Pi home. Not the monitor, of course.

(00:13:38):

But that was a genius way to solve the tools to me. Because it is so hard to have everybody have the same thing, and yet most things can- I mean, for an STM32, you can compile on a Raspberry Pi, takes a little longer, but who cares?

NJ (00:13:55):

Yeah, exactly. And there are, I am not an expert in any of them, but I know that, or it is my understanding that, there are lots of options too in terms of Docker environments or even in browser setups. I think my big takeaway was just that you think of a workshop as being two to four hours, and you think, "Oh man, I can get a lot done in two to four hours."

(00:14:11):

But it is not the time to try to push a lot of information, even though it seems like a long time. The scope needs to be much more limited than you think it needs to be, to give folks time to play around and experiment and try and fail, and still feel like they accomplish something.

EW (00:14:31):

How about your Embedded Online talks? There was a short one and a long one, which was the long one?

NJ (00:14:38):

That was "Object-Oriented Programming in C."

EW (00:14:42):

Okay. Why is that still a talk? I mean, no offense to you, but is that news to anyone?

NJ (00:14:48):

I hope not. But I will tell you, I did still get a lot of questions like, "Why C and not C++?" For me it was just, again, going back to the talks that I am presenting- Going through grad school, was learning some of these things.

(00:15:05):

I took some time to assimilate a lot of the resources and techniques that I had read about, into something that I felt I could say I could talk about object-oriented programming techniques using strict C. And, I do not know, I just thought it was a cool project. So I proposed it and it got accepted.

CW (00:15:22):

Let us talk about that a little bit, in a little detail. Because I think people do respond to that, and people listening to this may respond to that with, "What are you talking about?"

EW (00:15:29):

Is it all just function pointers?

CW (00:15:30):

C is not object-oriented. How can you do object-oriented in a non object-oriented language?

EW (00:15:34):

Yeah.

CW (00:15:34):

So what is the deal with that?

EW (00:15:38):

Give us the three minute version.

NJ (00:15:39):

Yeah. So-

EW (00:15:40):

Or the ten minute version.

NJ (00:15:42):

Originally I was misguided, in terms of- Early in my programming career, I thought OOP was sort of like, once you learned "for loops" and "while loops," that was the next step. And I am gradually learning that that is not necessarily the case. It was only after I had picked all this up, that I had come to realize that.

(00:15:58):

But it is a paradigm. One of the three big ones, right? There is procedural, object-oriented and functional. And when you say "object-oriented," people think of languages like C++ and Java that are- Well, C++ and maybe both you would say are sort of multi paradigm, but they have built-in language features that align well with the idea of being object-oriented.

(00:16:25):

But it is not the specific purview of those languages. Object-oriented programming includes the principles of abstraction, encapsulation, polymorphism, and inheritance. And you can do all of those in C.

EW (00:16:38):

Of course! And for embedded systems, it makes a lot of sense. Because you talk about an object and you talk about an accelerometer. There is your object.

NJ (00:16:48):

Exactly.

EW (00:16:48):

I mean, it is a real physical object, so it makes sense. But...

NJ (00:16:53):

Yeah.

EW (00:16:55):

When we talk about a sensor class that has an accelerometer that is a child of it- Inherits this- Yeah. The accelerometer inherits the sensor class. When you are not using C++, that does seem to be mostly function pointers.

NJ (00:17:13):

Yeah. At least in the notes I have put together, once you want to play around with run time polymorphism or inheritance, it kind of comes down to that. But it is my understanding that that is exactly what the C++ compiler is doing under the hood anyways. It is just-

EW (00:17:25):

Yes, it is. <laugh>

NJ (00:17:26):

You have to do it explicitly in C.

CW (00:17:28):

I mean, there is no free lunch. <laugh>

NJ (00:17:30):

Exactly.

CW (00:17:30):

Computers work the way they do. <laugh>

EW (00:17:33):

You said you have notes about it. I saw you had a GitHub repository with increasing levels of examples of object-oriented in C.

NJ (00:17:40):

Yeah. That is how I think. When I put my notes together, I want to structure it in a way that makes sense. And for me at least, the way to approach this topic is in terms of what is the easiest, simplest thing to understand and implement, and how do you build more capability from there? And it turns out that it is not hard at all.

(00:18:03):

Most people are already incorporating some form of abstraction or encapsulation in their C programs. In the repository, I sort of break out polymorphism into polymorphism at build time versus polymorphism at run time. And even just doing a build time polymorphism is not hard.

(00:18:23):

The idea that I can write application code to talk to a temperature sensor, even though I do not know exactly what temperature sensor I am going to use. I can leverage either the pre-processor or the linker to, when I finally build my project, provide the necessary functions to complete the project. When I write my code in that way, I get a lot of benefits.

EW (00:18:47):

That makes sense. But when I look at your site, it looks like you are doing design patterns.

NJ (00:19:00):

Yeah, absolutely.

EW (00:19:03):

But that is not necessarily object-oriented programming.

NJ (00:19:07):

No, not necessarily. Hopefully I do not show my ignorance here, but it is my understanding that some of the traditional design patterns that are in the Gang of Four book, they sort of assume an object-oriented language.

CW (00:19:19):

Yeah, that is right.

NJ (00:19:22):

Which is not to say that, like you said, Elecia, the design patterns require it. One of my favorite books is "Design Patterns in Embedded Systems in C," I think by Bruce Powel Douglass.

EW (00:19:34):

Mm-hmm. <affirmative>.

NJ (00:19:36):

He uses the term, just like you might think more generally, as a solution to a commonly found problem. But I found it really cool to- Once you start picking up some of the OOP techniques, and particularly the idea of being able to substitute implementations either at build time or at run time, that it does open up the possibility of the more classic design patterns.

(00:20:01):

To me, that definitely levels up your code. Your ability to write complex application software, when I know how to leverage the observer pattern and the strategy pattern or the template method pattern to get this done.

EW (00:20:18):

Do you think that design patterns are important, more because of the way people think about code, the way people communicate with each other about code, or the actual, "I am learning this because I need to solve this problem"?

NJ (00:20:34):

I want to say either the first or the third. I feel like one of the interesting things to me about software, is that it is possible to write a thousand different versions of source code, that all functionally do the same thing. So I feel like it is easy when you are looking at code, and that is your main interface to writing software, it is easy to get lost maybe in the details and how to actually solve the problem.

(00:21:07):

But if you can look at a piece of code, and know that I am going to apply the template method pattern here. Or know that someone else, they are using a callback. This is a callback mechanism. Or it is an observer pattern. Then dozens of lines of text takes on more of an architectural view.

EW (00:21:29):

There is a good body of work that shows if you do not have the words for something, you cannot understand it as well. So people who are challenged with language in one way or another, do not understand the concepts. And so having the words for the design patterns does help just making the concepts available to you.

NJ (00:21:54):

Yeah, absolutely. You are totally right, that if something is ineffable, then it is hard to think about it. If you cannot put words to it, then you cannot construct a mental model around it.

(00:22:05):

So once you have mastered the basics of the language, and just control flow and some basic modules, learning how to build those up into architectural patterns is one way to start building larger and more complex pieces of software.

EW (00:22:24):

But you work with students who may have a little bit of computer background, but are not necessarily expert programmers or experts in embedded systems. Where do you start teaching them these abstract patterns and methods, versus having them truly understand what a conditional is?

NJ (00:22:47):

For the classes I taught, it is definitely much more of the former, sorry the latter, in terms of just sticking with the basics. I think if given the chance, and had the opportunity to teach more of the upper level embedded systems courses, I would not necessarily introduce it as like, "Here is a design pattern. We are going to talk about this."

(00:23:07):

But, just showing them a piece of sample code, and the benefits of the code being constructed the way it is. In terms of, probably to start with, just the idea of keeping details hidden behind an abstraction. And talking about how we are able to write code that does not interface with peripheral registers directly maybe, but at least through a wrapper layer, so that if something changes in the future, it is not difficult.

EW (00:23:42):

Yeah. The wrapper, as far as design patterns go, the wrapper is by far the easiest to understand and to communicate. Because it becomes obvious the second time you have to port something <laugh>.

NJ (00:23:53):

<laugh>

CW (00:23:54):

And even then it is hard to- Even though it is easy to conceive of, it is often hard to do it right. There are plenty of wrappers I have seen implemented, and implemented myself, that, "Yeah, we did that, and we hoped we would be able to port stuff. But when we came time to do that, that is not what we did."

EW (00:24:09):

You passed too much information, or not enough. Yeah.

CW (00:24:11):

Right. It just was not right.

NJ (00:24:14):

Yeah. But Elecia is right. All it takes is having to make one change in your- All it takes having to change one value in your software to be like, "Oh, okay, there are no magic numbers. It is everything is const or # defined, because I am not control editing this thing again." <laugh>

CW (00:24:28):

Yes.

EW (00:24:28):

<laugh> How do you learn more about object-oriented and design patterns? Do you have a way to stay current?

NJ (00:24:40):

For the object-oriented stuff, my big resources were- There is a chapter in James Grenning's book on TDD, where he builds up a couple of the object-oriented techniques. Miro Samek has got a PDF out there, where he talks about the underpinnings of his QP framework.

(00:24:57):

I cut my teeth on a PDF called OOC by Axel Schreiner, where he builds up basically almost like the full C++, in C, which was really daunting. That definitely accrued over time, as I tried to wrestle with this stuff. There is a great book on design patterns called "Head First Design Patterns."

CW (00:25:22):

Yes.

NJ (00:25:22):

It is actually for Java.

EW (00:25:24):

That is my favorite. Yeah.

NJ (00:25:25):

Yeah. But knowing what I knew about OOP in C, I was able to do everything in the book, with C stuff. That helped me understand what those design patterns were doing.

EW (00:25:38):

How did your talk go over?

NJ (00:25:41):

I think it went over really well. The Embedded Online Conference does some statistics tracking, and I think there were a lot of really positive responses. I got a lot from this talk. I got a lot of very similar questions like, "Why are you doing this?" Even from my co-workers. I sent an email to one of them to ask for some assistance, and they were like, "Why are you not just using C++?"

(00:26:04):

I got a lot of these questions, but I think one thing I tried to really impress on folks, was just like we have been talking about. Some of the simpler stuff of just keeping stuff abstract, and be able to substitute modules. Even just with a little linker flag to say, "Hey, pull in this source file, not this one," really gives folks a lot of benefits.

(00:26:34):

Those allow for a really good modular code, which is not the purview of C++. It has been well studied since the seventies, is being able to be easier to design and test and write and change. So one thing I hope the folks took away, was just a couple of ways that they can write really good modular code.

EW (00:26:56):

It is not like C++ makes you a magical object-oriented programming wizard. I mean, there is nothing about C++ that makes you be able to see all of these things. In fact, the conditionals are just the same. So I have on my list, "Why do you not just use C++?"

(00:27:21):

But the truth is that you still need to understand the concepts. You cannot just go into C++ and expect to understand polymorphism and inheritance. Those words may exist more there, than in C. But C++ compilers can be written in C. So there is nothing you can do there, that you cannot do here.

CW (00:27:44):

<laugh>

NJ (00:27:44):

Yeah, exactly. I feel like even if it ends up just being an educational exercise, knowing how to set up the polymorphism, and the virtual functions, and what sorts of things you can do, makes what the C++ compiler is doing, I think it makes a lot more sense.

EW (00:28:07):

Oh yeah. Yes. Understanding makes things make more sense. That is sort of a tautology. <laugh>

CW (00:28:14):

I would also argue that C++ is maybe not the language to learn for object-oriented, to start with. Period. It might have been the only game in town for a while, in the nineties-

EW (00:28:26):

Have the Rust people gotten to you?

CW (00:28:27):

Rust is not object-oriented.

NJ (00:28:29):

<laugh>

EW (00:28:29):

<laugh>

CW (00:28:30):

Rust is not an object-oriented language. Has some object stuff, but it is not- It is more like C, with some object stuff. But no, it has the weight of, I do not want to know, 20, 30, a lot of years. And it has accrued a lot of stuff. So I think it is daunting to approach learning a new paradigm of programming, with the most kitchen sink programming language, with that thought behind it.

(00:29:04):

Even Java is older, not older, but it is in similar vintage. It is newer, but I think perhaps that is an easier way to go. Python? I do not have a good suggestion, but there are more streamlined object-oriented languages that have come along since C++, that would be a better place to start with.

(00:29:25):

Especially since having come after C++, they de-emphasize some of the things that people have come to realize, were not necessarily things that that should be commonly used. Let us put it that way. Multiple inheritance, that kind of thing.

NJ (00:29:40):

Yeah. Well, and is not inheritance itself discouraged now?

CW (00:29:46):

Somewhat. Yeah. But that is a murky discussion.

EW (00:29:49):

You should have a "has-a," instead of an "is-a."

CW (00:29:52):

Yeah. Composition is preferred, but you still cannot get around inheritance in certain cases. Like Swift is a language that very much is against inheritance, and would rather you do it different ways. And yet the foundation libraries are all using inheritance all over the place. And protocols which do stuff like inheritance, but it is not inheritance.

(00:30:14):

Yes, there are ways around inheritance, but I guess they are trying to push it to be something you do only when necessary, instead of something you reach for immediately. But C++, that was kind of the thing, right, when you first started using it.

EW (00:30:27):

Exciting. New!

CW (00:30:29):

And I think newer C++ is also de-emphasizing it. But it is kind of hard, now that it is this big giant language with this history. Somebody is going to yell at me.

NJ (00:30:37):

And there is so much, in order to do that, from my understanding, I am not an expert C++ programmer. But in order to be able to do those things, there is a lot that the compiler is doing for you. A lot.

CW (00:30:49):

Yeah. And when you start talking about embedded systems, that is when you start talking about which things do you not want to be doing. Because it might take a lot of space or CPU time.

EW (00:31:01):

Okay. So you have a GitHub repository for that. You also have a GitHub repository for your other Embedded Online talk, which was about command line. Which I have to say, I feel like I have given that talk, but I do not think I ever have. But it was very familiar, and I liked it a lot.

CW (00:31:20):

Did you not write a chapter in your book?

EW (00:31:23):

Part of a chapter.

CW (00:31:23):

<laugh>

EW (00:31:23):

But you are getting ready to give a couple of more talks. You mentioned the HackerBox PIC of Destiny, but what I want you to tell me about is "Make Your Own MCU Boards." Because it is weird to go from object-oriented programming, to make your own boards, where "weird" is embedded systems.

NJ (00:31:45):

I take that as a huge compliment. I have a great memory of going into some Army training, and walking in one day with my motorcycle helmet, and having someone look up and say, "I really do not know who you are."

EW (00:31:56):

<laugh>

NJ (00:32:01):

The thing that I love about embedded systems is just- Well, you know what? I think it is in your book, Elecia, the first edition. You say, "The first time I turned a motor because I told it to, I was hooked."

EW (00:32:10):

Yeah.

NJ (00:32:13):

And that is what I love. I love the idea of just creating these enormously complex and amazing devices, out of some circuits and some few lines of code. So, yeah, I try to make my projects line up with work where I can, but if not, I just- When I was in grad school, I thought, "Hey, I need to learn OOP," and so that started journey of putting those notes together.

(00:32:42):

I had an experience in between my two years in grad school, where I sat down to- Because I was going to put a little project together, and realized that I had no idea where to start, if it was not on the development board we had used in our Embedded Systems class, in the IDE that we had been using.

(00:32:59):

So that started a multi-year journey to say, "Okay, if I was starting from scratch, where would I go?" Part of that journey took me into, "Okay, how do I actually put microcontrollers on a breadboard? What is the circuit that I need to be able to talk to these things?" I am no expert PCB designer, but in playing around with stuff, I feel like I saw behind the Iron Curtain, and realized that there is a lot to it.

(00:33:27):

It is not as difficult as it seems like at first pass. Was able to just lay out a couple of really cheap dev boards, that could get assembled by JLC for a couple bucks. And wanted to be able to share that with folks. So I am going to take a half an hour just to hopefully help share with them, that it is not as hard as it seems.

EW (00:33:51):

Which MCUs are you talking about?

NJ (00:33:55):

I am going to keep it really general, because it turns out that- I think unless you get into like application processors, the themes all end up being very similar. Which is that the microcontroller needs power, it needs a clock, needs a way to program it. And a lot of that stuff happens internally.

(00:34:16):

So you can load code onto and run code from an STM32, with nothing external to it except a regulated power supply. So I show- I am going to use that one because that is- Put together my last project, I was using that because I wanted to make a, not competitor, but an alternative to the Blue Pill, for folks that cared about whether or not their electronic devices were counterfeit or not. So I will be using that.

(00:34:49):

And then I have just been doing some stuff recently with the PIC, so I show that. But I try to stay very general, so it is just I got a couple of notes that I am going to walk folks through, to show them what, in general, what that stuff looks like.

EW (00:35:00):

Are you using documentation from the vendors primarily, or is it stuff you have synthesized?

NJ (00:35:07):

It is primarily stuff I have synthesized, because a lot of the talk is going to be tips on where to find parts, and how to use assembly services, and things like that to actually go into construction.

(00:35:19):

But definitely, as far as I have seen, every manufacturer in some form or capacity, when you pick a microcontroller, there is somewhere in the documentation where they say, "Here is the recommended circuit." And, JLC has got a bunch of great documentation, so they, like many others, have entire app notes devoted to just, "If you have got this microcontroller here, these are our recommendations for how to lay it out."

EW (00:35:42):

Are you going to talk about EAGLE, or some other schematic capture for using this?

NJ (00:35:47):

That is one of the things that I am going to have to say, "Hey, if you do not know PCB layout, we are not talking about it here." Actually, I do not even think I show any screen captures from my projects. I think I just googled for some generic PCB layout, for the spot where I am saying, "Here is where you take your circuit, and put it on a circuit board."

(00:36:05):

There are a couple other things like, "Hey, if you really got to deal with low noise analog stuff, or you are trying to make a USB connection and you are worried about high-speed signals, that is a topic for a different day."

EW (00:36:17):

Antennas too.

NJ (00:36:18):

Yeah.

EW (00:36:20):

Do you have a philosophy about slides?

NJ (00:36:23):

I try to use them as little as possible.

EW (00:36:26):

I try to avoid words-

NJ (00:36:27):

That is not very army!

(00:36:29):

<laugh>

CW (00:36:29):

Sorry. I have seen some Army presentations. <laugh>

EW (00:36:33):

Yes, I know <laugh>. I try to avoid words, and I try not to have it be the outline. But as soon as you said, "I have seen some army slides," and I am like, "You know, me too. And usually they are basically books in PDF form." <laugh>

NJ (00:36:46):

<laugh> Yeah. For as difficult as it is to get into West Point, and to complete ROTC, the army likes to cater to the lowest common denominator, as do many of the military services.

(00:36:56):

I have learned a lot over the last couple of years, in just what are effective ways of communicating information that people- And in teaching that- I think it is a really neat field this, the idea of science of learning, pedagogy, andragogy, how do people learn?

(00:37:20):

What I have read is just that that is actually pretty well studied, that the text in very specific ways can enhance a presentation, but otherwise it more often than not ends up competing with what the speaker is trying to say. And it is much more effective to be able to present a visual to someone as you are speaking over it, to try to relay information.

(00:37:43):

I got really excited about a year ago, with a organization called the Modern Classrooms Project, which is just one method of teaching, that tried to bring some more modern teaching practices to the classroom. They really recommended short lessons, as little as five or ten minutes. Because that is really all the attention span people have, if they have not specifically trained it.

(00:38:10):

What I ended up doing is, I have gravitated towards taking a landscape, eight and a half sheet of paper in OneNote, effectively that same size, and sketching out graphically what are the main points. If folks were to take a step back and look at this sheet of paper, they might not get all the details, but they could point to the landmarks and say, "Yeah, that was covered."

(00:38:36):

Sort of a cross between a mind map, or something that would just take the high points, and annotate them in a more graphical way. I try to keep myself, because I feel like once I- If I find myself spilling onto a second page, then that is an indicator that I am trying to fit too much content into my talk.

EW (00:38:59):

I often will try to balance what is on the screen, with what I am saying. For example, if I have a complicated slide, then what I am talking about for a while, is going to be more amusing, lighter, less technical. And if I have a picture of a monkey on a slide, I am probably talking about something very technical, and I just want them to engage. The monkey is there so that they do not get too bored.

CW (00:39:27):

The monkey is on a slide, on the slide? Is the monkey on a slide? Never mind.

EW (00:39:33):

The monk- Oh, I do not have a picture of that, but I will be making one. Yes. The monkey will be on a slide, sliding down a slide, on the slide.

NJ (00:39:43):

<laugh>

CW (00:39:44):

<laugh> I do not know where I- These techniques are very good. And I do not know where I- Maybe it was Elecia telling me what to do, back in the early days of when I had to give presentations. But being able to separate what you are saying, from the slide, was a revelation. It was like, "Oh, my notes and what is on the slide can diverge. I do not have to put all of my notes on the slide and read them, because what is the point of that?"

EW (00:40:11):

If the people you are presenting to cannot read...

CW (00:40:14):

Yeah.

EW (00:40:14):

Then they are not likely to be able to use the information you are giving.

CW (00:40:18):

So only put stuff on the slide, that cannot be conveyed in speech easily. Things that need to be visual, connections, things like that. And sometimes a list of bullet points if you are really...

EW (00:40:29):

At the end. Just to make sure they remember.

NJ (00:40:32):

Yeah. That is how I think of it too. I think of what is the piece of information I am trying to convey. For a talk, is it here is how you construct a for loop. Then I ask myself, "What is the thing that I would want to see, that hearing the speaker say the thing that I am going to say, what is the thing I would want to see, that would help me go, 'Oh, okay, I get it.'"

(00:40:56):

It might be a templated for loop, or it might be a little GIF of a for loop in action. Watching someone step through, here is how the index variable changes, and that you can see the program counter go back, with the little finger that points to where we are in the code, iterate that many number of times.

EW (00:41:15):

Going back to West Point, you personally went to a college, that prepares students for grad school or industry. Often industry. At West Point, the students are not being prepared to go to an industry job right away. It is like they already have a five year plan, whereas at most normal colleges, it is like, "Oh, I am graduating this year, and I have to have a job. Oh, no." Does that make your job much different?

NJ (00:41:55):

It does, definitely. I think the students, they still see themselves as engineers, and many of them have career goals that are not in the too distant future. The only requirement once they graduate West Point, unless it is changed, is five years on active duty and then maybe some amount of time in the reserves. So many of them are still thinking about really still being new professionals, and looking at these kinds of jobs.

(00:42:22):

The way where I think it affects it the biggest, and one that I am probably going to miss a bit when I leave West Point, is just the idea that even though I am teaching them about programming or electronics or physics, that education is serving the purpose of helping them become a qualified officer. Someone who is going to be able to take command of a formation and lead that formation well. You will be able to say that I am in charge of someone's son or daughter, their brother or their sister, and handle the tasks given to them, in a way that honors a soldier.

(00:43:11):

It is neat. I picked up a technique from coming in, from a couple of the older instructors, that they called "broadening." It was just starting the- Or someone called them "the military minute," sort of start class with either a current topic.

(00:43:25):

Or I end up spending a lot of my time discussing with them life skills that I feel like I have picked up. Perception, thoughts, and thought patterns that have really helped me. A lot of students end up telling at the end, that those end up being the one thing that they can remember about the course.

EW (00:43:47):

You had some questions you were going to ask us.

NJ (00:43:51):

Yeah! So let us start, maybe primarily to you Elecia. I want to ask first about how the books come. I have been seeing lots of fascinating discussions on the Slack, and we are super excited for the second edition. So how is it going?

EW (00:44:10):

It is going pretty well. Thank you for asking.

CW (00:44:13):

It is not a setup.

EW (00:44:15):

No, not exactly. It is supposed to go into the early release process on Tuesday, which may mean that by the end of June, it will be available on the O'Reilly website as early release. But that is just the first five chapters.

NJ (00:44:32):

And how terrified are you of that?

EW (00:44:33):

I am adding two more chapters, so there will be a total of 12 instead of ten. And yes, I do talk about it on the Embedded Patreon Slack, because it is so nice to be able to ask people like, "Do you have problems with this? Should I write about it?"

(00:44:54):

When I first wrote the book, I had all of the problems that I had ever had, but it did not occur to me. Some problems people have often, did not penetrate what I had done. It is so nice to be able to say, "Okay, so these are the titles. Which would you read? And does anybody care about localization <laugh>?"

NJ (00:45:23):

<laugh> Have you found yourself being able to draw a lot from just old projects and old notes? Or do you find that there are topics where you are like, "I really felt that I should have included this in the first edition, but it is not necessarily one that I know a lot about, and need to learn a little bit, before I am able to include this section in the book"?

EW (00:45:45):

I knew I wanted to include more design patterns, and those actually fell in pretty easily. Teaching the Classpert class helped a lot, because people asked more questions, and I prepared lectures, as they asked questions. So I had more material that way.

(00:46:00):

There was not a lot at the time, that fell out that I wanted to put in. I just did- That was the state of my brain entirely. But there are new things now that I wish I had known then, even if it was just the terms.

NJ (00:46:20):

Mm.

EW (00:46:22):

Yeah, it is going along. It should be out in the Fall.

NJ (00:46:27):

That is awesome.

CW (00:46:27):

Of some year.

EW (00:46:29):

No, of this year.

NJ (00:46:30):

<laugh>

EW (00:46:31):

Of this year <laugh>.

CW (00:46:32):

You hedge your bets.

EW (00:46:36):

No. Although I should have worked on it today. And yesterday, and the day before, instead of having a weekend.

NJ (00:46:43):

This was mostly selfish, but I will be I think transitioning out of the military in a couple years. Because I love teaching, and building electronics way too much, not to do it. But that will be the first time I have ever had to shop for a job. I did ROTC, and for the last 13 years, the Army has just told me where to go. So, I am a little bit terrified of that.

(00:47:05):

What, I am curious, the two of you looking back, reflecting back on your careers, what are some of the things maybe you would look for in an employer? Does the field really matter? Is it all just fun embedded stuff, regardless of whether you are working for ag or space or automotive? Or are there specific things that maybe you did not look for initially? Like companies that would send folks to conferences, or something like that that you prioritize now?

EW (00:47:38):

I like applications. If at the end of the day, I do not want to take home the application, even if it is something I cannot take home, like a robot or something, I do not want to work on it. Unless I really like the application, I do not manage to stay engaged.

(00:47:55):

And I wish I had stayed with some of my better bosses. I wish I had put a higher priority on having a really good boss, as opposed to having a really fun job.

NJ (00:48:10):

Mm.

CW (00:48:12):

Yeah. It is a tough balance. I echo her applications matter thing. There was definitely some jobs with some applications, that I wish I had not engaged with. And there were some that I was just bored with. They are totally fine, but they were just jobs, and writing code for a nebulous black box, that moved bits from one place to another and that kind of thing.

(00:48:36):

But those were- Sometimes the application and the company culture were not aligned. So you could have a very interesting to you application, that had some social impact that you were happy about, and the company was totally toxic. So that is really tough. That is the thing in recent years, that I have become more concerned with. I would not take an application that I am not comfortable with, but I am also concerned about, let us just say, executive staff.

EW (00:49:07):

<laugh>

CW (00:49:09):

Because I think some weird things have been happening in companies, in the last ten years. I think some, for lack of better way to say it, some weird people <laugh> have gotten into the upper ranks of organizations. And having encountered some of those people, and had to deal with them closely, I am now much more wary of corporations in general.

(00:49:33):

So if I were to go looking for a job, the full-time job, or a large scale contract with a company, that is beyond the two or three person startup size, I would be looking very carefully at what I could find out about the company culture. Who is running it? What are their attitudes towards certain things? Because I have become very cynical about that whole aspect of the industry. That is not a positive thing. Sorry <laugh>.

NJ (00:50:03):

What I would say is, it reinforces just the idea that, so much of the job is affected by the management kind of at all levels. But at least you were saying too, even your immediate supervisor, your immediate boss.

(00:50:16):

I feel like it is one of the things that I share with some of my cadets. That I say is in my experience, your soldiers can openly dislike you, but the impact that you have on an organization, being the actual leader, is still enormous. The way your personality and the things you value, are the things that matriculate down through the organization.

CW (00:50:37):

Yeah. And if there are people who are not comfortable with that, they end up spending a lot of their time protecting the people below them. Trying to deflect and diffuse some of that toxicity, or prop leadership gaps and things. But maybe they are not in a role where- They are a mid-level or lower level leadership position, and they are not able to right the ship against a senior manager, that kind of thing.

EW (00:51:07):

I would add to the list of things to consider when looking for a job. There are all kinds of jobs out there.

CW (00:51:17):

Yeah.

EW (00:51:19):

I have been pretty lucky, that I generally have fell into jobs where they worked for me. When I wanted to have a startup, when I was willing to put in a lot of work, I went to a startup. Even when things I did not know I needed, I got from work. But I have seen other people struggle, because they are just in the wrong job and they do not realize it.

(00:51:43):

If I had gone to- After HP Labs, I had the choice between going to a 50 person startup, that was all guys, and I knew was going to have problems with that. Or to a 300 person, reasonably well-established medical device, dealing with chemicals. And I had some weird ancillary skills that they were very excited about.

(00:52:13):

I went to the startup and I am glad, because now that I think about how medical companies work, of that size, medical companies of that size particularly, they do not work fast. And I was at a position that I wanted everything to go really fast. I wanted to be the hummingbird.

(00:52:33):

But now I am working on science gear. And they <laugh> said, "Well, we need this by October." And I am like, "Okay, I could have it for you next week, but October is fine too."

NJ (00:52:52):

<laugh>

CW (00:52:53):

2025. <laugh>

EW (00:52:56):

And then the next thing was, "And then we need to test it in the field in the Spring." And I am like, "Why would you need so much time? Once we get it in October, we should take it out next day."

CW (00:53:08):

Because they only have three boats, and they are all booked up until Spring <laugh>.

NJ (00:53:11):

<laugh>

EW (00:53:12):

This is not deep sea, so it does not have to go on the boat. But yeah. So if you find you are in a job that is not suited for you, do not give up on engineering or embedded systems.

CW (00:53:27):

Oh, yeah.

EW (00:53:27):

There are fast jobs and there are slow jobs. There are jobs where you will learn a lot, and there are jobs where you can coast on your skills, and still be useful to the company. And you will need more of these throughout your career.

(00:53:42):

There are times when you do need to recharge, and coasting on what you have done, is a good thing for six months. I would not say it is a good thing for five years, but if you have a family and kids, maybe all you need is the paycheck. And as long as you are doing enough to make them happy, and enough to make you happy, work does not need to be life.

CW (00:54:05):

Yeah. And to add to the culture thing, things change. <laugh> That is the other thing, is you can get into a company that is awesome, and be there for three years and super happy, and then suddenly it is, "What happened to this place?"

EW (00:54:20):

And that is okay.

CW (00:54:20):

And that is all right.

EW (00:54:21):

You do not have to stay.

CW (00:54:22):

Yeah. You do not have to stay. That is what I am trying to say. Coming from the Army, it is like, "Okay, this is very stable. I have been here for ten years." Maybe you are a person who stays at companies ten years. Maybe you are a person who, "Wow, two years is enough at any given company, and then I want to move on to something else." And that is something else to figure out about yourself.

EW (00:54:40):

At that point, I have learned a lot, and I have contributed a lot, and I am not learning anymore. So I am going to go find someplace else to play.

CW (00:54:48):

Yeah.

EW (00:54:50):

Do you want an engineering job, or do you want a teaching job?

NJ (00:54:55):

Yes.

CW (00:54:55):

<laugh>

EW (00:54:57):

Ah, that is a little harder.

NJ (00:55:00):

The current tentative plan is that eventually I definitely will teach. But right now I feel like I would like to be able to say, that I had some experience shipping products or equivalent. So the thought is that I would work for five or ten years somewhere doing that. And even that list of things I am looking at, a lot of them are organizations that have a teaching component to them anyways. And then go back and get a PhD, and find somewhere to settle in and teach.

EW (00:55:31):

Would you go back to Mudd and teach?

NJ (00:55:34):

If the school were not in Southern California, I would move in a heartbeat.

EW (00:55:39):

You mentioned that you teach your students and they become leaders. They do not go into industry and become engineers, they are already suited to basically management?

NJ (00:55:53):

Yeah, pretty much. It depends definitely on what they branch. So, there are lots of traditional branches, infantry and field artillery and military intelligence that folks go into. The Army, just a couple years ago, opened up the cyber branch, so a lot of my students end up branching cyber.

(00:56:14):

Their day-to-day job will definitely vary wherever they are at. But as a second lieutenant, they can expect to potentially be in charge of a platoon, which is anywhere from a dozen to four dozen soldiers, and all equipment that they need to do their jobs. Or potentially be on a staff somewhere, helping prepare reports or briefing majors and lieutenant colonels and colonels.

(00:56:43):

The vibe I get is that when folks transition out of the military, there is a concern from some of them, that they do not necessarily have marketable skills, depending on what their branch was. But <laugh> maybe way younger than they really has any business being, the Army entrusts <laugh> the officers with personnel and equipment, and the authority to get the task done that they have been assigned.

EW (00:57:16):

HP tried to make me a manager really young, and I am so glad they failed.

CW (00:57:20):

<laugh>

NJ (00:57:22):

<laugh>

EW (00:57:23):

But that was me. Part of me wonders if I had gone for the MBA, Master of Engineering, the split program that they wanted to sign me up for. What would my life have been like if I had done that? It has only been recently that I have discovered how much of a people person I am not!

NJ (00:57:51):

<laugh> Really?

EW (00:57:54):

I always thought it was just that I had a short temper, but the truth is I do not like anybody!

CW (00:57:59):

Wow! This is... <laugh>

EW (00:58:01):

Oh, I am sorry.

NJ (00:58:01):

<laugh>

CW (00:58:02):

Where is this coming from?

EW (00:58:04):

No, I mean, I think about the management that I have done, and I am happy with what I have done. And realizing that what I needed to do was different in engineering, than in management.

(00:58:17):

But it has taken a lot for me to admit I am not necessarily the best person to be a manager, because I do tend to get too attached to the people who work for me, and I end up antagonizing the people I work for. And so that is just not really the right spot for me. But knowing that after college, I definitely did not know that.

CW (00:58:47):

Antagonizing the people I work for, was my brand.

EW (00:58:51):

I know, but that is kind of the Harvey Mudd brand, really.

CW (00:58:53):

But they deserve it. <laugh> Going back to executives <laugh>.

EW (00:58:57):

<laugh>

NJ (00:58:58):

It is. You say, I cannot do this thing. I will prove to you I can do it.

CW (00:59:02):

Uh, it is usually the other way around. <laugh>

NJ (00:59:04):

<laugh>

CW (00:59:04):

You want me to do what? When? <laugh> Legally? <laugh>

NJ (00:59:11):

<laugh>

EW (00:59:14):

Okay. So let us see. Did you have any more questions for us?

CW (00:59:18):

He probably regrets the ones he has asked already. <laugh>

EW (00:59:21):

Yes. <laugh>

NJ (00:59:24):

<laugh> Yeah, I got one more. As long as I have got a captive audience. Tell me about your Mudd experience. When I was first on the Slack, I mistook how much time there was between our grad years. But I just love talking to Mudders. I could not believe there were two Mudders in the EECS faculty. I could not believe it, because the place is so dang small.

CW (00:59:45):

When did you graduate?

NJ (00:59:47):

2010.

CW (00:59:48):

So let us see, when was the last time we were there for the walk around? 2011, I think. So I think you guys had it good!

EW (01:00:00):

A cafeteria!

NJ (01:00:01):

<laugh>

CW (01:00:01):

Man!

EW (01:00:02):

Your cafeteria was fantastic! You had that giant makerspace, with the-

CW (01:00:07):

Yeah, the new makerspace thing.

EW (01:00:08):

Basketball court.

CW (01:00:08):

And the gym thing.

EW (01:00:09):

Oh my goodness. All we had there was a muddy field.

CW (01:00:12):

And some nice buildings.

NJ (01:00:12):

<laugh>

CW (01:00:12):

At least one more dorm that did not smell like the seventies.

EW (01:00:18):

You are short a pool. But realistically we could only swim in the pool when it was closed, and then eventually campus security would come and yell at you.

CW (01:00:27):

I never swam in the pool. I was supposed to take the swim test, but I managed to evade it long enough that they took away the requirement.

NJ (01:00:33):

Nice.

CW (01:00:33):

<laugh> Yeah, no, I think Mudd was definitely in a transition period when we were there, between-

EW (01:00:42):

Yeah, we still had Riggs, and he was a very different president.

CW (01:00:46):

Yeah, Hank Riggs. It was a very legacy of the eighties kind of thing, still. I mean, it was 1992 when we started, so it was basically the eighties. So kind of the seventies, eighties attitude toward engineering was still persisting. Some very, uh, how do I say this politely? Some very venerable and distinguished professors in many departments-

EW (01:01:07):

<laugh>

NJ (01:01:07):

<laugh>

CW (01:01:09):

Teaching classes that perhaps they should have moved on from.

EW (01:01:14):

They were the OGs, the people who started when the college started, in 1955.

NJ (01:01:17):

Wow.

CW (01:01:18):

Some of the people, were people who started when calculus started.

EW (01:01:22):

<laugh>

NJ (01:01:22):

<laugh>

CW (01:01:22):

I am being really mean. But no, when we started, there were definitely newer faculty were just starting to come in, who had fresh ways of teaching. It was very much a transition. So some of things were very good, but I think some things were beginning to be on the upswing of improving, and we kind of missed it.

EW (01:01:43):

What was the gender ratio when you went?

NJ (01:01:46):

My first year was Maria Klawe's first year. And that was a big, from what I understand, big focus. So it was climbing I think the whole time we were there, but it was, I want to say like in the 35, 40% range.

CW (01:01:59):

I think it was...

EW (01:02:01):

15 to 20 for us.

CW (01:02:02):

15, 20%. Yeah. It was low.

NJ (01:02:05):

Yeah. They made a lot of progress.

CW (01:02:07):

There was many things I loved about Mudd, and there are many things that took me years to forget about.

EW (01:02:13):

And many of the Mudders I met then, are still my best friends.

CW (01:02:15):

Yeah.

NJ (01:02:17):

I married a Mudder.

EW (01:02:18):

That is the way to do it.

CW (01:02:20):

<laugh> Yeah. When you were there, they had already revamped the curriculum too. Because the way they did the core when we were there was much different, I think.

EW (01:02:35):

Was it?

CW (01:02:36):

Yeah. Did they not redo all the core courses and stuff, and put a greater emphasis on- Oh gosh, I cannot remember what they did. But there was more flexibility about where you could take stuff. There was a little bit more greater emphasis on some humanities stuff, but also, I do not know if there were some courses they were thinking of not requiring for engineering, like P. Chem and other stuff.

EW (01:03:05):

We did not have to take P. Chem.

CW (01:03:06):

We did not?

EW (01:03:06):

Or O. Chem.

CW (01:03:07):

O. Chem? Oh, okay.

EW (01:03:07):

Those were on my list, but they could never fit it in.

CW (01:03:09):

All right. Well, I know there was some revamp, because I remember going down there. They were talking to alumni about, "Here is what we are going to do." And alumni were like, "You cannot do that. We had to suffer."

NJ (01:03:20):

<laugh> There is a phrase at West Point called "The Corps has", and it is just the idea that- Like I got the opportunity to go to Ranger School, and they keep talking about like, "Everyone went through the last hard Ranger class." So I try to keep an open mind about that stuff.

CW (01:03:32):

Yeah.

EW (01:03:34):

And for folks who do not know what Harvey Mudd is-

CW (01:03:36):

<laugh>

EW (01:03:36):

When we talk about the core- The school has only a few official majors, and they are science and engineering based. So when we talk about the core, these are the classes everybody has to take. And they are things like physics and chemistry and biology and math and CS.

CW (01:03:53):

Calculus and- Yeah.

EW (01:03:55):

So when we meet other Mudders, we know that they have that level, plus one third of their courses were humanities of some variety. So it is a weird engineering balance. But it also means that while Nathan has an engineering degree, and Chris has a math degree, they both can talk about the "bucket lab."

CW (01:04:21):

I did not do- No bucket lab was Z54. I never took that.

EW (01:04:24):

Ah, Nathan did.

CW (01:04:27):

No, I took one Engineering class, and noped out of that major.

NJ (01:04:32):

<laugh>

CW (01:04:34):

I have to work in groups? With people? On projects? No!

NJ (01:04:37):

<laugh> What I loved about this school too, is I used to tell folks on tours, they are the kind of individuals who are going to run circles around me at the chalkboard, and then two hours later, I am going to be seeing them zipping by on their unicycle, and we are going to grab a beer after class, or something.

CW (01:04:55):

Right.

NJ (01:04:56):

They are individuals who are crazy smart, but have not somehow lost that social side of them.

EW (01:05:03):

Yeah.

CW (01:05:06):

Expressive. <laugh>

EW (01:05:09):

Odd.

CW (01:05:10):

Okay. Yeah.

EW (01:05:10):

Let us just call it as it is.

CW (01:05:11):

Let us try not to say that.

EW (01:05:12):

<laugh>

NJ (01:05:13):

<laugh>

EW (01:05:14):

So do you have any ideas for future talks?

NJ (01:05:17):

Yeah, after the last Embedded Online Conference, I jotted down some thoughts. But I think it is going to be whatever is the project I have most finished, and I am most excited to share. I love something that excites me, that is just who I am. I want to be like, "Hey, check it out. Look what I just did. Let me show you how to do it."

(01:05:38):

I just love that the continuing of the maker culture, with more Arduinos and more Raspberry Pi variants, and now MicroPython and CircuitPython. I got to help take our Cyber Fundamentals class into a CircuitPython based project, which I was really excited about, to get these students some hands-on with the hardware. Anything that is just going to help folks build cooler stuff faster.

EW (01:06:13):

That is kind of a motto, "build cooler stuff faster." Nathan, it has been really good to talk to. Do you have any thoughts you would like to leave us with?

NJ (01:06:22):

Yeah, I will leave you with one, which is I think it was Isaac Newton who said something like, "If I see so far, it is because I stood on the shoulders of giants." So just a huge thank you to the two of you, for the work you do, helping folks learn embedded systems.

(01:06:38):

Huge shout out to individuals that I have had the opportunity to meet through the Slack, like Chris Svec and Phillip Johnston. And to everybody on the Slack channel who has put up with my inane questions. Thanks for helping out me and other individuals.

EW (01:06:57):

Our guest has been Nathan Jones, an active-duty Army officer, and instructor at West Point.

NJ (01:07:03):

Thanks Nathan.

(01:07:03):

Thank you both so much.

EW (01:07:06):

Thank you too, Christopher, for producing and co-hosting. Thank you to our Patreon listeners Slack group for all that they do. And of course, thank you for listening. You can always contact us at show@embedded.fm or hit the contact link on embedded.fm.

(01:07:20):

And now I have some facts, which may be of dubious quality, but I got them from a book, so I am going to call it facts. The book is "How to Speak Whale" by Tom Mustill, and it is about etymologies. So whales are cetaceans, that is dolphins and whales and orcas and all that. And cetaceans, if you go back to the Greek, means "large fish or sea monster."

(01:07:55):

There are two big kinds of cetacean. One is the ones that have teeth, and these are the Odontoceti, which literally means "sea monsters with teeth." Makes sense. And then there are the baleen whales, which a big part of the baleen whales are the Mysticeti, which according to the book means "sea monsters with mustaches." Anybody out there knows Greek, please let me know if that is true, because I want it to be true. These are all the baleen whales. They do the filter feeding. Sea monsters with mustaches. It is great.