Bayesian Mathematics and Coin Flipping
00:00:00
Speaker
You've got a bag of a thousand coins, 999 of them are perfectly normal 50% heads, 50% tail coins. One of them is a double headed coin.
00:00:11
Speaker
You reach into the bag. you don't look at the coin. You flip it 10 times. It comes up heads 10 times. Now the question is, what is your belief about the question?
00:00:23
Speaker
Do I have the double headed coin or not? Oh man. Because on the one hand, there's only one double-headed coin. You had a one in a thousand chance. Sure, but there's also a non-zero scenario that I just got lucky 10 times and I still don't know.
00:00:38
Speaker
Flipping a coin 10 times in a row and having it come up heads happens one in every 1024 times. So since those two ratios, one in a thousand and one in a thousand and 24 are almost equal, it's about a 50-50 chance that you have the double-headed coin. which is a lot better knowledge than the one in a thousand chance that you had before you observed those coin flips. Okay, so that's pretty straightforward Bayesian mathematics. The question is, why do we care as you know professional line of business developers?
Sponsor Introduction: MailTrap
00:01:10
Speaker
And the answer is,
00:01:12
Speaker
Hey friends, it's Scott. I want to thank our new sponsor, MailTrap, modern email delivery for developers. They integrate straight into your code with their SDKs. You get unified transactional and promotional email delivery, 24-7 support. You contact humans, not AI chatbots. We'll give you 3,500 emails monthly in the free tier, and you can try them out at mailtrap.io today. That's M-A-I-L-T-R-A-P.io today.
Eric Lippert's Career and Influence
00:01:44
Speaker
Hi, I'm Scott Hanselman. This is another episode of Hansel Minutes. And today I have the distinct pleasure of chatting with Eric Lippert, designer of fine programming languages, very likely ones that you have worked on. He worked at Microsoft, he worked at Meta, he's the author of several programming books and the voice behind the influential blog, Fabulous Adventures in Coding, which has guided myself and countless other developers through the intricacies of language design and compiler construction.
00:02:11
Speaker
You're just a gift, and you're the gift that keeps on giving.
Eric's New Book: Fabulous Adventures
00:02:14
Speaker
And what you're giving us today now is a new book that is currently being written called Fabulous Adventures in Data, Structures, and Algorithms. And it is now seven of 19 chapters available. It's a live book. You're writing this right now. You're probably writing it today.
00:02:30
Speaker
I'm on Manning. I've got early access. Folks that are listening can click a link in the show notes and get access as well. Watching you write the book is cool. Chapter seven just came out today. Yeah, I'm super excited.
00:02:42
Speaker
That's so cool. Why this book now? We're at the peak of AI-assisted coding. I thought we don't need to know any of this stuff anymore. Well, first of all, it's a pleasure to talk to you, and thank you for that very kind introduction. So why why this book now? Why any book now is the question that i had for for my editor. the The way this came about was i was I was editing a book on better blog writing, better short form writing for developers, which is a topic that I am very passionate about. And that I believe you wrote the afterword to that book. I did.
00:03:19
Speaker
Yeah. And after we got that book
The Importance of Problem-Solving Skills
00:03:24
Speaker
put to bed and it was ready to to go to print, the the editor asked me, oh, are there any books on on Microsoft development that you think we ought to write? And I was like, well, I have been out of the Microsoft ecosystem for several years now, so I'm not really sure what's the the current hotness there. But, you know, if I was to write another book,
00:03:48
Speaker
You know what I would write? I would write a book that was like all of the weird stuff that you don't learn in school that I encountered during my career with building developer tools that involved reading a lot of papers and digesting them and then turning them into actual working production code.
00:04:05
Speaker
And the editor, Jonathan, said to me that the title maybe needs work, but could you... could you write me a proposal for this book?
00:04:17
Speaker
And so I wrote a proposal for the book and he showed it to a bunch of of people who I thought were my friends. Uh, and they all told him that he should convince me to actually write the book. And he convinced me to actually write the book.
00:04:31
Speaker
So why why a book now? Why not a blog or a website? I still really strongly believe in the learning style of reading words on paper or reading words in a long form, in like long form electronic form.
00:04:50
Speaker
I think that's a really powerful way to learn. There's a lot of ways to learn. i learn a lot from videos. I learn a lot from podcasts. But when I really want to grasp a topic, I get the papers on it and I just go through and I print them out on actual paper and I mark them up like like a caveman.
00:05:09
Speaker
um And so then why why this book at this time now when we've got AI coding and Vibe coding? And the answer to that is don't outsource the problem solving.
00:05:21
Speaker
The problem solving is it. The problem solving is the thing. If you are outsourcing the problem solving part, the the the turning it into syntax that's that's fine, right? Outsource that all you want. Use all of the tools you want for
Unique Approach to Data Structures
00:05:36
Speaker
that. But the having a clarity of thought and being able to relate a a problem that you have in a real world industrial setting, a real-world business case setting, and then turn that, have a thought about how you should solve that problem, and then turn that thought into real working code that makes a machine do what you want, that's that's the whole game for me. And building tools to help people do that better, to help translate their thoughts into reality, that's what coding is all about. And that's what this book is all about. And it's about having fun along the way.
00:06:10
Speaker
And it doesn't, I will say it doesn't shy away from from, I wouldn't say difficulty, but like, not even esoterica. Like, I just want to give people a sense of this book because honestly, like I know that's named after your blogs. It's Fabulous Adventures in Coding is your blog. Fabulous Adventures in Data Structures and Algorithm is the book. And you start with starting a fabulous adventure. But then like it' so part one, section four, memoizing immutable quad trees to make a better life. Like you didn't start with Hello World.
00:06:39
Speaker
I did not start with Hello World, no. The the book is organized into into three major sections. And as you pointed out, the the first of those sections is is available on the on the internet. And the way the way that works is essentially you pay for the book now, you get early access to it. As I write more chapters, they show up on the website, and then you get a copy of the book at the end.
00:07:01
Speaker
Yeah, pretty cool. Yeah, so the the first third of the book is looking at... traditional topics, lists and queues and stacks and combinatoric algorithms and trees and quad trees and things things like that, but all with kind of a weird twist on them, not the kind of stuff that you would see in a typical data structures and algorithms course in an undergraduate curriculum, for example.
00:07:30
Speaker
Stuff that I encountered during my career that I thought was unusual and stuff that made me change the way I think about programming.
Stochastic Programming and Uncertainty
00:07:39
Speaker
Then the second third of the book is going to be ah some more esoteric algorithms that I encountered when I was developing developer tools over my career.
00:07:51
Speaker
things like unification and anti-unification. And then the last third of the book is going to be algorithms and data structures that I learned about when I was doing stochastic programming at Facebook. So dealing with ah random quantities, how are random quantities related to other data types that you are ah very familiar with, like sequences or tasks or nullables, right? There's an underlying structure to all of those data types. And I'm going to have little explorations along the way of what that what that structure is.
00:08:29
Speaker
Yeah. I think I want to understand... we let let me This is tough one. We're in a weird time right now where we spent the last 10 years, 15 years, really encouraging everyone to learn how to code.
00:08:45
Speaker
And there's a lot of different kinds of programmers out there. There's a lot of different kinds of but But we all just say programmer, coder, engineer, you know, well, and and it's not a formal thing. Like there's there's no, it's not like you you go to the the medical board and you get like board certified.
00:09:02
Speaker
You're not a board certified programmer, but like someone might get a master's from Carnegie Mellon and then someone might have a software engineering degree from Portland Community College, just like me. And we're all kind of like peers. Right. But someone might be listening and you just said, yeah, when I was doing stochastic programming and they might be doing text boxes over data with React.
00:09:22
Speaker
Sure. Those are different kinds of programmers. What kind of programmer is this book for? Is it for anyone who wants to fill in the gaps? They might just be doing text boxes over data or they might be doing really, really deep, interesting systems work on the back end of something. But we're all just kind of coders in the end.
00:09:42
Speaker
That's a really good point that there we are all really just coders. like that's That's what we do. We sit down in front of this box and we we issue commands and then those commands turn into into a real working thing. And that's ah that's a bit magical. And it's it's nice that there is not a a governing body that is gatekeeping that. Coding should be accessible to to everybody. I started programming on the Commodore PET in my elementary school library. Nobody stopped me from doing that. People encouraged me to do that. and That's why I'm here today. and i I know you have you have a similar story.
00:10:28
Speaker
so What kind of coder is this book for? This book is for curious coders. This book is for people who are coders. right it's not ah It's not a tutorial, as you as you point out. it It starts fairly hard.
00:10:47
Speaker
But it is for people who have maybe wondered, what is the the mathematics that that underlies these systems that we see? Like, why do why do so many languages have tuples? ah Why do so many languages have sequences? Is there a relationship between...
00:11:09
Speaker
ah a device that produces a bunch of a bunch of numbers ah and a device that consumes a bunch of numbers. is that what are What are all the what are the underlying structural similarities?
00:11:23
Speaker
And also just what's the what's the weird cool stuff? I just wrote a chapter on ah you know how you're using your IDE and you hit the format button and it automatically formats your code to be pretty.
00:11:36
Speaker
How does that work? There was a day when I didn't know how that worked. It was just magic. And then I had to actually write a code formatter and I did a little bit of research into how code formatters work. And it's really cool. There's a lot of very simple logic that can be combined together in complex ways to capture the notion of what is prettiness for code formatting. And if you if you get the if you get the API right, then it becomes very natural to write a little program that says, okay, we'll try it this way and see if that's pretty. Oh no, try it that way and see if that's pretty. And it's it's a really, really neat algorithm. i I had a lot of fun when I learned about it and I figured other people would too. So yeah, that's really what it's for. It's but it's for the curious. Now, pro I love that by the way, like youre curious like if you're, there was a lot of time in the last couple of years on social where everyone was like, you know, talking about hustle culture and like, if you're not programming after 5 PM or whatever, it's not about that level of interest in the, in the, in the craft. It's just about curiosity. It's about like, huh, how does that work?
00:12:47
Speaker
Like I was at McDonald's recently and they've had like, they've got those giant iPads and you know, i'm like, huh, I wonder who wrote that. I wonder how that works. What's the backend look like, you know? And then I'm adjusting the heat on my, my, my thermostat. And I'm like, know Who wrote that? i wonder how that works. What's the back end for that? You know, is this running like an embedded system? This is running Linux. Like, is this Raspberry Pi? And then the next thing you know, you've ripped your thermostat off the wall and you're like trying to figure out what's going on at that level of curiosity. I don't know how to not have that.
00:13:18
Speaker
I don't know how to not think to myself. Like, but why is that airport running a text UI and not a good GUI? Like, you know who can I talk to? And the next thing you know, they're on my podcast. you know that That kind of stuff.
00:13:29
Speaker
i I often think about an interview that i I ran at Microsoft many, many, many years ago, but where I posed a technical problem and the problem involved generating a unique integer.
00:13:43
Speaker
And the developer that I was interviewing was a database developer. And he said, oh, well, I would just create a table and then I would mark one of the columns as having a unique identifier. And I said, okay, suppose I'm hiring you for the database team and the database doesn't have that feature yet.
00:13:59
Speaker
What would you do? And he got the strangest look on his face. And he he said, I never thought about the fact that somebody had to write that code. It didn't just come into existence on its own. I was like, yeah, and you can be that guy.
00:14:15
Speaker
Yeah, that kind of stuff is so so fun and so interesting. So I want to go back to the stochastic programming idea. This idea, this is interesting to me because in a time of of of ai hope where AI is really just a branding term on top of like 50 years of machine learning and statistics and math. And think people don't realize that because they feel like AI just happened last year or whatever. Like ChatGPT just popped into existence a couple of couple of years ago. but Typically, it's data in and reliably deterministic data out, and it's always been that way. And now we're in this place where we have uncertainty.
00:14:55
Speaker
And it's like a deterministic program would say, you know, if I need 100 units of this widget, order 100 units. But a stochastic program might be like, ah we could need 80, we might need 120. Like, i don't know, what's the way to minimize my expected data?
00:15:09
Speaker
cost on the number of units. It's optimizing on averages and stuff like that because it's squishy. Yes, that's that's a great point. so let me let me talk a little bit about what I mean by stochastic programming. But first, let me address your point about branding. There's a joke. I don't know who said it first.
00:15:27
Speaker
But the the joke is that we tell the public that it's artificial intelligence. We tell the developers or we tell the investors that it's machine learning. We tell the developers that it's stochastic programming and it's actually linear interpolation.
00:15:42
Speaker
that's a That's a pretty specific joke for a pretty specific audience. I can hear one of our our listeners has just chuckled. But the joke is not too far from the truth. No, it really isn't. There's nothing intelligent about artificial intelligence.
00:15:59
Speaker
Well, actually, that's not true. There is plenty that's intelligent about artificial intelligence. behind it. It's the people that It's people behind there it. is. Exactly. it's the It's the people coming up with the algorithms. It's the vast army of underpaid people in third world countries that are running the mechanical turks behind the scenes and and ah training up the...
00:16:19
Speaker
um Thank you for acknowledging that. And all of that. But yes, let me let me talk a bit about what I mean by stochastic programming. And I can i can give you i can give you an example.
00:16:31
Speaker
I'll start with a a very abstract example. And that is, you've got a bag of 1000 999 them are perfectly normal coin.
00:16:42
Speaker
fifty percent heads fifty percent tail coins one of them is a doubleheaded coin You reach into the bag, you don't look at the coin, you flip it 10 times, it comes up heads 10 times.
00:16:54
Speaker
Now the question is, what is your belief about the question, do I have the double-headed coin or not? Oh, man. Because on the one hand, there's only one double-headed coin. You had a one in a thousand chance. Sure, but there's also a non-zero scenario that I just got lucky 10 times and I still don't know.
00:17:14
Speaker
Flipping a coin 10 times in a row and having it come up heads happens one in every 1,024 times. So since those two ratios, one in 1,000 and one in 1,024, are almost equal, it's about a 50-50 chance that you have the double-headed coin. which is a lot better knowledge than the one in a thousand chance that you had before you observed those coin flips okay so that's pretty straightforward bayesian mathematics the question is why do we care as you know professional line of business developers and the answer is what we're actually observing is somebody has just joined your social network
00:17:53
Speaker
There is a one in a thousand chance that they're a real person, and there's a 999 in a thousand chance that they're a bot. And then they make behaviors that are consistent with being a real person.
00:18:08
Speaker
And so how do you update your prior belief that there's a one in a thousand chance that there's that they're a real person to having a one in two belief that they're a real person? And in that example, the math is pretty straightforward. But when you start adding in all of the other statistical quantities, it it becomes quite a quite a tricky problem to solve these sorts of things in in the real world. And so that's what my work was at at Facebook.
00:18:38
Speaker
was helping data scientists build language tools that allowed them to represent stochastic quantities in a very clean, understandable way, manipulate those stochastic quantities using the ordinary arithmetic of a programming language, feed into the system a bunch of observations of reality, billions of observations of reality, and then have a quantity come out the other end that is ah in this principled way, what is the update to our belief about whatever it is that we have under question? Is this user a real person?
Spam Challenges in Digital Platforms
00:19:15
Speaker
Is this router, the broken router in the data center? yeah et etc. whatever Whatever the problem was. ah Is this ah content reviewer doing a good job of classifying content as as spam or ham, etc., etc. So all of these kinds of questions where there is some uncertainty, but we have a statistical model that we believe matches reality and we have some observations of reality. How do we get a good update on our priors? So that that was the problem that I was working on with with stochastic programming. We're not going to go
00:19:53
Speaker
all the way to that level of detail in the book. But I'm going to go through the basics of how do we represent statistical quantities? How do we compute probabilities? How do we combine those together? How do we apply Bayesian logic to them? And and so on.
00:20:10
Speaker
I got to ask, ah we you know like I remember that the during the spam wars, and by the spam wars, I mean like the email spam wars. yeah I largely don't get spam.
00:20:22
Speaker
I get unwanted PR pitches, and I get random newsletters, but as a general rule, The spam problem in email, at least for Gmail users, is pretty much like solved one or two spams a week.
00:20:34
Speaker
But on Instagram, I'm added to a crypto group with random people with random goods for names probably 40 times a week.
00:20:45
Speaker
And like it's investment groups, you know, all those kind of things. Why is it is is it that am I seeing the 0.01% that sneaks through and it's just a flood and like we have no idea how big the spam problem is or are they getting more sophisticated? Because from a human pattern matching perspective, I'm like just created the account, you know picture Bart Simpson as their name, like random username. This is obviously bot
00:21:17
Speaker
Why is that not solved when smart people like you were working on it 10 years ago? Well, okay, so let me... With all due respect to all of our friends from Meta that we love and appreciate. of Of course, of course. And let me say that you know I don't work for for Facebook anymore. Indeed.
00:21:33
Speaker
The reason I don't work for Facebook anymore was because the team of people that was doing this research and getting good results, all of us were laid off. The entire division was laid Well, like that explains why my inbox is in So, number one, it's a hard problem. Okay.
00:21:50
Speaker
Number two, a lot of the people working on that problem were laid off. ah Number three, the attackers are very sophisticated and they're becoming more sophisticated. And number four, I think it's pretty clear from their actions that the people who run social media sites no longer particularly care about the user protection problem.
00:22:12
Speaker
Okay, so this is less about math. It's more about it's it's an ongoing battle and they just kind of stop fighting it actively. Yes. Now, there there certainly is a large amount of math. and And that is when I say that 999 new accounts out of a thousand are our bots, that's that's a little bit high, but it's not far off the mark.
00:22:37
Speaker
There are billions and billions and billions of bot accounts created and deleted every year. and by sheer numbers, some of them are going to overwhelm ah your your efforts to to detect them.
00:22:54
Speaker
um But yes, it it is it is to my mind a a failure of machine learning, and there are plenty of other examples of failures of machine learning on on social networking. like You would think that a machine learning algorithm would have figured out by now that I have blocked every radio station that shows up on my timeline in in Facebook.
Machine Learning and Error Perception
00:23:21
Speaker
you know i just I immediately block them because i they're they're all content farms and they're all trying to i gain knowledge of the social network so that they can better advertise to them.
00:23:37
Speaker
better advertised to the people in that in that social network. Since I've blocked you know probably more than a thousand of them by now, you'd think that machine learning would have figured that out and stopped showing them to me. But it hasn't because they're optimizing the machine learning for for different outcomes than than my enjoyment.
00:23:55
Speaker
Yeah, that's a great point. it It is challenging to also acknowledge that as humans, humans make mistakes and humans make mistakes every day, all day.
00:24:07
Speaker
sure we And we don't write off humans, but well, maybe we do, but a computer makes a mistake once and you're like, it's garbage. Right? Like, you know, I saw a Waymo do something crazy. I'm never getting in a Waymo. Yeah.
00:24:20
Speaker
There's no way. I remember when I was a teenager, what one of my friends who was also a computer enthusiast said said to me, he's like, if we asked a human being to you look up your name in the phone book and then we got irritated because it took them more than five seconds, we we would be terrible people. But we get irritated about computers taking more than five seconds to do stuff all the time. It's I think it's it's about what bill of goods were we sold.
00:24:49
Speaker
and we were We were sold that there was going to be a technologically sophisticated future. And yet the technology seems to be getting worse all the time, not better in terms of its user experience. Yeah. And I think it's two things. It's, of course,
00:25:08
Speaker
For lack of a better word, capitalism. It's just the reason. The business problem is different, right? Like running a social network that is loving and user-friendly is not compatible with running a business. But it's also that if you if you make a mistake once, the human pattern-matching brain goes, oh, this is garbage. That's 100% of the time it's wrong.
00:25:31
Speaker
Because 1% wrong means it's wrong for me and not 99 of my friends. And that's where you get into and anec data anecdotes that aren't data. And then, you know, someone will say, oh yeah, I say the word paper towel out loud and I get advertisements from Facebook. They're listening.
00:25:50
Speaker
like And I know they're not listening. but No, they have they have way creepier methods than listening to you. to you know i mean like paperper tell brand new yeah You know what I mean? like it's like it happens once, though, and then you get into confirmation bias. Yes.
00:26:05
Speaker
Yes, when when in fact there are ah there's a lot of stuff going on behind the scenes, including it's not listening to the microphone that's on your phone. it It is tracking your location, and it's seeing are you in the same house as another Facebook user or another social media user, and what paper towels do you know that they bought?
00:26:29
Speaker
oh Yeah, all kinds of stuff like that.
The Joy of Programming
00:26:33
Speaker
All of this stuff comes back into problems. And one of the things that I like about your book is that your problems are not business problems. You're not solving solv social media problems. You're solving game of life problems. It's fun. It is a fabulous adventure. ah You just came out with chapter seven, which is category theory, but I can see the pretty printing one that you just said you're working on. That's only a couple couple chapters ahead. I'm going to get that automatically because I own the live book, right? So when you finish that a couple of days later, it's going to it's going to pop into my my live book. And then you said at the end, I'm going to get the physical book as well.
00:27:15
Speaker
Yeah, one of the things I wanted to do with this book is have a good balance of code that is useful for solving business problems. And a great number of the algorithms and data structures in this book were ones that I had to learn about to to solve a business problem in my business domain of building developer tools. And then some of them are just recreational.
00:27:37
Speaker
but they are recreational in a way that I learned a lot from them. In the the chapter on the the game of life, there's ah a famous cellular automaton called the game of life created by the the late mathematician John Horton Conway, where you you have a grid of cells that are either living or dead, and the cells evolve over time. And there's an algorithm created by by Bill Gosper that...
00:28:05
Speaker
computes the future of a given ah life configuration so fast it does it in such a a clever way where you can have ah an enormous amount of of data. You can have an enormous lifeboard, much, much larger than would fit into memory somehow. And somehow the bigger the board is, the faster it computes the future of that board. It's bizarre. And it it totally changed the way
00:28:37
Speaker
I think about functional programming. And so I had to include it in the book, not because it's useful for any particular business case. there There are business cases that cellular automata are use useful for. Cellular automata were invented to do things like fluid flow modeling and and things like that. And you you find them in in modern special effects, too, where they're doing like a volumetric analysis of of fluids or explosions or or things like that. So there there is some usefulness, ah but not for me. For me, the game of life was just just an amusement from from my childhood. And when I found out that there was this incredible algorithm, I i had to tell more people about it.
00:29:18
Speaker
These algorithms are so crazy because they – this is a thing that I think it was Douglas Crockford said, that he didn't invent a JSON, JavaScript object notation. He discovered it. Yes.
00:29:31
Speaker
Right. And I think that's a really cool way to talk about how something exists out there and it just needs to be found. It's buried in your backyard. Yes. You know, Conway's game of life is an amazing thing. You could say John Conway made it or you could say it existed and he discovered it. And and now that algorithm also existed out there and now it just needs to be found.
00:29:52
Speaker
A lot of the the algorithms have that kind of feeling of being discovered rather than rather than constructed. And all all ah respect to the people who did invent hundred percent of these algorithms.
00:30:07
Speaker
ah But yes, it it does kind of feel like some of them were just just there waiting for somebody to waiting for somebody to to figure them out.
Concluding Thoughts and Book Promotion
00:30:16
Speaker
yeah Makes me think about, I think it was the, this will be a spoiler for people who haven't seen the the movie, but it was the Jodie Foster movie where they like they find, maybe it was the book, they find the number pi. like they find that Contact. Contact. They find like a number buried in pi deeper than anyone's ever gone before. Whatever, it's just like sitting there. It'd be just like finding a post-it note from god
00:30:39
Speaker
you know, like deeper in a number than you'd ever find before. Like there there could be like a a ransom note in the game of life just at a farther out into the grid than we can see. and it like spells out, you found me.
00:30:52
Speaker
And it's just many, many trillions of of of games away. So the family's adventures in data structures and algorithms is up on manning.com. And you can also check it out at your blog, ericlippert.com and fabulous adventures in coding. You've actually got an early access discount code up there that I think just expired until it was going until November. I'm going to talk to the folks at Manning and see if we can get folks who listen to this podcast a discount as well. Not so we take money out of your pocket, but so that we can put more copies of the book.
00:31:27
Speaker
into people's pocket because I think you can feel the joy and the fun that you're having in your, uh, in your retirement or your fun, your fun employment that you're experiencing. Are you enjoying writing this book?
00:31:39
Speaker
Oh, I'm, I'm having a great time. I mean, all, all kidding aside about my, my people who thought, uh, who I thought were my friends who, who convinced the publishers to make me write a book. It it is work. It is certainly work to write a book, but i'm I'm having a great time doing it. A lot of the topics are topics that I've explored in my blog before. a bunch of them are new, so long-time readers of my blog will ah will have something ah new and interesting to check out. And a lot of the times, I'm looking at these old blog articles and and thinking, it's like well, past past Eric,
00:32:12
Speaker
didn't understand this as well as he thought he did or past Eric did not realize that there was a clearer way to explain this. So it's been a lot of fun for me to to revisit a bunch of those topics.
00:32:23
Speaker
That's so cool. Nothing will make you understand a topic more deeply than being forced to write a book and then have deadline. Like, you know, the teacher is just one chapter ahead of you. i'm I'm only on chapter five right now, but I'm having a blast reading the book and I appreciate you and your service.
00:32:40
Speaker
We have been chatting with Eric Lippert and his new book, Fabulous Adventures in Data Structures and Algorithms, is in early access at manning.com. And you can check out Eric at ericlippert, L-I-P-P-E-R-T dot com. This has been another episode of Hansel Minutes, and we'll see you again next week.