Sean Tibor: This is episode 117, and my name is Sean Tibor. I'm coder who teaches, and my name. Kelly Schuster-Paredes: Is Kelly Schuster Perez and I'm a teacher who codes. Sean Tibor: Today we're speaking with Yasub Khalid. Yasub is an author and so we'll be talking about all of his books and his teaching experience through book format. I kind of gave a little bit. Yasoob Khalid: Longer intro that time. Sean Tibor: So welcome. Welcome to the show. This week we're excited to talk with you. I was reading over the intermediate python book that you wrote and have published online. So I was going through some of the information that you're sharing there, and I'm thinking to myself, this is all stuff that either I could do better or that I can share with my team and they can get better by reading through this as well. So I'm excited to be able to talk to you today and learn about the work that you've done, learn about your day job and just say, welcome to the show. Yasoob Khalid: Thank you so much, guys. Really glad to be here. Sean Tibor: Great. Well, let's dive into the wins of the week. The place where we always start win of the week is something good that's happened professionally, personally, in the world in general. And Yasoob, we're going to make you go first. Yasoob Khalid: So much pressure right from the beginning. Okay, I have actually two wins of the week. The first one is the personal 1. Second one is work related for the personal one. I remember two or three years ago, I published a post regarding JPEG decoding using Python. I mean, here we go. Python right from the start. So that post became really popular because you learn a lot about the different encodings. You learn about huffman Encoding? So you learn a lot of theory in college, but you don't get to really apply that theory in college sometimes. So I wrote this article online regarding how to take all of that theory and apply it into practice, where you have a JPEG image, you decode the JPEG image and end up with raw pixel values of each different pixel in the JPEG image. And when I published that post, I published it on Hacker News or a bunch of other tech websites, and someone reached out to me saying, oh, hey, you know what, you have done JPEG now, how about you do something similar with MPEG? The JPEG article got really famous. I mean, if you search now on Google, just search JPEG decoding and python, it is going to be the first one. And when I heard about MPEG, I hadn't really thought about doing it at that time, but it intrigued me. I decided to go ahead, see what it's all about, how much effort that's going to take. And it took me three years on and off with persistence just to get to this point. And recently I was able to come up with a purely python based decoder for an MPEG video. So hopefully in the future I'm going to be writing an article on it. Right now, I don't think there's any article online which takes you from step one till the last step, where you take an MPEG video and produce each individual frame in Python. So that was a major big win for me after three whole years. Kelly Schuster-Paredes: That's huge. Kudos on that. And you can't put it in Chat GPT then and have it write for you. Yasoob Khalid: I wish I could. I wish. I mean, I asked chat GPT a couple of questions. It was helpful, but not really helpful. And then I had to do my own research and figure all of those things out. That's a good and the other one is, yeah. Thank you so much. I mean, I was excited. I wasn't able to shed the whole excitement with my wife because she's not a computer programmer, so it was hard to relay how excited I was because of all this. But that was exciting for me. Hopefully I will soon write an article on that. And the other big work win for me was we have this process where we have to write code and it takes us three weeks, two to three weeks to write the code and test it out for a particular process. And I ended up using Python to automate quite a big part of it, using Chat GPT and using code generation. And that has cut down two to three weeks of development time to literal minutes or hours. So that's a huge win. Kelly Schuster-Paredes: That's really good, sean's like, yeah, I think about that every day. How can I reduce the workload with Python? Sean Tibor: Sometimes it just takes time, but I think I've had some experience with that at work lately, where I'm demoing a lot of the automations that we've built out in this platform that I've been working on for the last couple of years. And I can see people having the AHA moment where they're looking at it going, oh, okay, I can see why this is valuable. And how do we bring this back to our platform, to the work that we're doing? So it's really gratifying when you have those kinds of optimizations. They're just really satisfying because as people, as developers, the only thing we can't get more of is time. So anything you can do is to make your time more valuable is awesome. Yasoob Khalid: Oh, yes. And you know what the most exciting part is? Sometimes you automate something using some really basic floors, FL six and some for loops, and then people are like, how did you do that? That AHA moment, even from developers, is like the best part. Kelly Schuster-Paredes: That's great. I don't know. Yasoob Khalid: How about you, Kelly? Kelly Schuster-Paredes: Oh, for me, look at he's taking your job. Sean always got faster. It's normally, Sean, that you're hired the. Yasoob Khalid: Spot right at the beginning, right? Sean Tibor: You're hired. I love this. Kelly Schuster-Paredes: We try to always get there first. Like I'm Sean's next. So mine weren't really let me think. I had a lot of coding in. I'm in the hot seat right now with my 6th graders. Right in the hot seat. Not in a bad way, but like in the exciting stage, the kids just launched or deployed their first app ever, the 6th graders. And that kind of takes me back to my big AHA moment of this week, was I saw this quote from Alan November. He's a very famous person in the educational realm, and he said this quote that said, teachers need to stop saying hand it in and start saying publish it instead. And I put this quote on a post and I was writing about it and thinking about it and all the times I make the kids record their app or send it in and they don't really publish it, they don't put it anywhere. We don't have the kids going into GitHub. And I was thinking to myself, how do we this? And I had a great conversation with Sean's suggestion. I talked to Eric Mathis and he gave me his whole great idea about deploying things and setting up my own server, which is a project on itself. So I'll be talking to Eric more about that. But I also talked to Nick Tollerve, who is the creator of the Moo Editor and also works for Anaconda, and he was talking about Pyscript. And I went back and I looked at the EuroPython talk about what Nick gave about Pyscript, and it's really cool. There's a lot of cool things coming out with that. And we're trying to deploy their apps on Pyscript didn't quite work yet with my 6th graders. They're not really ready for it. But it just got me thinking that this may be the next step, right? The next step for doing stuff with the kids. And we talked a lot about with the eigth graders. So I got really excited because I think in what I do, I teach the same stuff all the time. So whenever I can add a new twist to the curriculum, it kind of gives me a huge win. So I felt energized this week. We talked about deploying apps and yeah, so I'm looking forward to that. And that was a huge win for me in the curriculum side. Yasoob Khalid: That's definitely exciting. I remember when I was in 6th grade, actually it was in 8th grade, I asked my computer science teacher regarding Python and he had no idea what Python was. So, you know, for my standards, you guys are right at the top. Kelly Schuster-Paredes: Thank you. I'll have to share some 6th grade code with you, see if it was up to par to your code. Sean, your wins. Sean Tibor: When I was in 6th grade, I was coding Applesoft Basic on an Apple two E or two GS or something like that. So yeah, they're way light years beyond what we could do at the time. I think the Internet existed when I was in 6th grade, but actually being able to publish stuff to it, you would have had to be a researcher at a university. It wasn't even publicly available yet. So it's amazing how far we've come for today's 6th graders to be able to publish their own Python Code to a website and have it run, that's pretty cool stuff. Kelly Schuster-Paredes: Yeah, it's definitely super cool. And the fact that it's straight on the web and you can share a URL and embed it, and there's your little app running good stuff coming out of the Pyscript and the CPython and Microsoft, I think C Python people, right? Aren't you in that whole realm, too? So it was cool. Sean Tibor: So for my win, Kelly, I got something for you. Kelly Schuster-Paredes: Oh, no. Sean Tibor: I got you a so if you can't see it, I'm holding up a little button that I got from one of the Associate Dean of Computer Science at Carnegie Mellon, and it says, I heart robots. So, Kelly, the next time I see you, I'm giving this to you. I have been on the road for the last couple of weeks, traveling to a couple of different colleges, doing intern, recruiting for summer interns, and for the first time, I got to go back to my university, Carnegie Mellon, to recruit for summer interns for Mondelis and just had a really great experience. Definitely the win. It was great to be back on campus. It's amazing to see how much more is being built there. Kelly and I were there five years ago for robotics training at the Carnegie Mellon Robotics Institute, and in the intervening five years, there are new buildings on campus, there's new programs on campus. They just launched their first undergraduate robotics degree. So you can get a bachelor's degree in robotics at Carnegie Mellon now, which is a phenomenal place to do that. I also connected with some of my professors that I had that are still there, including a Doctor of Philosophy. So the guy who really puts the PH in PhD, Wilifred Sieg, who for the last 35 years or so, or almost 40 years, has been a professor in the philosophy department at Carnegie Mellon, and he was also the instructor for my freshman year seminar course when I was a brand new freshman at CMU. And we had a course on logic and models, I believe it was our models and reasoning, and I just reconnected with him, had a really lovely chat in his office for about 20 minutes or half an hour, gave him some toblerone chocolate from Mondelis to enjoy with his department, and just had a really warm, lovely conversation with him. He's now a grandfather for the first time, has a lovely grandson, beautiful pictures that he showed. Just really nice to reconnect. And overall, it was a successful trip. So my win was definitely getting back to my roots of where I started this journey of being a developer and a technologist and it really brought me back to a lot of things that I'm excited about in the education and technology space. It was also a really nice preview to go to Pittsburgh in advance of PyCon us happening next think I think. Kelly Schuster-Paredes: That says a lot and hopefully all the educators out there listening are having that warm fuzzy feeling. You do make connections with your students and regardless of their age, whether they're eleven year old and crazy 6th graders or freshmen who were I mean I could imagine how dorky you were as a freshman at CMU but for sure he still made a mark on it. So thank you to all the educators out there. Every day is an appreciation week for educators. Awesome. Sean Tibor: Yeah. And dr. Siege still teaches logic and proofs and you can take that course online. It's an open course. So he's put it all together. It's self paced and you can run through it. So a little shout out for his online work. Kelly Schuster-Paredes: Very cool. Yasoob Khalid: Isn't it always amazing where you get to go back to your institute but not as a student where you are sort of giving back to the community in a sense in your case you're there to recruit people. I think it gives a whole different vibe to the trip and it's amazing. Sean Tibor: I still remember all the places where I nearly had a nervous breakdown on campus from all the work but that's thankfully gone know that's funny. Kelly Schuster-Paredes: Well, let's get talking about intermediates, because I have a lot of questions. I think in my head they haven't formulated quite on paper, but go ahead, John. Sean Tibor: Do your yes, why don't you introduce yourself first so we can understand kind of the work that you do, your background, how you came to this step of authoring and publishing books about Python. Yasoob Khalid: Sure it's going to be a long story so at any point if you have any questions, feel free to talk me. I am originally not from the US. I'm from Pakistan and I have been programming for a really long time now since I was in grade six, seven roughly around that time. And coming from Pakistan you have to imagine that technology travels really slow towards the east. So if something in your childhood was new here in Pakistan, it would not even have existed at that time. So that also ties into my point when I mentioned earlier on like my professor or teacher in school did not have any idea what Python was. He thought I was talking about a snake and even it goes for regular expressions. I was a kid and I was talking to him oh hey, you know what, I read something online called regular expressions. Can you explain it to me? And he was like there were only crickets but to come back to the story so I started programming early on because of a game. I don't know if you guys have heard about Club Penguin? Yeah. Sean Tibor: Club penguin. Yeah, there's my nieces and nephews played a ton of Club Penguin. Yasoob Khalid: It's the OG game. Kelly, this is for you. It's a game by Disney. I used to play it when I was a kid. So basically it's a multiplayer game. You have a Penguin sort of like Sims. And in the game, you can purchase things in the game, you can purchase clothing for the Penguin. You can purchase a guitar or any sorts of instruments for the Penguin, and then you have to spend real money on that. And I used to play this game, and I wanted to spend money, but credit cards in Pakistan at that time were not really popular, so I could not really spend money on it. So I started searching online for hacks for the game. Like, how can I buy something without paying anything? And then I came across this software called Penguinstorm. Basically what that software did was instead of so it was an online game, but with that software, instead of using a browser to log in into the game, you had to use that software to log in into the game. And then you could buy anything you wanted. Life was perfect. My penguin was happy. All the clothing I needed, my Penguin had it. And then one of my relatives used to play that game, one of my cousins. And then she was over at our house one day. We were playing, and I told her I was really boastful. I was saying, oh, my Penguin has all of these things. Does your penguin have everything? And then she went to my Penguin in the game because it's a multiplayer game and my Penguin was naked. And that was the point when I realized, what is going on with my Penguin? My Penguin has such wonderful clothes on my screen, but it doesn't have anything on her screen. So that was the point where I started questioning, like, there is definitely something wrong with this software. I need to fix this software. I mean, whatever the fix was supposed to be. And that led me down to a journey on which I have been till now. And when I found out about that, I started doing some research. How is the software made? Oh, it's made in something called Visual Basics. I went to the market. So just to give some more context, I had not done algebra at school. I had no idea what variables were. I had no idea about anything of that sort. So no algebra knowledge. But I wanted to learn programming because I wanted to fix the software. I went to the bookstore. I bought a book for Visual Basic. I brought it home. And then there was someone who used to come to our house to teach one of my cousins programming. He used to learn Q Basic from him for his high school examination, or our version of high school in pakistan. And then I brought this 300 plus pages book, placed it in front of him and asked him to, you know what, can you please teach me this? He looked at my face, he looked at the book, and he was like, you know what? You are a bit too young for this. So let's put this on hold for a bit and then in a few years, when you're older, you can come back and learn this. I was a young kid. I wanted to prove him wrong. Now the whole motive has changed. Rather than fixing the game, I wanted to prove him wrong. I'm not young. I want to learn this without giving too much away. I read the book and everything flew above my head. I tried to learn as much as I could, but it wasn't making any sense. But I started slowly and gradually watching tutorials. I Sean, even till that point, I was in grade seven. It was one whole year. And till that point, I had no idea about algebra. Nothing. I was slowly and gradually watching videos on YouTube and building up my knowledge base without any sort of formal education. And then one day I came across something called Python. I was like, oh, wait, if it can't be a serious language, who names their language Python? Till that point, I had only heard of the snake called Python, but I decided to give it a go and things started making a bit more sense than they were making visual basics, and I just kept on with it. Kelly Schuster-Paredes: That's very cool. I think that's the thing when people find Python, it's like, oh. Because I didn't have any, really, obviously from not knowing your video games. And it always gets me behind. But I didn't have really much background in computer science. But when you saw Python, I was like, oh, this makes sense. I love it. So it helps. It happens to a lot. That's awesome. So you continue to do on Python and then how did you get your basics? And eventually did you go to college and stuff for computer science? Yasoob Khalid: Yeah. So for me, let's continue the story from when I started working with Python. Like I said, it was a long story, so let's get it into bits and pieces. You ask me a question, I'll respond with the answer. So when I started python, I started slowly and gradually. I don't know how I came across GitHub at that point, but I found GitHub. Every single Python project that I was looking for, it was open source. I could go to GitHub, I could read the source code. And then one day I realized GitHub gave me the option of fixing some code. There was this one project on GitHub made by a beginner like me, and it had a bug. And I was able to go in, make changes and get it fixed. And then I realized there's such a huge world in front of me. I could fix changes in other people's code. I could share my code. And that also instilled the love for open source in me, because that is how I learned. I learned through the videos and then I learned through reading different people's code. I would have gotten stuck at that point if not for this amazing guy from Germany who I had never met in my life. But he is probably my biggest mentor till date. His name is Philip. You might have heard about the software called YouTube DL. It's on GitHub. It allows you to download videos from YouTube and a bunch of other websites. It's a really old piece of software. And when I was getting into Python, I came across the software. I looked at the code and I realized there were so many things I did not understand. There were regular expressions. I had not heard what those were till that point. But I was seeing these weird strings, starting with an R and with weird bunch of characters. And then I realized, okay, these are the three people who are the owners of this project. I found Philip's email. I sent him an email out of the blue. This is probably something I would not be doing today, because when I think about it, it was just an unsolicited email to a guy who had no idea who he was. And then I asked him, hey, I looked at this code of yours and there's this thing called regular expressions in there. Can you explain what it is doing? And he was so patient for such a young guy who was trying to understand something which for most other programmers, this is something you learn in intro classes. And he could have easily said, you know what, read this book or read whatever or watch this video. He actually took some time to explain everything to me over email. And that started this relationship with him. Whenever I would have any questions, I would reach out to him. Hey Philip, I'm having this problem now. Can you please explain this to me? And then I was really lucky because this guy was an assistant professor at a university and I had no idea about that. And he was at that time on a sabbatical because he was going through some treatment. And I was really lucky to have this really knowledgeable guy. Right at one click, I would send him an email and he would respond back. And it just helped continue that relationship, kept me motivated. And then that also led me down towards writing as well when I was learning. Python really blew up in popularity over the last few years with the whole AI and machine learning. But the Python community, it used to be fairly small and fairly limited in scope. I remember a time when the main contributors to the language and the people making open source software I could name mean Al Swagert, he has been there since the beginning. Kenneth Wright, he authored the request package and a bunch of other famous tools in Python. Daniel Roy Greenfeld. Like you could name these people at that time, but there was a limitation of the material that was available online for beginners and this community. I started talking to these people through Reddit. There's a subreddit for Python. It used to be really small. I started communicating with these people there and when I realized that the beginner level knowledge had a gap, what I decided to do was, hey, I'm learning something from scratch. I had no prior experience, so why not? When I learned something, let me write about it as well. It might have mistakes, but that is how you learn. And I started maintaining a blog. Whenever I would learn something really basic, let's say for loops, I would write an article on for loops in my really broken English, I would send it to Philip. Hey, Philip. This is something I wrote. He would proofread it, fix all the mistakes, and then I would publish it online on my blog. And yeah, that is how I got into this. And then that is how I also got into blogging and became consistent in blogging because I was learning something new. I always had something to write and I kept on taking that on and on and on. Kelly Schuster-Paredes: I have so many questions. Sorry, I'm going to pause. I would graduate. So that's very cool. It's funny that you said that there wasn't much of the beginner stuff. Now I feel like there is a lot of beginner stuff and then there's a lot of advanced stuff. For me, I teach all the beginning concepts and I've denoted these as the beginning concepts. And the kids know all the beginning know. Sean and I, we developed that kind of curriculum. But at what point does it come intermediate? You wrote a book on intermediate of Python and I'm looking at some of this. Would twilio bot. I'm like that's. Really cool. Could it be intermediate? Is it at the level? Am I an intermediate? And some people might be asking themselves that too. So at what point did you say this is not beginning stuff, this is not advanced stuff, that this is intermediate stuff? Yasoob Khalid: That's a very good question, because I don't think there's one right answer to that question. Like you mentioned, every person's definition of what is intermediate is different. For me, the Litmus test was basically, this might sound really funny, but for me the test was basically like, hey, I know these different concepts. These are all big net level concepts. Because now I'm slowly and gradually seeing more and more articles about these. You could open up any big net level Python book and these are the concepts listed there. And then every other day I would learn something new in Python and I would realize, OK, this is not covered in a bigger book. And this is something I was able to learn without spending too much time on it. So it is definitely not an advanced concept. So it probably is an intermediate level concept. So, you know what? Let's file it under intermediate. And then that is basically how I did. I did not start off with writing a book on intermediate level concepts. What I did was, like I mentioned, whenever I would learn something new, I would write an article on it. So these intermediate level concepts, I was just learning them on a regular basis without realizing they were intermediate and I would publish them on my blog. It was only after a good number of articles I had written online that I realized, you know what, maybe this is the right time to figure out if I could potentially repurpose these tutorials into a book form. Because people, you can read a blog, but it's really hard to figure out what the chronological order in a blog is. And you can have a bunch of other articles in between articles that are for a book purpose. So I decided to at one point I realized I have, let's say, five of these articles written and if I write four or three more articles, I could potentially convert it into a book. And that is what I did. I realized these are the intermediate level concerts because I was able to learn them and they are not mentioned in most beginner level books. So let's put them in the intermediate list. And then I wrote a few more articles following the same pattern and converted that into an open source book. Kelly Schuster-Paredes: Very cool processing sean's thinking I'm trying. Sean Tibor: To answer the question my own head about what makes something an intermediate concept. And it kind of reminded me a bit of this talk I saw at PyCon last year where it was like kind of the syntactic sugar of Python, trying to remember who gave it. Maybe it was Anthony Shaw, but it doesn't really matter right now. I'll find the right person and put the link in the show notes. But basically what they were showing was that there are ways to do all sorts of things in Python using a very small set of the language, right? So, like, those beginner concepts are things that you can learn and you can do pretty much anything with them, right? But it might take a long time, it might generate a lot of code or it might be slow and inefficient, but you can do it, right? And so to me, the intermediate concepts, where I kind of moved beyond the basics, was once I started seeing better ways to do it and better being faster, more memory efficient, more elegant, those things that were like, oh, that's the same thing that I've been doing, but just in a better way or a more efficient way. Or it fits my concept better. Right? But it's not something. I would have immediately grasped if I hadn't done these other concepts first. Right? It's kind of like the I think the classic example that people always use is like, iterating over a list to generate a new list. You can do that by creating a list. Iterating over it and appending the items to that list that you created. Right. Or you can use a list comprehension to do it. Right? And so one is a basic concept, and you can do it using all the stuff that you learn in the basics and the beginner level. But then once you learn comprehensions, now you've got an intermediate level skill that can take those four or five lines of code that you wrote before and turn it into one. Yasoob Khalid: I definitely 100% agree with that because right at the beginning when I was there, this is exactly it for loops. You learn about list comprehensions generators. Iterators you don't really need to care about those right at the beginning. You can just basically return everything at the end of a function as a list. And then slowly and gradually, when you get to a point where you have a ton of data, then you need to care about those concepts. And that is basically it just finding an elegant solution, which is Pythonic, that most of the time those end up being intermediate concepts. But here's one thing what I did know is definitely not an intermediate concept is metaprogramming. Because even in those early days, I would read articles online. Do whatever you want in Python, but do not do metaprogramming unless you really know what you're doing. And I had no idea what I was doing, so that was definitely not an intermediate or big level concept. Sean Tibor: Well, and that's the other good question, which is what's the difference between intermediate and advanced Python? Yasoob Khalid: Right. Sean Tibor: And I think the answer is somewhere inside the fluent Python book that I'm reading right now. There's a lot of it. Yasoob Khalid: Python books. Sean Tibor: It's really amazing, right? But it's also one of those things I tell my team, I read a chapter of this at a time, melt my brain down a little bit, and then build it back up again. Right. It's great for that sort of concept. Right. And I think the reason why I like it so much is because it reminds me of making that step from beginner to intermediate. Right. It keeps me grounded in what it's like to learn something really hard for the first time so that I practice that skill. And I also have empathy for other people who are going through that learning process as well. Yasoob Khalid: Yeah, you know what? This was really good that you mentioned because I started reading his I had never read his book, ever. I had heard about it quite a few times, but literally the page count always put me off like 1000 plus pages. And I was like, that is not a book. I have time to read. But then recently I decided to read it, and that guy is above 60, and his wisdom shines through the book. When you read the book, you realize you're not just learning Python, you are learning about the history of a lot of things as well, about why they are implemented in a certain way. So, I mean, this is a shout out for everyone out there who knows Python, who has done beginner level Python. Maybe you've never done intermediate level Python or whatever concepts you would consider intermediate. His book is definitely going to teach you something and is also going to give you a really interesting history lesson of a lot of different concepts. Sean Tibor: Yeah, it's definitely not a book to blaze through in a weekend, though. I mean, it is like, take it in small doses, kind of like absorb the lessons and everything as you go and don't feel like you're falling behind if you haven't read all 1000 pages in the next 72 hours. Kelly Schuster-Paredes: I had to say something because every once in a while I have these little epiphanies after 117 episodes. There's been something that's always been in common with the conversations. And this is the thing that just got me. We try to get kids into code and we try to get them pumped, and we do this as teachers of finding them the fun things to do. But in the end, everyone that we've spoken to or anyone that we've met who codes, at least in the Python community, because I don't know in other communities, but it always stems from this eagerness to read and find out and dive in. And that was something that you were talking about when you were telling us our story is like that, oh, I'm going to do that for this reason. I'm going to do it for that reason. But once you get into it because of whatever reason, it's that passion to learn and figure things out. It's like, same with me. At first I got into it to be like, yeah, I'm going to show them I can do this. I am going to teach this course even though I don't have anything CS. And Sean remembers the whole process. I'm like, I don't care what they say, and nobody really said anything bad. But I'm just saying, like, in my head, I was making this story up of like, yeah, I'm going to do this. And then I got hooked into it because the more you read, regardless if it's intermediate or advanced, the more you read, the more that passion. And I'm just, like, know at some point where do you deliver that passion to someone? Like, how do you give it to your intern, Sean, and how do you give it to your readers, finding that connection in the writing or in the way that you deliver the content for other people to read? Sorry, while you guys were talking about books, that's my epiphany of the thought for the day, finding something that they can connect to after they get that first. Eagerness to motivate and read and dive. Go ahead. Sorry. Yasoob Khalid: Definitely. So there's this one thing which I feel like I have observed quite a lot in academia sometimes people. So this is a trait I have found in some of my favorite professors. A regular professor is just going to give you facts. They will try to motivate it sometimes with some reasoning or why you would do what is the reasoning behind needing something which they're going to be teaching? But a lot of times, they're just giving you facts, okay, do this, do this, do this. Some of my favorite professors or authors are the ones who really try to instill the passion or whatever, the epiphany they had when they were learning this concept. And they try to relate that to you, like, you know what? This is the problem. And then they try to build upon it till you really want to know the solution, and then they tell you the solution. Then it sticks as well, because now you have the background reasoning of why this is necessary. Just something I wanted to share. Kelly Schuster-Paredes: Yeah. I gave the kids a box of a huge sewing table for my robotics kids, and I was like, hey, who wants to put together a table? They looked at me and they said and they said, why are we putting a table together for robotics? I was like, it's programming. Full on programming. Step by step, read the instructions. Go. And they looked at me, and I was like, These are the things, like, what gets them into. If you like to put together an Ikea table, maybe you like to program. They bought in. Yasoob Khalid: Did it work? Kelly Schuster-Paredes: Only they didn't get very far. So it just proves some of their coding skills aren't there yet. Sean Tibor: It's interesting that you bring that up, because there's so many things that can be crossed over from other parts of our lives. Right? My daughter had homework this week where she was given a number of sentences in her English class, and she had to identify whether it was an Imperative statement or a declarative statement. And it was interesting to me because I said, do you know that this is really fascinating right now? She's like, Why is that? Because I write in two different languages, coding languages for my job. One of them is Imperative Python, and the other one is Declarative, which is TerraForm. And we came up with a I explained to her that the declarative language says, this is what I want it to be. This is what it should be. Right? And the Imperative is giving commands and saying to do these things. And she's like, okay. I kind of get that it wasn't really sinking in with her. But then we identified that the way to identify an Imperative sentence is to add, or else to the end of it, right? Do your homework or else, right? That's an imperative statement. Or I did my homework is declarative, right? So finding those things to connect and explain and make it real really does enhance the learning experience. And it makes it so people actually care about it. Now, she loves it. She's like going around looking at all these things and adding or else to it and being able to identify those imperative statements. Kelly Schuster-Paredes: I think you just set yourself up for failure. You're going to be like, go clean your room or else what are my options? Sean Tibor: She's a ten year old girl. I wouldn't have had to teach her that. She just knows it intuitively. Kelly Schuster-Paredes: I want to switch a little bit to your practical Python projects because and I'm going to do a shameless plug. But I don't even know why I'm plugging this book. Simply because not your book. For this book. I just got sent this geeky Projects for Curious Programmers, which totally made me think of Sean. When it got sent to me, I was like, oh my God, this is not me. This is Sean's book. So I'm going to have to pass it to him to review. But I was looking at your projects. They're really cool. And I think there's a lot of stuff in there. Maybe not the Facebook messenger because that's like so old, you know, who does Facebook anymore with kids? Maybe an Instagram messenger bot. But a lot of these fun little things are something that to be honest, I think a lot of the high schoolers who leave our Python class would be interested in. Here's this idea of doing some sort of email client or Facebook messenger. We actually had a kid that did a twilio. It called a number and sent a joke or something. It was like online. It was already online. But he followed it and did himself, which was really cool for an 8th grader. But where did you come up with these projects that you just wanted to do? Like you just said, oh yeah, this is what I want to make. Yasoob Khalid: That'S a good question for this practical projects in Python book. So here's where the thought process for writing this book comes in. For me personally, I had done the beginner level. I knew beginner level Python. I had written a book on intermediate level concepts. There were tutorials online for building certain projects in Python, but there was this one thing which was always missing, and that was a tutorial which would take you from step A till step C, and you would end up with a fully functioning project. You could, let's say, demo as part of your CV. I mean, if you learn Python through a book, beginner level book, sure, but how can you demonstrate that you know enough Python to create a project? And at that point, I'm not entirely sure whether automate the boring stuff with Python was already published when I had this idea. But that book is sort of similar to what my initial idea was. I wanted to come up with a book where there were separate chapters and each chapter would end with a fully functioning project that you could and at the end of each chapter, I would add some follow up comments. Like how you could extend this project and make it completely your own and also potentially add it to your CV when you're applying for jobs. Because that was a big issue for me when I was learning Python. I did not really have to apply for jobs, but just learning how to apply my Python knowledge into making a fully functioning project, that was a missing link for me. And this is something you might have already observed, but for me, every book resulted from a necessity or a missing link, which I felt was there. Intermediate level book came out because there wasn't any intermediate level concepts book I could find online. Most of the intermediate level concept books came out after that, and the same was for the practical projects in Python. There wasn't any Python specific book where there were enough evolved projects. Like you could have books which let's say would come up with a project on how to guess a number game. But for me, those were a bit too basic. I wanted to come up with something which was a bit more involved and you could demonstrate your expertise. And that's how I came up with the idea. And then because I was a blogger, I was writing articles online. I was also reading articles, and I had a ton of time on my hand. This is when I was in college, so I had a lot of free time. I mean, sure, in college I wasn't spending my time drinking or going to parties too much. Those were just not the things I was interested in. So I would spend a lot of my time doing stuff like this, like programming or writing articles and all of those things. And then gradually I would randomly come up with these ideas. Okay, one day I learned about Tui, or what exactly is abbreviation for? So there's GUI Graphical User Interface, and then there's Tui Textual User Interface, which is where you code the interface and you interact with the program through a terminal. I learned about this and I realized, oh, this sounds like a cool concept for an article for the book. And then I wrote an article on it. Same goes with Twilio and all of the other bits and pieces you see in the. Sean Tibor: Like what's been the response from people that are reading it? Are you getting people who are finding this inspiring? Are they extending it into other areas? Are they taking ownership of it and making it something that they feel personally involved in or invested in? Yasoob Khalid: Yeah. So I have received feedback from people where they have been able to follow this book, implement some of the projects. And a few people actually reached out to me telling me they got a job after reading these articles and improving their knowledge and implementing it. And as you can imagine, as an educator, that was the best thing for me to hear. Getting a random email one day telling me, hey, I read your book and thank you so much. It really helped me get a job. And I was like, oh, it's really hard to explain how happy you feel. I think that is a bigger achievement than earning a few bucks from a book. So there have been cases where people have been able to take those learnings and implement those. As far as taking ownership, I cannot really comment on that because there wasn't a good way for me to figure out if people were extending it because it was a PDF and an ebook and there wasn't that connection with the projects. But the book did end up selling pretty well. I sold a couple of hundred copies of the book, and then I ended up putting it online. As an open source person, this is something I really hate about myself. But as an open source person, just because I learned a lot of things for free online, I really want to just give stuff away for free. So I ended up putting most of this book online as well. Right now, it is completely free to read. If you want to download the PDF or any ebook version, you have to pay. But if you want to read the book and get benefit from it, it's completely free to read online. Kelly Schuster-Paredes: I just love the python community. Yasoob Khalid: Same here. Kelly Schuster-Paredes: Yeah, I do love books. I do love hardcover. We have books, and sometimes I just like books because they look great on your I say this all the time. I was told a long time ago that if you have lots of books in your house, that means your kids are going to go do well in future life. But I just think they're great. But being able to get stuff for free and for me, break that. It's not really the digital divide, but in the essence, it's sort of like a digital divide. People that can't necessarily afford things can go online and learn great tips. And I think that we're at a point in our society where that's really important. We need the people that are going to have access to every piece of information that they can in order to continue to solve problems. So thank you. Thank you for putting that online for people. That's great. Sean Tibor: And I think from what I've seen too, just with all that time recruiting and talking with students, the ones that really stood out with me were the ones who had projects that they got excited about, that they really wanted to figure out how to solve that problem. And I also had a number of students who came up into me and asked, what should I be doing, right? What are you looking for? Right? And what I kept telling them, or what kept coming up in my head was, I don't really care exactly what you build, right? But I need you to go build something that you don't know what the final product is going to be like until you get there. And you may fail at it, but go do something where the answer is not known, right? When you've got a professor assigning you a problem set, they know what the correct solutions to all those problems are, right? When they give you a project to complete in class, nine times out of ten, that project has a specific outcome in mind that they have already identified. They've got a prototype of what they think it should be. But go solve something that's not defined, right? Something where you have half of an idea about what you want it to look like and go figure out the rest of it and build it and everything. And when those students come talk to me, they have something to talk about and everything else that I can teach them as their manager, as a coach, as an onboarding lead, whatever that is. I can teach them a language. I can teach them better email etiquette or how to open a pull request and get a good review out of it. I can teach them those things. But what I can't teach is that attitude of going out and finding a real interesting problem to solve and not knowing how you're going to get there. And what I like about this book is that you've got for them the support of being able to work on a project that is well defined. Like there's a beginning, middle, and end to every project journey that's in the book, but then they can extend it, and it's also something they can practice and see the value of. Oh, I'm going to scrape the steam gaming platform with Python, and I'm going to read through everything we have there, right. They can turn that into something else, scrape a different website or scrape other data from the same website. They can go do those things. And that, to me, is great from an employer perspective. It shows that drive to figure something out. It also shows that for them, they found something of personal value. And I said, even if you don't get a job from it, you've done something that's important and valuable to you to go solve. And you've benefited from that too. Yasoob Khalid: Definitely. I'm really happy you mentioned that point, because it has been such a long time that I wrote this book that I had completely forgotten about one of the main guiding principles of when I was writing the book, which is exactly what you mentioned. A lot of the tutorials you read online would tell you, okay, hey, this is something we are making. These are the different steps on how to do it for this book. If you read through the book, you will realize each specific chapter. I not only take you from point A to point Z, I also tell you about why I came up with a particular solution. For example, I would start the project with, hey, I want to make a Twilio board. What are the next steps? Imagine you have this idea, what are you going to do next? And then I take them step by step. I tell them, I did some research online. I found these libraries. These are the reasons I chose this particular library. And these are the next steps. And this is the thought process I went through to come to this particular conclusion. And I think that is the most important point you can teach people. I mean, again, there's a famous idiom like don't give someone a fish or teach him how to fish. Completely screwing up the whole thing here. But you get the idea. Yeah, I want to teach them how to come up with those same conclusions on their own, rather than having someone tell them exactly what to do. So I think that is really important. You need to tell people how to get to that conclusion rather than telling them the conclusion. And regarding Kelly's point earlier, regarding the books and that divide, the digital divide, this is something I feel really personally about because I come from Pakistan. The economy of the country is pretty bad, to say the least. So people I think there needs to be a case where when someone publishes a book, there are already purchase power parity programs where people would mark down their book or mark down their video tutorials for third world countries. But I believe there needs to be a bit more effort in that direction. In that part of the world, people are pirating books. There's no second option. You have to pirate because sometimes you don't even get access to the book through the supermarket. You have to do piracy. A lot of people don't have credit cards. There needs to be a bit more effort in making these digital resources available to people in that part of the world as well. But yeah, sorry. Sean Tibor: That'S a great point. And I think also the accessibility of the hardware, too. Right? So you make a good point about being able to purchasing power and be able to get things electronically. But a website is something that people could get from a smartphone, right? They can read through it, they can learn from it on a nice code online with Python. Kelly Schuster-Paredes: You can code online with Pyscript. Sean Tibor: Yeah. You may not have access to a laptop or a desktop or something like that in your village or in your town or your city where you live, but the access for mobile devices is much, much higher and maybe that's the way that people can get access. If we make more of these resources available online for free, it's certainly a better alternative than Pirating books. And who knows what kind of quality of materials you'd get from a pirated copy, right? Maybe it's the exact same. Maybe it's a really bad scanned copy from four years ago that is really hard to read. At least this way you can control the way people see it. Kelly Schuster-Paredes: So I'm looking at the time, but I want to go back to something real quick, because you guys were talking about something that in education, we throw out all these words of critical thinking, problem solving, but there really isn't too many ways out there of showing that thought process of, this is how you do critical thinking. This is how you problem solving. So going back to that conversation that Sean started and you nicely elaborated on Yasoob about, I took them to the steps of my thought process. I think as an educator, that was one of the benefits for me at least teaching Python, because my thought process was, how did you know to code? I still tell everyone about the day and Sean probably still remembers the day that he was teaching functions. And I was sitting know, blindly listening to him because I was kind of always listening to him to better my Python. And I was like and he goes, you finally got it. And I was like, oh my God, I had been teaching functions the whole time. And it was whatever he said and how I thought about it in my head that now allowed me to explain that thought process to kids, because we throw out these words as educators, oh, I'm teaching them critical thinking skills, but are we a worksheet or here's the answer copy it. Are we really teaching them critical thinking just because it said no, it's not. We need to help them see what's going on in our brain and how we critically think about things and how we solve problems. Because a ten year old, not every ten year old is going to go and hunt down a book that has to lay over their head and try to find things out by themselves. So you kind of have to help that out and it's just something to keep in the back of your head. Sean Tibor: And especially if you're teaching live or interactively with a student, that's where you get the really good questions that are rewarding, right? It's like when you just tell them what to do step by step by step, they just copy along and they follow. But when you're explaining the thought process and you get a student who asks, well, why would you do it that way and not this other way? Or explain how this works, that's when you get those really rewarding, engaging questions as an educator, also where you start to really have the I found that teaching process to be much more enjoyable than just do what I say and follow along. It's way better when you're showing your thinking and the students can ask questions about your thinking, not just what you're typing. Kelly Schuster-Paredes: Yeah, I think everyone still to this day when they see us, even my new teaching partner, she's like, I love how you're so confident to just live code. And I was like, well, I learned from the best. I have no idea what oh, yeah. And I'm like, oh, wait, I remember how to do that. Let's go look at that. And it's that process that we show the kids, and I tell them every day. I said, Listen, I code microbits, like, two weeks out of every quarter. I don't know what delay and what this is. And it was something that I learned of how Sean taught himself python that I picked up. So it's just good going back to our roots. Look. Yasoob Khalid: Yep. Sean, your effects are really widespread. Sean Tibor: Hopefully, some of them are even good. Yasoob Khalid: Know, you got to ask the kids that question. I don't think Kelly is going to be honest about that. Kelly Schuster-Paredes: Which one? Yasoob Khalid: About the positive effects. The kids are the ones who are going to be the judge. Sean Tibor: That was one of the great benefits of being back at Carnegie Mellon is that there are a couple of my former students from middle school that are taking computer science there, and I got to meet up with them for coffee. And actually, I think we went to a Pirates game one night with a few of them, and just being able to see where they are now, they didn't say, like, oh, Mr. Tibor, you were the most amazing teacher ever. But just seeing what I knew of them when they were in 8th grade and their potential at that time and see them actually realizing their potential now, one of them is struggling through the same concepts of modern math class that I took 25 years ago. He is struggling through the same class right now. But the difference is I couldn't see the light at the end of the tunnel on that one. I was like, this is awful. Did I make a bad choice? All these things, he's sitting there going, this is hard, and I'm struggling, but I can already feel that I'm getting better at it, and I'm going to figure it out. I was like, as a teacher, being able to see that moment five years later, that was really rewarding, and that was gratifying. So I don't think that was my effect, but I got to at least see what the future looks like for a lot of these students. Kelly Schuster-Paredes: That's cool. Yasoob Khalid: You know what? I think a lot of times, students, like, in your case, students, the ones you met, we do not really verbalize our appreciation for our teachers. And that also leads to a lot of educators not realizing how much of. A positive impact they have had on kids. I mean, I am guilty of this as well. There's this wonderful professor in college that I took two or three computer science courses with, and that guy single handedly had such a huge impact. But I've been meaning to tell him, but I haven't gotten a chance to tell him that again. So you do not sometimes realize how big of an impact you have had on someone because something might have come up and they would not have relayed that information to you. But there are definitely going to be a lot of kids you have had a ton of positive impact on, even if you have never heard from them. Sean Tibor: I think you have homework now. I think you have to go email him right after. Yasoob Khalid: I was hoping to meet up with him in person, just like you met your professors. But let's see, email is a good start. Kelly Schuster-Paredes: Well, such there's a lot of love out for teachers. You know, I think that's a good kind of ending to the conversation. Otherwise, we'll talk all night. And Sean, I'm sure, has tons of work still to do and Nasub as. Sean Tibor: Well, at least a few more PRS. Kelly Schuster-Paredes: To, um, and I refuse to grade any papers tonight. Sean Tibor: Fair enough. Fair enough. All right, well, why don't we wrap up here? Yusuf, thank you so much for joining us. This was just a lot of fun to talk with you and learn about the work that you've done. And I have a bunch of projects that I'm going to go make now after I finish my day job, I'm going to go scrape some steam data using Python. But thank you for joining. We're going to put links to your blog, each of the books on our show notes so that people can find them and go through them. It has all your contact information there, so anybody who wants to get in touch with you can. So once again, just thank you for joining, and we'd love to have you back another time on the show, and we'll talk through maybe some more things that you've been working on. Yasoob Khalid: Thank you so much, guys. It was an absolute pleasure to be here and talk to you guys. Thank you. Kelly Schuster-Paredes: Thank you. Sean Tibor: All right, well, that should do it for this week. So for teaching Python, this is Sean. Kelly Schuster-Paredes: And this is Kelly signing off.