Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #226: Teaching Python podcast on the podcast!

Return to episode page view on github
Recorded on Thursday, Mar 25, 2021.

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

00:04 your earbuds. This is episode 226, recorded March 24th, 2021. I'm Michael Kennedy.

00:10 And I'm Brian Okken.

00:11 And I'm Kelly Schuster-Paredes.

00:13 And I'm Sean Tyber.

00:14 Kelly and Sean, welcome. It's great to have you both here. Super, super excited to have some teachers in the house.

00:20 Super excited to be here.

00:22 Yeah. So if people don't know, Kelly and Sean are hosts of Teaching Python. Is that right?

00:27 For the podcast?

00:28 That's correct.

00:29 Right. So Kelly is the teacher that codes and I am, thanks to our new merchandise,

00:33 the coder that teaches.

00:34 So that's fantastic.

00:37 Yeah. So you guys both run together, co-host a great podcast. And what's the general focus?

00:45 Like if I was in the general teaching space and I wanted to learn how to bring like Python and

00:49 technology into my classroom, that's the main audience. What would you say?

00:52 The main audience, well, has grown. It originally was designed just for teachers. And I think we

00:58 thought that they would be K-12 or maybe college teachers, but it has developed into teachers in the developer world and businesses.

01:06 And we kind of bounce off each other's ideas. I am a love lifer teacher and Sean is a geek.

01:15 Yeah.

01:16 Yeah.

01:16 Yeah.

01:16 Yeah.

01:16 And together you have the superpower. Fantastic.

01:19 Yeah.

01:19 Yeah. So we've been learning a lot from each other over the last couple of years and having great conversations about what it means to be teaching code and why it's important and why it matters.

01:30 You know, this is such a huge part of everyone's lives now. And the earlier that we can start with students and helping them learn about coding, it really helps them in so many other areas of their lives. So Kelly and I just started recording it. We one day started pressing record on it, publishing the podcast. And I think we're a couple hundred thousand downloads later, still going strong.

01:50 Yeah. That's fantastic. You know, I, one of my passions is that I think people really, we don't need a million more CS students. What we need is a million people who have programming, fluency, and are passionate about something else and can combine those two things.

02:02 So, yeah. Spot on.

02:04 I get a lot out of the podcast just as somebody that I don't, I'm not a teacher, but I teach people. So there's a lot of stuff around that too. So I like the podcast.

02:13 Thank you.

02:14 Thanks.

02:14 You like data classes?

02:16 I really like data classes a lot. Yeah. And it's kind of why I'm covering this. So there's a, there's an article called, called by a person, Jack Song, who wrote data classes versus name tuple versus object, a battle of performance.

02:32 And it's, you know, it's a, I was interested in this because I, I kind of thought that, that the data, I was, I really liked data classes, but I thought I heard from somewhere that like they were slower than other stuff.

02:46 I had used a, basically I used to use name tuples a lot, but I really liked the data class abstraction and, and the features that it has. And I was slightly concerned. I mean, not very, very much because they, they work fast enough for me, but I was interested.

03:02 I am interested in whether or not I am intentionally putting something in the code that I might have to refactor later. But so this, this article, he, he does a, a test example or, and times it for using exit.

03:18 Let's see. Let me read this.

03:23 So there's a, I think, you know, I think it's a test, but I think it's a test.

03:28 But I think that's a test.

03:29 And I think it's a test.

03:30 I think it's a test.

03:31 And I think, you know, I think it's a test.

03:32 And I think it's a test.

03:33 But I'm not going to be able to test it.

03:34 And I think that's a test.

03:35 And that's a test.

03:36 And I think that's a test.

03:37 And that's a test.

03:38 And I'm going to get it.

03:39 And I think that's a test.

03:40 And I think that's a test.

03:41 It's about a wash.

03:42 They're all kind of similar.

03:44 So whatever works for your code, I say, go with it.

03:47 But I'd like to hear from other people.

03:49 I'd like to, I'd like to know if, if there's other studies out there that compare these and either validate the same thing or find some different result.

03:58 I'd love to hear from it from people.

04:00 Yeah.

04:00 A lot of these are measured in microseconds.

04:02 And that's kind of beyond human comprehension, unless you do a whole bunch of them.

04:07 Yeah.

04:08 And then add those up.

04:09 So for me, I think one of the real valuable things is, you know, like the data classes, they can specify types.

04:15 Like this thing is an integer and that thing is a date time and that's a string and that's an optional string.

04:20 And I think that communicates a whole lot.

04:22 And then sort of follow on, like you can easily extend that to things like Pydantic for validation and conversion.

04:27 And, you know, unless they're really far off, I think that this extra information that communicates is highly valuable.

04:34 Yeah.

04:35 I was going to ask Kelly and Sean, like, do you even talk about types, data types?

04:39 And how do you cover that with the younger generation?

04:42 I was actually just teaching that about an hour ago to students.

04:45 We cover that in the very first week about how objects have types and what you can do with different types of information.

04:52 And it's a really basic thing that I think they need to know from the beginning because later on it just gets really confusing if you don't have at least this concept of typing.

05:01 Yeah.

05:02 We do try to, you know, using type hints here and there.

05:05 And I find that sometimes with teaching it's helpful because they have that visual reference.

05:09 Like, oh, if I'm designing a function or I'm making a method in as part of a class, I can hint at what the types are and the students can see that as we're coding together.

05:18 And it makes it much clearer for them what the arguments are going to be or what the return values are going to look like.

05:23 I was actually looking at this article from a whole I do this, you know, 360 kind of look.

05:28 I was reading this article and I was like, oh, my gosh, I love this because now I have an entryway into telling the kids about the e-finance.

05:36 And I was telling Sean, I was like, do you know that Vimbo was Vimbo was coded in Python?

05:41 And I do this all the time.

05:43 So this whole FinTech data classes kind of push for the kids.

05:47 And then I started searching real Python, as I always do.

05:51 And they have a great article about how they use data classes with the cards, playing cards.

05:57 So it's something that we don't really do the data classes part.

06:00 But I do talk about a lot of data types.

06:02 I thought it was.

06:03 Yeah, OK. Yeah, that's pretty neat that you actually do cover.

06:06 I mean, you're going to run into problems if you try to concatenate an integer with a string, it's going to crash.

06:11 And so you kind of got to say, look, numbers and numbers can go together.

06:13 Strings and strings can go together.

06:15 You don't have to go too deep in that theory, though.

06:17 Yeah.

06:18 My sixth graders can regurgitate it.

06:20 They can't stop.

06:21 Fantastic.

06:22 One of the things I love about data classes is that you can specify the default values for all the fields.

06:29 And you can do that with named tuples, but it's weird.

06:32 It's a weird add on that you have to do.

06:34 Yeah, I've always found named tuples to be a little bit confusing to explain to other people.

06:38 Like once you get it, you know it, but then you're trying to teach it to someone else.

06:41 They're like, OK, it has this weird construct that doesn't, doesn't follow a lot of the other stuff.

06:46 But I do like the data classes because it seems to follow along with a string of really nice language features like with f-strings and data classes where, you know, whether you want to use them or not, the they're well optimized and efficient compared to other options.

06:59 You know, f-strings can be faster in a lot of cases than previous formatting.

07:02 Looks like data classes are continuing that trend in a really nice way.

07:05 Yeah.

07:06 Yeah. Cool.

07:07 All right. This next one I want to cover.

07:08 But before I show on the screen, I want to ask you to guess, do you do stuff with any like micro micro things like raspberry pie or any fruit stuff?

07:17 No.

07:18 Sean.

07:19 You should throw them at me.

07:20 It's not, it's not a ninja star.

07:24 It's a, what are those express boards?

07:26 Yeah.

07:27 Sean loves them.

07:29 Yeah, we have a ton of them in the classroom.

07:31 Kelly has a love, hate, mostly hate relationship with hardware.

07:35 But we have a lot of hardware that we use for coding and Python and making things happen.

07:39 Nice.

07:40 All right.

07:41 So let me, let me put this one here on the screen and let me take, take apart the title because there's a lot going on here.

07:46 So this person, I, I, I'm not sure the name of the person actually runs this blog, but it's the DIY life about like little micro things.

07:54 And oh no, it's by Michael Clements right there.

07:57 And the title is, can my water cooled raspberry pie cluster be my Mac book.

08:03 So this guy built a water cool.

08:06 He has a water cooled raspberry pie, a little pieces, and then got a cluster of eight of them all running together.

08:12 And he said, well, this is pretty amazing.

08:15 Let me see if I can get this video to like sort of move up.

08:18 So y'all can see in the section here where, where they're, this is a crazy looking device here.

08:24 How long as we get rid of all that.

08:26 It's like what it sounds like a cluster of eight raspberry pies all working together and they're literally water cooled.

08:33 So they don't overheat.

08:33 And the question was, well, let's like throw some Python math at it and see if there's like a good thing for say like data science, or you know, maybe you got kids, you want to learn stuff on it or whatever.

08:43 And you know, how'd it go?

08:44 So there's a lot of interesting things.

08:45 And I guess, you know, one of the first takeaways is just wait, there's raspberry pie clusters and they're water cooled.

08:52 What is this?

08:53 This is crazy.

08:54 Does this surprise you?

08:55 No.

08:56 So I had seen this before.

08:57 I think I've actually seen one of these in person and they have people have been building cases for these.

09:01 It'll hold eight, 12, 16 of these stacked up.

09:04 And it, I always thought of it as a way to inexpensively learn about parallelizing, you know, clusters of machines, right?

09:11 Like you can buy or build a cluster for a few hundred bucks instead of thousands of dollars.

09:16 So they're great for learning, but I never thought anybody would try to like water cool it and make a performance rig out of it.

09:23 Exactly.

09:24 Exactly.

09:25 It's really wild.

09:26 It's really wild.

09:27 So the other thing that I think is an interesting takeaway that I'm not going to cover because there's just too many little details and they rip by really fast in this presentation that I'm linking to, but there's all these tools for running Python code distributed across just

09:41 multiple nodes of things that run Python.

09:43 So the way they set it up over SSH to make them communicate and do message sharing so they can parallelize the computation is pretty neat.

09:50 And I think it applies beyond the pies.

09:52 It's just anything you can SSH to more or less.

09:55 So that's pretty interesting.

09:56 So for some numbers, is there some numbers in here?

09:59 I know he's got some graphs, but I don't know.

10:01 They put the numbers.

10:02 I think the numbers are just in the video.

10:04 Oh, wait, here we go.

10:05 So I'll just read them off this and give you some real quick numbers.

10:08 So he has this like wimpy core I five HP laptops.

10:13 What are we going to compute the number?

10:15 Find all the primes up to a number 10,000, 100,000, 200,000.

10:19 So for the HP, it's like one and a half seconds, 74 seconds, and then almost five minutes, 267 seconds.

10:27 So let me grab my MacBook Air, older one, not the M1 and says, OK, that thing's a lot quicker, actually, surprisingly.

10:34 So 0.8 seconds and 83 seconds.

10:36 Actually, that's a little slower.

10:37 And then as it gets longer, I think because it doesn't have the right cooling, the longer it takes, the more it slows down.

10:42 And then he says, let me run it on one node on the cluster, which is 1.5 seconds, which is actually faster than the HP, but not quite as fast as the MacBook Air.

10:50 And then runs it on the grid and gets it down to instead of 355 seconds to 85 seconds for 200,000 of them.

10:58 So it's pretty fast, right?

10:59 I mean, compared to these old slower computers that that's kind of chugging along.

11:03 Yeah.

11:04 These new Raspberry Pi fours that are out the latest version.

11:07 I mean, they're really fast and really powerful.

11:10 Like people are using them to transcode, you know, video streams for Plex servers and Plex devices and things like that.

11:17 You can run your whole house on it with home automation.

11:20 Like there's a lot of power and it's still just like 35 bucks.

11:23 Yeah, that's crazy.

11:24 People are running using like ad blocking DNS things for their local networks, all sorts of interesting things.

11:29 So, well, I couldn't resist running this on my two things that I have to see what I would get.

11:34 So I have an M1 Mac mini, which is quite fast.

11:38 Those M1 chips are really crazy.

11:40 And so instead of having 355 seconds on the MacBook Air or 85 seconds on the eight core watercooled cluster,

11:48 mines 91 seconds on my Mac mini and it doesn't make a sound or get warm, which is crazy.

11:53 That's single threaded.

11:55 And then I ran it multi threaded and got it down to 26 seconds, which was pretty interesting.

12:00 Yeah.

12:01 And if you look at the actual, this is the CPU load over time.

12:05 And it turns out the way the algorithm they're using to break it down is the longer ones are much longer.

12:10 So the early ones finish.

12:11 It's not an even distribution.

12:12 So actually there's some room for improvements or whatever there.

12:15 But the other one I want to just show you all, because this is kind of crazy.

12:19 I have a an Alienware sim racing setup that I have and it actually just blew it.

12:26 So it did 200,000 in 10 seconds.

12:29 But there's a price one that is expensive.

12:31 I mean, that's like a straight price, but there's also a price in sound.

12:34 Like I actually recorded it because it was so loud.

12:36 Let me just play it back.

12:37 Here it is just sitting there nice and quiet.

12:41 It's starting to make some noise.

12:46 I'll just keep talking normal so you can compare.

12:53 But it's really kicking in right now.

12:58 I'll move over close to it in a minute.

12:59 How about that?

13:12 That thing is screaming like you could barely talk over it if you're in the same room, but 10 seconds.

13:18 It is pretty fast.

13:19 I think I have a robot vacuum that's quieter than that when it's running.

13:23 I think you need to crack that open and water cool it.

13:27 You know, actually, this is the highest performance one you could buy from Dell from Alienware.

13:32 That's not water cool.

13:33 And I'm like, I don't really want to have to maintain my computer.

13:36 So I'm not getting a water cold one.

13:37 I don't want to like take it in for its oil change or whatever.

13:40 No, thanks.

13:42 In the original discussion in the video, there is a it's a it's single threaded for all the computers and then parallel on the on the mini or the not the minis, the pies pies.

13:55 Yeah.

13:55 Yeah.

13:55 Yeah.

13:56 But but then in the comments, some people said, well, what about that?

14:00 And so there's there's an update with all the data with the parallel to and it's still really fast on the parallel.

14:05 But I think it's interesting to have the speed comparison.

14:10 But I think one of the things that's important that Sean points out is you get like two or three of these and you can start to explore parallel computing and distributed computing with under $100.

14:22 So that's don't give please don't give him any more ideas.

14:26 We have things all over the classroom.

14:28 I don't need any more likes.

14:30 I think Kelly, is there something you can water cool maybe like set up a water cool thing.

14:35 No, but I am going to get the water gun and start squirting him over it.

14:39 If he keeps if he brings it.

14:40 But like a comparison, though, would be like trying to get what six Mac minis together.

14:46 And that's expensive, right?

14:48 So that's a lot.

14:49 Right.

14:50 And a lot of classrooms might have some of these laying around from other projects that you've done or a class set.

14:54 And if you wanted to have a student do an individual project with it, you just start putting it together and you can make it work.

15:01 It doesn't have to be water cooled in order to be a good learning experience.

15:04 So what is it with that is he's overclocking it.

15:07 Is that the reason why it needs to be cool?

15:09 Yeah, yeah, you can you can push them pretty hard and they they heat up.

15:13 There's just a small chip on it and most of them will you'll see people put fans and things like that on it.

15:17 But the water cooling is the next level of I'm trying to push a pie really, really far.

15:23 I will point out in the they in the video, they link to a multi threaded thing script and I ran the multi threaded script and it gave me the same times.

15:32 And the seat.

15:33 It only seemed to be using one CPU.

15:34 It ran a bunch of stuff, but then I'll put all the work onto one of the cores.

15:38 So in the show notes, I wrote my own version that's truly multi threaded and it's up there.

15:43 So also Sam Morley out of the chat out of the live stream says I was great.

15:48 Yeah, this I've been thinking about setting one of these up.

15:50 It sounds fun.

15:51 All right, Kelly, I think you're up next with this one, right?

15:53 Yeah, so it kind of segues.

15:54 Well, you have the Raspberry Pi.

15:56 That's something easy for a lot of students to get into.

16:00 It's cost worthy and stuff.

16:01 I'm going to throw this out there.

16:03 It's the app for that.

16:05 This is programs.

16:06 And I'm sure everyone has heard of this website.

16:09 It's a platform.

16:10 It's got 50 million people on it.

16:13 But what's really cool for me is that I'm always looking for something to do on the go.

16:18 And I download this program as and it's on iOS now, which is great.

16:23 It launched in iOS last year.

16:25 And the thing that I love about this over all the other apps out there is it's got a really great IDE interactive shell.

16:32 It's beautiful.

16:33 I don't know if you've ever gone to the website of programmers or program is.

16:37 I don't know how you pronounce it.

16:38 And it's very clean.

16:40 So you'll see the same sort of website design on their app.

16:44 Everything's interactive.

16:45 They have challenges and programs.

16:47 But putting that aside, the whole reason why I put this out there is we just had so many kids online from COVID-19 and the digital divide and the kids not being able to access.

17:00 I went and I looked in UNESCO and I was trying to find out how many kids were actually trying to learn online last year.

17:07 And they estimated about 826 million learners.

17:10 And like out of all those learners, 50% of those people did not have a household computer.

17:15 So these guys who are out of Nepal have brought Python where you can code and learn and program within this tiny little app.

17:25 And it's just easy to go and learn in bite sized chunks.

17:29 So I had to throw it out there for you guys.

17:31 Yeah, that's really neat.

17:33 What have you all done for remote stuff?

17:35 Has it how much has been remote and how much has been in person?

17:38 So we went back to school in August and it's hybrid half and half.

17:43 And our kids are lucky because they all have computers and most of them have pretty stable Wi-Fi.

17:48 But I know a lot of the other public school systems, they've had trouble.

17:53 Kids have had to go to like other people's houses.

17:57 They've had to borrow some computers.

17:58 They try to deploy.

18:00 I know England deployed one of my former schools deployed all these laptops out to all a lot of their free schools or their public schools.

18:07 So it's been hard for a lot of learners and just to be able to keep up learning on a phone because almost everyone has a phone.

18:14 Yeah, so yeah that and Google Docs and zoom and you can kind of piece it together to be able to do multiple things there.

18:19 Yeah, that's great.

18:20 It's a good recommendation.

18:21 Does it cost any money?

18:22 So that's the great part.

18:24 So there is a free version because there are some really good apps out there that are paid.

18:28 So there's a free version and they do have the advertising, but the advertising is after that chunk of information.

18:34 So you get this great chunk, you know, you're learning about functions and then there's a quick advert and you can X out.

18:41 But if you don't want any of the adverts you pay for it, I think it's like 24, 29 a month, but super, super, super.

18:47 It goes all the way up to decorators.

18:49 So nice.

18:51 I thought it was pretty cool.

18:52 Yeah, this is really neat.

18:53 And it seems like a nice little environment.

18:55 It's got syntax highlighting and all that.

18:57 Yeah, it's fun.

18:58 Yeah, no, that's a great recommendation.

19:00 Brian, what's your what's your next one here?

19:03 Oh, what is my next one?

19:04 Oh, this is kind of neat.

19:07 The New York University.

19:10 Is that right?

19:11 Yeah.

19:12 There's an announcement that NYU has secured funding in the order of $800,000 over two years to to go towards packaging and the packaging improvement and what else?

19:26 Integrating for pip and downloads and all that sort of stuff.

19:30 Improving the resolver.

19:32 This is kind of exciting.

19:33 This is a lot of money.

19:35 This is a really big deal.

19:36 Yeah, this is awesome.

19:37 The so I actually had to look some stuff up.

19:41 So there is some interesting information.

19:44 There is still like why New York University.

19:47 So they've been there's been some researchers that have been working on it for a while.

19:51 So there's a couple of the things I had to look up.

19:53 So the specifically.

19:56 Well, let's just say specifically what they're doing.

19:59 The what this money is going towards.

20:01 It's to further assess and improve PIP's dependency resolver and then following the work done in 2020 and make also make the resolve lib more usable by other tools in the packaging ecology.

20:12 And then in the pipe PI to user pipeline, we've been talking about security problems.

20:18 Some on the show and read about others.

20:21 They're going to try to integrate the tough support for signed packages through pipe PI clients, and they're targeting conduct hip and Bandersnatch.

20:30 So there's a lot there.

20:32 I had to look up one the resolve lip.

20:34 So that is a that is a third part is a separate package, but it is related to pip because it's vendored into PIP.

20:42 So resolve lib is vendored into pip and I think they'd like to it to be something that's usable by other other tool chains as well.

20:50 And so there's improvement needed there.

20:53 Never heard of Bandersnatch before or if I have I've forgotten it's a pipe.

20:57 It's a pipe I mirror client.

20:59 So and I think it is needing some support.

21:02 So that's good.

21:03 And then tough.

21:04 What the heck is tough.

21:05 So TUF is the update framework and it supposedly helps according to the website helps developers maintain the security of software update systems providing protection against even against attackers that compromise the repository or signing keys.

21:23 So this notion of we're building up our company even based on collection of open source packages that needs to be like solid right.

21:33 And it's more than just signing or pinning your requirements diversion numbers.

21:38 We want to make sure that the sources are there.

21:40 And so I'm sure there's a lot of details in there that I don't understand fully, but this is a good thing that we work on this more.

21:47 Yeah, I totally agree.

21:48 I mean, we're we start to teach our students about, you know, installing packages and how you can use other people's code.

21:54 And what I'm really hopeful for here with this is that if we can protect this kind of critical infrastructure of Python packaging and at the same time, keep it really simple for people who are entering into Python and learning about this as well as other aspects of the community.

22:11 We still want it to be as simple as pip install this or add it to the requirements file, but to have that level of trust that what I'm installing is not going to break my my code or my machine or put other people at risk.

22:22 It's really valuable to have that level of trust in the system.

22:25 Yeah, I think it's this is amazing.

22:27 You know, the biggest surprise for me is that so much of this National Science Foundation type of stuff really has to do with the around the whole scipy side of things.

22:38 So it's been more focused on your NumPy and as conda and the fact that this is just on hip and the native IPA stuff is pretty interesting.

22:49 I think it's also there's a lot of money. Yeah, I mean, I think once you pair this with some of the other investments that we're seeing with like, you know, Google investing in, you know, with the PSF at a high level, you know, everyone is recognizing this as something that we need to go go work on and make sure it's right.

23:05 Yeah, yeah. So how much do you to talk about external libraries with the kids?

23:10 We talk about it a lot. I think it's definitely we started off in the with the sixth grade, obviously importing turtle and stuff.

23:17 And I always like to say to them, like, this is where the smart guys coded everything.

23:21 But, you know, I was corrected a long time ago and just said some really good coders coded this.

23:30 Everyone can be smart at one time. Actually, we had a kid come in today and ask how he could package his little program.

23:36 And Sean was looking for that. I was like, is it pi pi pi pal? And he's like, No, not that Kelly. I'm like, Oh, okay. Never mind.

23:43 Yeah, we do. We do a lot with external libraries and packages because that's, you know, really the strength of Python as an ecosystem and other languages is that it's not just, you know, using the code that you can come up with out of your own head, but being able to leverage the amazing tools that other people have built and shared in the world as well.

24:02 So we'll go through things like matplotlib will do one of my students found the why finance package and was able to get historical Yahoo finance data out of it and was having a lot of fun with it.

24:13 So they love learning about all these little packages that they can install and start working with.

24:17 They like the ones that do like the crazy stuff like hide their passwords.

24:21 I bet I can imagine that, you know, it's part of the magic is instead of saying you have to do all this work, you just install this, you run these two lines and then there's something that's really cool.

24:30 Yeah, what pipe pie jokes package.

24:32 Yes, all the jokes is good.

24:34 But I think that there's, I mean, Sean brought up the question of how do I package my own code to share it.

24:39 And there's there's like tons of different levels of that that are good to, I guess, cover it probably relatively early.

24:46 You don't have to push it to pipe you to be able to make a package and email it to somebody or something.

24:51 Yeah. Yeah. Hey, before we jump on to my next item, I just want to pull out a quick little band shout out for Kelly and Sean.

24:59 Sean, Robert says big fan of your podcast.

25:02 I'm regularly bringing some of your thoughts and suggestions to our science staff here at the Science Center.

25:07 Very cool.

25:08 Very cool.

25:09 Thank you.

25:10 All right.

25:11 So, Brian, I've been known to do an extra, extra, extra, hear all about it type of thing.

25:16 Yeah, because I just got too much. Well, this one goes beyond that because this is eight extras off into one.

25:22 I'm like, all right, this can't go at the bottom. This is just too much.

25:25 So I'm going to go to try to share this.

25:28 Everyone said they're seeing a blank screen. That's that's not so good.

25:32 Let me see if I can remove it and add it back real quick.

25:35 And then we'll carry on. We'll just have to just roll with it.

25:38 All right. But extra number one, we are on audible, Brian, and we are on Amazon music.

25:44 Yeah, this is brand new. I have no idea if anybody's listened to it or anything over here, but there they are.

25:49 And also I know a teaching Python is at least on one of these. I'm not sure if it's on both.

25:53 Yeah, we're on both of those. In fact, my five year old sometimes at bedtime, he has a little Amazon echo dot in his room.

25:59 So he'll be like Alexa play teaching Python podcast and it'll come up and start playing. So it's probably on Alexa.

26:05 Also, if you ask for Python bites, it'll start playing the latest episode.

26:09 Yeah, I can't say that in here. Otherwise she starts talking.

26:14 So exactly exactly.

26:17 You just set off of that a hundred million.

26:19 Ten thousand Alexis.

26:21 Anyway, so that's really cool that it's on there.

26:24 They reached out to us and invited us to be part of it. I'm like, yeah, that'd be great.

26:27 They don't like re encode or re host or anything or stuff.

26:31 They just share it, which is great. Also, last time I covered no Sebastian Ramirez covered sorcery.

26:36 And I said, I love sorcery as a place thing to add into VS Code and PyCharm that will automatically recommend refactorings like, oh, you should rewrite your code in this cleaner way.

26:44 But there are certain recommendations I didn't like and they drove me crazy and I couldn't turn them off.

26:48 Well, apparently since September, you can turn them off.

26:51 They've told me.

26:52 So a couple of listeners as well. Let's see.

26:56 Yeah. A couple of listeners sent out a message and said, oh, you can do that.

26:59 And then also the folks over at sorcery said, hey, you know what?

27:02 That's actually a thing. A lot of complaints and so on.

27:04 So Brian, I actually refactored and cleaned up all the Python bytes code, which is like 5000 lines of Python and refactored it almost with all of the recommendations.

27:12 And yeah, there's a bunch of stuff. It's really nice now.

27:15 Okay. Well, I definitely get to check it out if you're if you're saying that.

27:18 Yeah, it's good.

27:19 It's pretty neat now. So there's like a commit for the Python bytes website that's, you know, like 47 files changed or something like that.

27:26 I had to go through a whole bunch. Anyway, that's all good. So I can recommend that fully now.

27:31 Dustin Ingram, by way of Matthew Feikert, who's been a guest on the show here, does a bunch of LHC stuff and certain stuff, pointed out that, you know, Dustin Ingram said, I didn't know I could become a PSF member until I realized that just contributing five hours a month towards towards it.

27:48 It's all you got to do. And then you can self certify yourself and he's got a link to find out how to become a PSF member if you'd like.

27:56 Wow. Nice.

27:57 Yeah. A little follow up by Brandon Brainer using Surture. I noticed Pyjarm seemed to slow down a lot. Anything else that I noticed that? You know, I can't speak to that. On mine, I haven't noticed any difference, but you know, it's my M1 version.

28:09 And so it seems all right. But it could be my powerful computer. I don't see it.

28:14 I was running on the pie or whatever. Yeah.

28:17 If I was alienware, I definitely wouldn't see it, but I would hear it.

28:20 It works on my machine. It's fine.

28:22 Exactly.

28:23 All right. More follow up. I mean, this is just going on here. Beanie, the new ODM, the async ODM object document mapper for talking to MongoDB asynchronously. I said, hey, it should have indexes. They agreed. It should have indexes. So they added a whole mechanism to add indexes to MongoDB through that, which is pretty awesome.

28:41 Wow. Power, the power.

28:44 The power. I recommend it.

28:46 I was silently hoping that it was going to be a package for like baby Beanie Babies that can float across.

28:51 I know.

28:51 Maybe we should get Anthony Shaw to like do something like that.

28:55 That's right. Like maybe a little animated emojis in the terminal for the kids.

28:59 Yeah. Perfect. Perfect.

29:01 Yeah.

29:02 Well, you know, the power of suggestion on Python bytes, like now next week we'll be able to cover the new Beanie Babies module and Beanie.

29:07 Exactly. Pippin's all Beanie Babies. They're collectible and you can even get non fungible tokens for certain ones. Okay. So the next one is a projector.

29:16 So we talked about remote code execution, connecting VS Code through like a remote interpreter or Python.

29:23 Apparently there's this thing called projector at JetBrains that will allow you to install the entire UI of something like IntelliJ or Python or something like that, and then access it over your web browser, but have the entire thing running somewhere else.

29:38 So you could be a good if you have like an environment like an iPad or something where you couldn't, you know, install PyCharm, but now you've got all full on PyCharm for across the web.

29:48 So I'll link to that. Another follow up, Brian.

29:50 We talked about using SQLite as a single file format. So instead of making up your own file format, just put stuff in SQLite. It's just a file. It has easy ways to talk to it.

29:59 Audacity of all things. The audio editing software has been completely rewritten for version three. And guess what? It has a single file format. That's SQLite. That's cool. Right?

30:09 That is cool. I used to use it. See?

30:11 All right. And the last time we also talked about Neo model, which is a way to build Python classes that do graph databases. Super fun.

30:19 Grayson Daniel said, Hey, I came up with this really cool example where you can do things like explore. Let's see if I get over here. We can explore things like here's a person like Tom Hanks.

30:29 What movies did they act in? What were they directed by? And then you could just traverse these relationships and explore, like follow the chain of like, well, Tom hacks, Tom Hanks acted in castaway, which was directed by Robert.

30:40 So-and-so. And then who else started in there and like a really interesting way to like explore those kinds of things.

30:45 I'm surprised they didn't use Kevin Bacon as the example.

30:49 It would have crashed. It would have crashed.

30:50 Michael's on one.

30:52 My team.

30:54 Oh, sorry.

30:55 My teaching side of me really loves that little graphic organizer.

30:58 I know.

30:59 I do too.

31:00 I thought I really, yeah, it's really great, isn't it?

31:03 All right.

31:03 And the very last one, L Sergio Sanchez just wanted us to give a shout out that a call for proposals for PyCon Latin America just went live.

31:11 So people are in Latin America or I guess, you know, things are remote really could be anywhere at this point probably.

31:16 So if you want to be part of a conference and speak, go do that.

31:19 I'm going to nudge Kelly for this one because she actually speaks Spanish, has taught in Peru.

31:23 Like, so I think she'd be a natural fit.

31:26 Well, the good thing about it, everything in Python's in English.

31:29 So we're good, right?

31:30 I suspect a lot of those talks are actually in English as well.

31:35 I did it to Nacharla at the PyCon a couple of years ago.

31:39 Oh, yeah. Okay, cool. That's the Spanish language track.

31:41 Yeah, that's very cool.

31:42 That's very cool.

31:43 All right.

31:44 There's a lot of follow up, a lot of comments here in the chat.

31:48 Really quick before we move on.

31:50 Brandon says, "M1 power!" Robert says, "A couple of...

31:56 I sent Anthony a few tweets to get this going, but he's so far he's not made the Beanie Baby thing."

32:00 Dean's excited about it.

32:02 I'm sorry, there were so many things that I don't know which one.

32:04 Robert asked if I've tried the projector.

32:07 No, I haven't.

32:08 But apparently our studios had this as well, which is pretty cool.

32:11 And Sam Morley says, "I still want the walrus operator sticker that Emily Morehouse made for PyCon a couple of years ago."

32:17 Yeah, that's cool.

32:18 I have no idea how to get it though.

32:20 And then Dean is excited about the web UI for PyCharm.

32:23 All good stuff.

32:24 All right, John, I think you got the final item right here, right?

32:26 Yeah, yeah.

32:27 This is an article I found because we're starting a new quarter in our classroom.

32:31 So we teach middle school students, 6th, 7th, and 8th graders that are 11 to 13 years old.

32:37 And one of the things that I've found from other teachers and instructors, regardless of age level, is those first few classes of a new course are usually filled with the same thing, which is everyone downloading Python.

32:49 Now we all have the right version of Python.

32:51 Okay, now what editor are we going to use?

32:52 Do we have all the same editor version?

32:54 Now we start to get into dependencies and requirements.

32:57 And no matter what you're teaching, just those first few classes all seem to be filled with just setting things up, right?

33:03 And that's not fun for anyone.

33:04 They're excited to get started.

33:05 And by the time you get to like, I'm not excited anymore.

33:08 Right.

33:09 And then someone by the end, like, you know, two weeks in is like, well, why isn't this working?

33:13 Oh, because two weeks ago when we set this up, you got version 1.04 and we needed 1.07.

33:19 And that's why it's not working.

33:20 It's just a pain to manage all this stuff.

33:22 Right.

33:22 So I didn't think about using them this way, but there's a whole guide from Bridget Murtaugh at V from VS Code about making development containers for education.

33:32 So you can Dockerize a development environment and distribute that to students so that each student can just open up a Docker container with all of the right versions, all the right requirements, everything pre-installed right down to environment variables and starter source code for them to work with.

33:49 And it's pretty neat.

33:50 You need VS Code and Docker desktop to do it the way that they're talking about.

33:55 But I think you could probably generalize it to a bunch of other things.

33:58 And in VS Code, you can deploy right from a Docker or a GitHub repo.

34:03 So you give it a repo URL.

34:05 It'll pull down the Docker file, create the Docker container and spin it up for the student and they can start coding right there in VS Code using everything already set up and ready to go.

34:16 I think the only other requirement is they have to have Docker desktop installed on their computer.

34:20 So, you know, the one thing that I thought about, like maybe there's a way to tinker with this is could we spin up a Docker container on a remote host and then even remove the requirement for Docker desktop on the student's local machine?

34:32 Yeah, you might be able to install something like just the Docker command line tools without full on Docker desktop, which might be something you could do.

34:40 Just copy them over something.

34:41 I'm not entirely sure.

34:42 Yeah, yeah.

34:43 But there's so many cool things that you could do here.

34:46 And, you know, since you can actually run VS Code in a Docker container, you could potentially get to a full Docker package that has VS Code, the Python environment that you want and all the source code ready to go.

34:57 And they're even using it for individual assignments.

35:00 So once you've got them set up, I'm like, hey, here's your next assignment.

35:03 Here's the container to use.

35:05 And it gives them everything ready to get started.

35:07 Yeah, that's really neat.

35:08 And you both talked about having these cool packages around that, you know, it's really great to just import this thing and do the amazing thing.

35:15 You could have the Docker container come pre-configured with every package.

35:19 So you don't even have to talk about virtual environments or pip or anything to the end when you're like, oh, and by the way, here's how you get this.

35:25 But it's just going to work right out of the box, which is cool.

35:28 I also like the idea.

35:29 Go ahead, Kelly.

35:30 I was just, I was going to make a joke again.

35:32 That would have saved me because I got lost in my virtual environment a couple of years ago and I haven't been able to find my way out of the end.

35:39 So I'm just saying.

35:40 Sorry, go headshot.

35:41 The other thing that I thought about too, though, is that there's definitely value in still giving the student the manual setup instructions, right?

35:49 So if we, you know, give them here's the container version and then also if you wanted to set up your own local version, here's how you would do it.

35:56 That way students have a chance to differentiate, you know, if they want to just press the button and go with a container, they can do that.

36:01 I think Dean in the comments is saying, you know, we could just package the whole students, whole computer inside a Docker container that might work too.

36:09 It'll be containers all the way down.

36:11 Yeah.

36:12 Yeah.

36:13 Yeah.

36:14 But there's definitely a lot of really cool stuff here.

36:15 And I'm, I'm definitely interested in trying this out because it's not just Python.

36:19 You could do this with a whole ton of different things.

36:21 Like if you wanted to have a full stack course, you could have a container for the front end, the container for the back end.

36:27 Yeah.

36:28 And let them develop separately.

36:29 Yeah.

36:30 You don't have to worry about how do you set up the database and just put this line in there and you'll have a database.

36:34 I mean, that's like for me, I think that's like a huge win for a lot of people who are getting into code.

36:40 Just being able to say, Sean, give me that package.

36:43 Let me click on it, open it up and ready to go.

36:45 That would help a lot of people stay into at least get hooked into coding because messing with terminal doing all the folders in the system.

36:54 It's, it's a brutal ride for newbies.

36:56 I agree.

36:57 It is.

36:58 Yeah.

36:59 And Robert definitely likes it.

37:00 Great find.

37:01 Yeah.

37:02 Nothing, nothing else for me on that one.

37:03 I'm just, I love it.

37:04 You can replace those first two days with getting everybody on the correct version of Docker.

37:08 That's right.

37:09 That's right.

37:10 We've just swapped one thing for another.

37:11 Exactly.

37:12 Exactly.

37:13 All right.

37:14 Well, that's it for our six items.

37:16 Brian, anything you want to share?

37:18 Anything extras?

37:19 No, I'm just taking away.

37:22 Yeah.

37:23 Cool.

37:24 I absolutely over.

37:25 I blew it out earlier.

37:26 So we're all good on that.

37:27 Let's see.

37:28 Kelly, you want to give a shout out to the training summit?

37:32 Yeah.

37:33 You know, sorry.

37:34 The educational summit.

37:35 So yeah, this year they are doing both the educational summit and the training summit separately,

37:43 which I thought was really cool.

37:44 And a lot of the topics that they're looking for is how did we survive with this online virtual

37:49 environment?

37:50 How did trainers do it?

37:51 Not necessarily us in education, but how did the trainers survive with getting through the

37:56 training and just they're looking to promote it, I guess.

38:01 And the fact that you can attend both.

38:03 I know when we went to PyCon, we had to choose between the educational summit and the training

38:10 summit.

38:11 So we weren't, we're able to do both and now you can attend everything.

38:14 So it's pretty cool.

38:15 Yeah.

38:16 It's a real bummer that these conferences aren't in person, right?

38:19 Like the last time we got to hang out, Kelly and Sean, we had like breakfast in Florida.

38:23 It was great because we just happened to be in a similar general area.

38:26 That was such a weird happenstance.

38:27 That's not going to happen right now.

38:29 But the flip side is people can come from all over and attend these conferences no matter

38:33 what.

38:34 Now you don't have to actually go there.

38:35 Yeah, it's great.

38:36 Sean and I were in Monterey like two weeks ago, Mexico.

38:39 Nice.

38:40 Virtually.

38:41 It was the same temperature where I was sitting.

38:45 Nice.

38:46 All right.

38:47 And then some other ones that are yours, Sean.

38:49 Yeah.

38:50 So this one I thought was pretty cool.

38:51 We use replet a lot in the classroom.

38:53 So it's, you know, online coding environments that you can spin up and start coding and share.

38:59 And they have really cool features like multiplayer mode where people can be pair programming together

39:05 in a shared space.

39:06 But one thing that they did, speaking of Python packaging, is they had their own package cache

39:11 that they created for replet.

39:13 So for a lot of the common third party libraries that they are using in a lot of repls, they

39:18 will they'll cache it now and they're getting like a 40% speed improvement on spinning up a

39:23 new replet instance when they need it.

39:26 And then, you know, also just they're not hitting the PyPI index all the time for all that data.

39:31 It's right there local with them.

39:32 So they don't have that same sort of load on the caching servers from PyPI.

39:37 Yeah, that's great.

39:38 Well done to them for doing that.

39:39 Because one like it makes it better for all their users.

39:41 But the bandwidth cost if it had to be paid of PyPI is like $40,000 a month.

39:47 It's a lot.

39:48 So put less strain on that system.

39:49 Yeah.

39:50 Yeah.

39:51 I thought that one was really good.

39:52 The other one, and this is a project I'm a huge fan of, the Home Assistant project, which runs Python 3, and you can run it on a Raspberry Pi, is just the company that runs a lot of that or has a lot of the core developers for that project has acquired the ESP Home project.

40:08 ESP Home is a little side project that lets you take tiny little microcontrollers that cost five or ten bucks and make your own DIY Internet of Things devices.

40:18 So this is really a kind of a cool way you configure it with a YAML file and you can push the YAML file over to that microcontroller and you can make your own little devices.

40:29 So I made a pool heater controller for my swimming pool here in Florida using an ESP Home microcontroller.

40:38 So they have all these great examples.

40:40 People have done things like NFC sensors so you can tap tags and play music, Roomba components, washing machine phases so you can tell when your washing machine's on and off.

40:50 They have basically all this great stuff there and Nabu Kasa, the company that has all these core developers, just bought it and is bringing it under the Home Assistant umbrella.

40:59 Oh, that's cool. Home Assistant will just get better. And Home Assistant is in Python as well, which is neat.

41:03 Yeah, they're running 3.9, I think, on it. They're really keeping up with the latest versions of everything.

41:09 So this last I want to show, I can only show you half a screen. Oh wait, no, it goes up now.

41:13 They were angry at me because my ad blocker in Firefox, apparently, which is just bare Firefox, wouldn't let me show the whole page.

41:20 Anyway, here we go. So get a vaccine appointment. You've got to do some web scraping.

41:23 Right. So it helps to know Python programmer. And this was on NBC News.

41:27 So I thought it was kind of neat that it made it to this mainstream of an outlet.

41:31 But they were saying that basically Python programmers have been web scraping to find vaccine appointments.

41:36 And they go into the ethics of that. Like, is it OK to web scrape and basically get yourself to the front of the line?

41:42 But a lot of folks have been making this information available via Twitter bots as well.

41:46 So if you're trying to wait and get a vaccine appointment, maybe you can see if there's a Twitter account near you that's showing you what spaces are available.

41:55 How interesting. Yeah, this is a pretty good use of it.

41:57 You know, when I went to college, we didn't really have the Internet.

42:01 I guess when I first started, it came on like two or three years later.

42:04 We had the Internet, but not the Web. And we had to register by phone.

42:08 So you would call and it would be busy and he would call back and we'd be busy and you have to do it for four or five hours.

42:14 And we just took our modems and we just war dialed the registration number one, one.

42:19 So like we had really bad classes, you know, early morning on a Monday or whatever.

42:22 And then we decided we're breaking out the modem. We're just going to go dial, hang up, dial, hang up, dial, hang up until it answers.

42:27 We had the perfect schedule, my brother and I, that.

42:30 So this is like the modern equivalent of that.

42:33 Yeah. Yeah. And they were nobody was breaking any rules or anything other than the web scraping part.

42:37 It was all, you know, my 70 year old grandmother needs to get a vaccine appointment.

42:41 And so spending six hours hitting refresh on the Web page, I'm going to automate that.

42:45 Yeah, it's it's a perfect example of automation that that helps. Yeah. Very cool.

42:50 I don't really see anything wrong with it until maybe you take down the server.

42:53 But so many people are hitting it. But long as it doesn't do something like that.

42:56 I think I think us humans are fully capable of taking down the vaccine appointment web servers on our own.

43:01 It's just hitting the refresh button. Yeah. All right. Fantastic.

43:06 Well, Brian, I think that's it for all of our items. Do we have a joke? You think? I think we might have a joke.

43:11 Yeah, I like this joke. Yeah. Let's see. Is this is? Oh, no, this is not it. Let me let me.

43:16 I got to copy the. Is this going to work? I don't think. No, I got to do a quick screenshot to get up in the screen share.

43:21 Sorry. It's not logged on that computer. OK, so here comes the joke.

43:25 The joke. And this one I put out there because I thought it was a good one for teachers and it talks about basic math, really. Right.

43:32 So this is a let me put it back on my screen. This one is about counting just one to ten.

43:38 And a famous person in computers, Bill Gates.

43:41 And I think it's like, hey, I'm coming to visit the school. I work in computers. I'll help you learn how to count.

43:47 It says, hi, my name is Bill Gates. Today I'll teach you how to count to ten. One, two, three, 95, 98, NT, 2000, XP, Vista, seven, eight, ten.

43:57 What do you guys think?

43:59 I mean, I find it I find it interesting that me is not in this list, which just goes to prove that even 21 years later, there is nothing funny about Windows me.

44:08 I think that might be the only Windows I've never had. You are lucky.

44:14 I keep thinking. I keep thinking about this silly joke of my seven year old. What happened to nine? Because seven, eight, nine.

44:23 Nine. Yes. Oh, it fits in there perfectly. Right.

44:26 Oh, yeah.

44:27 And the reason that nine there's not a Windows nine is even weirder. I wish it was the joke.

44:32 But people because there was a ninety five and a ninety eight people were doing substring matches to see if it was a Windows ninety five.

44:38 Like if the string Windows nine appears in the just in the version number, well, it must be ninety five or ninety eight.

44:44 And so the Windows nine would have the same problem.

44:46 But I read that it was because a rumor had it that Japanese in Japan, they skipped it because of the Windows nine.

44:52 And they skipped it because it was like a mean to bad thing or something.

44:55 Oh, it's like 13.

44:56 Yeah.

44:57 Unlucky number.

44:58 And I guess.

44:59 Yeah.

45:00 Microsoft in Japan had a lot going on.

45:02 So interesting.

45:03 You know, I am.

45:04 I've stayed on the 14th floor before where it goes 1214.

45:07 I'm like, no, this is.

45:09 I know it.

45:10 You're not fooling anyone.

45:11 You're not fooling anyone.

45:12 I'm OK.

45:13 Nothing happened on the trip, but I'm on the 13th floor.

45:16 I know it.

45:17 Yeah.

45:18 Very interesting trip that one.

45:19 But save it for some beers and we can all get together at an actual conference again.

45:23 Yeah.

45:24 We're looking forward to it.

45:25 Absolutely.

45:26 Yeah.

45:27 Well, Sean and Kelly, thank you both for being on the show.

45:28 It's been great to have you here.

45:29 Oh, thanks for having us.

45:31 We miss seeing you guys.

45:32 Yeah.

45:33 Yeah.

45:34 Sure.

45:35 Brian.

45:35 Good to see you as always, man.

45:36 Good to see you.

45:37 Yep.

45:38 Bye everyone.

45:39 Bye.

45:40 Bye.

45:41 Thank you for listening to Python Bytes.

45:42 Follow the show on Twitter via @pythonbytes.

45:43 That's Python bytes as in B-Y-T-E-S.

45:45 And get the full show notes at pythonbytes.fm.

45:48 If you have a news item you want featured, just visit pythonbytes.fm and send it our way.

45:53 We're always on the lookout for sharing something cool.

45:55 On behalf of myself and Brian Okken, this is Michael Kennedy.

45:59 Thank you for listening and sharing this podcast with your friends and colleagues.

Back to show page