Sean Tibor: Hello, and welcome to teaching Python. This is episode 106, and we're interviewing Al Swigart from Automate, the boring stuff from invent your own computer games, from about eight other books and courses, and content that I can't remember off the top of my head. My name's Sean Tyver. I'm a coder that teaches, and my. Kelly Schuster-Paredes: Name is Kelly Schuster Perez, and I'm a teacher that codes. Sean Tibor: Well, welcome out to the show. We're excited to have you. This has been a work in progress for quite some time. I think when we were first sketching out ideas for guests we'd want to have on the show, you have always been sitting in the top five since day one, so we're glad we finally have you on the show. Welcome aboard. Al Swigart: Yeah, it's great to be here. And I also forget how many books and courses that I've made sometimes. Sean Tibor: Well, we're excited to have you, and we'd like to spend some time with you talking today about the books that you've written, the process of learning through reading, and the challenges, maybe that you've seen in terms of creating content for people that aren't sitting right in front of you as you're presenting it to them. And just go from there and we'll see where the conversation takes us. Al Swigart: All right, that sounds great. Sean Tibor: So before we get into that, we'll start in the same place we do every week with the wins of the week. And Al, we're going to make you go first to share something good that's happened inside or outside of the classroom or in front of your computer, away from your computer. However you want to share it is good with us. Al Swigart: Oh, okay. Yeah. I actually have two wins, the first of which is that I got a talk accepted at Python. This is great because I had submitted four different talks, and then I started getting the rejection emails first and the way that Gmail just sort of collapses all the emails that are similar to each other, I got the first one and then just sort of assumed that the others were also rejections. And then a little bit after that, the the acceptance one came in. So this is the working title is something about the coding tool landscape for 2023. And so I'll be giving this talk about linters and code formatters. There's about a dozen or two dozen of them that you'll find on PyPI, the Python Package Index. And I just wanted to sit down and actually figure out, what do all of these do? How do they compare with each other, and then just sort of summarize all of this research into a 45 minutes talk. So I'm looking forward to giving that talk at PyCon 2023 in Salt Lake City in April. This April. Wow. It's coming up, isn't it? Sean Tibor: Yeah, it's going to get here really fast. Kelly Schuster-Paredes: It's like the time is coming. Al Swigart: Yeah. And it turned out I've been in pandemic mode for so long that I really haven't been thinking about conferences all that much. And so I went ahead and just found other conferences and submitted my talks to it. And I got two other talks accepted as well. So one is for the Python web conference. That's an online conference. I have a talk submitted, accepted there, and then also for Pi, Texas, in Austin, and I'm living in Houston these days, and I use every opportunity to go and visit Austin, so that's going to be fun as well. Kelly Schuster-Paredes: That's awesome. When is that? Al Swigart: Pytex is early April, I think. Kelly Schuster-Paredes: Maybe it's April 13. I'll be there. I'll be in Austin that time. Maybe I can sneak in. Al Swigart: Oh, perfect. Yeah. And the Python web conference is an online conference. I believe that's sometime in mid March. I don't have that right in front of me, but yeah, it's really great. I felt pretty bad because I think a lot of my PyCon talks have been rejected. I think the only time I've ever given a talk at the main PyCon conference was, I think in 2015 or 2016. So I'm really excited about this just because there's so many great talks that are submitted there, and it's nice that I actually managed to squeeze one in. I had to submit four of them and was just coming up with all sorts of ideas and everything, but I guess the persistence paid off. Kelly Schuster-Paredes: I think that kind of makes a lot of people out there a little bit happy to know that you've been rejected a couple of times at PyCon. Al Swigart: Yeah, more than a couple of times. Kelly Schuster-Paredes: It's very daunting. And I know getting accepted to speak is quite a feat. We spoke last year, and I think I was freaking out the whole entire time and I still had that massive imposter syndrome going. I can't believe we're speaking here. It is a great thing to actually go and listen to you to speak, so we'll be excited to see that. Al Swigart: Yeah, I'm pretty sure that after your 50th or sixty th PyCon, that feeling goes away eventually. Sean Tibor: Maybe once we'll get there, we'll let you know. Al Swigart: Right. Sean Tibor: I think this would be number three for us, or number four that we've actually attended. And we've only spoke once, so I guess we got some work to do. Al Swigart: Yeah. And my second win was actually pretty recently. I have a group of friends that I hadn't seen in about 15 or 16 years. I just knew them through some meetup and contacted one of them and just said hello because we would occasionally just text each other. And I decided, like, hey, I'll be in the area for this meetup again. I can meet them. And it turns out that four other people from that social group also came by. And so I saw a whole bunch of people that I haven't seen in over a decade. So at any time, I could have just sent an email out to them, but we just never did and lost touch. But it just shows that you can really just go ahead and reach out to other people. And we're all busy these days, of course, but it's worth it to keep that persistence and keep trying to make that connections. I'm not sure how accurate this story is, but apparently there's a Japanese Nintendo manual for some video game that says everything not saved will be lost. And I think there's a lot of truth to that statement. Sean Tibor: Yeah, and I think also one of the things that a lot of us realized during the pandemic is that so much of the world is just a phone call or a text or an email away. And those connections that may have been far back in our past, they can be renewed pretty easily if you just make that outreach, make that step to reconnect. Kelly Schuster-Paredes: Yeah, I have a lot of friends around the world, and when we get together via zoom, I think that was the best thing, kind of awakening it for us. We're like, oh, well, since we're all used to zooming, let's zoom and have wine night. Some of us would be having wine morning, but because I have friends in Australia and the UK, but hey, it's 05:00 somewhere. Sean Tibor: Exactly. Well, Kelly, how about your win this week? Kelly Schuster-Paredes: Oh, my gosh, I had a wins and a fail. Had my first group project presentation with my data science course. And tell you what, there's a lot of lessons to be learned to recording or not recording, but working with strangers and trying to get a project pulled together in two weeks and working with adults is I posted this on LinkedIn. I wanted to say interesting, it's definitely different than working with kids because when you tell the kids they have to get it done, most of them get things done, but when you work with adults, you just assume that they will work at the same ability or dedication as you or your group. But that's not always the case. And I'm being my silly control freak person and I was getting very anxious with our GitHub. I was like, Seriously, you guys, have you ever heard of folders and nomenclature? And it was really hard to just not say anything and let go. I mean, I said it a little bit. So it was a win and a fail and I think I didn't aggravate anybody too much. And we presented. I haven't got our grade yet, so I'm still on that cusp of when fail, but it was a really cool project and a lot of learning. I was pushing myself a little bit with the request and trying to find quality APIs from education sites, which is funny enough, there's nothing hardly out there that's quality. It's mismatch of stuff or you have to pay for it. So that seems like a good goal for me in the future. I'm still working towards that database of information on education. I think there's a lot that's out there that we don't do. So those are my wins and fails for the week, all wrapped up, all together. Sean Tibor: Inseparable, right? Kelly Schuster-Paredes: Totally. Sean Tibor: Well, for me this week, the win was reconnecting with an old student. So I guess she's not old, she's just a former student. Kelly Schuster-Paredes: No, you're just old. Sean Tibor: I'm the old one, yeah. So I had a former student of mine reach out. She's taking AP Computer Science Principles and she just said, I'm a little bit stuck and I need some help and I need someone to explain it to me. So I literally just tutored her a few hours ago. And what I remember about her as a programmer and as a student was that she had this gift for being able to self correct her code as she was writing it. So maybe she didn't have all of the insights, but she could look at her code and see the details and see, oh, I need to change the structure of this or I forgot the semicolon because they're in JavaScript now. And it was really great to see that she's still doing those things. Like she's still building those habits, she's still using those strengths to get better at it, writing her code. And so by the time she came to me, she didn't have any questions about syntax errors or the easy things to fix. It was, why isn't this behaving the way I want it to? And so we spent some time talking through the intent of her code, what's actually happening, where the gaps could be, looking back at the problem statements that she was given. And I think by the time we got through everything, she had a much more solid sense of understanding about what she was trying to do and how to accomplish it. And it was all Kelly Cool stuff about image filtering. So she was like taking images that were in color and turning them to black and white by manipulating each pixel one at a time. And it was just cool to see her doing that and get a little bit of a glimpse of a student that I had when she was in 6th grade and what she was capable of then and what she's doing now is a 10th grader. So four years later or five years later, it's pretty cool to see. And it was really great to reconnect with her and the thing that was amazing to me and just showed what an exceptional kid she is. When I knew her in middle school, she went through some major health challenges with some what could be some permanent effects, some things that would have held her back. And today we had to work around her lacrosse practice schedule. So she is not just getting better at computer science. She's thriving and doing a lot of cool athletic stuff and just persevering. And it was really great to have that moment to catch up with her and help Her Out a little bit. Kelly Schuster-Paredes: Very cool. That's a good group of Kids, those 10th Graders. They keep popping in, popping in, and they're doing a lot of things. We got some serious developers production at Pine Crest. So watch out. World. Sean Tibor: Kelly. What I love about that group of students in particular is that I don't know what it was. There Was a certain chemistry of them and with us as Teachers that they really just Enjoyed making Stuff with Code and Solving Problems and Creating Things and just having fun with It. And it's not something that you can just give to People or make Them feel that way. They have to bring it to the learning experience. Kelly Schuster-Paredes: Yes. And I think a lot of them actually had automate the boring stuff as some of their projects. What a good transition. You've heard of that one? That's one that we've pondered off on things that the kids are like, but what am I really going to do with this? And we're like, oh, but wait, we have a book for that. Thank you, al Sweger. Al Swigart: Oh, excellent. Excellent. Sean Tibor: Well, why don't we jump right in there, we'll skip the fails for the week, and we'll jump right into books and learning. And I guess my experience I'm sure that you hear this quite often, but one of the ways that I first learned how to code in python much later, because I learned right before I started teaching it, was grabbing. A copy of Automate the Boring Stuff and working my way through it, reading through the exercises, reading through the explanations, and just sitting there and writing code until I became more and more comfortable and fluent with it. And the benefit that I had of having prior computer science training is I was comfortable changing things and experimenting and altering stuff. But one of the things that struck me about that book and I think one of the reasons why it resonates is because it is something that you can pick up and start working with. It starts without assuming any prior knowledge of programming, of even how to install python onto your computer, and starts you, from the very beginning And I know that I've seen it come back time and time again as a recommended book for beginners. Can you tell us a little bit about kind of how you got started writing books like this and how you wanted to start teaching people through the medium of books and the written format? Al Swigart: Sure. Yeah. So I first started, I think, around 2009. I was dating someone at Them who was a nanny for this ten year old who wanted to learn how to program. So he asked her to ask me if I knew of anything. And I thought, sure, yeah, I can find stuff online. That'll be great. And a lot of the Stuff I Found Online was Just sort of very one off or small things or tutorials that weren't really that high quality or they were things made for computer scientists and people with advanced degrees and things like that. And I kept thinking back to the way that I learned to code, which is a story I hate telling because I was one of those people who learned how to program in Basic by making little games. This would have been in the early 90s when I was a kid and the family had a 386 computer with like a 40 megabyte hard drive or something like that. I always sort of roll my eyes whenever people go into these oh, back then computers were so slow stories, but I have them too. And I hate telling this story because it makes people think that they have to have started programming when they were very young, sort of like an Olympic, olympic gymnast or something like that, which is completely not the case. And I always bring up that everything that I learned about programming can probably be learned today in a couple of dozen weekends or so. Everything from like third grade up to finishing high school just because in the 90s there really wasn't that much out there. I basically only had books to learn from and even then I didn't really know that many people who were into programming. I would find books that were more computer books rather than programming books. So they were books I would say like oh, this is the monitor and this is the CPU and have these pretty little pictures. But they wouldn't actually tell me like okay, how can I hack the Pentagon? That's what I kelly want to know as an 8th grader. And I did find a couple of books that programming in Basic by just showing the source code to little games and things like that. And I sort of just reverse engineered how they worked. And for the longest time, these couple of books were basically all I had because there was no Wikipedia or YouTube tutorials or anything like that. Creative Commons didn't even exist, much less freely available Creative Commons books on programming. In fact, sort of Python is known as a batteries included language because it had so many software libraries and other modules that it came with. And really that's sort of a product of its era because back in the lot of people didn't really have internet access. So just there, you know, there was no Python pi pi pi, the Python package index where you could download modules from. So finding third party modules was really hard. So it was really great that Python came with all of these modules already and that's not really a problem anymore just because books were sort of my default, because there wasn't that much in the way of online resources. And so, you know, learning to program today is is just so much easier and you can get caught up to speed so much faster. The problem mostly is just that the expectations are that much higher these days because if you were like programming computers back in the main pop culture reference was sort of Bill Gates. It was sort of like, oh, you can oh Al, you're a nerd. Maybe you can be a rich nerd like Bill Gates or something. But now programming is so widespread and everybody's on social media, everybody knows what web apps are and we're all excited about AI and self driving cars and blockchain and a bunch of other overhyped technologies. When you start programming, your little gains that you would make in Basic that were all text based aren't as exciting and people feel like they need to become super megastars with their billion dollar startup. And that's a lot of pressure for people who just want to learn to code and maybe get a new career or even just pick up a new tool to use in their current career. But I still think books are a good way to get into that. And I know I'm biased as an author in that opinion, but the book sales for Automate, the boring stuff with Python and the web traffic that I get on the website where you can read it for free, automatetheboringstuff.com, those really haven't slowed down. And the first edition of that book came out in 2015, I believe. So I'm really glad because those royalty checks will keep coming in. But I guess there is something about books just being a self contained tome of knowledge that will always be there in print in your hands and you don't have to worry about the website going away or just losing it as it slips by in your social media timeline or something like that. So I think that still has a certain appeal. Sean Tibor: So as you're writing the book, one of the things that I appreciate about Books for Learning is that they have a consistency to them, right? Like it's a similar voice throughout. It's got a structure to it and a flow to it, the way that it's organized. How difficult is that for you as an author to try to pull that together and keep that kind of vision of what the book is going to do for a learner how they can use it as you're creating it? Is it something that you find relatively easy and natural to do or is it something that you really have to work at to make sure that the book all fits? Al Swigart: It's easier said than done, I think, because whenever I start a new book project or I'm thinking of the new edition, it's always fun and exciting. It's kind of like it's more fun to come up with names for your band than to actually form a music band with people and do all the work. But I'll usually start by just sketching out what I want the table of contents to be and what each chapter will cover, and then just sort of getting a rough skeleton of all the different sections that I'll have and then I start filling it in. And when I realize that, oh, actually, this structure doesn't work at all, and then I have to start removing chapters or taking chapters that I realize are, you know, 50 pages long and I should really split it to two chapters. And now I have to remember everything and then I realize I'm introducing a concept well before I use it, so maybe I should push it back later or I've introduced things out of order, so I need to rearrange everything. It's a lot of small, tiny tasks and it's really hard to sort of get any sort of estimate on it. I mean, I guess I've been writing books for over a decade now. Wow, time flies. But I'm still incredibly bad at estimating how long things will take. I think I always tell myself I don't want it to be October and I'm still working on this book and I don't know what it is about the month of October, but October always seems so far away and then before I know it, it's October and I'm still working on the book. Kelly Schuster-Paredes: Thank goodness for pre recording. Sorry Sean, you have to edit that one. I was going to say a couple of things just about the books, and this is one of the reasons why I love having your books on the shelf is something about kids and even any adult learners. This idea of books online versus books in your hand and the ability just to have something to physically see and do, given the students your tic Tacto book before. And they're like, but can I find this online? I'm like, sure you can find this online, but how much better is it going to be as you're typing along and learning and finding it out? And so I guess my thought question too is you're not an educator for a sense like a K Twelve educator, but yet you write so cleanly and nicely and you have this theme for it's almost like it fits for kids. I guess maybe you guys were all big kids inside us coders, but why can you do more? All those questions I want to say, like it's such a great, great resource because there's really not a book out there for, you know, middle school kids to learn Python or high school kids to learn Python. But yet we can give them coding with minecraft. We can give them making games. Where's your next kids book? And I air quoted that. So you guys can't see that in the recording. Al Swigart: Yeah, I mean, a lot of the writing quality, I just have to give that credit to that to my editors at Nostarch Press and just the fact that Nostarch Press is really first of all, they're comfortable with having my books available under our creative Commons license so that people can just read them online for free. But also they don't really pressure me to meet some sort of deadline. They understand that sometimes things just take longer than it was previously thought, and they want to end up with a quality book. And so as long as I don't take decades and decades, which I think I gladly would for some of my projects. But, yeah, a lot of that is the editors that I work with are really talented. And I started saying in the dedication of a lot of my books that it's very misleading to have just my name on the COVID because they contribute so much to that. I will be sending my editors, like, Word Docs, and I've gone through them multiple times, and I think, like, okay, this sounds pretty good. And then they'll come back to me and like, every page has 20 or 30 marks on it, and 90% of the time I'm just clicking on, like, accept change, accept change, accept change. Because, like, yeah, that is actually a better way of phrasing what I wrote. And as far as ideas for books that I've had, I've mostly been sort of writing for what I would have liked as a kid. So one day I might write that how to Hack the Pentagon sort of book, maybe. But originally it was just sort of like, I just want to see the source code to a bunch of games and learn how to play around with that. That's how I got the ideas for my first few books. Invent your own computer games with Python and then making games with Python and PY game. And one of those programs was a little cipher, like a Caesar cipher program. So I thought, hey, it'd be great to write a book just on a bunch of different ciphers that were sort of the classic ciphers, which is what we call ciphers before World War II, which are simple enough that you can break them with a laptop since they don't use modern, complicated mathematics and everything. And then with Automate, the boring stuff with Python, I remember, I think it was 2012, but really, this is sort of a perennial news media story where a lot of people online were saying, like, hey, it's going to be the future, and everybody needs to learn how to code, and that sort of line. And I thought about that and I thought like, well, no, not really. Not everybody needs to be a software engineer. But I thought about it some more. I thought like, well, what if everybody knew how to program just a little bit? Not even computer science stuff, but sort of like, I can't design or fix a car, but I know how to drive a car. And that really adds to my skill set and my capability as a person. So I thought, what are the things that would really be helpful? And I also tried to keep this list to a minimum, but Automate The Boring Stuff with Python still turned out to be like a 500 page book, and the third edition is probably going to add another 100 pages to that. But that's sort of how I got the rough ideas for that. And then later I just kept having sort of other ideas for like, oh, hey, there's a mod for minecraft that gives you programmable robots. It'd be great to have a book that covers that and all those other sort of topics as well. Yeah, I think I've been lucky. Like, Automate the Boring Stuff has really been my one major success sales wise. But the other books I've written seem to have found in audience as well and well liked. So I'm basically just going to keep doing this for as long as I can get away, put off having a real job. Kelly Schuster-Paredes: Your next book maybe could be like the Middle School Hacker. How do you hack Terminal with Python or something? Because I think all my students would when I show them Terminal, they're like, and I only change directories or I'll make a new folder and I just show the basics. But they're always like, can I do this? And I'm like, sure. Not today, though. All those fun things. Al Swigart: There is something just it looks like hacking in the movies when you're at a command line, especially these days, because most command lines have syntax highlighting, so all the text will be colorful as well and it looks even cooler. But what's really intimidating about working in the command line is that you're just sort of presented with this prompt and you're not really given any clue as to what to do next. And so it feels a lot more mysterious and intimidating than it really is. But yeah, my next book idea that I had was after I'm done with the third edition of Automate the Boring Stuff, I really wanted to go into sort of mathematics for self taught programmers. It's just the main worry that a lot of people have when they're first starting out is first of all, they wonder, am I too old to learn how to program? And the answer is always no. And it's always hilarious because somebody will say, I'm already 26 years old. Is it too late for me? Is my life over? I was just like, oh, sweet summer child. Kelly Schuster-Paredes: Yeah, I like to tell them I was 21 when I started learning. Not kidding. Al Swigart: Yeah. Kelly Schuster-Paredes: Sean is like, you're right. 21. Al Swigart: Yeah. I always think that they're going to say, like, I'm 73 years old. And I thought like, well, maybe that maybe not a career, but you can definitely still program and make fun little applications and it's definitely still something you can do. But yeah, it's a worry that is far overblown. And the second worry is I'm not good at math, so I don't think I'll be able to. Program and everybody will always tell you like, oh, you don't need to know math to program, which is true and not true. You definitely don't have to be like a mathematician or somebody who crunches numbers all day or anything like that. But it does help to have a sort of number sense where you kind of understand truly, like what it means to divide something or work with percentages and just have a basic comfortness. And there's a lot of math in programming that's pretty simple, but it's never really taught in schools. And my main example of that is if you have to write code to determine if a number is odd or even, all programmers knows, like, oh yeah, you'll just mod that by two, and if it's zero, then it's even, and if it's one, then it's odd. But mod isn't really something that we ever learned in high school in our math classes. And it's really simple. It's just basically just the remainder operation. And I started thinking like, well, there's a lot of little things in programming that's related to math that you kind of have to know and sort of like just working with Cartesian coordinates, like the x Y axis. That's something that comes up in programming a lot. And also just sort of developing a familiarity with a bunch of just sort of number concepts and being comfortable with negative numbers and fractions and percentages. But the actual mathematical operations, that's all done by the computer. You don't actually have to know how you don't have to remember all the steps to long division or something like that, but just, oh, there's so many other examples. Kelly Schuster-Paredes: I have linear regression. I just learned that and I was thinking to myself, two lines of code. I've got five variables with just calling the linear regression of using pandas, and I've done tons of slopes of the line, but it didn't make sense of what the heck I was doing this for. Okay, I have scatter plots in middle school or high school when I was doing math, but the idea that I can actually tell if there's a correlation with two lines of code, it would have been nice. So a lot of these things, when I was showing some of my students of the work that I was doing in the class, I'm like, look, I just slope yintercept all this and whatever this jumbo mumbo is, and I have it printed out in two lines of code, they're like, wow. I'm like see. Sean Tibor: And I think that's one of the things that's really tough. I mean, when people say that they're good at I'm not good at math, a lot of times what they're saying is, I'm not good at computing numbers. Al Swigart: Right, right. Sean Tibor: That's the best thing about being a programmer, is that you don't have to compute it. You have a computer to do that for you. What you have to be good at is like, knowing how you want to solve the problem and knowing the relationships between the numbers and seeing how they fit. And that gets a lot easier when someone else is doing the computation for you because you can focus on what is the correlation between these two numbers and you don't spend 20 minutes in between trying to actually compute it. It happens in a few seconds, and then you can iterate on that and learn more about it. So I love this idea because I've also heard that I'm not good at math. I can't be a good programmer. Well, that's not what it means to be a good programmer, to be able to compute things in your head and be able to be good at long division. It means I'm good at thinking through problems and breaking those down into smaller steps and being able to integrate that back together into answers. And that's where I love this idea of empowering people with code, right, that it takes things that they thought they weren't good at and makes them really easy to do. So that the stuff that they are actually good at, they can do more of it. Kelly Schuster-Paredes: I can just see as you're talking, both of you, like a future math course in high school or college or whatever, and you have all these snippets of code that do things and it's like, okay, here's your problem. What would you use and why? It goes back to that source of why are we learning? What is the why behind the problem solving? And it's such a beautiful thing to be able to show a student or something like, here's this problem, here's these options. Why would you choose the one that you have and what will help present a better solution for the problem that exists? And that's huge. That's a coder. That's a coder. And who cares if you got an A or a 98 in math class in college? Who cares? Because most of the kids can plug numbers, but they don't know the why. That's important. Al Swigart: Yeah, I failed calculus in high school and let me tell you that failure haunts me for my entire life and I never amounted to anything afterwards. But of course that's not true at all. And then in college, I did credit by exam and managed I think I made a B or something like that. But even stuff like calculus or even linear regression and that sort of data science stuff? I was thinking even more basic than that for this book idea. I've pulled up my notes on this, and I have one chapter on just number basis. And, like yeah, what exactly is binary? And hexadecimal and how does that relate to what computers are? Because in Al, the hacker movies, you just see streams of random ones and zeros and it looks really cool and nobody actually understands what that means. And it's like, well, actually, it's just numbers, except you use zero and one instead of zero through nine. And it seems a lot less cool once you kind of understand that. And then there's just sort of like boolean logic was another thing, just with and operators and or operators and just a tiny little bit about random numbers. And none of these concepts are really that detailed. And it's not a book that presents you with math problems at the end that you have to solve, which I think is the source of a lot of anxiety for people when it comes to math, because you're just sort of seeing all these numbers and other occultic symbols, and then you have to follow some procedure, and then you get some other numbers, and then you're told that your numbers are not the right numbers. And that's really discouraging. But when you're programming, most of the time I'm just sort of trying things like, oh, do I need logarithms for this? And I'll just, you know, import math, math dot log two and then like, yeah, yeah, this number looks right. Or I was like, oh, that's not the right number. And then I just figure out like sort of what it is I'm trying to do and it's a model that's a lot more like, well, you just keep working at it until you get the answer you need to come up with the answer no, your answer is not correct and therefore you have failed kind of mentality. And I think that's what's sort of turned off a lot of people from math is this idea that it's just manipulating abstract symbols according to arbitrary logical rules. And if you're not in like that, 5% of the population, that's kind of just naturally good at that or just interested enough that you stick at it until you become good at it. You get really turned off by that and you just sort of think that you're not ever going to be good at it, which, of course, is not at all the case. Sean Tibor: Well, I can think of it like it's the difference between a jigsaw puzzle and Legos, right? For too long, too many teachers, and there's clearly exceptions to it. There's some amazing math teachers out there who don't behave this way, but there are so many students who feel like math is like a jigsaw puzzle. I have all these pieces and they go together in exactly one way to create this final picture and I either fail at it or I don't. Or I lost a piece under the couch and now it'll never be finished, right? Whereas programming is more like Lego blocks where I can assemble them in different ways to create something new and make something different. And I'm still assembling things, but instead of there being one right answer, there's a literally infinite number of possibilities that I can create with the pieces that I have. Al Swigart: That's actually a really good way of putting it. It's funny that you mentioned jigsaw puzzles because I have this jigsaw puzzle of this Vincent van Gogh painting and it's a thousand pieces or something like that. And I'm sort of at the point where it's like, well, I'm really busy. I like jigsaw puzzles, but they take a long time. And ultimately I'm just producing an image that I could just print it out from the Internet if I really wanted to. So at a certain point I just started just placing pieces just randomly on this piece of poster board and just gluing them down. And it mostly looks all right because at a certain point I was like, well, damn it, this is my puzzle. I can do anything I want with this. It's like I don't have to perfectly fix everything together. And I'll do some origami with my nephew, and I've just given him this origami Bill of Rights, where he has the right to not use origami paper, and he has the right to not make perfect folds, and he has the right to just sort of give up halfway and start on a different model if he's having problems with this. And really as long as you are continuing to work at it, 1000 years from now or 5 billion years from now, we're not going to be remembering all of these bad failures or anything like that. And getting stressed about them is really detrimental to making actual accomplishments. Kelly Schuster-Paredes: Yeah, we have to all ponder on that one because that was really deep and I think you summed up everything in a bunch of our teachers are probably would be listening going, yeah, it's exactly how it should be in education. Can you imagine if your origami your computer science, your math, your English was not always perfect? And if you didn't want to put a comma where you were supposed to do a breather, then instead of just a hash something and just get creative with whatever you're producing. It would be nice. It would be nice, yeah. Just to know that we're always progressing. We're always rolling forward and getting learning. Sean Tibor: It's funny, I was talking with a friend of mine the other day and he was saying how one of the things that stuck with him from when he was in high school was that he was tasked to write an opinion paper, right, in English class or something like that. And he wrote his opinion down and he got a zero on it. He's like, you asked for my opinion, not for facts, not for an informed argument. You asked me for my opinion. How can you give my opinion a zero, right? Kelly Schuster-Paredes: It wasn't the opinion of the clearly. Al Swigart: It was the wrong opinion. We really confuse learning with performance. Like in one of those it is important to have the right answer, but in the other it is not. And if you're learning medicine, you're not going to go into surgery tomorrow. So it's al right to not know a thing until you learn how to do that thing. Learning to program is something like that. Yeah, sure. Once you are a professional software engineer, it's important to write bug free code. And spoiler alert, software engineers do not write free code even then. But while you're in the process of learning something, it's important not to get too hung up on this. And and it's it's really easy to hear me and and all this stuff I'm saying and think like, oh, this is all very like, flowery mushy feeling sort of thing. And yet at the same time, it is actually critically important to the success of if you learn something or if you give up and go to law school instead or something like that. I sometimes stop and think about all the things when I was a kid and as an adult that I started trying. And then I thought like, well, I don't really want to do this and I'm going to try this other thing because I'm better at that. And one of those things I was better at was programming, which fortunately is something that's employable so I don't end up homeless and starving. But I'm not limited to being a software developer. And in fact, that's sort of why I got into writing books as well, because it was this other thing that I kind of tried for a while. And I still say that the success of Automate The Boring Stuff with Python is you know, it's it was a lot of hard work and talent on my part, sure. But I had started writing other books and I had self published them. And around 2015 is when Python was really taking off in popularity and I had this book, and I had practiced writing programming books before then, and it was the first time I had a traditional publisher instead of self publishing. And a lot of people were looking for a beginner book and it was also freely available online because other people had come up with this thing called Creative Commons licenses and all of these things came together at the right moment. And I think, like, really, I've had a whole series of good fortune and also just privileges as well. And these are things that should be made available to everyone. It shouldn't just be a matter of luck for most people to have success. Sean Tibor: Yeah, I think the other thing that I mean, in the past life I was in marketing and one of the things that I've always been impressed with automate, the boring stuff, is that when you put something out there that is good quality and valuable to people, and you make it available for free in one format. Right. Open through a Creative commons where people have easy access to it, it raises awareness. It's like something that people can share and say, hey, have you seen this thing? And this is really good. And I know you're trying to learn how to code here's. This available to you. And you can also get a really nice printed version of it if you want that. And so it gives people this opportunity to share with one another, to be able to talk about it, to build a sense of connection over it without having a huge investment at first, right. They can try it and see what they like about it and then be able to purchase it, if that makes sense for them, too. So it's not just that it's a good altruistic thing to do to make it available, I think, especially in this case, it's also a good business, right. And those don't have to be at odds with one another. Like altruistic, good motives can also be good business. And I think that's a great thing about the way that you've structured automate the Boring Stuff with Python invent your own computer games, all the other books you've released under Creative Commons, it's both helping people and it's good business. And I've always appreciated that about your approach. Al Swigart: Yeah. And even that was all kind of luck. It does help with word of mouth because I can even just post about it on social media forums and it's not seen as me spamming this product I'm selling because it's freely available. And the main reason I did that was because I didn't really think of myself as an author at first. This was just sort of a hobby that I was doing. And the Internet means I can spend $15 a month and distribute hundreds of thousands of copies of my books because web hosting is so cheap. And we all have these incredibly powerful devices on our desks and in our pockets that can just wirelessly obtain copies of information. I guess sort of if you want to start maximizing the profit that you make, you start doing a whole bunch of short sighted things. The first thing would be like, oh, well, first I would have to go through go against all of these people trying to pirate my books because that's costing me sales. And you don't realize, like, well, actually, maybe not. I mean, maybe the people who are pirating this book, if you can successfully stop them from pirating this book, which you really can't these days. But it's not that some of them would go on and then actually buy a copy of the book, but most of them probably would just move on to doing something else. And also it really helped that I was working as a software engineer at the time, so I had the free time to work on this and the financial security to work on these books. Because spending a few years writing three entire books before automate the boring stuff, it's really something that I could do because I had the free time and I was in good health and I had a basic level of security. And then I was able to create this thing that really became something incredible. Kelly Schuster-Paredes: I think. Like having your books on a shelf. I totally believe in learning through osmosis, too. I used to sleep on my pre med books during college. And granted, I'm not a doctor, so maybe you don't learn that well by osmosis, but we do book, so everyone. Al Swigart: Knows you have to eat the book. Kelly Schuster-Paredes: Eat them. I messed up. I was on a diet back in college. I don't know. No, but I do believe strongly having your books and all the other books that we have in our classroom, it's a great way for educators and learners, even just to see them, to get the ideas of what can be out there. We have even Pillow, which is not yours, but pillow flask. And having those library of books up there, kids can kind of look and say, oh, what's flask? What's to automate? What's this pie game? What's this arcade thing? And it's just a great way to motivate people into code, even if they pick it up to look and get some ideas before they dig into another tutorial. 100% love it. You've been an icon in our classroom, and thank you. It's been awesome. Al Swigart: Wow, thanks. That's so great to hear. Kelly Schuster-Paredes: And we got to talk to you last year at the Education Summit, so that was even a better thing. Al Swigart: Yeah, PyCon has an education Summit. I think that goes back to 2016, 2015, something like that. Which, because Python is such a brilliant language for teaching, beginners how to and I've met a lot of people through that. It's really well, it's really great. I'm going to keep plugging Python because I think it's a wonderful conference. Kelly Schuster-Paredes: Sean is going to plug it again, too, because we're co hosting somehow co hosting somehow the Education Summit this year. Al Swigart: Oh, wow. Kelly Schuster-Paredes: Me. Possibly virtually, but. Al Swigart: Thanks so much for that, too, because conferences, I realize more and more that they are just an incredible amount of work, and they just would not happen if a lot of people weren't working really hard. So thank you very much for that. Sean Tibor: Well, don't thank me yet. We actually have to pull it off first. Kelly Schuster-Paredes: Sounds like. Sure, we have drinks after the words. Just send it to me in Florida. Sean Tibor: Well, I want to make sure we're wrapping up here because we're already having such a great conversation. We could probably keep going for hours, and so maybe we'll have to do this again soon. But Al, I wanted to say thank you for joining us today. I think that the best way to get started is go to Automate the Boringstuff.com. You've got links to your other books there. You've got links to the full text of Automate The Boring stuff. There's places to go buy the printed copies of the book, either directly from no Starch Press or from Amazon. I know that when I have people who ask me, what's the best way to learn Python? Both those two books, as well as several of your other books, get added to my recommend list. Those are the ones that I give to people and say, you should really check these out first. So thank you for putting those out in the world and for teaching us a ton of Python along the way. Kelly and I have both picked up a lot of great tips and tricks from your books, as well as just a lot of great core knowledge. So thank you again from the bottom of our hearts for putting your knowledge out into the world and making it a better, more educated place. Al Swigart: Thanks for having me on this podcast. This has been really great. Kelly Schuster-Paredes: Yeah, I can't wait to see the math stuff, and I'm just going to dump it. I'm going to buy, like, ten coffees and just give it to the math Department head and just be like, here maybe some of the guidance counselors in here. Sean Tibor: And if you want to connect with us, you can always find us through our website at Teaching Python FM. We're also on Twitter at Teaching Python. I'm at Smtiber on Twitter. Kelly, you're at kellypared on Twitter. I think I have a mastodon account, although I've been neglectful of that as of late, and I need to spend some more time with it. Al, I know that you're active quite often. I see you in the Reddit forums helping people out and sharing your knowledge there. People can also find you on Twitter from time to time as well. Where's the most active place you are if people want to follow what you're up to and what you're posting these days? Al Swigart: Let's see. I'm now on Masojon social. It's Swigart, but my last name is kind of hard to spell. So probably the best way to find me is invent with Python.com and Automatetheboringstuff.com. You'll find links to social media accounts that I'm on. Or maybe you'll just see me on Reddit on the Python and learn Python and learn Programming Subreddits as well. Sean Tibor: Nice. Very nice. Well, I think that will do it for this week. Once again, Al, thanks for joining us. So for teaching Python. Kelly Schuster-Paredes: You have to plug Python again. Sean Tibor: Al right. One more time. Al Swigart: Okay, at least one more time. Sean Tibor: One last post script before we close out. Kelly and I will be co chairing the PyCon education summit this year in Salt Lake City and virtually online. The Education Summit is running on April 20, 2023. There will be both a full day format on site. We're working with the organizers to get a live stream set up so those of us who can't join in person will be able to join remotely. And the one thing I think we're trying to add this year is more opportunities for collaboration and working together to solve problems and really getting hands on with some of the stuff that we can uniquely contribute as educators to the Python community. So look forward to that. I think. We had a call for proposals. Out for talks. Looks like that will probably get reopened. And we'll have some more news to share about that in the very near future. So if you want to get more information, go to the official PyCon website, which I believe is us. Pycon.org right now. And if it's not that, I will update this in the show notes and make sure everyone has a link to it there. Kelly Schuster-Paredes: Or just email Sean. I just say email him all the time. I'm the one that answers al the emails, though. Sean Tibor: All Right? So please get in touch with us if you'd like to help out with that, if you'd like to contribute and volunteer. We're always looking for more help with that, and I think that will finally do it for the show this week. So for teaching python. Kelly Schuster-Paredes: This is Sean and this is Kelly signing off.