492: Octopus Army
Transcript from 492: Octopus Army with Nathan Jones, Christopher White, and Elecia White.
EW (00:00:06):
Welcome to Embedded. I am Elecia White, alongside Christopher White. We are happy to welcome back Nathan Jones, to talk about writing a book proposal and some end of year retrospection.
CW (00:00:21):
Retrospection? Is that a word?
EW (00:00:22):
Introspection?
CW (00:00:22):
<laugh> Hi, Nathan. Welcome back.
NJ (00:00:28):
How are you two? It is so great to be back.
EW (00:00:30):
We are doing pretty well. Could you tell us about yourself, as if we met at a table at SuperCon?
NJ (00:00:37):
Yeah, I would say, "Hi, I am Nathan. I am here because I love electronics, and hopefully I am present something cool. I have been serving in the military for about 14 years now. But I am excited next summer to transition to civilian life, and maybe to get into teach and play with electronics full time."
EW (00:00:59):
Are you ready for lightning round?
NJ (00:01:01):
Okay. Talking fast. Talking fast. Right, I am ready.
EW (00:01:07):
Best dorm at Harvey Mudd College?
CW (00:01:08):
Oh, we asked him that last time.
NJ (00:01:12):
No, because Elecia forgot that I went to Mudd.
CW (00:01:14):
Oh, okay.
NJ (00:01:16):
My favorite was Atwood. I spent freshman senior year there.
CW (00:01:20):
Oh, boy. <sigh>
EW (00:01:21):
Boy, that says so much about you. I am sorry.
CW (00:01:23):
No, no, it does not. It does not. No, I was there freshman first semester, freshman year and sophomore year. The freshman was not so much fun, but that was mostly about the people. Next question <laugh>. Were you before or after Platt was eliminated as a place to eat?
NJ (00:01:45):
After. I ate all four years at the Hoch, and it was awesome.
CW (00:01:49):
All right. Well then I am not going to ask you about the worst food at Platt.
NJ (00:01:51):
<laugh>
CW (00:01:51):
What was the best food at the new place?
NJ (00:02:01):
Once I got over the vast array of options, I did enjoy me a good salad bar. But there was the "Freshman 15-" Well, I do not know if I really gained 15, but going to the dining hall and having so much food there was hard to turn down. I developed a bad habit of showing up and then walking through the grill counter, and grabbing a slice of pizza to decide, as I was eating that, what I wanted for lunch.
EW (00:02:27):
<laugh> Appetizer pizza.
NJ (00:02:31):
Yeah. And then one day I grabbed it, not realizing that it had just come out of the oven and it was scalding. Instead of trying to find a place to put it down, I told myself I just needed to ingest this thing as fast as possible. I am standing in the middle of the Hoch, chewing on these super hot bites of pizza, trying to blow it through my mouth and juggle it between my two hands. Five minutes later I am just covered in pizza sauce and sweating, because it was a little bit of an ordeal. <laugh>
CW (00:03:02):
I guarantee you that kind of thing never happened at Platt, because nobody was indecisive about or overwhelmed with options <laugh>.
NJ (00:03:08):
<laugh>
EW (00:03:12):
The Pudding Stone monster? Did you have that?
NJ (00:03:16):
It is not ringing a bell.
CW (00:03:17):
Yeah, that is fine. I think that was a us thing.
EW (00:03:22):
No, no, I had heard- Anyway.
CW (00:03:24):
Really?
EW (00:03:24):
Mm-hmm.
CW (00:03:24):
Oh, all right.
EW (00:03:27):
Okay. Do you have any New Year's resolutions?
NJ (00:03:31):
Yeah, I have been thinking about that. None that I like to call them "resolutions." But I do like to take the turning of the year to re-evaluate, and just make sure that my priorities are in order. What were the two? I had a difficult military detail over the summer that threw off my schedule a bit. So I am looking forward to getting back into a more regular physical fitness schedule.
(00:04:04):
And I am looking forward to doing more fun stuff with my kiddos. My daughter and I are going to be doing a Spartan race in June, so planning that. Hopefully planning fun little outings to make most of the end of our time here in New York. And a fun start to our time in Tennessee. What about you two?
CW (00:04:33):
I have not thought about it at all.
EW (00:04:36):
I did a New Year's resolution one year, that was a resolution every month to do something new and different.
CW (00:04:42):
It was every month or every week? It was every month?
EW (00:04:43):
Every month.
CW (00:04:43):
Oh, okay.
EW (00:04:44):
So one month, no sugar. One month, go out every week after dark. One month, just doing things I do not normally do. I am thinking about that again. It was kind of chaotic and fun.
NJ (00:05:00):
I used to challenge myself with 40- See if I can be 40 days, no hot showers. Or 40 days, no alcohol, or something like that. It was always a fun challenge, because the first ten or 20 days it is like, "This is cool. I got this." And then towards the end you are like, "Oh man. 40 days is long."
CW (00:05:17):
I do not know if I could go- No. No. Yeah.
NJ (00:05:19):
<laugh>
EW (00:05:22):
You did not say without a shower.
NJ (00:05:22):
Correct.
CW (00:05:23):
I know. I am just thinking how cold it is right now. Do not do that in December. Yeah, no, I do not do the resolution thing so much. But if I do have resolutions, they are more like I should try to be nicer to myself, or stuff like that <laugh>.
NJ (00:05:36):
That is a good one.
EW (00:05:39):
Measurable. Actionable.
CW (00:05:42):
What is that? Oh, measurable, actionable resolutions?
EW (00:05:44):
Yeah.
CW (00:05:44):
Then I will just be mad at myself for not making the resolutions, and fail the first resolution.
EW (00:05:51):
Okay. So moving on, since we are failing at lightning round.
CW (00:05:56):
You have got plenty of questions here.
EW (00:05:57):
Well go ahead then.
CW (00:05:59):
<laugh>
EW (00:05:59):
I dare you to ask that next one.
CW (00:06:03):
You have been working with the "Vo ha four."
NJ (00:06:06):
<laugh>
CW (00:06:06):
What are the worst ways you have heard that pronounced?
NJ (00:06:09):
Um.
EW (00:06:09):
Was it that one? <laugh>
NJ (00:06:15):
Yeah, that was the one. <laugh>
CW (00:06:20):
Okay <laugh>. Very briefly, what is it and how do you pronounce it?
NJ (00:06:25):
I would go with "Voy yeah," since it is named after Voja Antonic. Voja4. Yeah, that is the unofficial name, actually. It was the conference badge for the 2022 Hackaday Superconference. Officially it is just the 2022 SuperCon badge. But yeah, folks started calling it the "Voja4," because it emulated a 4-bit computer that Voja kind of created.
CW (00:06:53):
I did see that. Okay, yeah. That was very cool.
NJ (00:06:56):
Yeah. It was a lot of fun.
EW (00:06:58):
Actually that is a good thing to transition on.
CW (00:07:01):
Segue!
EW (00:07:01):
Segue. Yes. Because you like it so much, you are thinking about writing a book about it?
NJ (00:07:08):
I am. Yeah. I feel a little crazy for it. But, at the time-
CW (00:07:14):
That is a normal feeling when thinking of writing any book, I think.
NJ (00:07:17):
Yeah. Yeah, that is fair. You have to be a little bit crazy to embark on an adventure like that. I was actually teaching computer architecture at West Point right then, right when I went to the 2022 SuperCon. I had hugely mistakenly completely overhauled the curriculum, and was totally flying by the seat of my pants.
(00:07:40):
Showed up to the conference and here it is, the badge is a little 4-bit computer. I thought this was super cool. And it was neat. It was really neat over the conference to see folks having a ton of fun with it, doing things you never thought you could do with 192 nibbles of RAM, which was just what is on the architecture supports.
(00:08:05):
I thought, "Man! Someone needs to write a book about this. This should be the centerpiece of a computer architecture course." Because it was so cool to put your hands on it, and not have to learn about this sort of fake computer that you simulate on a computer maybe a little bit. But to actually have it in your hands was neat.
(00:08:29):
That idea always stuck with me. Then thinking about the transition next summer, I thought, "Well, I am probably the only one in the world that thinks this needs to be a thing. I will have some free time next summer, so why not give it a shot?"
CW (00:08:43):
Are they still available? Such that people could work through the book with one?
NJ (00:08:48):
Yeah. After the conference at some point, there were definitely some folks that wished they could have had one. Were unable to attend, and could not get one or something.
(00:08:58):
Voja, his design files were freely available. The components are- There is nothing super complicated about it. So I just contacted a PC fabrication company said, "Hey, how much would it cost to put this together?"
(00:09:15):
Voja was super kind in not only sharing those design files, but in helping me as I was working back and forth with the assembler, to figure out which parts we were going to use and those sorts of things. So I sent out an order and started selling them with his blessing.
CW (00:09:31):
Oh, okay.
NJ (00:09:33):
I have got a little Tindie store folks can go to, if they want to buy their own little Hackaday SuperCon Voja4 badge.
CW (00:09:39):
Cool.
EW (00:09:41):
That link will be in the show notes. You mentioned this to me and I was like, "Okay, I am happy to introduce you to the O'Reilly acquisitions editor I worked with, but here is the proposal."
(00:09:53):
Now you have written the very start of the proposal. Your proposed book title is "Introduction to Computer Architecture and Assembly Language Programming with the Voja4," or "Hands-on Computer Architecture with the Voja4."
(00:10:08):
Okay, so we have the "Nand to Tetris" book by Shimon Schocken, and I know you are familiar with that. Right?
NJ (00:10:19):
Yep.
EW (00:10:19):
Because you mentioned that yours would be an actual board, and not a simulation of a chip.
NJ (00:10:27):
True.
EW (00:10:27):
How is yours better?
NJ (00:10:30):
In truth, I do not know that it will be.
EW (00:10:32):
If yours were better, how would it be better?
CW (00:10:34):
<laugh>
NJ (00:10:35):
So I am excited to really explore this with the two you, number one. Because I feel like especially teaching computer architecture, it is not what it used to be even ten, 20 years ago. I am curious what your thoughts would be on what would be the objectives of a computer architecture course? What is the important stuff to learn?
(00:10:58):
I think the biggest differentiator for me is that physical device. There is just something so gratifying about holding the badge. It is made to sort of mimic the Altair 8800, which was one of the first personal computers you could buy. You had a whole bunch of lights on the front indicator panel, and switches that you had to manually toggle to enter opcode, instructions into the actual machine.
(00:11:32):
The badge has a row of 17 buttons at the bottom that you can hit and toggle to enter instructions. It has over 270 LEDs on the front of the badge. A whole chunk that show you the actual bits that matriculate through the ALUs. You can actually watch two 4-bit numbers get added, or shifted or what have you.
(00:11:52):
There is a whole section in the middle that highlights for each of the opcodes. You can watch the instructions, which instructions being executed. And then there are like 96 or something on the right hand third of the badge, that show you the contents of the memory. By switching to a spot in memory, you can make your own graphics, pretty much.
(00:12:17):
I have been thinking about this. I think folks really took to it, because you could enter all your programs in by hand. You did not need any actual connection to a computer in order to do it. When you went to run your program, you could step through a clock cycle at a time.
(00:12:35):
You can actually be the one to toggle the clock button if you wanted to, to watch your program execute one instruction. And then jump around and see what effect it had on memory, and what happened in the ALU. Or change the clock speed faster or slower. I think it made for a really engaging educational experience.
(00:12:55):
Like any good author, I have already thought about a second edition, even though the first one has not been accepted yet. I have already decided I was not going to change anything about the board for the first book. But doing something like this, making a board for the computer that is in "Nand to Tetris," with those same features that you could actually manipulate the thing by hand, and step through it a little bit at a time, I think would be a neat follow on.
EW (00:13:29):
Why would you not do that for the first one?
NJ (00:13:31):
I have spent a lot of my life biting off more than I could chew. I know enough at this point that to take what I think I can do and cut that down by three quarters, and then what is left with is probably going to be already way more than I am ready to sign up for.
(00:13:51):
You have gone through this twice now. Right? Writing the first book and then updating it for the second edition. Is it not always way longer than you ever thought it would take?
EW (00:14:04):
I never was going to write a second edition. I was never going to write a book again, after the first one. It was just so hard. So no, I did not think that way <laugh>.
NJ (00:14:14):
I thought that way. Like I said, I completely overhauled the computer architecture course. Because they were using Patterson and Hennessy, which I felt spent way too much time on pipelining and memory caching. At least at West Point, the computer architecture course was the prerequisite for the embedded systems course.
(00:14:32):
So I said, "Hey, I think we need to get more into maybe showing a gate level implementation of a computer. Talking a lot more about memory-mapped I/O and the interrupt system." I was really excited about modern classrooms at the time, so I completely changed it.
(00:14:46):
How long did it take before I started regretting it? I spent a spring semester picking the textbook and proposing it. I spent all summer rewriting all the lessons, and planning out my homeworks and things like that. I think it was probably a month into the class when I still had 20% of the course left to write, and had not made any progress because I was just trying to keep up with the students. I was like, "This was a mistake." <laugh>
EW (00:15:13):
When you taught the class, did you provide the boards? Other than having too much work, what did they think of it? How did it go? How did it go compared to past ones?
NJ (00:15:29):
Overall I got positive comments. There was definitely some folks- A couple of folks that I spoke to- I did not take any actual data, but anecdotally, some folks who in taking the previous iterations of the course, did not quite understand why some of the course material was there. Did not see necessarily the reason for it.
(00:15:48):
I went with a book called "Introduction to Computing Systems" by Patt and Patel. Because it was one of the few that I found that actually had what I felt like was an appropriate discussion of how memory-mapped I/O works, and how an interrupt system works. I think it was well received. I think they liked it. They put up with me. They were very kind.
CW (00:16:09):
What is the goal of teaching computer architecture? Beyond just having an understanding of how computers work, for developers and people working with electronics, which is a fine goal as a baseline. Is there something else that people should be getting out of it? Or that certain kinds of people should be looking at?
(00:16:35):
That is going to make what you write depend on are we targeting people who are going to work on computer architecture? Are we targeting just giving people a background? I am not articulating well what I am saying here.
EW (00:16:49):
No, I think you are right. Because it is not like I have ever really done computer architecture, other than some chip design, but that was still pulling Lego blocks.
CW (00:17:00):
At its most direct, knowing how to debug a program involves a lot of computer architecture, sometimes. Especially on a microcontroller. So I guess the question is who is it all for?
NJ (00:17:19):
We have identified a couple. Clearly if you intend to actually design chips, design a processor or something like that, then knowing intimately how that happens is very important. You identified- You said though, when you debug a program, sometimes it is important to know the architecture of the computer. Elecia mentioned needing a little bit of that when programming the microcontroller.
(00:17:48):
I share these thoughts, but I am curious if I could throw the question back at the two you. When has a knowledge of computer architecture helped you in your careers? What would you say, "Okay, if going back, if I had to take a course on computer architecture, here is what I would want in it."
CW (00:18:06):
Let me answer that a couple of ways. First off, the analogy I am thinking of is physics. Because physics keeps growing. And in order to become a physicist, you have to learn more than you did say 20, 30, 40, 50 years ago. But the basics are the same.
(00:18:23):
You still got to learn Newtonian mechanics. You still got to learn electrodynamics. You still got to learn quantum mechanics, and all that stuff that was invented in the early 20th century. Then after that, you have got to learn everything else.
(00:18:33):
I feel like computer architecture is very similar. You could start with the seventies, which is kind of what your approach is here with the 4-bit computer. But to get to a modern computer, there is a bunch of stuff now that is super complicated and advanced and weird. Modern physics level of complexity, and even involves physics at some level.
(00:18:56):
So I guess that is the hard part, is what do you include and what you take out. That is why I was asking about the audience, because some of that stuff you do not need to talk about it, if it is for basics.
(00:19:08):
For me, the basics are all I have ever really needed. And I got the basics from computers from the seventies. The application of that has almost always been knowledge about how the processor works, to a sufficient level that if I had to organize a program to be more optimal, I could take a stab at it.
(00:19:32):
So things like, "This processor has a cache and it is this big, and this is the working set for this problem. I should try to keep the cache full of that as much as possible, because that is faster than going to RAM."
(00:19:45):
Or like I mentioned with debugging like, "Okay, there are these registers. What do the registers mean? What are the levels of memory? How is the memory on this chip architected?" And that kind of stuff.
(00:19:58):
Beyond that, not a lot because I am not building my own systems very often. If I am involved with somebody who is building a system, they are more of an expert on computer engineering and architecture than I am. I am just keeping an eye out for what might be impacting me, I guess.
EW (00:20:18):
Having gone through the "Nand to Tetris" book, I mentioned earlier, recently, the thing that really struck me as things I wish my junior engineers knew, were more in the how to put a program together. Was actually less in the processor architecture and more in the how do you build a compiler. Not because I want them to build compilers, but because I want them to be able to identify where problems happen.
NJ (00:20:52):
Yeah.
EW (00:20:58):
I did not take microprocessors at Mudd, so most of my knowledge is from reading user manuals of many, many different processors. I think the AVR ones, the tiny AVR ones, have manuals that are just basically the course on how to understand computer architecture and then you can build upon that. But yeah, I did not take a class like this.
CW (00:21:31):
I did not either, and I was not CS at school, so I was not forced to. <laugh>
NJ (00:21:39):
I do not know if I took a specific computer architecture course. I did take micro Ps[microprocessors] at Mudd.
CW (00:21:46):
That is pretty close, right?
EW (00:21:48):
Yeah, I think so.
NJ (00:21:50):
You know what? It probably could have been, and I was so sleep deprived, I do not know. If I could say how much I actually retained from that class.
EW (00:21:59):
That one, you actually had to wire things together.
NJ (00:22:03):
Yeah, yeah, yeah.
EW (00:22:07):
Yeah. Looking back, I was not sure that that was the right way to go for that.
CW (00:22:10):
I did not take it.
NJ (00:22:11):
Oh, for a micro Ps class?
EW (00:22:13):
Yeah. Because every week you added a hundred wires, and at some point the first wire breaks, and you are just hosed.
CW (00:22:21):
<laugh> What department was that? Was that a CS class?
EW (00:22:22):
That was engineering.
CW (00:22:23):
Oh, well you guys.
EW (00:22:25):
Yeah, the engineering department liked to do things the hard way.
CW (00:22:28):
Weird way.
NJ (00:22:28):
Oh my goodness. To me, that is the drug that is embedded systems, right? It is so hard to get working that when it is, it is like this enormous dopamine rush.
CW (00:22:41):
Not anymore! Man, yesterday, let me tell you what I did yesterday. I am trying to make a GPS data logger and I am trying to do it as fast as possible, because I do not care. I have an off the shelf GPS that I got from Amazon, some no-name thing. I have a Raspberry Pi 2040, and I have been fighting with this for a week. I finally said-
(00:22:59):
Well, long story short, I want really high accuracy and precision timestamps for the data, which you cannot get without using the PPS pin on the GPS.
EW (00:23:08):
Pulse per second.
CW (00:23:09):
Pulse per second pin. But it is really hard to find anything in stupid embedded space that does that, without you cobbling it together yourself and getting the interrupt and keeping track of things. I did not want to do any of that, because in a hurry and I do not care. And I had not found anything.
EW (00:23:24):
Christopher went on winter holiday early.
CW (00:23:25):
I looked at CircuitPython. There is a lot of CircuitPython does GPS, nothing does PPS. There was a conversation on the Slack where somebody said, "I would be using MicroPython and it is great." And I was like, "I should check out MicroPython to make sure."
(00:23:37):
Lo and behold, there is a library that is part of the asyncio thing, which is in MicroPython, that does the PPS thing. Has a whole time thing, where you can grab a timestamp with microsecond accuracy-
EW (00:23:48):
It is like they thought of this!
CW (00:23:50):
From start to finish yesterday, Nathan. From start to finish. Finding this code. Finding the parts around my house. Putting it together. Including the time where I had to figure out how to get MicroPython to work at VSCode, because I did not know. And the time I had to go solder a wire on the board, because the PPS was not brought out to the header-
EW (00:24:10):
Just to an LED.
CW (00:24:11):
Was one hour! And I had it working.
NJ (00:24:12):
<laugh>
CW (00:24:12):
That is modern embedded systems, man <laugh>.
EW (00:24:20):
He and I are talking about this. I am flashing back to ShotSpotter- No, to Crossbow days, where we had inertial measurement systems and integrated them with GPS. That was before GPS was fine grained. That was when there was a military system and a civilian system. Of course, we had pulse per second, and we had all this timing. I am just like, "That is all just really, it is not that hard."
CW (00:24:47):
Oh, it is not that hard. It would have taken me a couple of days to do it from scratch, but it took me an hour!
EW (00:24:52):
I know. And MicroPython is totally the way to go. CircuitPython is awesome for starting. MicroPython is how you get things done.
CW (00:24:58):
I should say this is against my interests, because I bill by the hour.
EW (00:25:01):
Right <laugh>.
NJ (00:25:01):
<laugh>
CW (00:25:01):
So I really should have built it from scratch. But that aside. Yeah, no. Things are changing and it is weird.
EW (00:25:10):
There are a lot of Lego block things. Do you think this book will help people learn to work in that world?
NJ (00:25:20):
No.
EW (00:25:20):
How important is it for us to understand the underpinnings, when a lot of what we do is putting things together?
NJ (00:25:28):
I love that question. I think it is definitely at the heart of this. I would say from what I have read discipline wide, folks that teach computer architecture and that study it have this very same question. Like Chris was saying, the modern processors are so advanced.
(00:25:48):
At what point do you pick as your entry into that world? Do you start from first principles? Or do you just assume that hey, we are beyond that? Personally I think knowing that computers are really fast, dumb things is really important. The term I use sometimes with my students is I just call them "they are automated calculators."
(00:26:18):
If you take a Mickey Mouse calculator that can do addition and subtraction, and you just- Instead of having one spot to store a number, you have 4 billion. And you can do 40 gazillion instructions a second of those little math operations. And a couple of those memory locations that you can store to or map to a keyboard and display. That is all a computer is.
(00:26:40):
Knowing that is really valuable. Not just having someone tell it to you, but knowing a little bit about binary and digital logic signals. Then having someone say, "Check it out. Here is how we can construct a digital circuit that adds. Here is how we can construct a digital circuit that pulls data out of memory and pushes it to memory." And then just say, "This thing is a computer." That is valuable.
(00:27:07):
I am inclined to think that the next most important part might be like we have hinted at a couple of times. Knowing just enough below what you are doing, that you can understand what is happening. You can debug it if it goes weird. I feel like with embedded, you tend to need to know a few more than just a couple layers deep.
(00:27:30):
But the point is that if I am working at some level of abstraction, I can go a little bit deeper if I need to. Joel Spolsky gave me that idea. This idea that abstractions are useful, but they are often leaky. So it is important to know a little bit lower than what you are actually working in, in order to do that effectively. You not get stuck when something does not work.
(00:27:58):
I think for a real general computer science audience, especially folks that are going on to write maybe just web applications or enormous server programs or things like that, you do not necessarily need to know what the move instruction does. Or what all of the different operands are in x86.
(00:28:20):
But I think definitely for embedded it is important to know, like you said Elecia and Chris mentioned it too, when I am writing my C code, how does my C code map to the assembly that is being spit out. Not just instructions to registers, but also knowing how the application binary interface works. And knowing that certain assembly instructions are part of the function preamble or the postamble. Knowing why my processor has an eight clock cycle interrupt latency, and that sorts of stuff. Those start to get a lot more important.
CW (00:29:05):
Yeah, yeah, yeah, definitely agree with that. MicroPython aside, most development is still done the old-fashioned way with just better tools. So knowledge of that stuff is important. I think it is also important, you touched on it, for people working in technology to have computers be demystified a little bit.
(00:29:26):
Because you did say they are fast dumb, and they are fast and dumb. Getting faster all the time, but no smarter. People are talking about AI and all that stuff. I think there is a lot of mysticism around that like, "Wow, look at what computers can do now." And it is like, "No. They are still just adding. That is it." They are still just adding. That is all they do for the most part, add things and move things. Right? <laugh>
(00:29:47):
Just because we can do complicated things with that by doing those a billion times a second, does not make computers any smarter a priori, or more powerful as entities on a world.
(00:30:01):
I think that is important too, just for people to not think of them as magic. Both to not be afraid of them, but also not to be afraid of breaking things, and that kind of stuff. If you understand something at a deeper level, you are less afraid of it, I think.
NJ (00:30:17):
Yeah, yeah. I would say that is definitely the transition, when you start to transition out of a beginner hobbyist setting. I am thinking of the Arduino. You start to advance when- Or, I think that the biggest reason to learn more is because if I am following a tutorial but I do not know what is going on, the first time something does not work out, I am hosed, I am stuck.
(00:30:42):
So learning how to start to do some of those things yourself, helps me understand why I am looking at step number four in my tutorial, and if it does not exactly match the picture, do I need to be concerned about that, or how do I work around it?
CW (00:31:00):
Yeah.
EW (00:31:01):
In the O'Reilly book proposal, it asks you to talk about your audience, which as we have been doing. One of the things- Some of the questions they ask, is for you to note the roles of your audience.
(00:31:15):
You have been teaching college, but O'Reilly is trying more to sell to industry. Although I love that my book is used as a textbook. It is just so awesome. So what professional positions does your audience hold? What positions are they considering next in their career? And what knowledge do you assume they already have?
NJ (00:31:41):
I think I was coming from my perspective primarily. So my first thought was this being the book that someone who was teaching an introductory computer architecture course might pick. Because they liked the idea of teaching to something to be able to give the students a physical object to interact with.
(00:32:04):
Elecia, you led the conversation off with talking about "Nand to Tetris." Honestly, I like where that is billed in terms of- I would say that is the minimum set of knowledge that a general computer science, computer programming, population should know about computers. So I think that is the-
EW (00:32:28):
Is that a prerequisite to you? Or is that in parallel with you?
NJ (00:32:32):
No. I love "Nand to Tetris." The biggest things that I feel like I would still want to fix about it, are the computer that they sort of build up. It has very kind of a limited I/O, and they do not talk at all about interrupts.
EW (00:33:02):
Very much.
NJ (00:33:04):
I love the fact that after you built the processor, then you are in the second half of the book, you are writing the assembler, you are writing the little virtual machine that your compiler targets. Seeing that built all the way up is really, really cool.
(00:33:19):
And I think an important picture to get, that I would love for students to have if they were to graduate college as computer scientist or something like that. To know how the software I am writing, at least conceptually, how it all gets translated down into the instruction getting executed by the computer.
(00:33:42):
You brought this up at some point, Elecia, in terms of how much assembly to discuss. It definitely sounds like you are on the fence of like, "Man, I am going to talk about assembly as little as I can. Then we are going to talk more about how a language like C is converted into assembly. Maybe we will talk about reading assembly." What would be that piece for you that whatever computer architecture course you would want to take?
EW (00:34:11):
The important part about assembly is that it does make sense if you learn it. If you compile your code into a list file, and then you try to read the list file without having the C lines next to it, and you do not know the assembly language, it is not going to make any sense. It is like compiling into German. You have to learn German first.
(00:34:34):
So building up the assembly language from the machine code, from the byte codes and all of that, that is good for people to understand that there is a process to this. It is not random. There are choices people made, and the choices are explainable. When you go out to a processor that is not four bits, they are going to be different, but all the same things are going to be there.
(00:35:08):
I do not know. When I started, I had to- There were times when I programmed entirely in assembly, PIC. And you wonder why I do not like PICs.
CW (00:35:20):
That is interesting. Really? Huh.
EW (00:35:21):
But for a long time, the only time I really had to deal with assembly, was if I had to do fine tune optimizing in a loop. Even that was a matter of reading the assembly and modifying the C code until I got the assembly to be what I wanted.
(00:35:37):
Now? I guess my talk last summer at EOC did have some assembly in it, because it had to do with hard faults, and looking at the stack, and understanding how to put all that together. I guess that is what I would like from a computer architecture course.
(00:36:02):
People do not always understand what happens when things go wrong, such that they can look at the stack. So R1 is usually this, and there is a return register. And you can build up the stack frame, and how you build that up depends on your compiler and your processor. All of that, I guess, I want to be in the computer architecture course.
CW (00:36:31):
And you need everything in a computer architecture course, before you can understand that.
EW (00:36:36):
Yes, it is very- Do you start at the gate level?
CW (00:36:40):
Well. Okay.
EW (00:36:42):
"Nand to Tetris" did and I appreciate it. And yet I would not have learned Boolean logic from that.
NJ (00:36:49):
Yeah. The book is awesome, and they do a great job tackling what otherwise- If someone had pitched this book to me like, "Hey, we are going to start with a NAND gate, and we are going to finish writing essentially operating system routines. And we are going to show everything in between," I would be like, "You are crazy. That is going to be how many books?"
EW (00:37:08):
Yeah.
NJ (00:37:09):
So they managed to eke out this incredibly optimistic and ambitious objective. But yeah, it is very- I think they cover digital logic in like one or two chapters? That is a full three credit hour, four credit hour in many institutions, semester long course.
EW (00:37:29):
There was a lot of, "And then draw the rest of the owl" in the book. Yeah. Which as a course that is at the end of a curriculum that builds in, that puts things together, that would be great. If this was your first introduction to compilers, at some point you are going to want to just, I do not know, spend all night in the CS lab.
CW (00:37:55):
That is a mistake. Yeah, no, no, you cannot teach people that way. <laugh> That is like having a synthesis course at the beginning.
NJ (00:38:04):
Yeah. Yeah. I could see it as the book- In my head, you are using it, you are chunking it up into probably three or four different courses. We are saying, "Hey, we are going to work through the first two chapters on this for our digital logic course."
(00:38:19):
"But we are going to build up these components so that there is a common theme. So at the end, if you continue your operating systems course, you are actually writing operating system routines for a processor that you built, basically."
EW (00:38:33):
They mentioned that it was better as a year long course.
(00:38:36):
Okay, let me go back to this book proposal. A marketing description. One to two paragraphs. Summarize what the book is about, like you would pitch it to a potential reader on the back cover.
(00:38:49):
I have to warn you, this actually is what ended up on my back cover. Because they never came back to me and said-
CW (00:38:55):
<laugh>
NJ (00:38:56):
<laugh> No way.
EW (00:38:57):
"Do you want to update this." So be careful with this one. So, yeah. How are you going to pitch this book to potential readers, who do not know what the V O J A 4 is.
NJ (00:39:10):
Real quick, I had a similar experience. Actually, I gave a talk at the 2023 Hackaday SuperCon about this badge. I thought it was cool. I wanted folks who had never had a computer architecture course, and did not maybe know what they were doing when they were punching buttons, to know, "Hey, this is what goes into it. Here is how it all works."
(00:39:29):
The proposal, the deadline was almost due and I was like, "Oh, shoot." I think I was on vacation at the time. So I submitted it on my phone. They needed a speaker picture. The most recent picture that I had taken, was a super goofy one of me screaming with my kids pretending we were, I do not know, warriors or something like that. I was like, "I will fix this later," and I completely forgot to.
CW (00:39:52):
<laugh>
NJ (00:39:53):
So there is a YouTube video of that conference talk, and the little splash screen on the slide is me, the most ridiculous face, I am like screaming at your toolbar basically.
(00:40:04):
Did you write your own marketing description, Elecia? Because I feel like that would be a real challenge to have to physically remove yourself from your own perspective, and put yourself in the perspective as someone who is going to make it sound like just the greatest book ever.
EW (00:40:25):
The whole book proposal is kind of a test. If you cannot fill in all the boxes, you probably cannot write a book. So it does not have to be great. It is not the end. But they do need to know that you can pitch it in a way that is approachable.
NJ (00:40:48):
Yeah. I think I would highlight what we talked about so far. The fact that the book is pitched to be an introductory piece on computer architecture. Really, really emphasize the ability to interact with the computer, as you are holding it in your hands.
(00:41:11):
The other thing I thought about putting in there, just for my own personal interest, because I thought it was really cool when I was reading a lot about computer architecture, is showing all the different design trade-offs in terms of the instructions that architecture.
(00:41:28):
What instructions do we include? Do we exclude? What are the consequences of that? How do we encode all of these into the actual ones and zeros of our instruction? Do our instructions, do they operate on values in memory? Are they restricted to just what is in a register? Or is it even a register machine? Is it just operating on a stack?
(00:41:52):
I think some of those stuff was- I do not have the utility. Well, the utility might be just the fact that with advances in computing technology, we might find ourselves circling back around to first principles and asking ourselves, "Is this the most effective means of constructing a computing device?"
(00:42:11):
Especially with quantum computing and photonic circuits and things like that. I think there is potentially a need to- You might find that computers are constructed completely differently to take advantage of those technologies. So that is the other thing I was thinking about putting in the book.
EW (00:42:33):
One of the things that I wanted for my book, because it was how I read nonfiction, was that I wanted it to be something you could take to the beach. It was an enjoyable read. That was a big thing for me. It sounds like the physicality of the board is a big thing for you.
NJ (00:42:55):
Yeah.
EW (00:42:55):
Is there anything else?
NJ (00:42:57):
No. I think that is the big one. That is the central selling point and we will see if anyone else likes it.
EW (00:43:05):
What if somebody does not get the board? Is the book not useful?
NJ (00:43:10):
That is an excellent question, that I am currently thinking options through on. I think the best answer is going to be that they will interact in that case through a simulator. I believe someone who attended the conference did write a full simulator for it.
(00:43:34):
I think that would probably just be something that I would make sure I suck up, and becomes part of the book materials is, "Hey, if you do not want to, do not have the funds to, spend on the board or something like that, then you can still interact with this little piece of software."
EW (00:43:50):
You need to get one of those little envelopes in the book, where it comes with the board. Like the CDs used to come with the boards.
NJ (00:43:57):
When was the last time they did that?
EW (00:43:59):
That has been a while. One of the things that O'Reilly told me that I found very useful, was that dumb people do not read books.
CW (00:44:11):
<laugh>
EW (00:44:13):
So you never really- While you need to explain it to someone, you have to be really careful not to make them feel dumb. And you have to be aware that they may be reading this for their own personal enrichment. It may not be an assigned college textbook. So how are you going to keep them engaged without baby talking?
NJ (00:44:40):
It is neat that you brought that up. Because it is hard. I feel like with a static medium like the book, it is hard to find where to start. And I think some folks find themselves in positions where they are moving that first goalpost further and further towards fundamental concepts. Because there is just this concern that wherever spot I am going to pick, someone is going to jump in and feel like they are over their heads.
(00:45:07):
I think building off of what we have discussed, I am going to assume that the reader, if not having taken a digital logic course, is aware of some basic digital logic fundamentals. A lot of computer architecture books will, if they are worried about that, will put an appendix in the back where it is like, "Hey. Here is a review of Boolean logic and binary numbers."
(00:45:31):
I like to think my conversation or my writing style is pretty conversational anyways. I think that is a gift that I got from my parents. My dad is a psychologist and my mom taught middle school English her whole career.
(00:45:50):
I used to gripe and moan, because I would score higher on the verbal portions of my SATs and GRE than I would on the math stuff. I was like, "I am an engineer! This is- What is going on here?" But she actually, a couple weeks ago, she was like, "Hey, you are pretty happy about that now, are not you?" And I was like, "Yeah." I think one of my strengths of this one is that I can communicate the difficult concepts more effectively than others.
EW (00:46:18):
It is a skill. Yes. It is one that Harvey Mudd College does try to encourage.
NJ (00:46:28):
Yeah.
EW (00:46:31):
What did you concentrate in?
NJ (00:46:34):
I got my degree in engineering.
EW (00:46:36):
No, no, no. What was your humanities concentration?
NJ (00:46:39):
Oh. God.
EW (00:46:42):
Other colleges call them minors.
NJ (00:46:44):
It was probably something music related.
EW (00:46:47):
Cool.
NJ (00:46:47):
Yeah. I played the drums going through high school and college. I still have a little electronic kit in the back, that I have not pulled out in years.
(00:46:53):
Okay. Last question I have got for you, Elecia. In terms of timeline, how long did you need to budget for the first book?
EW (00:47:03):
A year.
NJ (00:47:04):
Okay.
EW (00:47:06):
It was a strange year. I worked about half time, maybe a little more. I worked on the book a lot! Because personal life meant I did not really want to leave the house. Consider how much work you think it will be after you do the outline, and then multiply it by three. Then when that seems like an absurdly long time, know that you are still underestimating.
NJ (00:47:38):
It is like how I order food for a party. I plan a number of amount of food and then I figure I need to go 20% over. Then I forget that I did the 20% over, so I do 20% over that. And I do that a couple more times. Then there is way too much food for the party.
EW (00:47:52):
Yeah. It is tough. You have to stay motivated, but I think you are already really good at that. You have to figure out how to balance that.
(00:48:05):
At the time I was doing engineering work as well. If you are also doing writing work or teaching work- Well, teaching work actually would help. Because for my second edition, having taught "Making Embedded Systems" a few times, I got a lot more material and I knew what the questions were.
(00:48:23):
I think overall the weakest part of your book is the name of the board.
NJ (00:48:30):
<laugh> What would you call it?
CW (00:48:31):
Mm-hmm. Well, it is a very specific thing.
NJ (00:48:35):
Mm. Okay.
EW (00:48:37):
I would call it "with a 4-bit processor" or "with hardware." Or something that did not look like- A lot of the O'Reilly books are like, "React! With sparkle, fun, unicorn poop."
NJ (00:48:53):
<laugh>
EW (00:48:56):
If I do not know what "unicorn poop" is, I just do not look.
CW (00:48:59):
Yeah. But those are all real things that people will recognize.
NJ (00:49:02):
Yeah. But definitely in this case though, right? If-
CW (00:49:04):
No offense.
EW (00:49:04):
<laugh>
CW (00:49:04):
No offense to the Voja4. But people are going to see that and they mean nothing to most people. Yeah.
NJ (00:49:11):
Right! Right. Specificity helps if the specificity causes recognition, and if it does not, then it alienates.
EW (00:49:23):
Yes. It was alienating to me. I did not want to tell you that before the show, because I wanted to understand more what you were coming from.
NJ (00:49:31):
You wanted to surprise me within the middle of the show.
EW (00:49:32):
It is a big shock!
CW (00:49:33):
"Hands-on computer architecture" or "Computer architecture from-"
EW (00:49:38):
With blinking lights!
CW (00:49:42):
From. From. With, from something.
EW (00:49:43):
Um.
CW (00:49:45):
From scratch. From.
EW (00:49:46):
Coming from scratch?
CW (00:49:47):
Except Scratch is a thing. We cannot say that.
NJ (00:49:49):
"Something, something, computer architecture, we win."
CW (00:49:49):
<laugh> "Computer architecture for fun and profit."
NJ (00:49:56):
<laugh>
EW (00:49:59):
Okay. I have edited your book proposal with notes I took during the show.
CW (00:50:02):
<laugh>
EW (00:50:02):
Good luck with that.
NJ (00:50:06):
Thanks.
CW (00:50:06):
<laugh> She means with her notes.
EW (00:50:10):
With my notes. No. I think the book proposal is good. I think you have a lot of really good points to make. While I like the "Nand to Tetris" curriculum, the book was repetitive and yet did not have the information I wanted. So there was some difficulty there. I would absolutely look forward to reading your book. I did put my name down as a potential reviewer.
NJ (00:50:36):
Oh. Thanks for that.
EW (00:50:38):
But I hear that you took a survey of our Patreon supporters-
NJ (00:50:43):
I did!
EW (00:50:44):
Regarding this very show. Well, not this show, but Embedded as a whole. What did you ask? And what did you find out?
NJ (00:50:53):
Did you not look? You had to have looked at it?
CW (00:50:54):
<laugh>
NJ (00:50:55):
No?
CW (00:50:56):
No. I did not look at it.
EW (00:50:58):
I did open the link. But I did not read it, other than to make sure that it was legit.
NJ (00:51:04):
<laugh> I was not like Rickrolling people.
EW (00:51:07):
Yeah. Basically. I am fine if you Rickroll people. I just want to know, so I can watch.
NJ (00:51:14):
Yeah. I do not know. I just thought it would be a fun thing to do, here at the end of the year, to just do a fun little survey. Every question was very serious though. So this might be a boring segment for- There is lots of data. Lots of data.
(00:51:28):
The first thing I wanted to know, I wanted to know what people's favorite episode title was. Because that is an important grabber to get them into the episode. Did the two you have a favorite from the last year?
CW (00:51:45):
See, the problem with things like this, is that people assume that we have any memory of anything that is happened on this show, beyond the show we are currently recording.
NJ (00:51:52):
<laugh>
CW (00:51:52):
I could not tell you a single title offhand. Nope. I cannot even tell you last week's. Yep. No. I got nothing.
EW (00:52:03):
"Sidetracked by mining the moon." Oh no. It was-
NJ (00:52:06):
That is a good one.
EW (00:52:06):
"It is all chaos and horror." That was one of my favorites. We do have an Excel sheet that lists all of the episodes, which is really helpful for questions like these. What did you have on your list?
NJ (00:52:22):
I put them all, from 2024. The crowd favorite was "Wait until Physics has Happened."
EW (00:52:29):
Oh. Yeah. Okay. That was really recent too.
NJ (00:52:32):
Yeah, yeah. About the robot course, right?
EW (00:52:38):
Yeah.
CW (00:52:38):
Yeah.
NJ (00:52:38):
Yeah. I think a close second was "Math is not the answer." <laugh>
EW (00:52:46):
<laugh> So seldom is. Yes.
CW (00:52:48):
Math is always the answer!
NJ (00:52:49):
<laugh> Right.
CW (00:52:49):
Sometimes the question too.
NJ (00:52:53):
That was Philip Koopman. My personal favorite was "Collecting my unhelpful badge." I just love the visual. <laugh>
EW (00:52:58):
<laugh>
NJ (00:52:58):
All right, next. I was again, very serious. Was curious if in the future, Elecia, you were arrested for raising an army of ferocious animals on your house. What animal do people think-
CW (00:53:18):
<laugh>
EW (00:53:19):
Otters.
NJ (00:53:19):
You would be raising? And the options were octopi, snails, squirrels, or cats. Overwhelmingly, if people were going to dime you out for raising your own army, it would be an army of octopi.
CW (00:53:37):
Well, that is good.
EW (00:53:37):
Yeah. That would be-
CW (00:53:39):
That is a good- We are going to add that to the lightning round rotation.
NJ (00:53:44):
<laugh> I maybe influenced by your recent art installation, right?
EW (00:53:46):
Yes.
NJ (00:53:46):
That was very octopi influenced. Yeah. Honestly, it is a great choice. They are highly intelligent animals, with the suctions and the camouflage. I think you had a very terrifying army.
EW (00:54:02):
Oh yeah. Yeah. They have some- Yeah. They are cool. Octopus. Yes. Okay. Octopus Army.
NJ (00:54:11):
Yep. Next I asked if folks had a favorite quote or moment or guest from 2024. There was such great feedback from folks, just saying that it was hard to pick, they liked it all. A couple of folks singled out Philip Koopman and Helen Leigh and Dr. Colleen Lewis, who was on "Reference the same dog object."
EW (00:54:33):
Right. That was fun.
NJ (00:54:35):
And Kirk, just a week ago or two weeks ago, on electronic music. And there is a great reference that someone put here from Colleen Lewis's episode, where they just typed out the transcript where they said, "Elecia: You talk about a dog hardware running cat software. Chris: I think that is not going to help. Elecia: No, it is definitely not. Foxes are cool. Okay. Changing subjects." <laugh>
EW (00:55:07):
<laugh> I wonder if we should have named that show "Foxes are cool." <laugh>
NJ (00:55:15):
Just a stupendous moment. Wonderful. Next, I wanted to ask, "Which quote best describes Chris?"
CW (00:55:24):
Oh, no! I am going to take the headphones off.
NJ (00:55:28):
The options were- <laugh> No, stick with me. The options were, "Those people who think they know everything, are a great annoyance to those of us who do."
EW (00:55:30):
<laugh>
CW (00:55:37):
Wait. Am I supposed to be somebody who thinks they know everything? Because I do not.
NJ (00:55:41):
I think the ambiguity is fun. We do not know at this point if you are the one speaking the quote.
CW (00:55:45):
Well, either way-
NJ (00:55:46):
Or in one of the two groups.
CW (00:55:46):
I am not super happy with the implication there. But okay. All right.
NJ (00:55:51):
Number two, "Do not anthropomorphize computers. They hate that."
EW (00:55:54):
<laugh>
NJ (00:55:54):
Number three, "I was taught that the way of progress was neither swift nor easy." Or four, "Beware of bugs in the above code. I have only proved it correct, not tried it."
EW (00:56:10):
<laugh> Okay. Which one of those did-
CW (00:56:11):
Oh! Oh, boy <sigh>.
EW (00:56:11):
Folks think best represented Christopher.
CW (00:56:14):
I think I am going to be unhappy no matter what. <laugh>
NJ (00:56:19):
<laugh> All good things, Chris. All good things. With 50% of the answers it was, "Do not anthropomorphize computers. They hate that."
CW (00:56:26):
Okay. Good. <laugh>
NJ (00:56:29):
Which I think I get that from Andrei From The Great White North on the Slack channel. There was also a write-in response, because folks could do that. One person decided to attribute the quote to you, "I hate computers."
EW (00:56:42):
<laugh>
CW (00:56:45):
I do say that frequently. More frequently than people realize, because Elecia has to hear it verbally, quite often.
NJ (00:56:53):
We spent five minutes in the middle of this episode talking about that.
CW (00:56:55):
<sigh> <laugh>
NJ (00:56:55):
It is an endearing quality, Chris.
CW (00:57:01):
Yeah. You cannot anthropomorphize them, but you should not like them either.
NJ (00:57:05):
That is right. Keep a healthy distance. Next was, "What was something you learned from the podcast this year? Or how did it benefit you?" There were some great answers here. Someone said, "There is more to checksums than I knew."
CW (00:57:19):
<laugh> Yes. Well, that was true for all of us.
EW (00:57:22):
No idea on that one. Yeah.
NJ (00:57:24):
Yeah, right. I think you actually said at the start of that, you were like, "I do not know exactly how we are going to feell an hour on checksums and hashes, but here we go." <laugh>
(00:57:33):
Someone said they love seeing just the real stories of professional engineers, engineers that struggle in their work. They feel like they were pretty new to embedded software, so they say it really helps them with imposter syndrome.
(00:57:46):
Someone said it makes their time doing dishes fun.
CW (00:57:50):
<laugh>
NJ (00:57:54):
Let us see, what is a good one? Some said, "The Slack community is great." They learn as much from the podcast as from the Slack. Someone said they liked learning just the importance of taking care of themselves. That was cool. I will send you this whole thing of course, so you can read through them all if you want.
CW (00:58:10):
Yeah.
NJ (00:58:10):
Next I said, "In 2025, embedded.fm podcast listeners and Elecia are shocked to hear Chris admit, on air, that he actually likes-"
CW (00:58:21):
God! No! <laugh>
EW (00:58:25):
Let us see. AI.
NJ (00:58:26):
No, this is good.
EW (00:58:27):
Computers. Rust.
NJ (00:58:32):
This is too easy. Oh, I did not think of Rust. I had Tabasco, ChatGPT, computers or Bob Ross.
EW (00:58:41):
Bob Ross is easy.
CW (00:58:42):
Yeah, two of those are easy. Now the other two are not likely.
EW (00:58:46):
Do you like Tabasco?
CW (00:58:47):
Tabasco is fine.
EW (00:58:49):
It is fine, but I do not like it.
CW (00:58:51):
I do not reach for it. But I am not-
NJ (00:58:54):
There are far better hot sauces.
EW (00:58:56):
Yeah.
CW (00:58:56):
If it is the only thing available and I need a hot sauce, I guess. Bob Ross. Yeah, we watched a ton of Bob Ross when the pandemic started <laugh>.
EW (00:59:03):
<laugh>
CW (00:59:06):
It was on YouTube. It was like eight o'clock at night and we were all stressed out. It was like, "There is a marathon of Bob Ross. Let us watch an hour of Bob Ross."
NJ (00:59:14):
That feels like it would be very relaxing.
CW (00:59:15):
It was. It was very weird.
EW (00:59:17):
Yes, it was weird. But relaxing.
CW (00:59:22):
"Happy little trees."
EW (00:59:22):
Nice. What is this? The other one is like, "A wonderful accident," or something like that.
CW (00:59:29):
"Happy accidents."
NJ (00:59:30):
"Happy accident". There you go.
CW (00:59:31):
Okay, so what did people choose?
NJ (00:59:33):
Overwhelmingly, Chris, folks would have been floored- Nearly 60% said they would be floored next year if you admitted to actually liking computers.
CW (00:59:44):
<laugh> Well. It is complicated.
EW (00:59:46):
<laugh> Relationship status. It is complicated.
NJ (00:59:51):
Yeah. This one also had some really good write-in answers too, by the way.
CW (00:59:54):
Oh, okay.
NJ (00:59:56):
Someone said they would be really surprised if you admitted to liking writing drivers. Someone was surprised if you would admit to liking Swift.
CW (01:00:03):
Oh, I do like Swift.
EW (01:00:05):
Yeah, no.
CW (01:00:06):
I like Swift a lot.
NJ (01:00:07):
Oh. The last person was really surprised or would be surprised, if you admitted to liking PIC16s.
CW (01:00:13):
Never used one in my life, so I do not know. But yeah, no, Swift. Swift I really like, so you can be surprised. No, I did a lot of Swift development a couple, three years, ago. Have not done any since, but it was cool.
NJ (01:00:26):
Do they consider that one of the memory safe languages, or is that not?
CW (01:00:29):
Yeah.
NJ (01:00:30):
Okay.
CW (01:00:31):
Yeah. And they have a very clever, well, not clever, but a very interesting way of solving that problem that is cleaner than other things. But it requires it to be object oriented pretty much top to bottom, so that it can keep track of stuff.
(01:00:44):
But anyway. Yes. Very, very funny. <laugh> Yeah, no. And ChatGPT, that is not happening.
NJ (01:00:53):
<laugh> There are a lot of neat uses in education. I was talking to one of my students the other day about them using ChatGPT to summarize long readings that they did not have the time for, to help them come to class somewhat prepared.
(01:01:06):
I have had students say that they use that to- They ask ChatGPT to generate practice problems for them. And then to help check their work, or walk them through the solution.
CW (01:01:17):
I am sure that is all useful. <laugh>
NJ (01:01:23):
<laugh> I can actually hear you biting your tongue.
CW (01:01:24):
<laugh>
NJ (01:01:24):
All right. Next I asked, "What topics do you think Elecia and Chris should explore next year?" And "Is there anyone that would be cool for them to have on the podcast?"
CW (01:01:36):
Ooh, cool.
NJ (01:01:37):
Yeah. Someone said, "It would be really interesting to explore higher level languages on embedded devices," which is also something that came up a little bit ago in this episode.
EW (01:01:46):
This is somebody who wanted to Rust, was it not?
CW (01:01:49):
Swift is coming! Swift is coming! There is an embedded Swift. They have got a pilot project for a few processors.
NJ (01:01:55):
I think it is a great question, right, as things get faster and more capable.
EW (01:01:58):
Yeah.
CW (01:01:58):
MicroPython and CircuitPython are part of that. So, yeah.
NJ (01:02:00):
Yeah.
EW (01:02:01):
Oh. I really enjoyed working with MicroPython. I recompiled it and added drivers to some of my hardware, so I got pretty deep into MicroPython. I really enjoyed supporting the scientists who were using the Python aspect of it.
NJ (01:02:15):
Yeah, yeah. It is getting to the point where even if you are making a large product and you are going for one of the cheaper processors, it is still going to be capable of running something like this.
EW (01:02:32):
Yeah.
NJ (01:02:32):
Someone wanted to know if Pooh will ever find the North Pole. I think that is an important question that should be answered.
CW (01:02:40):
<laugh>
EW (01:02:40):
I do not think so.
NJ (01:02:44):
They find a pole.
EW (01:02:46):
Yes. Yeah.
CW (01:02:46):
Oh yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah. I remember that.
NJ (01:02:48):
It is definitely not the North Pole.
CW (01:02:50):
I do not know. It is a slow going- What? Two pages, five pages a year is a very slow pace.
EW (01:02:58):
<laugh> I have both books sitting there. Or, I have two books, two Pooh books, sitting there. Because I wanted to make sure I would have the second one when I finished the first. We are only halfway through the first.
NJ (01:03:06):
<laugh>
EW (01:03:06):
It is like 500 episodes. We are still not really that far. <laugh>
NJ (01:03:13):
It is like the flip book.
CW (01:03:14):
Yeah. That is right.
EW (01:03:15):
Yeah.
CW (01:03:15):
It is the flip book.
NJ (01:03:16):
<laugh> Chris, you got to start on page one and then we will just finish it some point in the future.
(01:03:21):
Next, I wanted to know how folks think Elecia would answer this question. So Elecia I will pose this to you, "Elecia, would you rather have to speak in rhyme for the rest of your life? Or have to speak in riddles for the rest of your life?"
CW (01:03:36):
<laugh>
EW (01:03:40):
I think it is time to admit to rhyme.
NJ (01:03:45):
<laugh>
EW (01:03:49):
For riddles are fun, less than puns? Oh, that did not work. Sorry.
NJ (01:03:58):
Admirable. That was phenomenal. <clap>
CW (01:04:00):
Expecting you to work "crime" in there somewhere.
EW (01:04:02):
Ohh, I should have sang it.
NJ (01:04:06):
Yeah. 55%, so just over half, that you would prefer to speak in rhyme.
CW (01:04:10):
Riddles are hard, because you got to come up with a lot of stuff.
EW (01:04:14):
If you had had puns in there- If you had had, "Every sentence has to have at least one pun," I could have done that, over rhyme.
CW (01:04:20):
<laugh>
NJ (01:04:22):
Okay. Yeah, yeah.
EW (01:04:22):
Which you should know, since you got some puns in some of your emails.
NJ (01:04:25):
I did. They are all wonderful.
EW (01:04:25):
Which you started!
NJ (01:04:31):
<laugh> Yeah. Well, I am a dad now. I have got to have my arsenal of dad jokes.
(01:04:35):
All right. And the last, I asked if there was anything else that they would like to share with the two of you, and overwhelmingly-
EW (01:04:46):
Please say, "M&Ms." Please say, "M&Ms."
NJ (01:04:49):
Folks just wanted to share. One person said, "A beer," and another one said, "A cab ride." <laugh>
CW (01:04:52):
Cab ride? <laugh>
NJ (01:04:53):
I do not know exactly why. Overwhelmingly folks wanted to share with you that they really appreciate the work that the two you do to bring this podcast to air, and in keeping the Slack community going. I am sure that you would say, "Well, I do not know. It just kind of has its own momentum."
(01:05:11):
But like you have heard from several people, we all, and speaking for myself too, we learn a lot from the community that you have created. I am sure there are weeks when it is more work than it is worth. But we all appreciate you two making great experiences for us listeners, and being honest with what you are learning and what you are struggling with. And we love that we get to be part of this learning journey with you.
EW (01:05:42):
I am sorry, Nathan. Skype cut out there.
NJ (01:05:44):
No! <laugh>
EW (01:05:44):
<laugh> All right. Thank you. Thank you. That is really very nice.
CW (01:05:52):
Yes.
EW (01:05:52):
Yes. Very, very nice. Thank you.
CW (01:05:59):
It is very weird to have this community out there that we do not actually see. It is just sort of there. <laugh> I mean, we see the Slack.
EW (01:06:05):
We do talk to folks, sometimes.
CW (01:06:06):
But it is all at a remove, from a computer, which-
EW (01:06:10):
It is.
CW (01:06:10):
As we know, I do not like.
NJ (01:06:12):
<laugh>
EW (01:06:14):
I do like the Slack community, because while I can jump in there when I want to-
CW (01:06:19):
No! The Slack community is great. I have learned a ton from the Slack community. I have gotten a lot of help, just watching people solve their own problems on there. It has been great.
NJ (01:06:25):
That has been the single best professional decision I have ever made, was to join and be active in the Slack community.
CW (01:06:31):
Yeah, no. Selfishly, the podcast has been a pretty big help to our careers. I do not know how well we would have pulled off being consultants without having...
EW (01:06:43):
I do not know. The guy I have been working with for six years-
CW (01:06:47):
Consistently <laugh>.
EW (01:06:47):
Noticed in my origami postcard that I have a podcast.
CW (01:06:54):
Yeah, yeah. But we have gotten several good clients through the podcast-
EW (01:06:58):
Yeah. We have.
CW (01:06:59):
Or through your book, or things that are all kind of tied together.
EW (01:07:03):
I just could not believe he did not know I had a podcast.
CW (01:07:04):
It is better that way.
EW (01:07:05):
I guess so.
CW (01:07:07):
It is very awkward when you start a contract, and then a couple months later, "Oh yeah, I was listening to your latest episode." It was like, "Oh! No!"
EW (01:07:14):
"What did we say?"
NJ (01:07:14):
<laugh>
EW (01:07:16):
Oh. Oh. How much did I complain about PICs?
CW (01:07:18):
"I did not expect you to be listening to me." Yeah. "This is just a professional thing. You are not supposed to listen to me speak," in my other capacity.
EW (01:07:24):
<laugh>
NJ (01:07:25):
<laugh> I am sure it is weird for those two worlds to cross, because in your head they are very distinct. Yeah.
CW (01:07:30):
Occasionally at Fitbit, some people would say, "Are you the Chris White on the Embedded show?" I am like, "No!"
NJ (01:07:35):
<laugh> No.
EW (01:07:37):
Occasionally for me, I will start talking to someone and they will recognize my voice. Then they will like not be able to talk for a second. Because they cannot get over the mental disconnect between- I mean, you cannot really talk back to the podcast and expect me to answer. But now I am on the phone, so I do answer and it is really weird. Yeah. Do not know. Kind of weird.
NJ (01:08:02):
Yeah.
CW (01:08:04):
<laugh> Well, thank you for doing that. That was very amusing.
EW (01:08:06):
That was very nice, Nathan. Thank you.
NJ (01:08:08):
My pleasure. It was a ton of fun.
EW (01:08:11):
Do you have any thoughts you would like to leave us with?
NJ (01:08:13):
The one I am going to go with is something I have shared with a few folks recently. Which is, I believe there are vanishingly few circumstances in life that are not made better with a little bit more compassion. And especially when that is hard. I would say, especially as we get into what for a lot of folks can be a rough, stressful season, "Have some compassion for yourself."
(01:08:47):
If you are getting frustrated, remember that- Or, in parenting phase, my wife and I like to say is, "They are not giving you a hard time. They are having a hard time." And so just, yeah, I would encourage everyone to have a little more compassion.
EW (01:09:01):
Our guest has been Nathan Jones, an active-duty Army officer and instructor at West Point. Look for his articles coming on DigiKey soon.
CW (01:09:10):
Thanks, Nathan.
NJ (01:09:10):
Thank you so much.
EW (01:09:13):
Thank you to Christopher for producing and hosting. Thank you to our Patreon listener Slack group for their questions and answers. And thank you for listening. You can always contact us at show@embedded.fm or at the contact link on embedded.fm.
(01:09:28):
Now a quote to leave you with. This one is attributed to Albert Einstein. May actually be by him. "Computers are incredibly fast, accurate, and stupid. Human beings are incredibly slow, inaccurate, and brilliant. Together they are powerful beyond imagination."