Sean Tibor: Hello, and welcome to Teaching Python. This is episode 85, and today we're going to be talking about using the request library to teach the basics of programming. My name is Sean Tibor. Kelly Schuster-Paredes: I'm a coder who teaches and my name is Kelly Schusterparedes, and I'm a teacher who codes. Sean Tibor: So it's a pretty exciting topic. You've been doing a lot with this with the students lately, Kelly, and I think it's a really great area to dig into because people don't really think about using requests to teach the basic it always comes up as like an intermediate or advanced topic. Right. Kelly Schuster-Paredes: It was really funny. Yes. It kind of came into place, and everyone always asks us to share our curriculum. So I think this is the one little freebie that we're going to give out and share. Sean Tibor: Nice. Well, before we get into our main topic and even before we get into the winds of the week, we have a couple of exciting announcements to share. And I don't know how this feels for you, Kelly, but the first one, I think is a little bit bittersweet. I'm excited about it, and I'm also kind of sad about it. But I'm not in the classroom with you anymore. Kelly Schuster-Paredes: I know my tea gets cold every day now. Sean Tibor: Yeah. So something that happened about a month ago, and it's been a big change, and everything is good. It's a good change in a good situation. But I have left the classroom and I have been seduced back to the world of corporate technology and working as a pure technologist for about the last month or so. And I know that there's probably a lot of groans and from other teachers out there saying, oh, we lost one. But it was one of those things where it was a combination of factors, especially like what I needed to do for my family and for the future. And so as a result, I have recently accepted a position working as a senior cloud engineer for Mondelez International. So if you're not familiar with it, Mondelez is a company that makes snack foods and around the world and a lot of snack foods. You may have heard of some of our brands in the US, we have things like Oreos and Sour Patch Kids. And in the UK we have Cadbury. There's milk and chocolates. I think there were a bunch of snacks and candies and tasty tasty treats from Peru that you didn't realize were from Mondeley's either. Kelly Schuster-Paredes: Choka soda. Sean Tibor: Chocosata. Yes. Kelly Schuster-Paredes: Who would have thought all the Peruvian people out there going, yes, exactly. Sean Tibor: Well, I am really excited about it. I am continuing to do lots of other things to keep my teaching going. It's not something that you can just stop and go off and not teach anymore. So I have several students that I'm tutoring one on one and helping them go quite a bit further, which is exciting. We're also working on some tutoring and adult learning offerings through teaching Python, which should be forthcoming soon. Kelly Schuster-Paredes: Yeah, he's practicing on me. So just so you know, just so you know, I constantly am in conversation with Sean and still getting all my Python help. Crying, crying. Sean Tibor: I'm saying, well practiced. And then Interestingly enough, even in the first month of my job, I've already been involved in a lot of our learning pathways and defining what it will be like for new members of our team to become cloud engineers and talking about curriculum design for adult learners, learning about the cloud. So it's been a lot of fun to be able to leverage that experience and knowledge about learning towards how to help my new team members on board quickly. Kelly Schuster-Paredes: You're welcome. Sean Tibor: Yeah. He always taught me everything I know. Kelly Schuster-Paredes: A lot of good news. It's given me an opportunity to grow as well and to have some fun with the 8th grade curriculum. And I was talking to Sean about this activity, and we're going to do some more talk through so I can improve it. Because even if you don't have one person in the classroom with you all the time, there's always a PLN. And that's been our motto since we started this. Right. So always someone to talk to, someone to reflect with, someone to grow. And that's where we are now. Sean Tibor: And as much as I'm excited about my new job and my new opportunity, I miss being in the classroom terribly. I miss my students. I miss hanging out with you, Kelly, and having you yell at me for having a messy desk or whatever it is that day. But I miss all those things. It's hard to give that up. Kelly Schuster-Paredes: Yeah, but we're getting on. We got each other still. So you can't get rid of me that quick. Sean Tibor: Well, let's move on to things that are not the things that are not better, sweet things that are just purely amazing and awesome. We got a great email yesterday, Kelly. Kelly Schuster-Paredes: Yeah, that's the winds of our week. We're going to share this one. Sean Tibor: Okay. Kelly Schuster-Paredes: I'll let you announce it because you're the one that told me because I wasn't looking at my email. Sean Tibor: Well, let's make this our shared win, because this is something that we're both really excited about and maybe we can share a second wind. But this one's from both of us, we're speaking at Python this year. Kelly Schuster-Paredes: So nervous. He's excited. And my palms are already sweating. Sean Tibor: What's the worst they can do? Put us in front of a giant room of people? Yeah, we're excited about it. Our topic is going to be learn Python like a twelve year old. And it's all going to be about the things that we've learned from watching our students learn Python for the first time and how those experiences, skills, and lessons can be applied to the way that adults learn Python. So it's pretty exciting to be chosen. We're honored to be chosen, and we're excited to go to Salt Lake City at the end of April and share what we know and what we've learned about being in the classroom together. Kelly Schuster-Paredes: Absolutely. I think our boss is even more excited that she only has to pay for me this year. Sean Tibor: Yeah. Kelly Schuster-Paredes: She's like, yes, you can go. Sean Tibor: Exactly. So if you're going to Salt Lake City for Python, and I know that it is definitely a tricky year and a transition year for people to be able to join us. But we'd love to see you. We'd love for you to come to our show. We'll have more details as they become available. And of course, if you are not going or choosing to go remotely, we completely understand. And I'm sure that there will be streaming options where you'll be able to check out our talk either as it's happening or after it happens. So more to come on that, but for now. Yay. So Kelly, do you have a second one of the week? Kelly Schuster-Paredes: I keep coming up with new ways to teach functions and screaming and banging on death. It's not really productive, even though that's one of my go to. Luckily, Sean's not in here anymore, so I can scream and bang on the dust as much as possible. But we are talking about returning functions again with the 7th graders. And it doesn't matter how many times we do that. The light bulb comes on at different stages. And today I took some bunch of code on a sheet of paper and I stuck it in the book. And the book I called and I said this is my function. And then I reassigned the book a name. And I told the student, I said when I call that book name, what is my return value? And then I started putting functions inside functions. And I was walking around with a stack of books and I think by the end of the end of the class, they got it. One of the functions name was Think Again, that book that I was reading from last chapter. And whatever you can do to make it physical to get them moving, banging on dust, not always productive. But you do get your point across, I guess. Sean Tibor: Yeah. And I did like the way that you did the message passing, I think it was last quarter, the way that you explained it that way. Like here, I'm going to give you some information you need to process it, and then you use the example of writing it on your own desk or writing it down on a sheet of paper and holding it for yourself is like printing it. But sending the message back to me, that means I can do something with it. I have that information and that's like returning a value. So I thought that's always a Nifty trick. Kelly Schuster-Paredes: Yeah. That was like the third go around. Then we're like on day five when I still had some stragglers still. So I was like, what do I need to do? So there you go. Another way. You can never give enough the ways to learn something. You just keep trying to make it stick and you wait for those AHA moments. So it does happen eventually. Sean Tibor: Exactly. We'll get there, right? Kelly Schuster-Paredes: Yeah. Sean Tibor: So for me, it was actually working with one of my tutoring students this past weekend. And it has nothing to do with Python, but it has everything to do with HTML and CSS. So she had come to me and said, I want to learn how to make websites. And I said, okay, well, let me put together kind of a checklist of things that you will need to know in order to make a website. And I'm trying to balance that learning path or that need for how much HTML and CSS do you actually need to code your own or understand before you can write and make your own websites? And so I have her using a set of tutorials on Htmldog.com, which is awesome. I'm actually really pleased with how clean and focused those tutorials have been for her. Last week. Two weeks ago, she worked through the HTML tutorial and got to the point where she could make a basic website with just HTML and no styling or anything on it. And then we went through and I got her started on the concepts of CSS and how to style your content and change the presentation of it. And she was having just a blast with CSS and being able to use things like Hover Tags and apply underlines and change font sizes and make things colorful and change the font families and everything. So she just really got into it. She just kept saying, this is so cool, this is so cool. I was just really enjoying that moment because I've definitely banged my head on the keyboard a lot over HTML and CSS. And sometimes you forget just how magical it really is that you can create these things, encode them and play with them, and it can be really fun. So that was my win was having that moment with her. Kelly Schuster-Paredes: Nice. I miss HTML, I miss time to code and do fun stuff. True. No guilt? Sean Tibor: None taken. Kelly Schuster-Paredes: That's awesome. Any fails? I'm trying to think if I had any fails, I just keep chugging along. Oh, I did have a fail again. And you're going to laugh because I can give you one guess of what I was doing and you know how much I love them. Where I had massive fails, I started slinging boards across the room. That one doesn't work. Doing circuit Pythons again. It never ceases to amaze me how quickly I get flustered with saving. I'm getting better. I have to admit, in the past four years I've gotten better. But when it comes to a point where you're like, what's going on? What's going on? And then you're like, there's an error, there's no library. This hasn't been updated, and I'm just like, get another board. I'm not doing this anymore. But yeah, that was a fail. Just that ability to calmly troubleshoot has been something that I've been dealing with for about three and a half, four years, and one day I'll get it where that calm down moment happens. Sean Tibor: Yeah. I mean, it feels like playing golf, right? Like, I hate this, I hate this, I hate this. This is the most amazing thing ever, and I want to do more of it. I hate this, I hate this, I hate this. Right. And that's natural as part of any troubleshooting process. But I think the reward when you get circuit Python working and the hardware working and it lights up where it makes the colors or it makes the sounds, it's so satisfying and that's what makes it worth it. But it can be horribly frustrating on the path to get there. Kelly Schuster-Paredes: You know, my happy moment and the reason why I keep using these boards over and over again, even though they stress me out, is that moment. And it happens with every single child. And thank you Adafruit for that. They go, oh, my God, this is so cool. And I'm like, damn it, I got to use this board again. Sean Tibor: Have to keep using it. Kelly Schuster-Paredes: So you know what, that's why we do it. That's why you brought it in. And I'm hoping I teach them enough circuit playground or Python so that they can fix the board that's broken on my wall that I keep looking at. So anyway, is any fails for you? Sean Tibor: Yeah. I have been doing a lot of GitHub work in my new job, and one of the differences is that usually up to this point when I've been using GitHub, it's just for me. So if I want to change things and I want to add commits, that can be very linear and I can just commit to one branch and it's just one thing after another because I'm the only one working there. But now I have to play nice with others. And that means following best practices and making branches and pull requests and all these things that were always cool when I was like, messing around with them in GitHub, but not really necessary. And now they're necessary. So I have had quite a few fails with branches and rebasing and learning all kinds of new get topics, not just specific to GitHub. And so I think my fail was looking at a poll request that I had made like one big feature that I wanted to incorporate into the main thing that I was working on. And there were like 19 steps that I had taken to get to that point. And half of them were like, typo, typo, typo, typo. I think my fail and it ended up being successful, but my fail is just looking at that and going, wow, when you actually see all of your errors and all of your iterations laid out like that, one after another. It's kind of illuminating about how the process really works because it's easy to forget that there are so many steps involved along the way. Kelly Schuster-Paredes: Yeah. I imagine, like, just to show the kids it would be so cool. Here we go. Developers out there. How cool would it be to take, like, a snapshot or a live recording as an easier way? I know there's some places out there to do it, but as the kids are coding or you're coding that you're having this, you know how you have, like, an ISOP motion and you can speed up so many frames per second. You have, like an eye stop motion while a kid is full on coding, and they could push the pause button, and then they could just see all their errors, and it would be cool. Sean Tibor: Yeah. I think we're going to have to do something with some sort of way of documenting that, because just the process of just creating something and then deleting parts of it, changing it and moving it around, code is fluid, it flows, it has a rhythm to it. And that's one of the things that's kind of amazing to see when you look at how it changes over time. Kelly Schuster-Paredes: Very cool. Let's get on to the topic because we want to digest and reflect and make things better, and this is our time to do that. So let's go. Sean Tibor: Yeah. So let's talk about requests. I'll start with the what is Request? Because I think I have a pretty decent understanding of it. But Request is a Python library. It doesn't do anything you couldn't do with the standard library, like URL, Live Three, or anything like that. But it makes it really convenient and really simple and elegant to make web requests using Python. If you're someone who's not familiar with this, a web request is the thing that happens when you open up a browser and you go to Google. Every time you go to a website or web page, a series of requests happen between your browser and a remote server or a series of servers to get all of the pieces of data that are necessary to create that page. So it might need to go get the picture for the Google logo. It might need to get the HTML code, the CSS, all of these elements that go together, these resources that you can use in your web page. Well, if you want to use those requests and code, not only could you go get all of the contents of the Google home page, but you can do some really exciting things with this, like connect to APIs and get data that's designed for computers to consume, not just humans. So the Request library is really great for that, because you can just say something as simple as import requests and then Request, get the URL and it'll give you the contents of that resource that you ask for the Web page or the JSON file or whatever. So that's my 32nd summary of requests. I think I've been trying to Hone on that for a while, but it's a beautiful library. It's used by a lot of different other Python packages. It's pretty commonplace when you're looking at dependencies out there. There are more modern alternatives to request, things that are more asynchronous or have different features. But request is kind of the gold standard. If you're going to go to a Python library to go get stuff from the Web. Kelly Schuster-Paredes: That was really good. And then there was a lot of information. That's how my students felt when I first started talking about it. Sean Tibor: Well, and that's one of the things that's challenging about is that there's so much other knowledge that you need to have to understand why requests is cool. Right? Like, the whole idea of making a request to a server on the Internet is something that we don't think about. We just do. Like, I type in a URL and then magic happens, right? Kelly Schuster-Paredes: Yeah, that was really cool. While you were talking, I was thinking it just blew my mind. But that's kind of what happened on this first time I taught this lesson, because I went in and I was like, wow, this is really cool. And it's going to go talk to get to the Https client, and then you're going to go and get this URL, and then you're going to get some JSON files. But you first have to put this library in, and the kids are like, what? And whenever you start doing all this jargon and you want to dig into a library that it really is super simple, three lines of code, and Bam, you've got some fun happening. But when you start talking about really what's happening behind the scenes, it gets a little bit overwhelming. So when I did this lesson the second time around, because I did it twice to one class, I wrote out all these vocabulary words. I had JSON, I had Https, I had PyPy, I had third party packages, I had all these vocabulary words, and each student was responsible for defining that word. And as I was speaking, I was like, okay, who defined Https? And what does that mean? And so it was a really nice way of introducing a lot of complex information. So it was kind of fun. Sean Tibor: Yeah. And the danger here is that as you define those words, you discover other words that also need to be defined. So it becomes this recursive problem that you have where the more you know, the more you find out, the more you have to research. It's kind of like that game where if you click, I think it's the first link on every Wikipedia page. Within six or seven clicks, you end up on the philosophy page. Everything leads back to philosophy, right? Kelly Schuster-Paredes: You've got to be prepared for that, you just go, well, you don't need to know about that, right? Sean Tibor: Exactly. Kelly Schuster-Paredes: But once it's really cool, I think for me, I didn't start realizing how in depth and how useful this was for teaching basic codes until we started having conversations about getting information out from that JSON data that was coming in on our screens. And kids were looking at they're like, I was like, great, look at this stuff. And that was when I realized what a great lesson this is to really parse through some basics and some for loops and some input functions and really tease things out like that. Sean Tibor: So let's take a minute to pull that apart because I think it's sometimes a little bit difficult to see why is this valuable? Why would you want to teach requests at this point in the process before they've got a lot of that knowledge and information? So at least for me, what I've seen is that the request library opens up external information, stuff that the student hasn't entered in themselves. So one of the things that I always fell into is I teach something like, here's a dictionary or here's a list. And look, you can combine them, and I can have a list of dictionaries, or I can have a dictionary of lists. And they'd say, okay, that's cool, I've done the requirements. I've satisfied this. But so what everything I've Typed in, the stuff that I can get back out again. So it's like when I put it in myself and I get it back out myself, it's not that exciting because I know exactly what went in. And so what comes out is predictable. Kelly Schuster-Paredes: Yeah, sorry, go ahead. Sean Tibor: Well, I was going to say, I think the magic of using requests is that it's not predictable. Right. And then it adds this layer of utilitarianism to it. There's actually value in this. There's utility that you get from having requests because I can connect it to other services out there and get information like a function and be able to get stuff that I didn't type in myself. And if I can make it abstract enough, I can put in different inputs and get wildly different outputs in return. Kelly Schuster-Paredes: Yeah, it's totally that. It's like when you were doing 6th grade and I was teaching 6th grade, there's only so much fun we get from the 6th graders saying, oh, look, what is your name? My name is Kelly. Yeah, it's fun. And it wasn't until we started realizing when you use that utility, when you have that information coming in and what was the API you used? Sean Tibor: The Chuck Norris jokes do not do that just horribly. Most of the jokes are fine. Some of them are not appropriate for school. Kelly Schuster-Paredes: But the act of actually going and getting something that you're not really sure is going to show up on your screen. You have to keep these 13 and 1213 year old kids engaged because it is so boring just putting in inputs and getting out the same response. So I think that's the beauty of the request library and really just a shocking fun value. It's like that hook when you talk about lesson building. What is the hook that you're doing for the lesson? Hey, well, I'm going to go to a dad joke and pray that the dad joke is not culturally insensitive and we have a good little laugh. So that's why we chose to do the request library. Sean Tibor: Yeah. And that's why, although they can be a bit boring, weather and stocks are usually pretty safe choices rather than jokes. Kelly Schuster-Paredes: I only got a few and we're going to share off this list. I searched a whole bunch of websites for open APIs, and I have this list for our show notes because they're not mine. I went to Medium, I was searching and I only have about 8910 of them. The coin desk decks and the converting of Bitcoin. Well, that was fun for like four kids. The Pokemon was only like one kid. The dad joke was spot on a lot of kids. And then put your name into this API and it guess your age based on your name, which I really like because it said I was younger than what I am. So it's my favorite API so far. Sean Tibor: Nice. Yeah. And I think that's definitely a good point. I think the APIs or application programmer interfaces that you can find online are a great place to start because the data that comes back is usually in some sort of JSON format which can be quickly converted to Python data structures like lists and dictionaries. In fact, in Request, there's a method called JSON that when you add that to your response, it will give you back the Python dictionary or lists that represent the JSON that was given back to you. So you have all of those things. There are some watch outs that you could run into around date timestamps and things like that. But for the most part, if you wanted to go get a weather API, you could hit a weather API, get back the data in a JSON format, and then also add some inputs to be able to let the user select where they want to get their weather from. So it allows the user or the student, more likely the student, to actually create something useful with ten or 15 lines of code that they could actually show someone and say, hey, look, I made a weather app, right? Or hey, look, I made a dad joke app, and they don't have to worry so much about how the dad joke is generated or where the data source for the weather is. They can make something really cool and really share worthy with 15 or 20 lines of code. Kelly Schuster-Paredes: But yet there's more. I got this conversation from one of your prodigies who was like, yeah, but I just did this app in five lines. I was like, yeah, but it didn't hit any of my requirements because remember, we're also teaching the basics of Python. And what you can do in five lines is super great. But the lesson isn't about how fast you can code or how short you can code it. The lesson is about how do I manipulate data in this JSON file that has a dictionary key and a value that is assigned to a list full of dictionaries it's? How do I get a single output that's clean? And on top of that, I made it even harder. I made them make exactly four functions. I just didn't say exactly a minimum of four functions. So they had to figure out what am I going to do with the rest of this app? Because there's only one dad joke or how can I make this more interesting? Or how can I make this more engaging? And then you have this challenge of not really getting the information from the API, because that's easy, right? Go get it. Go do a request and get the URL and print out some JSON. Okay, done. But how am I going to use this? How am I going to create a project? How am I going to make this usable and fun for the teacher to grade? Sean Tibor: Yeah. To be honest, I think one of the things that this made me realize, too, is that it is a bit of untraining that happens when you use something like the request library. I'll give you an example. My daughter is learning division right now in math class, so she's learning division, and they're giving her a huge number of story problems to solve, which is awesome. It just makes it gives it context, and she's struggling a little bit with going from the prompt or the question to the math and then back to an appropriate answer and she's getting better at it. She's practicing. But one of the things I said to her is if someone asks you, hey, we have this many pieces of fruit and this many fruit, and each fruit box that we have can fit so many pieces of fruit. How many fruit boxes do we need to fit all of this? If you replied back to someone, you said 25 remainder of four, that doesn't mean anything to them. It doesn't have the right context or the right ability to comprehend. But you could say, well, we actually need 26 boxes because we'll have five boxes that are full and one box that is partially full. And so those sorts of literal interpretations translating between what's the problem that I'm trying to solve? What's the answer that my process is giving to me? And then what's the actual answer? What's the user friendly? The way that I would actually explain it to another human being part of this as well. So you could solve the problem by saying, okay, put in your URL, user puts in a URL. Here's your JSON from that. But what does that mean to an actual person? It's the process of translating that from what kind of input do we want? Hey, what's your zip code? I'm going to put that into a weather API call, and then I'm going to print out something that tells you how nice the weather is that day. Right. Kelly Schuster-Paredes: And that's the thing to add to that, most of the times thinking about how we teach or how things are taught in schools. And going back to our last episode with Will schooling versus learning, I could give them exactly what to print out, or we could tell them exactly. Here, I want you to make this weather app, or I want you to make this dad joke app and do exactly what I said. That's schooling. I'm schooling you on how to follow instructions. But the learning comes where you don't know what the outcome is going to be. You just know I have to make something that what's the criteria of fun. How am I going to grade fun? I'm like, I don't know, make me laugh, which is always scary with 8th graders because I did get something like if the age returned above 43. God, you're old. You must be the same age as Miss Parade is inside. Sean Tibor: Points for risk taking like that. Kelly Schuster-Paredes: And you get this engagement. And the kids really love this so much. So. And I have to share this, and I'm not going to share at all. But the one girl that I teach, we love her, can't say her name, but she said challenge accepted. And I've tweeted about her a couple of times. She took four APIs and combined them together in one app because she's like, you want me to do four functions? I got you beat. I'm going to do six functions and I'm going to use all these APIs. And it was cute. One of the APIs is Rhyming. Unknown: Nice. Kelly Schuster-Paredes: So you had put your name into this website and it starts Rhyming to position because the words that come up from the Rhyming website, it's like pages and pages of words that will rhyme with whatever you put in. And so it's like, okay, smelly Kelly or smelly belly or fat jelly. It's like all these words. And so again, you get this opportunity for the kids to figure out how to parse, how to go and get the length of something, how to find the items in the list, how to loop through all this data that they have. And it's just a beautiful moment when you can give the students agency in their learning and not be schooled. Sean Tibor: And I think all the same rules apply. This is a fantastic opportunity to connect and transfer that knowledge to other domains and really reinforce the understanding and knowledge acquisition and skill acquisition. Right. So we're talking earlier about your frustrations with circuit Python. There is a request library, a tiny version of it that's made for circuit Python. So you can have APIs that when the weather is nice, out, make the light green. When the weather is bad, out, make the light red. Do I need an umbrella? Yes or no. Right. All of these things are projects that students can actually do with just a tiny bit of knowledge. If they know how to use requests, they can probably apply that to the mini request library that's in circuit Python. They could connect that to a board that has WiFi on it or is getting its data from the computer it's plugged into. But all of those things are now possible just by adding this little bit of knowledge and learning. And the secret to this is that no developer in the world, none of the services that we use and take for granted are created by one person and only use one API. Literally every service on the Internet uses a whole host of APIs to be able to make something happen. When Amazon delivers a package to you, it's probably thousands of APIs that are called along the way to get it to you. Everything from picking which distribution center should fulfill the order and which bin the pieces in and how many boxes it needs, even the size of the box, the shipping label, all of those things are APIs that have been created, and they're all orchestrated together to be able to get that box to you. So giving students a bit of a taste of this is a huge step towards getting them to understand how the world around them is actually functioning these days. And that is also pretty cool. Kelly Schuster-Paredes: That would be a really cool part. So this is why we love still having conversations, because how cool would that project be? I have a package from whatever to whatever, and it's shipping on this website. Track the APIs. That would be intense. Yeah. Sean Tibor: And once you get the hang of it, it's addictive. I mean, my home automation system has hundreds of APIs that it's using. And one of the things that it does is it checks my email for using an API. It checks my email to find out if I have any new packages showing up today from Amazon. It looks at all sorts of things to make this work. So if we show students how to use this, how to use APIs on the web, it really empowers them. It opens up a lot of new capabilities. And it's that skill of figuring out, is this an API that I can use? How do I use it? How do I incorporate into my program and how do I make it make sense? So there's a lot of potential here. And I think one of the things we should do before we wrap up is just talk briefly about where you can get some of these resources. Right. So how do you learn about requests? How do you use requests. What kinds of APIs can you use? And I think one of the great starting points that you put down here, Kelly, is the real Python article on requests. Kelly Schuster-Paredes: Yeah, it's a fallback. Real Python. If you don't have a subscription to them, you definitely have to get one. But they did give me a little bit of inspiration as well. As Michael Kennedy's called. His course is called I wrote it down because I always get it wrong. It's called Python Jumpstart by Building Ten Apps course, and I love that I took that was one of the first courses I purchased. But it's my go to to get more inspiration. But the real Python activity gives you a couple to look at and it's just talking about how to make it into something usable. I'm trying to find the actual API that they use. They use the GitHub API for one and they used another one somewhere down there. But it's just nice. It's just to be able to see all the opportunity and all the things you could do. Now, granted, with 8th grade, all we did is use the dot get and the response. We did talk about a little bit of what happens if you have an error with the calling of the web. What does it mean? It was kind of nice for them to say 404. Oh, that's why it's there something that they're used to. But that is all we really did with that library. Sean Tibor: Nice. And there is, by the way, if you are wanting to teach your students about Http status codes like 400 and fours and 200s in a fun way, there's a website called Http Cat and it has photos of cats acting out or representing each of the status codes. And they're funny and adorable and a great way to teach it. So it's a good reference. And I know many developers actually keep that website bookmark to be able to look up unfamiliar status codes. I want to cover a few of the open APIs that you've got here because I've used some of these too here and they're really fun. So you mentioned the Pokemon API. That one's awesome. Kelly Schuster-Paredes: That one is intense, though, because you really need to have one student that knows Pokemon because you have to know who to call and whatever the energy is. And there is a lot of information on there. So I think if you were going to do that, it would take longer than what I gave my students. I gave them 72 minutes to make this code. It was a partner activity. And that one, they were like, no, funny, but no. Sean Tibor: It'S a lot of detail. It's a lot of detail. We've got Bitcoin prices, a random activity generator. So if you're bored, you can have it suggest something for you to do. The Rhyming words you mentioned, I'm a huge nerd for this one. I love these two. The one about which astronauts are in space right now. And what's the exact location of the space station? The International Space Station. So there's a lot of really cool APIs based on space data out there. Kelly Schuster-Paredes: Yeah. And that one is difficult if they don't know how to find the latitude and longitude. So that was another one of I have to learn more. And I only have 72 minutes. No. But a couple of kids, they really like going there. So the idea that they could go there and see what's out there was an added bonus because it was something that they spent a little bit of time on. Sean Tibor: And one of the things you could always do is combine that together to match it up with Google Maps as an API. They actually have a URL that you could pass the latitude and longitude to and be able to put a pin on the map for where the ISS is at the current moment. So some cool stuff there that you can do. Kelly Schuster-Paredes: Yeah. And then the last one that I have listed was the Yoda. You put a phrase in. But there is a little bit of an issue with that, which we learned. You can only use it like four or five times for free for some reason. So on the IP address, and once it sees that you've been there so many times on that IP address, it's like, no, you can't do it anymore. Sean Tibor: I'm sorry, but who turned a Yoda generator into a premium service like that? Is it that's too much? I don't know who did it, but it's not okay. Kelly Schuster-Paredes: I don't know. Maybe it was blocked on our. I don't know, but it was so cute. Young Padawan. I am or you are. They looked at me like I was weird, but someone had to be weird for them. Sean Tibor: Pretty cool. And then you've got some examples here. And maybe we can put a GitHub just up with a code as a sample for people to look at. But the sky is the limit with this. And honestly, if you look through any of your coding books, you have like the automate, the boring stuff, Python Crash course, impractical Python projects. You're probably going to find some examples that use the request library in really interesting ways. And so take a look, see what you can find. We've given some examples here, and these are great for beginners, but there's so many more things that you could do and so many ways that you could leverage this really versatile tool to help your students learn and grow a little bit more with their knowledge of how to make cool stuff. Kelly Schuster-Paredes: Yeah. And just on a side note, thinking about things. For example, if you're doing the Rhyming word API, what a great way to talk about length and how to pull everything. Sorry, they're coming to pull everything. And then also on the Bitcoin, it was a really cool learning experience for a couple of students because the results came back with commas as a string and they were trying to do multiplications going with the Bitcoin into conversions into the USD. So there was a lot of casting from string to function and then to replace those spaces or those points in the integer to have commas back into the value. So if you're wanting to figure out how to manipulate integers and strings and floats, that is an awesome API to even just look at. So adding a little twist. So there's our share out. Our share up, of course. Nice. Sean Tibor: I hope you don't for sharing about the most ubiquitous Python library there is. All right, so I know before we go and we're running a little bit late and Farrah, Kelly has students coming into the classroom as we speak, but I'm just going to cover a few quick announcements. March 8, 2022 1700 Central European time. I believe we are going to be at a Learning Loft with the Luxembourg in Luxembourg. We will not be in Luxembourg, but the Learning Loft will be there virtually. We'll have more information about that in the Show Notes. We also are the keynote speakers at the 8th annual Pine Crest Innovation Institute. It's scheduled for April 20, 425 and 26, 2022. So Kelly and I will be speaking about going global with computer science. So you've noticed that that's been a big focus for us this year is globalizing our approach. And so there's going to be a keynote for that. It is a virtual conference so you can attend it from anywhere around the world. So we'll have a link to that in the Show Notes for you to write. As we mentioned, we also have Picon, which starts on April 27. So it's going to be a busy week. We don't know exactly when our talk will be, but we will be there. So we're looking forward to that as well. And then lastly, I wanted to give a quick shout out because we have a new patron on Patreon this month. So we have let's see here who's our latest patron is, Matthew Smoley. So, Matthew, thank you for supporting the show. We really appreciate it. We also have Wendy Banner, who joined us in December, and I didn't get a chance to thank her. If you'd like to sponsor the show through a few dollars our way to keep things moving and keep things rolling. We're not retiring off of this, but it definitely helps with production costs. There's a link to that in the Show Notes as well. Even a few dollars helps. And one of the things that we have planned starting in March is that there will be more Patreon benefits for our patrons, including more one on one opportunities with us and some group sessions where you'll be able to talk and chat about teaching and learning Python. Yeah. Kelly Schuster-Paredes: And lastly, if you're not following us on Twitter or in LinkedIn, we did put a post out there asking for any teachers who want to have a recording episode. We have a few in production. We might have a couple of episodes about this but we want to do a little bit of share out curriculum. It is a constant question that we get from our listeners and like I said, we are not allowed to share our curriculum at what we do at Pinecrest. But why not have a good conversation about how we teach and what are our pros, what are our cons, what are failures, what are our wins and so if you are a teacher of Python, go ahead and give us a message from our website and we will contact you. Sean Tibor: Even if you're just a teacher who uses Python to teach other stuff, that's even better. So we have a lot of good stuff coming. There's been some fantastic guests so far more great guests in the pipeline for the next few episodes. So stay tuned. We're looking forward to chatting with you and I think that does it. So for teaching Python. Kelly Schuster-Paredes: This is Sean and this is Kelly signing off.