Embedded - 513: I'm Sorry You Learned Something
Episode Date: October 30, 2025Jason Turner of C++ Weekly and Empty Crate spoke with us about the joy of puzzles, the changing directions of an interesting career, and the C++ programming language. I mean, of course we talked about... C++. But only a little. Jason recently published Programming Puzzles Big Book: 400 pages of fun for ages 7-99, a book of puzzles for the logically minded. It teaches programming concepts as engaging puzzles: recursion, binary, assembly, Lisp, regular expressions. You may not know what you are learning but you'll likely find you know a lot more about how computers work afterward. For the puzzles, paper is better than electronic. But you can also get the electronic version on LeanPub (which is better if you like to get lost in Wikipedia links). This is not Jason's first puzzle book, he's made them for C++ Object Lifetime and Copy and Reference (see his Amazon and LeanPub author page for other books as well). If you want to catch up on C++, check out C++ Weekly With Jason Turner - YouTube. Note the playlists are useful if you are looking for a deep dive on a particular topic. If you want to get more out of C++ in your organization, Jason's consulting company is Empty Crate. His contact page is there as well (or look for lefticus on most social media platforms). Transcript If you're interested in how 3D printing is changing design engineering, Mouser Electronics has some great resources to check out. Their Empowering Innovation Together platform is taking a deep dive into additive manufacturing—covering smarter production, faster prototyping, and breakthrough materials that move ideas beyond prototypes into real-world products. You'll find podcasts, expert articles, and videos that keep you informed and inspired. Sound like your thing? Head to Mouser.com/empowering-innovation and explore.
Transcript
Discussion (0)
Welcome to Embedded.
I am Alicia White, alongside Christopher White.
Do you remember the magazine highlights?
A lot of us do.
It was the one where you usually found it at school or a dentist's office
and had a bunch of cool puzzles and games, and it was educational, but nobody admitted it?
Our guest this week is Jason Turner of C++1.
weekly. And he's recently written a book. Hi, Jason. It's great to talk to you again.
Hey, thanks for having me back on the show again. Jason, do you remember highlights?
I do remember highlights. And I'll say that that kind of thing has actually been inspirational
to me for the puzzle books that I've worked on for the last few years. But that hasn't been
all you do. So could you tell us about yourself as if we met, I don't know, on an
airplane and we're just, you know, try not to irritate each other. Wow. It's a low bar.
It's a very strangely specific scenario. That is, it's, well, it's happened many times, of course.
I recently actually had someone ask me what I do and I laughed. And he said, you just laughed. And I said, yes, because I just don't have a good answer to this.
I am an author, as you've mentioned.
I have a YouTube channel.
I do on-site training for companies that are trying to write better C++, and basically
everyone can write better code, insert programming language here.
You can do it better, right?
So I travel and I do training for C++ students, and I speak at conferences, and I
I don't know.
Yeah, something like that.
C++, educator and evangelist and trainer.
And author.
I don't know if I like, yeah, an author.
And I also don't know if I like evangelist.
Yeah, yeah, I would have wondered about that.
Yeah, yeah.
Okay.
All right.
We're going to do lightning round and then we'll figure out what your career path was.
That sounds great.
C++ anthropologist.
Hey, that's a good one.
All right, lightning round.
What is your favorite modern C++ feature?
Favorite modern?
Oh, God, it's, you know.
I really appreciate a lot of the new metaprogramming stuff coming in C++26, if we want to go, like, ultra-modern.
Like, we're talking reflection and all kinds of stuff is going to make, like, so much compile time goodness possible that just, like, no other language today can compare to.
reflection is where you can i get that different i keep getting that confused with introspection but
reflection is where you can determine the type of something you're using or
it's compile time looking at your code in general so uh the way i've used reflection and
just unlike prototyping code because it's you know just marginally getting support and
compilers today is to take a namespace and walk over every function in that name space and
then automatically generate script bindings for another programming language.
So you could use this to just say like, hey, take this entire namespace and make it available
from Python.
And you can just do all that at compile time now.
Okay, right, okay.
Fuck it, TLLs.
I'm sorry.
Jigsaw puzzles or crossword puzzles.
Jigsaw.
Sudoku or Wordle.
Or neither.
I don't really love either.
They're fine.
I don't get into either.
one of them. Let's say neither. Okay. Best mid-morning snack in Copenhagen. Best mid-morning
snack. You know, I've only been here for a few days. Well, you better get long enough to find the best
pastry shop. The base, see, there's, there really is, there's an astounding number of bakeries here.
And like, sure, in European cities, there's bakeries, but there's like, on every corner,
there's, like, organic bakeries, there's pastry shops. There's, it's, it's, it's, it's, it's, it's, it's,
It's more. It's extra than I'm used to. And I've only actually tried one thing so far, which was like they're more traditional like twisted knotted cinnamon theme, except it had pistachio cream in it instead of cinnamon. And it wasn't great. I wish I'd gotten the cinnamon one. But like two doors down from that place, there's a place that literally just sells like cinnamon rolls. Like that's what they do. So, hmm. But you haven't been.
He's only been there a couple days. What have you been doing for a couple of days?
We have seen an unbelievable number of museums. Seriously, like, it's becoming one of my favorite European cities. My favorite city, one of my favorite cities in general. It's just there's so much to do here. I was very surprised. I'm here for work. I think I should say that. I'm here because a company hired me to do on-site training at their facility. So it's my first time to Denmark, my first time to Copenhagen. And I've been really happy.
happy with the city.
What about Fika?
What?
It's a Nordic, it's Spanish and Danish.
Oh.
You take a pause and socialize with a beverage and treat.
It's like a coffee break, but it's like an extra coffee break.
It's like a homey, comforting coffee break.
I haven't done that.
I think that when you.
or talking to the folks you're training, you should ask what time FICA happens.
Okay. I've had weird experiences like that when traveling. I had students in the Netherlands
once say, oh, don't you know about mid-dog fried dog? And I'm like, I'm sorry, what? They're like,
it literally is midday Friday. Okay. And they said like, oh, like we all basically go home
at lunchtime on Friday. That's the end of the workday. And I'm like, I still have three more hours
of training material to go over. So we didn't actually end up canceling the cast halfway through
the day, but no, no one had told me about that before. Mid-dog, fry dog, yeah. I think I'm saying
that mostly correctly. I'm sure a Dutch person will let you know in the comments.
Fastest way to come up to speed on modern C++
after ignoring it since 1998.
Very specific.
That is very specific.
I would say you should probably pick up
Bionnet Drew Strip's a tour of C++.
He does a great job of going through the main features.
Or you can look through my YouTube channel
where I have a video that's the best parts of C++98,
the best parts of C++11, the best parts of C++11,
and I kind of like just build those things up.
Awesome.
You used to have a podcast, but now it's primarily YouTube?
So I've had the podcast and the YouTube channel started about a year after my podcast started,
although I wasn't the one who started the podcast.
I just was the longest running co-host, I guess, if you will.
And then it was Rob, or Irving and I, Rob was the one who started the podcast.
We stepped away a few years ago and then two other guys picked it up and they ran with it for a few years.
and now they actually just published what is their last episode.
So at the moment, the podcast, it was called CPPCast is on, I guess,
indefinite hiatus again until perhaps someone else picks up the mantle or something.
I did with Rob, uh, Rob did 299 episodes of CPP cast,
and I was with him for about 280 or so of those.
I missed a few because of travel and such.
a lot. Yeah, we tried to do every week. It was, you know, it's a thing. As you know, you're a
podcaster. We've gone to every other and it really helps the rhythm. Yeah, I, uh, we, I don't know.
It was like it became a thing over COVID. Um, like occasionally we would miss episodes before
COVID and then after COVID, there was just, it felt like a lot of people were kind of relying on us
for some level of normalcy and continuity in their lives.
And so we just did it.
We just, we refused to miss an episode for like three years straight every week.
And then we stopped altogether after that, I guess.
But anyhow.
Before we dive back into today's discussion,
I want to share a new resource for anyone curious about the future of 3D person.
Mouser Electronics has a dedicated, empowering innovation together hub that covers the latest
breakthroughs in the technology.
Their new series explores how 3D printing is transforming engineering, from advanced
materials and smarter processes to rapid prototyping and full-scale production.
You'll find insightful articles, podcasts, and videos that highlight real-world applications across
industries. If you're ready to see how 3D printing is reshaping, designing, and
manufacturing, head over to mauser.com slash empowering-innovation. All right, let's get back to it.
Well, we seem to have wandered away from lightning round, so. Oh, sorry. No, no, it's not you.
Who's our fault? We contributed to that. So, we've hinted about puzzles.
Yes.
You have a new book coming out called Programming Puzzles Big Book 400 pages of fun for ages 7 to 99.
That is correct.
Why 7 to 99?
Why 7 to 99?
Oh, because my second oldest nephew, I guess exactly where he falls in line, doesn't really matter here.
But one of my nephews has a code cubbies is what it's called.
a programming after-school kind of thing.
In the Atlanta, Georgia area, you can look it up for any of your listeners.
And he, like, I gave him some of these puzzles for his students, and he said at the seven-year-olds
with a little bit of help, like a parent just kind of like pointing them in the right
direction, were able to do the types of puzzles that I put in this book.
He said by like nine, they could just do them.
They don't, they'll just figure it out.
They can look at the examples.
They can figure out the puzzles.
And I had to say through 99 because, you know, that's what one does, you know.
Like I wanted to make sure that everyone knew it was for all ages, basically.
Toys R Us Kid, yeah.
But these puzzles, I mean, there were word search, which didn't think, which was hilarious to me because I remember doing.
word searches. But there were things like you would give some of the binary numbers as an example,
and then you would say, now, figure out what the rest of these are. Yep. How did you decide?
I mean, how did you decide which puzzles? How do you leave it? How do you develop a puzzle?
All right, sure. How do you develop a puzzle? How do I develop a puzzle? Okay. So what I wanted to do
with this book is I wanted to make, well, okay, this goes back like a while ago, but my wife
and I were traveling in 2021. Goodness gracious, is that one that was? It was. That was in 21. We were trying
to get back to travel as early as possible. Anyhow, we were traveling in 21, and we met some people
that are like, hey, I want to learn programming. Can you teach me how to program? And these are people
in a part of the world with, like, no access to computers.
They have cell phones, right?
And so, like, for the last four years, this has been in the back of my head, like, how can I
make, like, computer science education as accessible as possible and as fun as possible?
And some of my earlier experiments with this, so like you said, this isn't my first puzzle
book.
I have other puzzle books that are more C++-centric, but they're not like, they're not books
that are out to get you. They're books that are intended to actually be fun to do. So like my first
C++ puzzle book, now I'm just talking. I hope this is all right. But my first C++ puzzle book is
called Object Lifetime Puzzlers. And my niece happened to be visiting. And she knows nothing
about programming at all and has no interest in programming. And so I just was like, hey, look,
I'm like trying to figure out if this puzzle book works. And I gave it to her. And she asked like two
questions and then by like the next day she had gone all the way through the puzzle book and she
found bugs and my puzzle book and stuff for me and I'm like this is great I'm like you understand
the four types of object lifetime that C++ has better than most of my students do now because you
went through this puzzle book right and so I've just been like this has been in the back of my
head for like four years and I gave a talk at C++ on C and two a few
years ago, 2003, I think it was. And the whole gist of that is like just how can we make programming
information as accessible as possible. Anyhow, so I kind of broke down the thoughts, the things that I
thought were like core to computer science. So as you mentioned, I've got binary puzzles in there.
And so it just shows like, you know, a few examples. And then I expect you to figure out what the next
thing would be. You can flip to the back to the answer key if you don't get it, but you should get the
pattern pretty quickly. And then I introduce hex and octal and then conversion between those
things. And, well, I don't know if you want to go into all the things that the book covers right now,
but it covers a lot. By the end of the book, you should be able to understand like recursive
algorithms and LISP if you do all of the puzzles all the way through, for example.
I like this idea because to me, programming has always been puzzle-solving of a kind, right?
That's the fun part of our job.
That's the fun part of our jobs.
But it's usually kind of muddled, like we're solving multiple problems.
Puzzles at once are problems at once, but they break down into certain classes.
But the way it's taught is usually not as a, at least for me, it doesn't seem like the way computer science is taught is a series of puzzle-solving kinds of things.
and breaking it down into like common, okay, here's the kind of thing you need to
solve on the regular.
Seems like a good way to go about it.
Plus, if they're fun on their own, you know, divorced from computer science entirely,
that's a bonus.
I think they should be.
I'm pretty sure they should be.
I gave a copy, again, to the same niece who prototyped my very first puzzle book.
And, well, then she went on her honeymoon, so I don't know if she's looked at it yet,
But she was very excited to receive a copy just for the record.
And she did start on some of them.
And she was like, she was looking at the binary and she's like, okay, quick question.
She was like, does this mean this?
And I'm like, you know, and I'm like, yes.
And she's like, okay, great, I can do the rest of the binary ones now.
And I'm like, score.
And she is ridiculously smart anyhow.
Like, just comically smart anyhow.
But you had binary and hex.
You have regular expressions.
there was LISP.
Yes.
And these were all presented as,
not as here's a programming problem,
go find a compiler,
but as here's a pattern problem,
puzzle it out.
On paper.
Right.
On paper.
Yes.
Oh, I would.
I want people to write in the books so badly.
I want them to treat them as puzzle books,
but people don't want to,
when I meet them at conferences and stuff,
Anyhow, sorry.
I remember when Robin Sloan was on the show
and we were talking about notebooks
and that whenever he got a new notebook to write in,
it was just so overwhelming the blank page,
the pretty notebook.
How can you put anything worth it in there?
And then he would leave them out in the rain
and drive over them.
So maybe that's a strategy for you
is to drive over all your copies
so people don't feel as bad about writing them.
I'm sorry.
End of thought.
It would be a strategy.
It could, they could be special editions that have been pre-driven over.
And colored in.
Maybe you could take it to an elementary school and have them just do random crayon colors.
That sounds perfect, yes.
So you mentioned the object lifetime.
You also have copy and reference as two puzzler books, which odd, but okay, and you have
op-code puzzlers.
Yes.
Which was the one that I was like, I should get that one just to play with it.
But then I was also like, I should do my own work.
I will say, honestly, I'm not in retrospect, very happy with the op-code puzzler books.
And if that's the kind of thing that you want, then I would suggest you just get my current book, the programming puzzles big book, and just do the assembly language puzzles that are in there.
because I think I do a much better job of introducing the concepts
and building up slowly into actual code samples with those.
The object lifetime ones, yeah, it's the four different types of object lifetime in C-Bus, Plus,
and that came out of exercises that I will do with my students on site,
and people would just be like, yeah, this is fun.
And I'm like, you know what, you all said this is fun?
I'm totally making a puzzle book, and I did.
The copy and reference puzzles is, you know, just to kind of get,
people really like ingrained in your head that C++ has you know by default copy semantics
which makes it relatively unique in the world of programming languages and they're
consistent copy semantics it's not like Java or C sharp where it depends on whether it's
a structure or a class or something like that yes I just that annoys me from from a design perspective I'm
sorry.
No, I understand.
I mean, for me, C always makes sense because I am steeped in C, and pointers totally make
sense to me.
And C++, I usually am good as long as I'm not too far in the future.
You mean the recent past?
The recent past.
The right.
And then Python, I just assume everything is copied unless I'm in pandas or numpy, in which
case I get to choose.
But I know that that's not right.
That's not correct.
I think it's mostly everything is actually reference in Python, except for when it's not.
Yes, except for when it's not.
Except for when it's not.
And there's a gotcha in Python that I had someone point out to me that if you have a defaulted parameter to a function that is a list,
and then you update that parameter inside the body of the function, the next time you call that function, the new default is what you had previously done inside.
that function.
Excuse me, I need to go write this down.
I think this may affect some of what I've been working on.
I'm almost positive I said that correctly.
That is really unexpected behavior.
Well, I mean, it's just another object that has its own lifetime.
And so, I guess.
But why wouldn't it be true of anything else you passed in?
Is it just lists or is it lists and everything?
I don't know if it's just lists.
Maybe it's everything I don't know.
No, default variables are registers, so they wouldn't be...
In Python?
I mean, ideally.
Anyway.
I think they're registers in this case.
I do want to stress that these aren't like elite code interview questions.
Oh, not at all.
Tricky, yeah.
No, no.
And I was just thinking about the object, I'm sorry, the assembly language one since you just said registers.
By the time you go through all the assembly language ones specifically,
you know direct address, direct addressing, indirect addressing, immediate values.
So you're effectively taunt pointers without realizing you're being taught pointers.
And, wait, did I get that right?
Yes, I think that's right.
It has, well, at least those different ways of loading values and a set of registers.
Well, and that's supposed to be fun, which, because it's kind of sneaky and you're not saying,
this is a pointer and all of the same words that everybody uses to describe pointers.
Right. I don't use words at all.
You don't end up in this pointer reference memory pointer reference battle where you just
continually say the words over and over again and hope the person understands what you mean.
No. Yeah. Just examples.
I've been in that loop.
Okay, so what's the difference between a puzzler and an interview question?
I think some of my C++ puzzlers could be used as interview questions if you wanted to just see if people understand these semantics in the languages.
But I don't think any of the puzzles in the book we're talking about today, the programming puzzles big book, I don't think any of the puzzles in there would be anything that you would ever practically use for an interview question.
They're just, like you've said, they're meant to be fun more so than the ones in the C++ puzzler books.
It doesn't come down to semantics of a specific language.
I mean, I do have Python and Lisp in there.
So I guess you could take some of the more complicated Lisp things and be like, hey, what's happening here?
And if the person's like, well, they defined a function and they're calling it recursively, then you'd be like, okay, I guess you understand how to read Lisp or something.
But the word recursive is never used in this book.
word function is never used in this book. It's, you just learn that that's what that thing is
doing. That defined a function and then it gets called later. And in fact, the words binary, and
I don't remember whether you used regular expression or rejects. Only in the, and only in the
headings, does it say that? It's only in the headings, and that's how you find the answers. But
nobody, you don't ever say, this is binary because it's ones and zeros.
as opposed to hexadecimal, which is up to 16.
No, and by the time I type, by the time later in the book,
when you have mixed binary and hex and octal and decimal,
you only know the difference because I prefix them with, you know,
B, X, O, or not no prefix, so then you know it's decimal.
And so you just have to learn, like, just through doing the puzzles.
But, like, how, you know, a part of what was in the back of my,
head is like playing a video game. And you learn so many rules about the physics and the game mechanics
of a game without ever being told that's what you're learning, right? Exactly. That's what I'm
going for. I wanted that. So I taught embedded systems for a couple years and my quiz questions were
objectively terrible.
But subjectively great.
No.
Oh.
They were just terrible.
I think because when I was told how to write them, I was supposed to be taking the
learning objective from pedagogical things, which I had, which were important.
I agree.
But I was like taking those wordy, complex learning objectives and then trying to make
quizzes to make sure people understood this completely.
complex idea, and I ended up with quiz questions that people said were, seemed like I
wanted them to read my mind on what was correct, which is totally not what a quiz question
should be. How do you approach wanting to figure out if somebody understood a topic?
That is a good question, and I don't feel like I have a great answer to it either.
I feel like I can observe when a student is understanding a topic, like when I'm actually doing teaching, right? And I'm sure you've observed this as well, where, you know, maybe you have a two, three, four, five day class. I don't know, whatever. And on like the third day, you put an example up. And the student in the classroom, who was like asking a ton of questions on day one. And now on like day three or day four,
is, like, giving the answers, and you're like, all right, this is spectacular.
Like, I just watched all of this click in your head in real time.
That was amazing, right?
But I don't know how you actually test it other than asking the students more questions.
And it wasn't even that I wanted to test all of the information.
I would much rather have made puzzlers for them, where they learned.
and demonstrated their new knowledge.
But I don't know how to go about making puzzles like this.
Yeah.
I mean, you know, I think I was successful at this,
and maybe this is an idea that can be extended to other topics?
I think so, yes.
Okay.
In fact...
I still feel a little unsure about it, right?
Because, you know, I haven't got it.
a ton of feedback yet i i was thinking that if you wanted to do one that was language independent
well this is true true there's no c plus plus in this book yeah but even more so uh i would want to go
through the gang of four uh design patterns interesting and see if you could make
puzzlers out of those i mean you'd have to really build it up and then you'd be able to
I would reuse the same pattern-ish thing.
I bet you could do that.
I mean, you would probably have to start,
I would think you would have to start
with object-oriented principles,
but again, without telling anyone
that that's what you're teaching, right?
Like, demonstrate object notation, member variables and such.
Ganga-Fort likes that kind of thing.
Yeah, but I don't even know that I'd go that far.
I mean, I would start with actual objects,
like how an automobile goes together with wheels
and a steering wheel, and, you know,
and being able to talk about factory functions that way or be, I mean, I think there's a typewriter pattern, or it's one that I always use with the typewriter example.
And if you used an actual typewriter with keys, it would be very approachable.
Like, how do you solve this problem? And the answer is the pattern.
And then you can see another problem that's similar and have this.
Anyway, if you want to talk about that offline, we can totally make.
I think, well, no, you've already got me thinking because I, so have you played any of these like Factorio or whatever kind of gangs?
We are aware of them.
I try to stay away from them for fear that they will consume me.
This is like the Shenzhen.
Yeah, or Factorio's even bigger.
Yeah.
I mean, I've got a, yeah.
If it's a programming game, I try to stay with it.
away from them because I will totally 100% get sucked in.
Optimization, sequencing, all that stuff.
So fun.
Wait, wait.
So there is a game that I have been playing with my wife, and I am trying really hard.
So I'll start describing it while I'm trying to pull it up on Steam.
But there's this game called Overcooked, and it was very popular.
Oh, we've played Overcooked.
Okay.
Yeah, okay.
So not overcooked, though.
I was saying.
Overcooked is what got us started on this type of game,
and this other game is, I can't find it.
Played up. It's played up. It's called plate up.
Overcooked is the game we played and you play as two chefs.
Do you remember we tried it once and we decided we'd kill each other if we continue to play it?
Okay.
Anyway, it's a cooperative game where you play as chefs in a kitchen.
and things coming in a sequence.
You have to deliver dishes and all this stuff
and you have to cooperate as the two chefs in the kitchen.
Yeah.
You're like throwing food across the kitchen at each other, that kind of thing.
To get the time, right, because the time runs out.
Yes.
Okay, so plate up is like overcooked, but it's more like a strategy game.
It's still co-op.
It's still the same screen.
It can still get frantic, but it builds really, really, really slowly
from like you're just running a cafe coffee shop and you literally have to fill cups of coffee and deliver
them right like it's super simple okay but if you go on the plate up wiki plate up also has
automation things that can be built oh no so if you go look on the plate up wiki and and look at
what people have done they have like fully automated coffee you know whatever sushi shops where like
the fish is automatically pulled from this thing, which automatically goes to a chopping station,
which takes that to a plater, and then the plater is automatically delivering like different
types of plates of sushi, and then all you have to do is deliver them. Or maybe you have the
conveyor belts in the game, run past all of the customers. So the correct customer just
happens to pick up the plate, right? I think this basically is teaching Ganga4, or at least it could be
adapted to this is what I'm trying to say. Yes. Okay, I need to move away from the page.
You've showed a game to release, yeah. You went to the Play-Up Wiki and you can look. The people have
done absolutely insane things. The most crazy stuff, you have to do like plug-ins and things to make it be
able to be possible. If you're trying to stick purely within the
built-in game mechanics, it's really hard to get both enough money and enough time at
a right point in a level to be able to actually build those things before you get overwhelmed
with too many customers coming into the restaurant at once. But yeah, anyhow.
One of the things you said there was that it had a slow lead-up, but you serve coffee for a long
time.
I find
effectively.
Many of the
games
to get
especially the
co-op games
because I am
pretty bad at
playing Steam
type games.
I find that
they
advance too
quickly.
But I also
can see that
with some of
the puzzle things
not yours
but in general.
How do you
bringing this
back to your
puzzle books,
how do you
figure out
how fast to go.
So, okay, I have a strategy to how I design my puzzles.
And again, I am not 100% certain how successful this is, except my niece is the one who's
given me the most direct feedback to these things.
I introduce a concept, and then I will have somewhere in the like, you know, eight to
12 or so puzzles that just kind of drill in that concept.
And then on the next section, I will introduce a second concept, and I will again have about
12 puzzles that do it. And then on the third section, I will casually mix those two concepts
together. Okay. And then on the fourth section, I introduce another new concept. So now I've
got three concepts that I've introduced. By the fourth section, I, or by the fifth one,
I have like, concept one plus concept three, and then concept two plus concept three.
And then, right, until I know that I have paired all of the concepts, and then I will start
to mix more and more concepts together. So that is my strategy for how I very slowly build
these things up. And I never jump from like one to three things being paired together. I never
ever do that. It's always one plus one, one plus one, one plus one, until I know that you've done all
those things in pairs and then I add them together. Sounds a lot like spaced repetition in a way,
which is, you know, evidence-based. Well, and he does supersets where he switches subjects between
so you do get some more spacing in between. Yeah, and by the time you've gone all the way through
this book, you're going to, to, like, do the latest ones that have, like, some Python and some
Lisp or whatever, or the op-code-based ones, machine language-based ones, it's going to kind of
rely on the fact that you already know how to read binary to be able to do the assembly language-based
one, right? Now, I mean, not the latest, not the first assembly language ones. The first assembly
language ones anyone can do. It's just like printing numbers to the screen. But then by the time you
get to the last one, you know, you've, you kind of need the binary and the hex and the octal and all
the other things mixed together to be it for that to make sense. Which have already been taught
in the book. Right. I just want to make, because a lot of people are like, binary, no, hex, ah.
No. Don't worry about it. You never see those words any. Well, I guess you see them with the
headings every now and then. Don't worry about it. And it's one of my earliest goals, too,
I think I stated this, but I'll repeat it just in case I didn't get it out clearly.
I don't use words, really, in this book.
So it should work for anyone from any background, regardless of what language you know or not.
You won't be able to read the introduction, but the introduction basically says,
I wrote this book to be accessible to everyone.
So maybe I should translate that into like five different languages or something.
I don't know. But aren't the words important? Isn't it important to be able to say, I understand
recursion as opposed to I am competent at using it as using a function that calls itself?
I don't even have the word function in there. So I don't think I do.
I am competent at using a thingy that calls itself.
Reusable thingies that call themselves that have been called from other call, would you use the word call?
But what word call would you use if your primary language was Swahili?
I don't know, right?
Like, I don't know.
So what's the point?
I mean, there's something to be said for understanding concepts without the baggage of their jargon, right?
Yes.
And coming to the point out of this puzzle book, maybe you do take computer science, you'll instantly, hopefully, recognize, oh, that's just that thing I was doing.
and it's called this. Okay.
I can see it going that way and also the other way,
depending on where you're coming from, of course.
Sure, sure. Where I had at least one person at the last,
so I've been to one conference where I actually had copies of this book to give out.
And at the conference, this was at CBPCon this year.
Someone came up to me, and he was like,
I would love a copy of this for my son,
who is currently taking computer science.
And I'm like, you know, whatever. Here I have a spare copy. And it was someone who had helped me out with some other stuff too. But I say relevant, I guess. I give the books away whenever I have the opportunity to. Yeah. So I can see it going like, I guess top down in that regard. Like, hey, I'm a computer science student. This might be just a way for me to practice some stuff. Or bottom up, like, hey, these are fun puzzles. And oops, I accidentally understand computer science.
I still wanted it to go bottom up. I just wanted it.
end of it to have the word.
Like, congratulations, you're getting good at recursion.
So that when that word came up again, I wouldn't think it was more than it was.
I think that happened to me, that there were times in math and in computer science
where someone would say a term and I would be afraid because I didn't know the term.
And then they would tell me what it was and I would still be kind of nervous because what
they told me was way too simple.
Oh, that's just singular value decomposition.
That has never happened with that set of words, no.
I think in a way I was afraid that if someone was having fun with the book
and I accidentally told them they were learning something, it wouldn't be fun anymore.
You need like an online appendix that they can go to and say.
The secret, the secret thing, don't press this button unless you want to find out a deep secret
about what you've just been doing.
Yes.
You know.
And it should be a URL that's only available if you succeed in the last few puzzles.
Yes.
Oh, you have to decipher the URL.
And once you do, it shows you everything that you've already learned, broken out.
Yes.
Congratulations.
You're now a senior developer.
Here's your Jira tickets.
No, that's that's right out.
I, that's, I kind of like the, I mean, it's too late I've published the book, but maybe
in the next edition, I will do something like that.
You do have some words in the book.
I have some.
Not very many, though.
Well, each section has a Wikipedia link.
Actually, I don't even want to call it a Wikipedia link, because they were links, but they
were all rabbit holes.
All of them.
Like, universally wanted to just go from that.
link to another link to another link and open up the 45 tabs. Everything from Grecian clocks to
I think there was one on escapement mechanisms. Oh, I don't even know. There's so many. So basically,
I mean, the secret, don't tell anyone, all right, is with the way that I was formatting and
laying out the puzzles, some of the pages were like more blank.
than I wanted them to be.
So I put together a database of, like, basically the history of computation was the idea
with Wikipedia links, and then those were kind of automatically stuffed in where the layout
was a little sparse on some pages.
So it's there to add more content for anyone who cares, but that content is never directly
related to what's on that page.
it was, but it was hard not to get sidetracked into those.
I mean, part of that was because what I was looking at on the page,
you were showing binary, and I was like, yeah, okay, whatever.
And then there would be like this link that just glowed with fun.
Well, okay, I'm sorry you learned something more with it than I intended.
Right.
I'm so sorry you've learned something. That's terrible.
I do honestly hope that this book is successful in like, like I went, I would, I love the idea that like, well, if I, like, okay, I try to create the books that I would want to read, right?
So I also, we didn't even mention, I have some C++ best practices books that I've written as well.
I've written two. One is just.
C++ best practices. It was written around the time that C++23 was coming out. And then the
second edition is C++23 best practices. And it's a reorganization of all that material with a few
extra chapters and everything updated to C++ 23. Anyhow, I've had people be like, this book is too
short. I read it in a day. And I'm like, no, you don't understand. I worked very hard to make this
book as short as possible, right? I am a slow reader, personally. I don't need to read a bunch of words
just for the fun of it. I need the material. I need the content. I need the information that I can go
home with, right? So I would go through and I would simplify every sentence. And then I would have
grammarly, like, do a grammar review, right? And if grammarly said, this sentence can be simplified, I said,
yes, every time, right? I wanted the book to be as understandable as possible and as simple to read as
possible. So I guess this is a very long-winded way of saying, what I would like is that I had
gotten this book when I was approximately 10, I think would have been the exact right age for me
to have gotten this book. And I would have learned so much from it. And so I really just hope
at some point I hear stories from people being like, I got this for my kid for Christmas and they
haven't put it down for the last two days and, you know, and everyone's having fun, right?
That's, I just want to hear those stories.
Well, and then there's the other story.
My kid finished it after a week.
Do you have another one?
That's not the worst thing ever.
That's not the worst thing other.
And I have put thought into like, well, I originally planned to release this as like three different books, like volume one through three.
but I know from experience with my YouTube channel that like if you have episode one on
big topic it gets like 10,000 views episode two on you know big topic part two it gets like
5,000 views big topic part three that gets like 2 500 reviews right it's always diminishing
returns on these things and so I just like no I'm not going to do it I'm printing like
everything that I want to say about these core topics, I'm going to put in one book.
And now the problem is, I don't have a plan yet for what volume two might look like
or what I would even call it, because I don't want people to think they had to do volume one
to do volume two. So I need volume two to be something like just completely different topics
that I didn't cover yet. Or I don't, I don't know. I don't know.
have been thinking some about teaching and learning.
The Patreon Slack group for the show has been going through data-driven science and engineering,
which is a very math-heavy course in controls and systems and machine learning, all mashed together.
And there have been some math concepts.
I mean, stuff like block matrices in matrix math.
I kind of remember, and then I get the one-page cheat sheet, and then that's all fine.
But then there are other things that I wish I could learn it more slowly.
Right.
Right. The O'Reilly had first books that were puzzles as well as the material. Some of those I hated because I was like you, I was like, I don't want to spend this much time on it. But others, I needed the conceptualization. What other topics do you think would do well with a puzzler type approach?
I have one other topic that I prototyped, but I knew it wasn't ready for this book, and it would have made this book too big. And that was SQL.
Yeah. And I'm positive I can do that. But then you start to run to a little bit of a problem. Like you're introducing select statements, whatever, updates, sure. But like, how much of the page are you going to devote to like, this is the set of tables and...
keys that you are currently working with, you know? Yeah. I wonder if you could do linear algebra
and combinatorics. A lot of linear algebra would fall to it. There were some websites that had
some beginnings of making it a game, but not enough to get me far enough. Possible.
I'd have to relearn so much stuff myself to attempt to make a book about that.
But there are lots of other topics.
I mean, even the idea of the scientific method is something that I kind of wish somebody would bring back a puzzle book of how to do that questioning in a rigorous way.
Anyway, I'm just making notes, you know.
I have lots of ideas.
My work is very cyclical, and I know that I'm an average.
a few months this year where I'm just going to be working on books. So it's kind of come back around.
Do you think there'll be more puzzle books? Oh, yeah. I'll do something more. I'm sure.
And your definition of success was along the lines of feedback. Do you have...
Yeah. Does it need to make money for it to be viable?
You know, money is nice, of course. I don't turn down money, generally speaking. I mean,
I have like probably every contract or I have fired clients in the past for various reasons.
Money is good, but I also know that you don't make a lot of money from being an author
unless you are a really famous author, right? So leveling up the quality of code that people
are writing is like, I've come to this slow realization this year. Like that is what drives me.
I've got 502 episodes of C++ weekly up.
I've been making C++ weekly content for 502 weeks straight.
No breaks.
Wow.
And why did I do this?
Why do I have the podcast?
Why do I speak at conferences?
I've given away, I mean, I'm not positive.
I don't know how you'd quantify this, but I'm pretty sure I've given away more C++
content than it.
anyone else has.
I think it would be difficult to match that between the 500 episodes of C++ Weekly,
the 299 episodes of CBP cast plus the conference talks and everything else.
And I realized my driving motivation is really like we can do better, right?
Like I want to live in a world where software is of higher quality than it is today
because it drives everything, right?
So, yes, of course, I need to make a living from money as well.
But I think more success to me is when people tell me, like, hey, by the way, like, I just got this LinkedIn note from someone that was like, I got the senior dev job that I wanted because of C++ weekly.
And I'm like, excellent.
I'm very glad that you are learning things, right?
That's really important to me.
And hopefully he comes back later and has me do training for the rest of his team, of course.
But I don't know.
That's what's been on my mind the last couple months, I guess.
I get that.
I mean, yeah, we've put out a lot of information and we've talked to a lot of people and we don't, we've gotten consulting gigs somewhat based on the podcast because it gets our name out.
Right.
But for the most part, we do get most of our consulting gigs from people we know.
Right.
And so as far as advertising for logical elegance, embedded FM is only partially successful.
Right.
But as far as making us feel like we are helping other people make a better code and keeping, I mean, our goal is more about keeping folks engaged.
in technology careers
because it's so easy to fall out of the pipeline.
Yeah, no, that's a fascinating question.
Gers is currently out of the pipeline.
Oh, okay.
Trying to hang on with one finger to the pipeline.
I think that's a spectacular question
because in my world we talk about these
dark matter developers
because there's like, I mean, there's tens of millions of C++ programmers probably around the world.
And the number that come to conferences and read books and do things where you know that people are trying to actually educate themselves is more like in the hundreds of thousands, right?
At most, it's like, it's really low percentages.
So have you had that experience of saying like someone actually came to you and said,
said, because of your podcast, I have chosen to keep learning more.
Like, you pulled me out of my rut that I was in or whatever.
Yes, and it's the greatest feeling.
That's awesome.
Or I stayed in my job a little longer and I refound what was fun about it.
Or I went back to school because what you were talking about sounded more fun than what I was doing.
Sounds like I should listen to this podcast.
No, don't.
You can never listen to your own podcast.
But sometimes it's just I started this neat project
and I'm excited about it, more excited than I have been about work,
which I, maker space has always been a little weird for me
because as somebody who went through schooling for engineering,
I'm like, there's a formal process.
There's a formal process.
But the makers are always so inspiring and they don't see the limits
and complexity doesn't bother them because they just don't notice.
and that does create a different environment that's more fun for those of us who are like,
ah, that's too hard.
But then somebody shows up with blinking shoes, and you're like, those are so cute.
I remember those first years as a software developer when the boss would come to you and say,
is it possible to do X?
And you're like, yes, I'll do that tomorrow.
And then you have it done and you deliver it.
But me today, we'd look at that code and be like, you should have never done that kid.
And yet the people that I get to mentor through consulting, I absolutely adore the mentoring.
It's been a lot lately.
So I have a lot of recent times where it's been like, okay, okay, you wrote this with chat, GPT.
I understand.
I appreciate that.
now let's think about how we can write it without chat dbt
do you understand any of the code that is in this project
i noticed you got a lot better at git recently what happened
oh chat gpt is giving you all of the git answers that's
kind of cool i got really good at at nuclear power plant operation
too over the last week that's not that's about as dangerous as git
I actually seen those comments from people that are like,
I don't even bother writing complicated Git commands anymore.
I just ask Chat TV.
And these are like senior engineers, right?
They're like, it's so much faster to just let ChadGBT give me the command that I need to run.
And I'm like, you know what?
I'm not going to have you a hard time for that, you know, for the like one-off tools.
I'm not.
I mean, that's actually been really helpful because Git is objectively, again,
objectively, terrible.
How long have you been using Git?
I have been using Git long enough that I shouldn't have to look up whether I need
get revert or reset.
Have you, like, read a book on Git?
I have read two books on Git, and I have played the games.
Have you tried reading no books on Git?
I think that's the key.
There's a Git game.
There are multiple Git games.
I didn't know there.
Really?
There are?
Yeah.
And they're kind of like what you're doing with puzzles, but they're,
They're more pragmatic about it.
Oh, my, get.
Yes, that's one of the best ones.
That's hilarious.
I'm going to, oh, I'll have to play with that.
Okay.
So you mentioned you started out developing, being a developer,
and you got your degree in computer science?
computer science from virginia tech yeah and then you did software for like a decade um i remained let's see
from i graduated in 2000 and i would say i did active software development with clients through
22 okay so more than a decade so i yeah more than a day yeah 20 some odd years as an actual paid
developer. And then I let my last client fall off partially because I was just doing so much
travel for training and trying to keep up with the YouTube channel and everything else.
I'm just like, you know what? It makes more sense for me to focus on these other things.
And so I let the last contracting client drop off a couple of years ago. But I still maintain
several open source projects from time to time that I work on.
But you went from being a developer to travel only?
a lot as an educator.
Yes.
Did that happen gradually?
If somebody else wanted to do something like this,
what advice would you give them?
I've been giving some thought to those topics lately as well.
And it was, I think in like 2006 is when I first started writing blog postings
about the stuff that I commonly saw people getting wrong in C++.
plus specifically. Like my career has been heavily C++ focused for the last couple decades here.
And it was so it was actually like a way more gradual process than I thought that it was,
but it felt very sudden because I had a lull in my contracting work. So I basically had like a yes
year. And so I heard like, okay, well, I just saw this announcement about a conference.
coming up. I hate, I hate, I hate public speaking, is what I said to myself. But I'm going to go ahead
and I am going to put in a proposal for this conference. And I got two talks accepted for that
conference. And I was exceedingly fortunate because the first talk that I gave, I just had just
this spectacular audience who really interacted with me. And it became a great experience
for me, and therefore I kept doing it. And it felt like this was like a two-year transition
from like being a developer to being an educator. But if I go back and look at like the podcast
and the YouTube and the blog postings and everything that led up to that, it was probably
realistically more like a eight-year process very, very slowly building up to it.
one of our listeners has asked us recently how do you learn to enjoy writing and i think it's because
they would like to follow something similar that they would like to have a blog and be useful
and maybe get more experience so that they can speak and train right do you have any advice
for someone who wants to get better at writing but also wants to figure out how to get themselves
self-motivated for writing?
Self-modated for writing.
For blog posts.
I don't know.
Yeah.
How did you do it?
I don't.
You were you just so angry that everybody was wrong all the time?
You know what?
That might have been.
That might be the secret.
You have to get properly angry.
I'm not sure.
I'm always angry.
I wasn't very consistent about the blog post.
Yes, right, yes.
actually, in all seriousness, we'll have people ask me, like, you're so calm on stage. How are you, like, so calm? I'm like, no, no, no. You don't understand. My secret is that I'm always anxious, like, which is absolutely true. I generally, you know, but, so I think part of how I motivated myself was, well, basically, I didn't have work was how I became consistent at doing this, right? And if you don't have work, but you do have work, but you do have.
have a family and a mortgage, you have to try to something that will start earning money,
right? So that was a strong motivator. Another motivator was naming my YouTube channel C++ Weekly.
Boy, that really does. Not lock you in, doesn't it? Yeah.
Like, I knew, and I knew what I was doing, but I didn't know that I would be doing it for this
long necessarily.
You have to find that motivation in yourself somehow.
I think I was a developer and then I was a consultant and then I had downtime.
And the downtime, like many consultants, that's when they do these projects that they start writing about or talking about.
Because if you don't work at all, that's kind of bad.
but if you don't have any paying work, your goal actually is to get paying work.
And so you're doing something you can talk about that works as advertising for you.
And so yours turned into an entirely different career.
Yeah.
It has.
Yeah.
I get it.
I ended up writing a book.
I get it.
Yeah, I'm trying to.
Well, so one thing that I've personally.
tried to do is every time I've had a period of unemployment or
underemployment, I've tried to see that as an opportunity. So I was
unemployed during the dot bomb for like six, seven months, seven months. And in
that time period, I worked on an open source project just on the side. For the
fun of it, I was just trying to up my skills. I was learning C++ plus at the time.
And then I got a job that was terrible. And then I applied to
for a different job, and when I was interviewed for that second job, they told me basically that
they offered me the job because I was the only developer that they had interviewed with C++ cross-platform
GUI experience. And I only had that experience because I spent six months tooling around with
this site open source project that happened to be cross-platform. And the reason that project was
class platform is because I wanted it to be available on Windows, but I prefer development on
Linux. So I had to make it cross platform. And that's just kind of been a thing that has
happened throughout my career. I just look for opportunities to learn new things, and it goes
places. You mean there wasn't a 10-year plan? There wasn't a 25-year plan, I'm sure that.
I like how some people have thought that I planned my career and I'm just like, no, no, I'm sorry, no.
But surely you occasionally set goals and then you do attain them, right?
I often set goals and then do the opposite.
It's not great, but it is a direction and it's often useful, but no, I'm not great.
No, that's not true. I mean, I have clients and I have goals. We meet them or have a good reason not to. And I finished the second edition of my book. So clearly I can meet goals. But it is a little weird that sometimes I set goals for myself. And then I'm just like, all right, let's get started. And then suddenly I have procrastinated myself into an entirely different achievement that was never on the list that I'm kind of proud of.
But also hoping nobody notices that I'm using it to hide what I didn't actually do.
That's normal, right?
Yeah.
Sure.
I mean, some of the blog posts I've had, some of the projects I've had have been,
personal projects have been, I wanted to learn X.
But in the process of trying to learn X, I ended up with A, B, and C.
and now that I'm to the point where I might be able to learn X,
I'm out of time I don't, I can't do that
because I've already showed everybody ABC
and now I have a contract and I'm busy.
Yeah, that's, yeah, no, you did exactly what you set out to do.
Which at the time was to get a new contract, so yes, totes.
Yeah, no, you set out to learn something new, and you did.
It just wasn't the thing you thought you were going to learn.
And that flexibility, I think, is very useful to me.
Yeah.
Learning is seldom pointless, even when it isn't obviously useful.
No, every single thing that I've ever learned is somehow ended up coming back around.
I think so.
Yes.
Sometimes it's jokes.
I've actually, I've only actually set two career goals.
No, three.
The first one was that I eventually wanted to move.
Basically, I started in VB6 development, and I had a career goal of moving out of VB6 development.
That's one does.
Yeah.
And then I got to C++ world.
And then my next goal was, I hate working for, you know, one company.
I want to work for 10 instead, basically.
Like, so I wanted to become a contractor.
And I met that goal.
And then I said, now I want to be paid to travel.
And that happened.
So those three. Yeah. I never wanted to be an author. No.
Do you usually get paid to go to conferences or is it mostly about training?
No. And so I basically only go to conferences that pay for travel. So there's actually a few
C++ conferences that can't afford to pay for travel. And I understand because conference budgets
are incredibly difficult to be profitable. So I go to the conference.
conferences that pay for travel. And then I guess this past, yeah, this year, I've also given a
workshop at each of those conferences. But I never expect that workshop itself either to be
profitable, really. And then what really helps is the people who are in the regular conference
sessions that I give and the people who are in the workshops that I give, some very low percentage
of them will eventually have me to their company to do on-site training, and so then it all
works out in the end.
What's the best part about on-site training?
For you, not for them?
For me.
For me.
Well, first of all, I love going to a city that I've never been to before.
So that part, like, I've even told some companies, like, you bring me there, I'm going to
give you a discount.
I'm not going to say anything specific on air right now.
You want me to go to Venice?
Yes, we can talk about Venice.
Venice, we could talk about, yeah, we could, I fine, I'll say the one that I've actually told several people, I'm like, you bring me to Germany during Christmas market season, I will give you a discount. That's like my wife and I love Christmas market season in Germany. And then, but I, that's the best, like, for me personally, I guess, like personal growth kind of thing. But I also, I really do love when I see that students, like, have, like, have, like,
learned something new. That is very rewarding as well. We have a couple of listener questions,
which I think we've mostly answered. The first is from Chris Gamble, who likes the idea
for the book, hasn't checked it out, wanted to know how you balance the difficulty of puzzles
between beginner, intermediate, and advanced folks. And that's where I'm just like,
it's a flow. It starts from assuming you know nothing. And if you go in order,
You'll know things, basically.
So I'm not really trying to make a balance.
I'm trying to make a continuum.
And Andreas wanted to know what you thought about the fact that it's even possible to write several C++ puzzle books.
What does that say about C++ compared to alternatives?
And I will just say, I think every language has puzzle books right now, first of all.
It's just that so many of them are.
also the spec.
But I think, as we already covered, my C++ puzzle books are meant to be fun.
They're not C++ gotcha books, right?
They're just like going through things that are core in the language, and it's not trying
to trick you or anything.
And sure, there are books like that about C++, and there's websites that are like C++ quiz,
and it's like, and even a Twitter.
Twitter channel or whatever account that has posted like a C++ weekly quiz.
And some of these things, even as like I would call myself a C++ expert, I'm like,
I have no idea what that code's supposed to do, right?
I'm not trying to do that.
I'm trying to educate you in a simple and fun way.
Chris answered an interview question.
I have no idea what that code is supposed to do.
And I don't care.
Whoever wrote it should be fired.
Yes.
And I think that is sometimes the appropriate answer when you're an internet.
review. Now, the problem is, if it's, I've known people who, who wanted to say something
similar to that, but what really the truth is that they didn't understand a core feature of the
language. That was not the case with the question and question. But yes. Just be certain that
you know. Dare you ask me what a switch statement is.
Basically. Do you know who I am? I've had those on the other side.
Yes, do you know who I am?
I had someone I interviewed once a long time ago when I still had a regular job who put C++ guru on his resume.
Uh-oh.
And I tried to like, I'm like at the point, I'm basically a C++ beginner, but I'm like, you put guru on your resume.
I'm going to find some good questions, right?
And I give him some questions.
And he's like, I think I'm going to remove guru from my resume.
And I'm like, I think you probably should.
C++ yeoman.
Yeah.
I did try to just look for Swift language puzzle books,
but unfortunately that can never happen
because the Swift puzzle book space
has been completely taken over by Taylor Swift puzzle books.
So they're going to have to rename the language
for anybody to ever find a puzzle book about language.
That is almost certainly true.
I know there are Python puzzle books.
I own one of them.
Well, I have a contribution to that regarding finally else and exceptions.
Try, try, finally.
Try, catch, finally?
Yes, that's it.
That's Java, right?
No, it's also Python.
Try except finally else.
It was just too many, and it didn't matter what it did.
It was just too complicated.
All right.
Are there any things I should ask you about the book or your career?
I don't know.
I feel like we've covered an awful lot.
I would say, check out the book.
It's not expensive.
Minimum price on Lean Pub is $10.
And I priced the Amazon version of this book as cheaply as I could to still make some money for myself.
Like I said, like I'm really not highly driven by profit motive here.
yes, I would love to sell 100,000 copies. That would make my day, but I'm sure that's not going to happen.
I think it's 1999 on Amazon. I should probably verify that before you put it in the podcast, but it's too
late now. I'm trying to click on it. It's not going. Yeah, it's 1995. I got that right. Yeah.
So I make a few dollars profit, basically, right? It's not a lot. For a 400-page puzzle book,
that's like it's you know you're not going to find a less expensive one i almost sometimes wonder if
i'm not charging enough people think it doesn't have value you know what i mean but i'm always i just
wanted to be accessible yeah yeah and this is for paper and it's it's it's to write it out and
and if you have you know niece or nephew for the holidays and want to give them something that
might be fun without being obviously uh educational
Yeah. If you know anyone that's got like an interest in puzzles or has mentioned, oh, I think I might want to become a coder someday. I mean, kids still say that kind of thing. I know most of them say YouTuber, but some of them say coder, right? Like, my path to YouTube fame is not, you know, alone. There's been other developers to YouTube fame.
Oh, YouTube fame is like, okay, my level of YouTube fame is high enough that I sometimes get recognized.
and airports, but low enough that I make like $150 a month in YouTube ad revenue, right?
You're not making a living off of YouTube unless you're like Mr. Beast or something these days,
you know.
And we have coupons.
You offered a couple of coupons for us to give away the book on Lean Pub.
Yes, yes, the digital copy because I can't give you print copies.
Right.
Yeah.
Even though we recommend.
I mean, Amazon doesn't give me that.
ability. So yeah. But the digital copies, either you can print your own or you can, you know,
scribble on your iPad. Not with pen. That's bad. Oh, let me give a quick tip for that. If you get
the EPUB version from LeanPub, if you, so the PDF version you can write on in your KindleScribe
or your other similarly enabled e-ink device with a stylus.
The e-pub version, if you try to copy that straight to your device,
the font layout's going to be wrong on an e-ink device,
and that's not something I have control over,
but if you do the conversion yourself from e-pub to the native format for your device
using, like, one of the PDF, one of the e-book management tools,
like Calibre, then everything will be correct, just so you know, a little note for your listeners
there. Cool. Two coupons for Lean Pub. Tell us the puzzle you are hoping to see in the book.
Now, remember, we're not looking for the hardest C++ question or the tweakiest number of
incrementers and decrementers on a variable. We're looking for a puzzle that might be fun.
And get that to us by November 15th, and we'll see what we can do for you.
Now, Jason, are there any thoughts you'd like to leave us with?
I guess, do better.
Next time you're writing code, think, how can I do better?
Our guest has been Jason Turner.
You can find his books on Lean Pub or on Amazon.
You can find his YouTube channel, C++ Weekly, on YouTube.
And you can find his training website at EmptyCrate.com.
links will be in the show notes.
Thanks, Jason. It was fun to talk to you.
Thank you.
Thank you to Christopher for producing and co-hosting.
Thank you to our Patreon listener Slack groups for their questions.
And thank you for listening.
And thank Mouser for sponsoring the show.
You can always contact us at show atembedded.fm
or hit the contact to link on Embedded FM.
And now a quote to leave you with.
This one's going to be from Julia Hearts.
Every day is sort of a jigsaw puzzle.
You have to make sure that you're putting the most important things first.
