Embedded - 492: Octopus Army
Episode Date: December 27, 2024Nathan Jones chatted with us about his proposal for a computer architecture book based on a 4-bit computer. Nathan found the 4-bit computer in the Hackaday SuperCon 2022 badge and was amazed by som...e of the ideas that folks implemented (see SuperCon Badge Hacking Awards Ceremony). Nathan spoke at Hackaday SuperCon 2023 on the processor architecture, highlighting some of his ideas for a book. If you’d like to try your hand at the badge, find it on Nathan’s Voja4 Tindie page. Nathan also spoke recently at the Embedded Online Conference (Building a Simple CLI, OOP in C, and The Power of a Look-up Table) and the Teardown Conference (Making Your Own MCU Boards and Building a Simple CLI). If you have an idea you’d like to propose, check out O’Reilly’s proposal for a book or class. While you may not go with them, the proposal is a good place to get all of your ideas down. We mentioned a few other computer architecture books as competitors for Nathan’s proposed book: Computer Architecture: A Quantitative Approach by John L. Hennessy and David A. Patterson Introduction to Computing Systems: From bits & gates to C & beyond by Yale N. Patt and Sanjay J. Patel The Elements of Computing Systems, by Noam Nisan and Shimon Schocken (MIT Press) with supporting material and simulator on nand2tetris. Nathan also did a survey of the Embedded Slack community. You can gain access by becoming a Patreon or Kofi supporter. Transcript
Transcript
Discussion (0)
Welcome to Embedded. I am Elysia 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.
Retrospection? Is that a word?
Introspection?
Hi, Nathan. Welcome back.
How are you two? It's so great to be back.
We're doing pretty well.
Could you tell us about yourself as if we met at a table at Supercon?
Yeah, I'd say hi, I'm Nathan. I'm here because I love electronics and hopefully I'm presenting something cool. I've been serving
in the military for about 14 years now, but I'm excited next summer to transition to civilian life
and maybe to get into teach and play with electronics full time. Are you ready for
lightning round? Okay. Talking fast, talking fast.
Best dorm at Harvey Mudd college oh we asked him no because at least you forgot that i went to mud oh okay um my favorite my favorite was atwood i
spent uh freshman senior year there oh boy boy that says so much about you. I'm sorry. No, no, it doesn't. It doesn't. No, I was there freshman, first semester freshman year and sophomore year.
And the freshman was not as much fun, but that was mostly about the people.
Next question.
Were you before or after Platt was eliminated as a place to eat?
After. After I ate all four years at the hawk
and it was awesome all right well then i'm not going to ask you about the worst food at plat
what was the best food at the at the new place um
once once i got i 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 don't know if I really gained like 15, but like 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.
Appetizer pizza.
Yeah.
And then one day I grabbed it, not realizing that it had just come out of the oven.
And it was scalding.
And 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. So I'm like standing
in the middle of the Hawk, like chewing on these super hot bites of pizzas, trying to like blow it
through my mouth and like juggle it between my two hands. And five minutes later, I'm just like
covered in pizza sauce. I'm like sweating. Cause it was a little bit of an ordeal.
I guarantee you that kind of thing never happened to plat because nobody was
indecisive about or or overwhelmed with options so the pudding stone monster did you have that
it's not ringing a bell yeah that's fine i thought i think that was a us thing no no i had heard
anyway really oh all right uh okay do you have any new year's resolutions I think that was a us thing. No, no. I had heard. Anyway. Really?
Oh, all right.
Okay.
Do you have any New Year's resolutions?
Yeah, I've been thinking about that.
And not that I like to call them resolutions, but I do like to take kind of the turning of the year to kind of reevaluate and just make sure that, you know, my priorities are in order.
I think, what were the two?
I think I had kind of a difficult military detail over the summer that threw off my schedule a bit. So I'm looking forward to getting back into a more regular physical fitness kind of schedule.
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 just fun little outings to make the most of the end of our time here in New York and a fun kind of start to our time in Tennessee.
What about you two?
I have not thought about it at all.
I did a New Year's resolution one year that was a resolution every month to do something new and different.
Was it every month or every week?
It was every month?
Every month.
Okay.
And so like one month no sugar, one month go out every week after dark, one month just doing things I don't normally do.
And so I'm thinking about that again.
It was kind of chaotic and fun.
I used to challenge myself with like 40 days, see if I can do like 40 days, like no hot showers
or 40 days, like, you know, no alcohol or something like that. And it was always a fun challenge
because the first, you know, the first 10 or 20 days, it's just like, this is cool. I got this.
And then towards the end, you're like, oh man, 40 days is long. I don't know if I could go. No,
no, yeah. You didn't say without a shower. I know. I i mean i'm just thinking how cold it is right now
don't do that in december uh yeah no i don't really have i don't do the resolution thing so
much but if i do have resolutions they're more like i should try to be nicer to myself or stuff
like that's a good one um measurable actionable uh that that what is that oh measurable actionable
resolutions yeah then i'll just be mad
at myself for not making the resolutions and fail the first resolution okay so moving on since we're
failing at lightning round you've got plenty of questions here well go ahead then
i dare you to ask that next one you You've been working with the, the Voha four.
What are the worst ways you've heard that pronounced?
Um,
is it?
Yep.
That was the one.
Uh,
okay.
What,
what,
very briefly,
what is it and how do you pronounce it?
I would go with Voya since it's named after voya antonish um voya voya 4 yeah and that was that's kind of like
the unofficial name actually it was the um the conference badge for the 2022 hackaday super
conference so like kind of officially it's just the 2022 Supercon badge. But yeah, folks started calling it the Voya 4 because it emulated a 4-bit computer that Voya kind of created.
I did see that.
Okay, yeah.
That's very cool.
Yeah, it was a lot of fun.
And actually that is a good thing to transition on.
Segway.
Segway, yes.
Because you like it so much you're thinking about writing
a book about it i am um yeah i feel a little crazy for it but uh at the time it's a normal
feeling when thinking of writing any book i think yeah yeah that's fair you have to be a little bit
crazy to kind of embark on an adventure like that um i uh i was teaching i was actually teaching computer architecture at west
point uh right right then right when i went to the 2022 uh super con um and the i had i had
hugely mistakenly completely overhauled the the curriculum and was like totally flying by the seat
of my pants and uh and showed up to the conference and there you know here it is the badge is is you know a little you know four-bit computer i thought this was this was super cool
and it was neat it was really neat over the um conference to see folks um you know having a ton
of fun with it uh doing things you you never thought you could do with 192 nibbles of ram
which is which is what's on the architecture supports.
And I thought, man, someone needs to write a book about this.
Like, this should be the centerpiece of a computer architecture course.
Because it was just, it was so cool to kind of put your hands on it
and not have to learn about this sort of, you know,
fake computer that you simulate on a computer,
maybe a little bit, but to actually have it in your hands was neat.
And that idea kind of always stuck with me.
And then thinking about the transition next summer, I thought, well,
I'm probably the only one in the world that thinks this needs to be a thing,
and I'll have some free time next summer, so why not give it a shot?
Are they still available such that people could work through the book?
Yeah, after the conference at some point,
there were definitely some folks that wished they could have had one,
but weren't able to attend and couldn't get one or something.
And Voya, his design files were freely available.
And the components are, there's nothing super complicated about it.
So I just contacted a PC fabrication company and said, hey, how much would it cost to put this together?
And Voya was super, 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.
And so I sent out an order and started selling them with this blessing.
Oh, okay.
So I've got a little Tindy store folks can go to if they want to buy their own little Hackaday Super Convoy of 4 badge.
Cool.
That link will be in the show notes. And so you mentioned this to me, and I was like, okay, I'm happy to introduce you to the O'Reilly acquisitions editor I worked with.
But here's the proposal.
So now you have written the very start of the proposal, and your proposed book title is
Introduction to Computer Architecture and Assembly Language Programming with the VOoya 4 or Hands-on Computer Architecture with the Voya 4.
Okay, so we have the Nanta Tetris book by Shimon Shokken.
And I know you're familiar with that, right?
Yep.
Because you mentioned that yours would be an actual board and not a simulation of a chip. True. How is yours better? In truth, I don't know that it not what it used to be even 10, 20 years ago.
Um, and I'm curious, like what, what your, what your thoughts would be on, on what, you know,
what would be the objectives of a computer architecture course? What's, what, what's the
important stuff to learn? Um, I think the, the biggest differentiator and for me it is that that physical device there's just something
so gratifying about um about holding the badge um it's it's it's made to uh mimic uh sort of mimic
uh the altair 8800 which was the one of the first personal computers you could buy you had like a
whole bunch of you know lights on the front indicator panel and switches that you had to manually toggle to like enter opcode, you know,
instructions into the actual machine. So the badge has a row of 17 buttons at the bottom that you can
kind of 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 ALU. So you can actually watch, you know, two four-bit numbers get added or shifted
or what have you. There's a whole section in the middle that highlights for each of the op codes.
You can kind of watch the instructions, which instructions being executed. And then there's
like 96 or something on the right hand kind of third of the badge
that show you the contents of the the memory um and by by switching to like a spot in memory you
can you can make your own graphics pretty much and um and i've been thinking about this i mean i think
folks really took to it um because because you could enter all your programs in
by hand. You didn't 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. You could 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, um, or change the clock speed faster or slower. So it was, um, I think it made
for a, um, a really engaging educational experience. Um, and, uh, um, like any good
author, I've already thought about a second edition, uh, even though the first one hasn't
been accepted yet. Um, I, I, I've already decided i wasn't going to change anything about the board for the first book but
you know doing something kind of like this you know making a board for the the computer that's
in nantichetris you know with with those same you know um 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 kind of follow-on.
Why wouldn't you do that for the first one?
I've spent a lot of my life biting off more than I could chew.
And I know enough at this point that to take what I think I can do
and cut that down by, you know, like three quarters and then what's left with is probably going to be already way more than I'm ready to sign up for.
I mean, you've gone through this twice now, right?
I mean, writing the first book and then updating it for the second edition, isn't it always like way longer than you ever thought it would take?
I never was going to write a second edition.
I was never going to write a book again.
It was, after the first one, it was just so hard.
So no, I didn't think that way.
And I thought that way, like I said,
I completely overhauled the computer architecture course
because they were using Patterson and Hennessy,
which I felt like just spent way too much time on.
Pipelining and memory caching and for at least at West Point
the computer architecture course was the prerequisite
for the embedded systems course so I said
I think we need to get more into
maybe showing a gate level implementation
of a computer but talking a lot more
about memory mapped IO
and the interrupt system
and I was really excited about modern
classrooms at the time so And so I, and I was really excited about modern classrooms at the
time. So I completely changed it. And I, uh, um, how long did it take before I started regretting
it? I think it was, I started, I think I spent all, I spent a spring semester, like picking the
textbook and kind of proposing it. I spent all summer rewriting all the lessons and, and planning
out my homeworks and things like that. I think it was probably a month into the class when I, you know, I still had 20% of the course left to write and hadn't made any
progress because I was just trying to keep up with the students. I was like, this was a mistake.
When you taught the class, what, did you provide the boards? Did they,
other than having too much work, what did they think of it?
How did it go?
How did it go compared to past ones?
I think overall I got positive comments.
There was definitely some folks, a couple of folks that I spoke to,
I didn't take any actual data, but anecdotally some folks who,
in taking the previous iterations of the course,
didn't quite understand why some of the course material was there,
didn't see necessarily the reason for it. I went with a book called Introduction to
Competing Systems by Pat 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 IO works and how an interrupt
system works. And I think it was well received i
think they liked it they put up with me they were very kind what is the goal of teaching computer
architecture what what kinds of beyond just having an understanding of how computers work for
developers and and people working with electronics which is it's 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?
And then that's going to make what you write depend on kind of,
are we targeting people who are going to work on computer architecture?
Are we targeting just giving people a background?
I'm not articulating well what I'm saying here.
No, I think you're right.
Because it's not like I've ever really done computer architecture other than some chip design.
But that was still pulling Lego blocks.
I mean, as most direct, you know, knowing how to debug a program involves a lot of computer architecture sometimes, right?
Especially on a microcontroller.
So I guess the question is, who's it all for?
And yeah.
Yeah, so we've identified a couple right um i mean clearly if you intend to um to actually design chips right design a
processor or something like that then yeah knowing intimately how that that uh happens is very
important um you identify you said though uh you know when you debug a program sometimes it's
important to know the the architecture of the computer um Alicia kind of mentioned, you know, needing a little bit of that
when programming the microcontroller. I share these thoughts, but I'm curious, like,
if I could throw sort of the question back at the two of you, like, when has a knowledge of
computer architecture helped you in your careers? And what would you say, like, okay, going back,
if I had to take a course on computer architecture here's what i would want in it uh let me answer that a couple of ways um first off the
the analogy i'm thinking of is like physics right uh 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 you still got to learn newton. You've still got to learn Newtonian mechanics.
You've still got to learn electrodynamics.
You've still got to learn quantum mechanics
and all that stuff that was invented
in the early 20th century.
But then after that,
you've got to learn everything else.
And I feel like computer architecture is very similar.
You could start with the 70s,
which is kind of what your approach is here
with the 4-bit computer.
But to get to a modern computer,
there's a bunch of stuff now, right?
That's super complicated and advanced and weird and, you know, modern physics level of complexity
and even involves physics at some level. So I guess that's the hard part is like,
what do you include and what do you take out? And that's why I was asking about the audience, because some of that stuff, you don't need to talk about it if it's for basics.
So for me, the basics are all I've ever really needed.
And I got the basics from computers from the 70s. Yeah, 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.
So things like, this processor has a cache, and it's this big, and this is the working set for this problem, and I should try to keep the cache full of that as much as possible because that's faster than going to RAM.
Or like I mentioned with debugging, like, okay, there are these registers.
What do the registers mean?
And what are the levels of memory?
And how is the memory on this chip architected and that kind of stuff?
So, yeah, beyond that, not a lot because I'm not building my own systems very often. And if I'm involved with somebody who's building a system, they're more of an expert on computer engineering and architecture than I am. And I'm just kind of keeping an eye out for what might be impacting me, I guess. Through the Nanta 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 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.
Yeah.
Yeah.
So I don't know.
I didn't take microprocessors at Mudd.
So most of my knowledge is from reading user manuals of many many different processors
and i think the avr ones the av the tiny avr ones were have manuals that are just basically the
course on how to understand computer architecture and then you can build upon that.
But yeah, I didn't take a class like this.
I didn't either, and I wasn't CS at school,
so I wasn't forced to.
Yeah.
I mean, I don't know if I took
a specific computer architecture course.
I mean, I did take micro piece at Mudd.
That's pretty close, right?
Yeah, I think so.
You know what?
It probably could have been, and I was so sleep deprived.
I don't know.
Yeah.
If I could say how much I actually retained from that class.
And that one, you actually had to wire things together.
Yeah, yeah, yeah.
Yeah, looking back i wasn't sure you that that was the right way to go for that i didn't think uh for like a micro piece class yeah because every
week you added like a hundred wires and at some point the first wire breaks and you're just hosed
what department was that it was that was engineering oh well you guys
yeah the engineering department like to do things the hard way weird way oh my goodness
uh yeah well i mean that's that's to me that's uh that's that's the drug that is embedded systems
right like it's so hard to get working that when it is it's like this enormous dopamine rush and
not anymore man yesterday let me tell you what I did yesterday.
I'm trying to make a GPS data logger, and I'm trying to do it as
fast as possible because I don't 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've been fighting with this for
a week, and I finally said, because I want, well,
long story short, I want
really high accuracy
and precision timestamps for the data, which you can't get without using the PPS pin on the GPS.
Pulse per second.
Pulse per second pin.
But it's really hard to find anything in the stupid embedded space that does that without you cobbling it together yourself and getting the interrupt and keeping track of things.
And I didn't want to do any of that because I'm in a hurry and I don't care.
And I hadn't found anything.
Christopher went on winter holiday early.
I looked at CircuitPython, CircuitPython.
There's a lot of CircuitPython does GPS.
Nothing does PPS.
And there was a conversation on the Slack where somebody said,
I've been using MicroPython and it's great.
And I was like, I should check out MicroPython and make sure.
And lo and behold, there was a library that's
part of the async IO thing, which is in MicroPython,
that does the PPS thing, has a
whole time thing where you can grab a timestamp with microsecond accuracy.
It's like they thought of this.
And 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 in VS Code, because I didn't know,
and the time I had to go solder a wire on the board because the PPS wasn't brought out to the header.
Just to an LED.
Was one hour, and I had it working.
That's modern embedded systems, man. He and I are talking about this, and I'm flashing back to crossbow days where we had inertial measurement systems and integrated them with GPS.
And that was before GPS was fine-grained.
That was when there was a military system and a civilian system.
And, of course, we had pulse per second, and we had all this timing.
And I'm just like, that's all just really, you know, it's not that hard.
Oh, it's not that hard.
It would have taken me a couple of days to do it from scratch, but it took me an hour.
I know, and MicroPython is totally the way to go.
I mean, CircuitPython is awesome for starting.
MicroPython is how you get things done.
I should say this is against my interests because I build by the hour.
Right.
So I really should have built it from scratch, But that aside, yeah, no, I mean,
things are changing and it's weird.
There's a lot of Lego block things.
Do you think this book will help people
learn to work in that world?
No.
How important is it for us to understand the underpinnings
when a lot of what we do is putting things together?
I love that question.
I think it's definitely kind of at the heart of this.
I would say, from what I've read, discipline-wide, you know, folks that teach computer architecture and that study it have this this very same question and like chris
was saying the the modern processors are are so advanced um you know what point do you sort of
pick as your entry into that that world do you do you start from first principles or do you just
assume that hey we're just you know we're beyond that i I think, um, personally, I think knowing that computers are really fast,
dumb things is really important. I like the term I use sometimes with my
students is I just call them their automated calculators.
If you take like a Mickey mouse calculator that can do like 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 like a keyboard and display. That's all a computer is. And I think knowing that,
knowing that's really valuable and not just like having someone tell it to you, but, you know,
knowing a little bit about binary and digital logic signals and then having someone kind of say, check it out.
Here's, you know, here's how we can construct a digital circuit that adds.
Here's how we can construct a digital circuit that pulls data out of memory and pushes it to memory.
And then to say this, this thing is a computer.
That's that's valuable.
Um, and then I'm, I'm inclined to, um, to think, you know, that the next most important part might be just, um, kind of like we've, like we've hinted at a couple of times, uh,
knowing just enough below what you're doing that you can, you can understand what's happening.
You can debug it if, if it goes weird.
And I feel like with embedded, um, you tend to need to know a few more than just a couple layers deep
but you know but but the point is that if i'm you know if i'm working at some level of abstraction
um i can go a little bit deeper if i need to um i joel spolsky kind of gave me that idea this
idea this idea that abstractions are useful but but they're often leaky. And so it's important to know a little bit, a little bit lower than what you're actually working in, in order to do that effectively, you're not especially folks that are going on to write
maybe just web applications or enormous server programs or things like that, you don't necessarily
need to know, like, what the move instruction does or what all the, like, different operands are
in x86. But I think definitely for embedded, it's important to know, like you said, Alicia,
and Chris mentioned it too, when I'm writing my C code, how does my C code map to the assembly
that's being spit out? And not just instructions to registers, but also knowing how the application binary interface works and knowing that certain instructions are part of the function preamble or the postamble or knowing why my processor has an eight clock cycle interrupt latency and that sorts of stuff.
Those start to get a lot more important.
Yeah, yeah. Yeah, definitely agree with that. and eight clock cycle interrupt latency and that sorts of stuff. Those start to get a lot more important.
Yeah, yeah.
Yeah, definitely agree with that.
And, you know, MicroPython aside,
most development is still not,
it's still done the old-fashioned way,
you know, with just better tools.
So, no, knowledge of that stuff is important.
I think it's also important, you kind of touched on it,
for people working in technology to have computers be demystified a little bit.
Because you did say they're fast and dumb.
And they are fast and dumb.
They're getting faster all the time, but no smarter.
And people are talking about AI and all that stuff.
And I think there's a lot of mysticism around that.
Like, wow, look at what computers can do now.
And it's like, no, they're still just adding.
That's it.
They're still just adding.
That's all they do, for the most part.
Add things and move things, right?
And just because we can do complicated things with that by doing those a billion times a second doesn't be afraid of them, but also not to be, you know, afraid of breaking things and that kind of stuff.
If you understand something at a deeper level, you're less afraid of it, I think.
Yeah, yeah.
And I would say that's setting, like I'm thinking of the Arduino, you start to advance when – or I think that the biggest reason to learn more is because if I'm following a tutorial but I don't know what's going on, the first time something doesn't work out, I'm hosed.
I'm stuck. And so, you know, learning how to start to do some of
those things yourself, right, helps me understand why I'm looking at step number four in my tutorial.
And if it doesn't exactly match the picture, then how do I, you know, do I need to be concerned
about that or how do I work around it? Yeah. In the O'Reilly book proposal, it asks you to talk about your audience, which, as we've been doing, one of the things, some of the questions they ask is for you to note the roles of your audience.
You've 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's 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?
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 like the idea of teaching to something to be able to give the students a uh you know a physical object to interact with um
i think uh i mean at least you kind of led the conversation off with with talking about
an anti-tetris and i mean and honestly i i i like where that's kind of built in terms of
i would say that's like the kind of the minimum set of knowledge that a general computer science
computer programming population should know about computers. So I think, um,
um, you know, that's, that's kind of the, is that a prerequisite to you or is that in parallel with
you? Nah, I mean, I, um, the, I love Nantichrist and the, the, the biggest things that I feel like I would still kind of want to fix about it are the computer that they sort of build up.
It has very kind of a limited IO, and they don't talk at all about interrupts.
Very much. So I love the fact that after you build the processor,
then you are in the second half of the book,
you're writing the assembler,
you're writing the little virtual machine that your compiler targets.
Seeing that built all the way up is really, really cool.
And I think an important picture to get that I would love students to have if they were to graduate college as a computer scientist or something like that, to know how the software I'm writing, at least conceptually, how it all gets translated down into the instruction getting executed by the computer. How much, so you brought this up at some point, Alicia,
in terms of like how much assembly to discuss.
And it definitely sounds like you're on the fence of like,
man, I'm going to talk about assembly as little as I can.
And then we're going to get to,
we're going to talk more about how a language like C
is converted into assembly.
Maybe we'll talk about reading assembly.
What would be that piece for you that, you know,
whatever computer architecture course you'd want to take?
I mean, the important part about assembly is that it does make sense if you learn it.
I mean, 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 don't know the assembly language,
it's not going to make any sense.
It's like compiling into German.
Why you have to learn German first.
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 isn't random.
There are choices people made, and the choices are explainable.
And when you go out to a processor that isn't 4-bit, they're going to be different, but all the same things are going to be there.
So I don't know.
When I started, there were times when I programmed entirely in assembly.
Pick.
And you wonder what I had done with the picks.
That's it.
Really?
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.
And even that was a matter of reading the assembly and modifying the looking at the stack and understanding how to put all that together.
And I guess that's what I would like from a computer architecture course. People don't always understand what happens when things go wrong such that they can look at the stack.
So, you know, R1 is usually this.
And there's a return register and you can build up the stack frame.
And how you build that up depends on your compiler and your processor.
And all of that, I guess, I want to be in the computer architecture course.
And you need everything in a computer architecture course before you can understand that.
It is very, yes, it's very, like, do you start at the gate level?
Well, okay.
I mean, NAND to Tetris did, and I appreciate it.
And yet, I would not have learned Boolean logic from that.
Yeah, I mean, the book is awesome, and they do a great job tackling what otherwise, like if someone had pitched this book to me, like, hey, we're going to start with a Nand gate.
And we're going to finish like writing, like essentially operating system routines and we'll show everything
in between i'd be like you're crazy that's going to be how many books yeah so like they they managed
to eke out this incredibly optimistic and ambitious objective but yeah it's very like
they i mean i think they cover digital logic in like one or two chapters i mean and that's that's
a full you know three credit hour four credit hour
and many institutions semester-long course there was a lot of and then draw the rest of the owl
in the book yeah which as a as a course that is at the end of a curriculum that builds in
that puts things together that that would be great.
If this was your first introduction to compilers, at some point you're going to want to just,
I don't know, spend all night in the CS lab and then...
That's a mistake.
Yeah.
No, you can't teach people that way.
The other?
But that's like having a synthesis course at the beginning.
Yeah. But that's like having a synthesis course at the beginning. I can see it as like, you know, kind of the book.
In my head, it would be, it's sort of, you're using it,
you're chunking it up into like probably three or four different courses.
And we're saying, hey, we're going to work through the first two chapters
on this is for our digital logic course,
but we're going to build up these components
so that there's a common theme, you know.
And so at the end, you know, if you get to your operating systems course,
you're actually writing operating system routines for a processor that you built, basically.
And they mentioned that it was better as a year-long course.
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.
I have to warn you,
this actually is what ended up on my back cover
because they never came back to me and said,
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 don't know what the VOJA4 is?
Real quick, I had a similar experience.
Actually, so I gave a talk at the 2023 Hackaday Supercon about this badge.
I thought it was cool.
You know, I wanted folks who had never had a computer architecture course and didn't maybe know what they were doing when they were punching
buttons to know, Hey, this is what goes into it. And here's how it all works. Um, the proposal,
the deadline was almost due. And I was like, Oh shoot. I think I was on vacation at the time.
And, uh, so I submitted it on my phone and they needed a speaker picture. And the most recent
picture that I'd taken was a super goofy one of me, like, like screaming with my kids,
like pretending we were, I don't know, warriors or something like that. And I was like, I'll fix
this later. And, uh, I, I completely forgot to. And so there, uh, you can, there's a YouTube video
of that conference talk and the little splash screen on the slide is me and the most ridiculous
like face. I'm like screaming at your toolbar, basically your toolbar basically what what did so what did you write your own marketing description at least because i feel
like you know that would be a real a real challenge to to to have to physically remove
yourself from your own perspective and put yourself in the perspective of someone who's
who's going to make it sound like just the greatest book ever? I mean, the whole book proposal is kind of a test.
Like, if you can't fill in all the boxes, you probably can't write a book.
So it doesn't have to be great.
It isn't the end.
But they do need to know that you can pitch it in a way that is approachable.
Yeah. I think I would highlight what we kind of talked about so far.
I mean, the fact that the book is, the ability to interact with the computer as you're holding it in your hands.
Um, the other, the other thing I thought about putting in there just kind of for my own personal interest, cause I thought it was really cool when I was reading a lot about computer architecture is, is showing all the, um, the different kinds of design trade-offs, uh, in terms of,-offs in terms of the instruction set architecture.
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's in a register?
Or is it even a register machine?
Is it just operating on a stack?
I think some of that stuff was, I don't know, 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,
especially with quantum computing and, you know,
photonic circuits and things like that?
I think there's potentially a need to, you know,
you might find that computers are constructed completely differently to take
advantage of those technologies so that's the other thing I was thinking about putting in the
book but one of the things that I wanted for my book because it was how I read non-fiction
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. Is there anything else? No, I mean, I think that is the big one. That's kind of the central
selling point. We'll see if anyone else likes it what if somebody doesn't get the board is the book not useful that is a that is
an excellent question um that i'm currently kind of thinking options through on uh and i think the
answers best answer is going to be that they're uh uh if they'll interact in that case through a simulator.
I believe someone who attended the conference did,
did write a full simulator for it.
And I think that would probably just be something that I would make sure I
sort of take, you know,
I suck up and becomes part of the book materials is, Hey,
if you don't want to, you know,
don't have the funds to spend on the board
or something like that,
then you can still interact
with this little piece of software.
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.
When was the last time they did that?
It's been a while.
One of the things that O'Reilly told me
that I found very useful was that dumb people don't read books.
And 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 you know and i think you it's it's neat that they that you brought that
up because it is hard i feel like with, with a static medium like the book.
It's hard to find where to start.
And I think some folks find themselves in positions where they're kind of moving that first goalpost further and further towards fundamental concepts because there's just this concern that whatever spot I'm going to to pick someone's going to jump in and feel like they're over their heads
um i think uh i think building off of kind of what we discussed i'm going to assume that um
that the reader if not having taken a digital logic course like is aware of some basic digital
logic fundamentals um a lot of computer architecture books will,
if they're worried about that,
will put an appendix in the back
where it's sort of like,
hey, here's a review of Boolean logic
and binary numbers.
I like to think my conversation
or my writing style
is pretty conversational anyways.
So I think that's a gift
that I got from my parents.
My dad is a psychologist, and my mom taught middle school English her whole career.
And 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.
And I was like, I'm an engineer.
This is, what's going on here?
But a couple weeks ago she was like
hey you're pretty happy about that now aren't you and i was like yeah i think i'm i'm gonna one of
my strengths at this point is that i can communicate uh the the difficult concepts
more effectively than others it is a skill yes um and it's one that Harvey Mudd College does try to encourage.
Yeah.
What did you concentrate in?
I mean, I got my degree in engineering.
No, no, no.
What was your humanities concentration?
Oh, God.
Other colleges call them minors.
It was probably something music related.
Cool.
Yeah.
I played the drums going through high school and college.
I still have like a little electronic kit in the back that I haven't pulled out in years, but.
Okay.
Last question I've got for you, Alicia.
In terms of timeline, how long did you need to budget for the first book?
A year.
Okay.
I mean, it was a strange year.
And I worked about half time, maybe a little more.
And I worked on the book a lot because personal life meant I didn't really want to leave the house.
Yeah. didn't really want to leave the house yeah i take as much take you know consider how much work you
think it will be after you do the outline and then like multiply it by three and then when that seems
like an absurdly long time know that you are still underestimating it's like how i order food for a
party i just like i figure like i plan a number of amount of food and then i i figure i need to
go 20 over and then i forget that i did the 20% over, so I do 20% over that.
And I do that a couple more times, and then there's way too much food for the party.
Yeah, it's, I mean, it's tough.
You have to stay motivated, but I think you're already really good at that.
You'll have to figure out how to balance that. At the time, I was doing
engineering work as well. If you're 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. I think overall the weakest part of your book is the name of the board.
What would you call it?
I mean.
Well, it's a very specific thing.
Okay.
I would call it with a four-bit processor or with hardware or something that didn't look like...
I mean, you know, a lot of the O'Reilly books are like,
react with sparkle fun unicorn poop.
And if I don't know what unicorn poop is, I just don't look.
Yeah, but those are all real things that people will recognize.
Yeah, but definitely in this case, though, right?
No offense. No offense to the VOYA 4, but people are going to see that, and that means nothing to most people.
Yeah.
Right, right.
Specificity helps if the specificity causes recognition, and if it doesn't, then it alienates.
And I think that, yes yes that is alien it was alienating to me and i didn't want to tell
you that before the show because i wanted to understand more what you were coming from but
you wanted to surprise me with it in the middle of the show hands-on computer architecture or
uh computer architecture from blinking lights from from with from something
from scratch from i mean from scratch except scratch is the thing
we can't say that something something computer architecture we win yeah
computer architecture for fun and profit
okay i have edited your book proposal with notes I took during the show. Good luck with that.
Thanks.
She means with her notes.
With my notes.
No, I think the book proposal is good.
And I think you have a lot of really good points to make.
And while I like the Nandatatris curriculum,
the book was repetitive
and yet didn't have the information I wanted.
So there was some difficulty there,
and I would absolutely look forward to reading your book.
I did put my name down as a potential reviewer.
Oh, thanks for that.
But I hear that you took a survey of our Patreon supporters
regarding this very show.
Well, not this show.
Yeah.
But embedded as a whole.
What did you ask and what did you find out?
Did you not look?
You had to have looked at it.
No?
No, I didn't look at it.
I did open the link, but I didn't read it other than to make sure that it was legit.
I mean, not that I didn't.
I wasn't like rickrolling people
just yeah basically i mean i i'm fine if you rickroll people i just want to know so i can watch
um yeah i i don't know i just thought it'd be a fun thing to do kind of here at the end of the
end of the year to just um do a fun little survey um was, every question was very serious though. So, I mean, this might be a
kind of a boring segment for, there's lots of data, lots of data. The, the first thing I wanted to know,
I wanted to know what people's favorite episode title was. Cause that's, that's an important kind
of grabber to get them into the episode. What did, did you, did the two, you have a favorite
from the last year see the
problem with things like this is that people assume that we have any memory of anything that's
happened on this show beyond the show we're currently recording i could not tell you a
single title offhand nope i can't even tell you last week's yep nope i got nothing sidetracked by mining the moon oh no it's all chaos and horror that one was
um that was one of my favorites we do have a an excel sheet that lists all of the episodes
uh which is really helpful uh for questions like these what what did you have on your list
uh i put them all from 2024 and the crowd favorite was
wait until physics has happened oh yeah okay that was really recent too yeah yeah um about uh
the the robot course right yeah yeah um yeah i think a close second was math is not the answer.
So seldom is.
Yes.
Math is always the answer.
Right.
Sometimes the question too.
That was Philip Koatman.
My personal favorite was collecting my unhelpful badge.
I just love the visual.
All right, next.
I was, again, very serious, was curious.
If in the future, Alicia, you were arrested for raising an army of ferocious animals on your house, what animal do people think you would be raising? And the options were octopi,ils squirrels or cats and overwhelmingly uh if
people were going to dime you out for for for raising your own army it would be an army of
octopi well that's yeah that that would be this is a good that's a good we're gonna add that to
the lightning rod rotation i may be influenced by your recent art installation, right?
That was very octopi influenced.
Yeah.
It's a great, I mean, honestly, it's a great choice.
They're highly intelligent animals.
They, with the suctions and the camouflage, I think you had a very terrifying art.
Oh, yeah.
Yeah.
They, and they have some, yeah, they're cool.
Octopus, yes.
Okay.
Octopus Army.
Next, I asked if folks had a favorite quote or moment or guest from 2024.
And there was lots of great feedback from folks just saying that, you know, it was hard to pick.
They liked it all. A couple of folks singled out, um,
uh, Philip Koopman and Helen Lay and,
uh,
Dr.
Colleen Lewis,
who was on reference,
the same dog,
dog objects.
That was fun.
And,
Kirk,
uh,
just,
just a week ago,
uh,
two weeks ago,
um,
on,
uh,
electronic music.
And there's a great,
a great reference that someone put here from,
from Colleen Lewis's episode where they just,
they just typed out the transcript where they said,
Alicia,
you talk about a dog hardware running cat software.
Chris,
I think that's not going to help.
Alicia.
No,
it's definitely not.
Foxes are cool.
Okay. Changing subjects. I wonder if we should no it's definitely not foxes are cool okay
changing subjects i wonder if we should have named that show foxes are cool
just a stupendous moment wonderful um next i wanted to ask which quote best describes Chris. Oh, no.
I'm going to take my headphones off.
No, stick with me.
The options were, those people who think they know everything are a great annoyance to those of us who don't.
Wait, am I supposed to be somebody who thinks they know everything?
Because I do not.
I think the ambiguity is fun.
Like, we don't know at this point if you're the one speaking.
Well, either way. I mean, I'm not super happy with the implication there, but okay. All right. do not i think the ambiguity is fun like we don't know at this point if you're the one speaking well
either way i mean i'm not super happy with the implication there but okay all right
number two don't anthropomorphize computers they hate that
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.
Okay, which one of those did folks think
best represented Christopher?
I think I'm going to be unhappy no matter what.
All good things, Chris, all good things.
With 50% of the answers, it was
don't anthropomorphize computers, they hate them. Okay, Chris. All good things. With 50% of the answers, it was don't anthropomorphize computers.
They hate that.
Okay, good.
Which I think I get that from Andre 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.
I do say that frequently. More frequently than people realize, because at least he has to hear
verbally quite often. I mean, we spent five minutes in the middle of this episode talking
about that. It's an endearing quality, Chris. Yeah, you can't anthropomorphize him, but you
shouldn't like him either. That's 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's more to checksums than I knew.
Yes, well, that was true for all of us.
No idea on that one.
Yeah, right?
I think you actually said at the start of that, you're like, I don't know exactly how we're going to fill an hour on checksums and hashes, but here we go.
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 um someone said it made their
time doing dishes fun um let's see what's a good one um someone said the slack community is great
they learned as much from the podcast as from the slack uh someone said they liked uh learning
just the importance of taking care of themselves so that was cool and i'll send you i'll send you this whole thing of course so you can kind of
read through them if you're if you want um next i said uh in 2025 embedded.fm podcast listeners
and alicia are shocked to hear chris admit on air that he actually likes. God, no.
Let's see.
AI, computers,
Rust.
This is too easy.
Oh, I didn't think of Rust.
I had Tabasco,
ChetGPT,
computers,
or Bob Ross.
Bob Ross is easy.
Two of those are easy.
The other two are not likely. do you like Tabasco?
Tabasco is fine
I mean it's fine
I don't reach for it
there are far better hot sauces
it's the only thing available
when I need a hot sauce
Bob Ross, yeah we watch a ton of Bob Ross
when the pandemic started
it was on YouTube it was like 8 o'clock at night Bob Ross. Yeah, we watched a ton of Bob Ross when the pandemic started.
Did you?
It was on YouTube, you know, it was like eight o'clock at night and we were all stressed out.
It was like, there's a marathon of Bob Ross. Let's watch an hour of Bob Ross.
That feels like it would be very relaxing.
It was. It was very weird. Yes, it was weird, but relaxing.
Happy little trees.
Nice. What's this?
The other one is like a wonderful accident
or something like that?
Happy accidents.
Happy accident.
There you go.
Okay, so what did people choose?
Overwhelmingly, Chris,
folks would have been floored.
Nearly 60% said they would be floored next year
if you admitted to actually liking computers.
Well, it's complicated.
Relationship status.
It's complicated.
Yeah.
This one also had some really good
write-in answers too, by the way.
Oh, okay.
Someone said they'd be really surprised
if you admitted to liking writing drivers.
Someone was surprised
if you'd admit to liking Swift.
Oh, I do like Swift.
Yeah, I know.
I like Swift a lot.
I don't know.
The last person was really surprised, or would be surprised, if you admitted to liking PIC-16s.
Never used one in my life, so I don't 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.
I haven't done it in any sense, but it was cool.
Is it one, do they consider that one one of the
memory-safe languages, or is that not?
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. But anyway, yes, very funny and chat gpt that's not happening i think there's a lot of neat
uses in education like i was talking to one of my students the other day about them using uh chat gt
gpt to summarize long readings that they didn't have the time for to help them kind of like
you know come to class somewhat prepared um i've I've had students say that, you know,
they use that to, to, they ask chat GPT to generate practice problems for them and then
to kind of help check their work or walk them through the solution. So I'm sure,
I'm sure that's all useful. I can, I can actually hear you biting your tongue.
Next, I asked, what topics do you think Alicia and Chris should explore next year?
And is there anyone that would be cool for them to have on the podcast?
Oh, cool.
Yeah.
Someone said it'd 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.
This is somebody who wanted Rust, wasn't it?
Swift is coming. Swift is coming.
There's an embedded Swift. They've got a
pilot project for a few
processors. I think it's a great
question, right? As things get faster and
MicroPython.
Oh, and I
really enjoyed working with MicroPython and I
recompiled it and added drivers to some of my hardware. So I got pretty working with MicroPython, and I recompiled it and added drivers to some of my hardware.
So I got pretty deep into MicroPython, and I really enjoyed supporting the scientists who were using the Python aspect of it.
Yeah, yeah. making a large product and you're going for one of the cheaper processors,
it's still going to be capable of running something like this.
Someone wanted to know if Pooh will ever find the North Pole.
I think that's an important question that should get answered.
They find a pole.
Oh, yeah, yeah, yeah.
Yeah, yeah, yeah.
I remember that.
It's definitely not the North Pole.
I don't know.
It's a slow going, you know.
Two pages, five pages a year is a pretty slow pace.
I have both books sitting there.
I have two books, two books sitting there because I wanted to make sure I'd have the
second one when I finished the first.
We're only like halfway through the first.
That's like 500 episodes.
We're still not really that far.
It's like the flip book.
That's right.
It's the flip book.
Chris, it's like you just, you got to start on page one and then we'll just finish at some point in the future.
Next, I wanted to know how folks think Alicia would answer this question.
And so, Alicia, I'll pose this to you, Alicia.
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?
I think it's time to admit to rhyme.
For riddles are fun less than puns.
Oh, that didn't work.
Sorry.
Admirable.
That was phenomenal.
It's like you were a crime in there somewhere.
Oh, I should have sang.
Yeah, 55%.
So just over half thought you'd prefer to speak in rhyme.
Riddles are hard because you've got to come up with a lot of stuff.
I mean, if you'd had puns in there,
if you'd had like every sentence has to have at least one pun,
I could have done that over rhyme.
Okay, yeah, yeah, yeah.
Which you should know since you got some puns in some of your emails
which you started
yeah well i've got i'm a dad now i've got to have my arsenal of dad jokes so
all right and the last i asked if there was anything else that they'd like to share with the two of you. And overwhelmingly, folks just wanted to share.
One person said a beer and another one said a cab ride. I don't know exactly why.
Overwhelmingly, folks wanted to share with you that they just really appreciate the work that
the two of you do to bring this podcast to podcast, uh, to air and to, and,
and, and keeping the Slack community going. And, um, I'm, I'm sure that you would say, well,
I don't know. It just kind of has its own momentum, but, um, like you've heard, uh, you know,
from several people, uh, we all, and speaking for myself too, um, you know, we, we learn a lot from
the community that you've created. And, uh, I'm sure there are weeks when, you know, it's more work than it's worth, but we all appreciate you two making great experiences
for us listeners and being honest with what you're learning, what you're struggling with.
And we just, we love that we get to be part of this learning journey with you.
I'm sorry, Nathan, Skype cut out there.
No.
Thank you.
Thank you.
That is really very nice.
Yes.
Yes.
Very, very nice.
Thank you.
It's very weird to have this community out there that we don't actually see.
It's just sort of there.
I mean, we do talk to folks sometimes.
But it's all, you know, at a remove from a computer.
It is.
Which, as we know, I do not like.
And I do like the Slack community because while I can jump in there when I want to.
Oh, yeah, the Slack community is great.
I've learned a ton from the Slack community.
I've gotten a lot of help just watching people solve their own problems on there.
It's been great. That's been the single best professional decision I've learned a ton from the Slack community. I've gotten a lot of help just watching people solve their own problems on there. It's been great.
That's been the single best professional decision I've ever made was to join and be active in the Slack community.
Yeah, no, I mean, selfishly, the podcast has been a pretty big help to our careers.
So, I don't know how well we would have pulled off being consultants without having...
I don't know.
The guy I've been working with for
six years... Consistently.
...noticed
in my origami postcard
that I have a podcast.
Yeah, yeah, but we've gotten several
good clients through
your podcast or through your book
or things that are all kind of tied together.
I just couldn't believe he didn't know I had a podcast.
It's better that way.
I guess so.
It's very awkward when you start a contract and then a couple months later,
oh, yeah, I was listening to your latest episode.
I was like, oh, no.
What did we say?
Oh, oh, how much did I complain about picks?
I didn't expect you to be listening to me.
Yeah.
This is just a professional thing.
You're not supposed to listen to me speak in my other capacity.
I'm sure it's weird for those two worlds across, because in your head, they're very distinct.
And occasionally, like at Fitbit, somebody would say, are you the Chris White on the embedded channel?
No.
Occasionally, for me, I will start talking to someone, and they'll recognize my voice, and then'll like not be able to talk for a second
because they can't get over the mental disconnect between,
I mean, you can't really talk back to the podcast and expect me to answer,
but now I'm on the phone so I do answer and it's really weird.
Yeah, don't know.
Kind of weird.
Well, thank you for doing that. That was very amusing.
That was very nice, Nathan. Thank you.
My pleasure. It was a ton of fun.
Do you have any thoughts you'd like to leave us with?
The one I'm going to go with is something I've shared with a few folks recently, which is there, I believe there are vanishingly few circumstances in life that aren't made better with a little bit more compassion.
And especially when that's hard.
So I would say to you, especially as we get into what for a lot of folks can be a rough, stressful season uh you know have some compassion for for yourself
and if if you're getting frustrated remember that um or in parent a parenting phrase my wife and i
like to say is they're not giving you a hard time they're having a hard time and uh so just yeah i
would encourage everyone to have a little more compassion our guest has been nathan jones an
active duty army officer
and instructor at West Point.
Look for his articles
coming on Digi-Key soon.
Thanks, Nathan.
Thank you so much.
Thank you to Christopher
for producing and co-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 at embedded.fm
or at the contact link on Embedded FM.
And now a quote to leave you with.
This one's 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.