Transcript #313: Programming Robots With a Marker
Return to episode page view on github00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
00:04 This is episode 313, recorded December 6, 2022, and I am Brian Okken.
00:11 Hey, I'm Michael Kennedy.
00:11 I'm the person with the scroll bar going across. I just realized that.
00:14 I'm Kelly Schuster for eight days.
00:17 And I'm Sean Tyburn.
00:18 And we're here from the Teaching Python podcast, so it's good to be here with you both.
00:23 Recommend everybody listen to Teaching Python.
00:24 The focus is kind of around teaching, being teachers and teaching Python.
00:29 But I think anybody that helps anybody with learning Python, it's worth listening to your show.
00:34 100%. It's more like about anybody who's a learner, which is everybody, hopefully, out there listening.
00:40 Well, welcome.
00:42 Thank you.
00:43 Well, should we get into the first topic, Michael?
00:46 Yeah, let's just jump right in.
00:48 Over here, this one, I ran across on Mastodon.
00:53 And I thought, what a fun, quick little thing.
00:57 And with the teaching angle from the Teaching Python podcast with Kelly and Sean, I thought this might be kind of a cool thing for teachers or for kids for something simple with Python.
01:07 But also, I just like it.
01:09 So if you look over here in the link, this person, Teresita, posted spell out numbers with Python.
01:19 All you got to do is pip install inflect.
01:22 Check this out.
01:23 So with inflect, this is a Python library.
01:26 You can just say, you create an inflector thing and you say number to words and you give it some giant number.
01:32 And you're like, I have no idea what this is.
01:34 And it says, in this case, it was 8,675,309.
01:42 And so any number you give it, it'll tell you the friendly version or the human version of it.
01:48 So if you want to turn, you know, written numbers into spoken numbers, this is the way to do it.
01:56 I think, you know, this is great.
01:58 I don't know you need it for 8 million, but if you go much farther than that, if you go beyond trillion, then it gets really interesting.
02:04 Another one that I found after I discovered this, because on Mastodon, somebody said, this is amazing.
02:10 Have you heard of num to words as well?
02:13 So num to words is another one that you can use.
02:16 Num to words is possibly better.
02:19 The API seems a little bit cleaner.
02:21 Now, I haven't pushed the outer bounds of like, well, what is the biggest number it will speak to me in a reasonable way?
02:26 So I don't know which one will go farther in that way.
02:28 But in terms of kind of usefulness, this num to words, the two spelled out as a number,
02:33 you can actually get a command line version.
02:36 So you can pip x install this.
02:39 And then on your terminal or command prompt, you just say num to words and put a number.
02:43 And then you don't even have to write Python code.
02:45 You just call it.
02:46 But of course you can.
02:47 And it will work in multiple languages.
02:49 Oh, the language part is cool.
02:51 I saw that there.
02:52 There's my teacher side just went, wow, I can go into Spanish and French.
02:56 Exactly.
02:57 Exactly.
02:57 So excited.
02:58 Oh, yeah.
03:00 So there's a bunch of different options.
03:02 There's a ton of languages you can use here.
03:05 Wow.
03:06 Which is really cool.
03:07 Yeah.
03:08 So this is neat.
03:09 And I wrote a little bit of code to just, you know, throw some sort of examples together and put those in the show notes.
03:15 So you can use inflect or you can use num to words.
03:18 I think I would trend towards the num to words because the multilingual as well as the command line version.
03:23 If you pip x install it.
03:25 Also, the fact that we don't have to call an instance.
03:28 Is that correct?
03:29 Yeah, exactly.
03:30 Yeah, exactly.
03:31 You don't have to create like some object and then call it on that.
03:34 It's a little more.
03:34 I thought like you might say.
03:35 I have a second grader in my household who's probably ready to cheat on his math homework with us.
03:40 There's a lot of those transfer questions.
03:42 So it could be fun.
03:44 I think this is great for like parents that have kids in, you know, trying to come up with pronounced big numbers and stuff.
03:52 Occasionally I forget.
03:54 I know that's what I'm saying.
03:56 I'm thinking of that too.
03:57 But this is like fact number like 20 for the math teacher.
04:02 I always tell them, no, we don't need math anymore.
04:04 We'll just have Python.
04:05 We don't need math anymore.
04:06 I have a Python library that's going to give us number sense.
04:09 All right.
04:10 So I got some homework for someone out there who's feeling ambitious.
04:12 How about create this as a website as a service so we can just put it in then as a progressive web app.
04:19 We just put it on our phone and then we can do it.
04:22 Or you could use PyScript and just install it.
04:25 So the kids could just constantly go around and ask it, what is this called?
04:28 What is that called?
04:29 Exactly.
04:29 And then set it up for phonetic pronunciation so we can just have Siri pronounce it properly.
04:35 Yeah, there you go.
04:36 And out in the audience, Steve says, I guess you could pipe it to say to get it to read the number out loud as well.
04:43 Okay.
04:43 I hadn't thought about that.
04:45 That's pretty dope.
04:46 Okay.
04:46 Very cool.
04:47 Nice.
04:48 All right.
04:48 Well, that's mine.
04:49 Off to you, Brian.
04:50 Okay.
04:52 So I'd like to go back in time to the origins of Python.
04:57 Now, I'm not going to read the whole article, but there was an article by Lambert Mirtens.
05:03 Mirtens.
05:03 Sorry, Lambert.
05:04 I got your last name wrong.
05:05 But this is really, it's a really cool but long article.
05:09 So I've heard mostly from Guido different stories about, I guess they weren't different stories, but that Python did come from a lot of inspiration from the ABC language.
05:23 I guess you probably have all heard that, right?
05:24 But I haven't heard a lot of that.
05:27 Like, where did ABC come from?
05:30 And maybe that's out there.
05:31 But I just haven't looked.
05:32 But this is kind of going through it.
05:35 So this is going back to 1970.
05:36 Lambert was involved with teaching programming.
05:41 And this is teaching programming at university levels to people that had no programming experience.
05:46 It's like they had a computer arts society.
05:49 They had non-numerical programming.
05:52 And he mentions teaching like artists and other people that probably don't even hang around computers at all.
05:59 And especially in the 70s, you wouldn't.
06:01 So they were using, and then he kind of ties it in also to modern day, a similar sort of topic is Django Girls,
06:10 which is a great program that, if anybody doesn't know about it, tries to get particularly women to learn and do something useful with Python in one day,
06:22 even if you've never touched a programming language, which is an incredible experience.
06:27 But he even mentions it's going on in like Istanbul.
06:30 So these workshops go on all over the world, which is pretty awesome.
06:33 So he started with a programming language called Telcomp.
06:37 And it was an unstructured language similar to BASIC.
06:42 And the reason why they chose it is just because it was easier to learn or easier to use.
06:48 It was more easy to talk about.
06:50 And then this tale goes through, like it's a pretty long tale, but it goes through a lot of the frustrations they had even with Telcomp.
06:58 And then deciding to go into developing ABC, which was like started out was B for B for beginner or beta zero or B zero for the initial element or something,
07:15 which is, I think, too nerdy for a programming language name.
07:20 But talks about the ABC project.
07:22 A lot of this article is around the ABC project.
07:25 But one of the things I wanted to highlight, try to get my notes back up,
07:30 but wanted to highlight one of the things they brought up was really wanting to have ease of learning and ease of use,
07:37 desirable, but also at the same time, use high level task oriented features to make things easier.
07:45 So they wanted things, wanted it to be easy to learn, but also not cumbersome to use as a later as a developer.
07:52 And that was probably that was my experience with BASIC.
07:55 It was fairly easy to learn.
07:56 But then when you try to do something large, it's tedious.
07:59 And Pascal was the same way with me.
08:01 But Python's not so much.
08:03 And one of the things they talk about is even they had this, the put command right in there.
08:08 So put one, two in AB was to put two values in two variables.
08:15 And again, the swapping of you could say put AB in BA to swap variables where every other language I've ever used,
08:23 you've got to use a third intermediate variable.
08:26 And so we use that in Python today, right?
08:29 So A comma B equals B comma A.
08:31 B comma A will do the same thing.
08:33 Brian, this is like looking back on like evolution or something.
08:37 Yeah.
08:37 And when you see like, oh, I see here was where the fish started to grow an arm because it went on land a lot.
08:44 Yeah.
08:44 This is like, here's the tuple unpacking of early Python.
08:47 Yeah.
08:47 So I encourage people to read it.
08:50 It's just kind of a great read and a romp through history of Python.
08:55 So, I mean, they even brought in like ABC brought in, I think Beta Zero did also, of the spacing making sense and not having to do brackets and things,
09:08 but having spaces for blocks.
09:10 Pretty cool ideas.
09:12 What else?
09:14 One of the things that a couple of quotes, I'm not sure where it's at, talks about Python success.
09:19 The growth in pop and in popularity of Python from its inception 30 years ago as a one person effort flying under the radar has been phenomenal, but not meteoric.
09:30 It's instead, it's been a long, slow and steady rise.
09:33 And the competitive advantage it had in a period where we needed a lot of programmers was the ease of use and ease of new programmers.
09:41 So, yeah, in the last 20 years, we really needed a lot more programmers.
09:45 Having Python be easy to learn has been powerful.
09:48 And then, as it also comments, which we know about, where the use of extra languages, that same concept of it's easy to learn, but you don't have to stop using it when you do something advanced.
10:02 We see that with like data science and web libraries, where if it needs to be super fast, they stick it in an extension, in a C extension or something, or now Rust often.
10:13 But it hasn't slowed down.
10:15 And anyway, great read.
10:17 Thanks, Lambert, for writing this.
10:18 Cool.
10:19 Yeah, it's pretty cool.
10:20 I always thought of Python, especially for refugees from other languages, it's like it's cheating, right?
10:25 Because it shouldn't be that easy to do something that powerful or that complex.
10:29 And it's interesting to see the origins of that, even just the variable substitution or, you know, the multiple assignments.
10:37 That's pretty cool to see that it has its origins that far back.
10:40 Yeah, and I kind of, now I'm sort of here understanding some of the comments where every time we put in a new language feature, like the match statement or the walrus operator, there's some people that are like, are we making the language too complicated to learn now?
10:57 And I think those are valid discussions to have.
11:01 I don't think we've made it too complex to learn right now, but it's good to have those thoughts of like, you know, maybe it's a cool feature, but do we want to, you know, I look, my thoughts on that are really just don't teach that.
11:14 I probably wouldn't teach the match statement or the walrus operator to new engineers.
11:21 Yeah, indeed.
11:21 Very nice one.
11:22 All right, Kelly.
11:23 I'll go ahead.
11:25 One more comment.
11:25 I was going to swap it over to your next item.
11:27 Yeah.
11:28 All right.
11:28 Well, here we go.
11:29 Let's talk about robots that teach kids.
11:32 Oh, yeah.
11:33 So this has become the, I should, in a good way, the bane of my existence is finding all these bots.
11:38 And it's like, I have so many bots.
11:40 This one's an old bot.
11:42 And it's one of, it's a very popular bot for little kids.
11:45 Very cute.
11:47 They draw the line that can follow the line.
11:50 It was using block code on the iPad, connects easy.
11:54 And it's always been a real big staple for a lot of classrooms.
11:57 It's called the Ozobot.
11:58 But the interesting thing, coming in August 17th, the Ozobot just introduced a Python beta version, which is super cool.
12:06 They got rid of the original Ozobot bit, which was a similar version.
12:15 And then they made a new version of the Ozobot called the Evo Ozobot.
12:20 And with this bot, it has line following.
12:23 It has color detection.
12:24 It has sound.
12:25 It has proximity sensor.
12:26 It has Bluetooth.
12:27 It has crash detection.
12:30 You can even write functions within this, within the program for the beta.
12:34 And then I think when you open up the documentation for the beta, they have five different programs already written in there for you to try out.
12:46 And it's kind of cool.
12:46 You have a tree following, and it can count how many branches are in a tree.
12:53 So if you're talking, maybe you want to do a science classroom classification and you want to see how far removed, this is very sciencey for you guys, how far removed an amoeba is from an ape.
13:05 You would go down the cladogram or the tree, and you can calculate how many branches away.
13:11 So it would be really cool how to incorporate the EvoBot.
13:13 And not that you can't count trees, but, you know, just fun little things.
13:17 No, but it's a really cool way to get the kids thinking.
13:20 Yeah.
13:21 So it says there's two ways of programming.
13:24 And, you know, Brian just spoke about the history of programming languages and all these text-oriented languages.
13:30 But neither of those are particularly, I mean, it does come with the Python aspect, but it's not.
13:34 The two options here are kind of like there's this blocky style of programming.
13:39 And does that become Python, as you know?
13:41 No, I'm not sure how they came about it, but the original was always block.
13:45 And then the block would increase in difficulty depending on the age.
13:50 Similar to a lot of the other block programs where you would have limited writing, and then you would have color coding, and then you would start pushing in more functions.
14:00 But this one seems to be just a full-on Python beta version.
14:04 There is an online web browser where you can connect to the Ozo bot.
14:12 I think it gave you an – no, that's the simulator.
14:14 That one's for the block.
14:15 But that one's cool, too.
14:16 I'll try to find it for you.
14:18 But there's a – it's called – I'll find it for you.
14:20 But it's called like Evo Ozo bot, and you can code right in the browser once you connect via Bluetooth.
14:27 Yeah, let me see.
14:28 This is it.
14:29 So bots like these are great for learning to code.
14:32 And this is one that I definitely tell parents when – because everyone asks me, like, hey, what should I get for my kid?
14:37 Like, should I get a micro bit?
14:38 What kind of robot should I get?
14:40 The Ozo bot is a great one because it can now grow even further with your child as they're learning more about coding.
14:47 So you can get them started with really basics, you know, writing on paper with a marker.
14:52 It can follow the line and do different things as the color changes.
14:55 They can then grow into using blocks to program it, and now they can code using Python.
15:00 So it's the same robot, but now they've evolved their knowledge and understanding of computer science and computational thinking by progressing their languages as they go.
15:10 So it's a really great use for that.
15:12 This is really cool.
15:13 Let me just try to do a little commentary for people listening and not seeing.
15:17 Of course, the link's in the show notes.
15:18 It looks like a little miniature R2-D2.
15:20 Maybe, like, a little bit smaller than the palm of a kid's hand.
15:25 And one way you can program it, which is fascinating, is you can draw a line with different colors, like a big, thick, sharpie-looking line.
15:32 But the colors teach it to do stuff.
15:34 Like, if it hits a red part of the line, it might spin or play a sound, and then it goes to a black line, and then, like, a blue one maybe means, you know, disco.
15:42 Whatever.
15:43 I don't know what the mapping over to its actions are.
15:46 But that's really neat to get kids thinking.
15:49 And then they can go to this visual block, and then they can go to Python.
15:51 I agree.
15:52 This is neat.
15:53 And I put the editor on the notes for you, so you can click on it.
15:57 Yeah, so the only problem that I've been reading about is the Python's not picking up on the dimensions or the length of the line.
16:07 So they have to be exactly four millimeters in order to do, like, tree branching.
16:12 So it's working on that feature.
16:15 Whereas with the regular block, you can draw – a kid can draw a line, and it'll work.
16:21 But I think that's great, and they have the examples.
16:23 So they have the three simple ones that you can get right into the square walk example, and then it goes down into a little bit more complex where the template ones are.
16:32 So it's pretty cool.
16:33 Yeah.
16:33 Yeah.
16:34 Any idea how much – I mean, like, if I'm a teacher.
16:37 Yeah.
16:37 Yeah.
16:37 $175 for the new Ozo bot Evo.
16:42 It used to be $95.
16:44 But, like I said, it's a new improved.
16:48 You can get a class set.
16:49 A class set of, I think, eight is – I don't know.
16:52 I want to say $2,000.
16:53 Okay.
16:54 So it's not too bad.
16:55 It is one of those things that a teacher could go and get a grant for.
17:00 I was thinking even, like, a teach-at-home sort of thing as well.
17:03 Oh, yeah.
17:03 It's not out of bounds for – Yeah, $175 is not bad for the bots going – you know, the bots that I've seen out there right now.
17:11 And I really like the idea of having programming be something that's interacting with the real world.
17:18 Like, either – that's what I liked about some of the MicroPython stuff or CircuitPython.
17:25 The Playground Express and stuff does lights and everything.
17:29 But this, it's – maybe it's just a little robot, but having it – your computer, your code, change something that they can see, it does make a big difference to make that reality there.
17:42 Yeah, and it's pocket-sized, which is – I love.
17:44 I love.
17:45 It's not big and bulky.
17:47 You can throw it in your pocket and walk around.
17:49 But I might lose it in my house.
17:50 Yeah, you might.
17:51 Your cat might take it or something.
17:53 But, yeah, that's mine.
17:57 Excellent.
17:58 Well, that's a really good find.
18:00 Brian, before we move on, I want to tell everyone about our sponsor this week.
18:04 I would like to tell us – tell everyone and to thank Microsoft and Microsoft for Startups for sponsoring this episode.
18:12 Microsoft for Startups set out to understand what startups need to be successful and created a digital platform to help you overcome those challenges, and it's the Founders Hub.
18:21 Founders Hub provides all founders at any stage with free resources to help solve startup challenges.
18:27 Platform provides access to expert guidance, skilled resources, mentorship, and networking connections.
18:32 Technology benefits and so much more.
18:35 Founders Hub is truly open to all.
18:37 You don't need to be investor-backed, but you can be.
18:39 Speed up development with free access to GitHub and the Microsoft Cloud.
18:43 Unlock credits over time.
18:45 Also discounts and benefits from innovative companies partnering with Microsoft Founders Hub, such as OpenAI.
18:52 You'll have access to their mentorship network, which includes hundreds of mentors across a range of disciplines.
18:57 Need advice on marketing or fundraising or idea validation?
19:01 Tons of topics, including management and coaching, are available, and you'll be able to book a one-on-one meeting with mentors, many of whom were former founders themselves.
19:10 It's no longer about who you know.
19:12 Get the critical support you need from Microsoft for startups, Founders Hub.
19:15 Make your ideas a reality today by visiting pythonbytes.fm/foundershub 2022.
19:22 That link, of course, is in your show notes, and we appreciate you using the link to let them know that you heard about them from us.
19:29 Yeah, thanks, Microsoft, for supporting the show.
19:31 Hey, Brian, real quick, real-time follow-up before we get on the next topic.
19:36 Marco and the audience says, I envy every child that gets hooked onto programming with one of these.
19:40 Yeah, that's way more compelling than original basic or Fortran or whatever many of us had to fight our way through.
19:48 Yeah.
19:50 Guess the number game.
19:51 Yes, exactly.
19:52 How about the print your name diagonal infinitely many times?
19:56 That one's a good...
19:57 I'm still trying to find it, but I remember when I was in third grade, I had a book that had programming challenges that would unlock parts of the story.
20:07 So you'd read a few pages, and then you'd have to solve some puzzle to figure out what happens next in the story.
20:13 And I need to go back and find it because it was such a creative way of getting kids engaged.
20:19 And it was the cost of a book.
20:21 Choose your own adventure, but with...
20:23 Oh, with code.
20:24 It's kind of like the advent of code thing.
20:26 That's my next sixth grade project.
20:28 I'm just going to have them do it.
20:29 You have to guess the right word in order to see the next lesson.
20:31 Nice.
20:32 Exactly.
20:33 Speaking of setting words, I want to talk to something a little more on the DevOps-y side, perhaps, of things.
20:42 But this is a real simple one that I think people will find some joy and use for.
20:47 I don't know if you've written any Python code and then wanted to know what's happening with it.
20:53 So if you open up Activity Monitor in macOS, if you open up Task Manager or some of the Sysmon tools, and you say, what is my program doing?
21:04 Is it using a lot of memory?
21:05 Is it busy?
21:06 It's not...
21:07 Nothing seems to be happening.
21:08 Is it like the CPU is pinned or is it just stuck?
21:11 You want to find your program in a list of programs or use even top or something like that.
21:16 What is the name of your program?
21:18 It's Python.
21:18 It's always Python.
21:20 And there might be many things called Python that are not even related to your thing called Python.
21:25 No.
21:25 So I want to tell people about this thing called SetProcTitle, as in SetProcessTitle or name, which is really, really cool.
21:35 And its use case is incredibly simple.
21:38 I think I even have an example here.
21:41 Yes.
21:41 Here.
21:42 No.
21:42 One of these.
21:43 I don't have the exact code.
21:45 But one thing that's cool is if you do anything with web stuff like MicroWSGI or G-Unicorn, if you would just have this installed as part of your web app or your API or any of those things, like in MicroWSGI, you can say proc name prefix is like, for example, on TalkByTheTraining, we use MicroWSGI.
22:03 So it says training dash.
22:05 And then you just say autoproc name is true.
22:07 Oh, cool.
22:09 When I go to the server and I hit glances or top or one of these types of things and you say, what are my processes doing?
22:16 Well, guess what?
22:17 It's called training MicroWSGI worker one, training MicroWSGI worker seven and eight.
22:23 And then for the thing that does the search engine as a system daemon I wrote in Python, it was also called Python in the list.
22:30 But now it's TalkByTheOn search, as in training, search daemon and these things.
22:36 And all you're going to do is basically import set proc title and say, at the beginning of your program, set proc title, whatever you want to see here, off it goes.
22:44 But also the web frameworks will pick this up and use it if they find it a lot of times.
22:47 Nice.
22:48 This is really cool when you're working in like a Docker environment where you've got a bunch of containers that are all running Python, especially ones that maybe you are just, you know, hosting rather than building.
22:58 This is a great way to identify your specific processes.
23:01 So I really like this.
23:03 Yeah, I like it too, because it's just so simple to use.
23:07 You literally, one import statement, what is the title?
23:09 But it knocks on, it follows onto these other tools that make it really useful.
23:14 So you can find your thing, not just, you know, one of the 10 Python things.
23:18 Yeah, just don't set the proc title to Python.
23:24 You could be also Python.
23:25 It could be also Python.
23:27 Exactly.
23:29 You could set it to like sneaky things.
23:32 Like you could set it to notepad on Windows or service host or like some weird thing.
23:37 You're like, oh, no, it's blending in.
23:39 This reminds me of that library, the progress library or the spinning wheel of death on the Mac.
23:44 So we just have the cursor and the ticking cursor going around.
23:49 Each wall, right?
23:50 Just combine them, combine them two together and just go, yes, it's still processing.
23:53 Exactly.
23:55 Evil virus.
23:56 All right.
23:58 Well, anyway, that's set proc title.
24:00 People should check that out if they haven't used it.
24:02 Oh, nice.
24:02 Cool.
24:03 Well, I was looking in the past before looking at old, the origins of Python.
24:08 Now I want to look in the future at 3.12.
24:11 Didn't we just get 3.11 though?
24:14 Yeah.
24:15 So 3.11 really just was finally released in like November, right?
24:19 So just last month, I think.
24:21 But I'm already looking ahead to 3.12.
24:23 So it is in the alpha stages.
24:26 So one of the things I want to point out like a caveat right away is that publishers, pre-release users should be aware that, oh, I forgot.
24:38 This isn't the right morning.
24:39 But basically, stuff in alpha might change.
24:41 So be careful if you're using alpha.
24:43 So 3.12 is on the alpha 2 release.
24:47 I'm already checking it out.
24:48 One of the things I love already, I'm loving this in 3.11.
24:52 So I'm glad they're going for more changes is the improved error messages.
24:55 100%.
24:56 So I'm already seeing.
24:57 Have you guys noticed?
24:58 I love it.
25:00 It's so much easier to teach.
25:01 Just let me tell you.
25:02 I'm like, read down last line.
25:04 Read it.
25:04 Yeah.
25:05 If you import something or use a wrong variable or something, having it be able to say, did you mean?
25:13 And then pick the right thing.
25:15 That's incredible.
25:16 It is incredible.
25:16 I love it.
25:17 So even more improvements in the error messages, which is great.
25:21 This is nice.
25:24 Did you mean?
25:25 Yeah.
25:25 Did you mean from import?
25:27 Oh, I've done this before.
25:28 Do you say import from?
25:30 You can't do that.
25:30 You have to say from thing, import thing.
25:32 So nice.
25:34 Those are great.
25:35 The new features so far, it's a Linux perf profiler.
25:40 So if you care about that, run it on Linux.
25:42 That's kind of neat.
25:43 There's a whole bunch of other changes.
25:45 The one thing I noticed was pathlib walk.
25:48 I didn't know pathlib didn't have a walk.
25:50 So for your walking, a directory tree, which is kind of neat.
25:53 Anyway, why am I bringing this up?
25:56 Because it's not going to come out until next November.
25:59 So why should you care about it?
26:01 Well, you should care about it as soon as possible if you're a Python package maintainer.
26:06 If you maintain a package that other people are using, why not start already and see if
26:11 there's anything in there that you need to care about?
26:13 And what I did, so I wrote up a little article on testing with Python 312 at pythontest.com.
26:21 And I just went through the changes.
26:23 So there were just a few lines of change that I needed to make.
26:27 If I talk about where to get it and using also running Py, which is Brett Cannon's Python
26:35 launcher on Mac in on Windows, it just comes with Py.
26:38 But once you install it, you can use three.
26:41 You can use that to launch 312 to play with things.
26:43 So the one liners really are.
26:46 I've got a tox any file that I just added 312 to.
26:49 That's it.
26:50 And then what else?
26:52 GitHub Actions.
26:53 GitHub Actions also does 312 now.
26:55 So I added 312 dev to the test matrix.
27:01 But so I released this morning.
27:04 I just wrote this up and sent it out.
27:05 And I already got a question back from Brian Skin saying, what if it fails?
27:10 I don't really want to like not release something just because 312 failed.
27:15 And if you care about that and want to make sure that that doesn't muck up your pipelines,
27:21 there's a way to deal with that.
27:22 So there's some documentation on GitHub Actions on how to deal with that.
27:27 And it's using continue on error.
27:30 And I'm using the documentation uses the variable experimental.
27:34 And that sounds good to me.
27:36 So I'm adding like a treat everything else normal without experimental, but treat 312 dev
27:43 as experimental, which means continue on error.
27:45 And all this does, the only thing it does, if you set that for a particular thing, is it
27:51 allows your different things that you're testing, it allows some of them to fail and not stop
27:59 others.
27:59 So by default, if anything fails in the GitHub Action Pipeline, then it stops running all the
28:05 rest of them.
28:06 And what this does is it allows the rest of them.
28:09 You still see that something failed.
28:10 So you have to decide whether you care about that or not, but it'll let everything else
28:16 pass.
28:16 So anyway, also handy for ensuring that all of your tests continue, right?
28:21 So if you just want to let it continue on everything, all your pipelines will always work.
28:25 You'll never break the bill and have to worry about it.
28:30 Yeah.
28:30 It's fine.
28:31 Brian, is this what you're recommending?
28:34 No, I actually, seriously, I like that feature.
28:37 And I love the experimental classification.
28:40 That's cool.
28:40 Yeah.
28:40 So anyway, what do we got next?
28:43 Well, over to Sean.
28:46 Yeah.
28:47 So I was at in Las Vegas last week for reInvent from AWS.
28:52 And I'm still not sure what day it is.
28:55 It's it was Las Vegas is its own time zone, meaning all of them at the same time.
29:01 But what I saw there was actually a really great chat by a company called EF Education
29:07 First.
29:08 It's been around for a long time.
29:09 They have schools and offices and training centers all over the world.
29:14 And they were talking about how they were using the cloud to reinvent online learning.
29:18 And they've been doing online learning for years and years since the 90s, in fact.
29:23 And what they recognized was that when we all went into the pandemic and we did online learning,
29:28 a lot of it looked like old school classrooms where everyone was neatly arranged in rows
29:33 and all sitting there facing forward and looking forward, just like we are kind of on this call right now.
29:38 But they recognized that that's not really the way that classrooms work anymore.
29:42 We don't all sit in rows and face forward towards the teacher.
29:45 We we are more interactive.
29:47 We're more engaged.
29:48 We're more collaborative in the classroom.
29:50 And they wanted to redesign their platform to do that.
29:53 So they retooled their entire thing using AWS cloud.
29:57 But what was great about their approach was that they also baked in a lot of science into the online learning.
30:03 And what they were talking about was the way that we've been doing measurements and metrics and science and learning online is always after the fact.
30:13 We look at test scores or we look at assessments.
30:15 We look at the way that people answer multiple choice questions.
30:18 But we don't actually bring the science into the actual learning environment, into the live classroom.
30:23 So what they did was used a number of AWS services, which you could find on any platform.
30:28 Transcription.
30:29 They used a bunch of NLP work with it.
30:31 A lot of analysis to be able to figure out how engaged every student was in the classroom, basically as it was happening.
30:39 So they could give feedback to the teachers to show them, like, hey, these students are really engaged.
30:43 These ones, not so much.
30:44 And then they also use some really great computer vision to see how people were interacting with the the coursework.
30:51 So even just where their mouse was and what the position was, as well as their level of engagement with the students.
30:57 So what I really liked about this was they looked at this problem of online learning and tried to figure out how do we make it suck less for the teachers, for the students, for everybody involved.
31:08 And what I got me thinking about in this talk was how could we use this in computer science?
31:14 So how can we take that same level of engagement around learning a foreign language or learning business processes for an MBA and apply that to computer science in a really highly engaging sort of way?
31:25 And also a very metrics driven, sciencey sort of way so that everyone, student, teacher, administrator can get better information about how the learning is actually happening online.
31:38 I love that.
31:38 Like educational data mining at its best.
31:41 They really took it to another level.
31:44 I mean, just their classroom experience is very dynamic, right?
31:47 So it's almost that Twitch style.
31:49 If you see on the screen here, the instructor is green screened in in just the corner of the screen, right?
31:54 So it's not over in a box with a bunch of distractions.
31:57 He's in the corner and he's doing in this screenshot, he's doing a little bit of a mix and match and drag and drop.
32:03 But they had other examples where he was they had created a digital set where he was behind the counter at a hotel and he could practice, you know, checking into a hotel using the foreign language.
32:14 With him as the receptionist and the student as the guest coming in.
32:19 That's pretty cool.
32:21 I think there's like there's a lot of big uptick in a lot of the educational data mining side for the data scientists.
32:28 And there's been a lot more ability to collect all this big data from these websites.
32:34 We had a slew tons and tons of data from COVID-19.
32:39 And I think a lot of people are realizing, wow, we have so much data now.
32:43 What can we do?
32:44 And that's awesome.
32:44 That's awesome.
32:45 Just changes, just changes the dynamics.
32:47 I haven't been in the education space directly enough lately to know, but obviously I've seen kids through there and, you know, I was in a lot of school myself.
32:56 I feel like there's still probably a lot of opportunities for technology in education to make it smoother and nicer.
33:03 Is that still true?
33:04 Yeah.
33:05 I mean, just think about when you provide a course where you do a course online and you're in this box and all your cohorts are kind of in this box and you have to switch.
33:14 And then your slide takes over all the space when your students are trying to type.
33:18 And if you don't have two monitors, everything gets in the way.
33:21 So this can actually reshape the way that learning online for adults, for kids can change, right?
33:29 So can you imagine you're a nice little cutout person on the bottom screen and your code's going up behind you as you type.
33:37 So you're not in the way and you're still there and you're still engaging and you're still keeping, you know, that physical contact.
33:44 I did air quotes there for those people listening.
33:46 I keep forgetting podcasts.
33:48 Physical, you know, contact with your students.
33:51 Yeah.
33:52 And did you air quote that we were a podcast?
33:55 A podcast too.
33:56 Can't take her anywhere.
34:00 Sean, what else was your takeaways from AWS reInvent?
34:05 There were a ton of really great talks there.
34:09 And I'm catching up on a lot of them that I missed online.
34:11 But really the main point was that everything is asynchronous.
34:16 Everything is event driven.
34:17 And it's pretty much Python all the way down.
34:20 There's Lambda functions everywhere.
34:23 And most people are writing them in Python.
34:24 There's, you know, plenty of other options as well.
34:28 But it seemed like it was the most popular choice for making things happen in the cloud.
34:33 Looks like a lot of the videos, you know, it's in other sessions are available on demand as well.
34:38 So yeah, I put a link to the one with Werner Vogel, which was really great.
34:41 That was all about the asynchronous world that we live in and making the making the cloud more asynchronous.
34:48 Yeah.
34:49 As well as a, I forget the other one I put in.
34:51 I think it was a link to, oh, a new feature that they added called EventBridge pipes, which I thought was kind of fun and a nice throwback.
34:58 So EventBridge on AWS is like a place where you can have event driven code.
35:04 So one process will finish, it will post an event saying, hey, I'm finished.
35:08 And then another bit of code like a Lambda or something else can pick it up and process it.
35:12 But they took the idea of bash pipes or Unix style pipes, and they're using it to connect these events more directly.
35:19 So instead of having to write a bunch of glue code to be able to pass data and information about these events from one process to another, from a producer to a consumer, you can just connect them together directly.
35:30 And so, okay, when this happens, then do this other thing, just like you would pipe output from one command into the input of another.
35:36 Okay.
35:37 Very interesting.
35:38 Nice.
35:38 I also got to give a shout out to AWS and for, or in re-event to get those videos out that quickly.
35:45 I mean, it just stopped just a few days ago.
35:47 So that's amazing.
35:48 Yeah, they had live streams for just about everything.
35:51 You could register for free for it.
35:53 Pretty much every breakout session I went into had a really nice camera in the back filming it.
35:58 I think I even, I was even interviewed on a video podcast while I was there.
36:02 They really were embracing video and live streaming and making it available to as many people as they possibly could.
36:09 I guess when you're like the top server holder and space provider, it doesn't matter, right?
36:15 Sure.
36:16 It's just money, right?
36:18 Yeah.
36:19 Well, it's a great example of, you know, a company investing millions in a conference to get billions back from the developers using their platform.
36:27 So it seems like a smart investment.
36:28 Absolutely.
36:29 Well, yeah.
36:30 But wait, before we move on really quick, just an audience, James just says that would be an awesome use of tech and teaching comp side.
36:36 Yeah.
36:36 That's definitely about Sean.
36:38 Yeah.
36:39 Do we have any extras?
36:41 I guess we're rounded out.
36:43 Kelly, do you want to go first?
36:44 Yeah.
36:44 Go ahead.
36:44 Yeah.
36:45 Yeah.
36:45 Yeah.
36:45 So I just saw this and it's only been out for six days, but there's a new special interest group with the PSF, which is an EduSig.
36:53 And it's led by Timothy Wilson.
36:55 So I actually reached out to him because they've got a great list of universities that are teaching Python.
37:00 They've got about five high school schools that are teaching Python.
37:06 And I'm like, wait, I know there's more because I know there's a lot of our listeners out there are teaching Python there.
37:12 And with all the work that's done with the educational summit, I thought this was interesting.
37:16 There's not much on it from the PSF, so I'm hoping to find some more information soon.
37:22 But it's only been out six days, so I've got to be patient, I guess.
37:25 I'm like, go.
37:28 And launch with full five pages of information, please.
37:31 Yeah, that's excellent.
37:33 That was cool.
37:34 Nice.
37:34 Sean, do you have any extras?
37:35 I posted a couple of links to those talks at reInvent that I really liked.
37:39 Okay.
37:40 Go check them out.
37:41 They're pretty fun to watch.
37:42 And like Michael said, I think pretty much all of the live streams are out there, certainly of all the keynotes.
37:48 But it was looking at dozens of different breakout sessions available now and all of it online for free.
37:53 Wonderful.
37:54 All right.
37:54 I got a couple real, real quick ones here.
37:57 So I talked about TextSniper and Textinator a little while ago, which is just fantastic software for, you know, select part of your screen.
38:07 Whether this is a video you're watching with like a code demo and they're like, oh, here, call this API.
38:12 Or here's a link to it.
38:13 Just quick.
38:14 Command-shift-2.
38:15 Select.
38:16 But we left our Windows friends out of that.
38:18 So who was it?
38:20 I want to make sure I give some credit here.
38:22 I don't remember who said this ever.
38:24 I'm sorry.
38:24 But someone, thank you, listener, sent in a text extractor, which comes from the Microsoft Power Tools for Windows, Power Toys for Windows, which is the same thing for Windows.
38:36 So if you're in Windows and you want to be able to hit a button or hot key and then say, I want to copy this out of the video.
38:42 So I'm taking notes and I don't want to write, you know, five lines of bullet points.
38:46 I want to just paste them.
38:48 Boom.
38:48 Here you go.
38:49 So there's that.
38:50 That's a great free one.
38:52 Nice.
38:53 Did a quick article over on using Jinja partials to break up your HTML templates like Jinja, Chameleon, and Django templates into more reusable pieces.
39:06 And yeah, that's it for me.
39:08 Just those quick ones.
39:08 Okay.
39:09 I just had like, I guess now that I have two teachers and we were talking about how education has changed.
39:15 I just want to hear if you have a similar experience.
39:19 So my daughter is in junior high, eighth grade, and she's the she was in sixth when they were home the whole year doing like and the they did it all on iPads.
39:32 Now they're back.
39:33 They're back, of course, but they're still using the iPads a lot.
39:37 And they're even turning a lot of their work in.
39:39 I mean, and I didn't I didn't type when I was in junior high.
39:43 I was writing stuff and they actually some of the writing assignments have to now have to actually be in paper, which is the unusual thing.
39:50 Most of them are typed and sometimes they're in paper and people and the kids complain of like, I don't want to actually write something.
39:57 Have you guys deal with that at all?
39:59 Or I feel I feel the same way.
40:01 I hate writing.
40:01 I do, too.
40:02 Sean and I would not have a printer in our room.
40:05 They're like, do you have scissors?
40:07 Do you have a pencil?
40:07 I'm like, what's a pencil?
40:08 Who uses pencils in this school?
40:10 I think it slows down.
40:14 For us, for me, at least, it's inefficient.
40:16 I'd rather type something.
40:18 I can even start typing while kids are up to me looking at me and I can without, you know, looking at the keyboard.
40:24 And whereas if you're writing, you have to stop.
40:26 And one of the interesting things is the due dates.
40:29 Now, the due times are not on.
40:31 They're not like 59 PM.
40:33 Yeah.
40:33 They're like midnight or something like that.
40:35 It's defaulted in most learning management systems.
40:38 And teachers are lazy, just like coders.
40:39 Okay.
40:40 Interesting.
40:43 All right.
40:43 Well, thanks.
40:44 Well, I think the whole typing versus writing is it should have a purpose, right?
40:48 There should be an intent behind it.
40:50 So, in some grade levels and in some settings, the idea of writing something out is really important.
40:57 It might be to help slow down the thinking or even sometimes the tactile feel and the feedback that you get from the pen or the pencil moving across the paper, right?
41:05 It's the satisfying part of using a crayon.
41:07 But as long as it's not, oh, write it because I told you to, right?
41:11 Or write it so you don't cheat.
41:13 Right.
41:14 It should be there for a purpose or a reason.
41:17 We want you to write this out because we want you to slow down and think about what you're writing or take the time to process what you're writing instead of just, you know, typing it out.
41:25 That makes sense to me.
41:27 But I never appreciated the just do it because I said so.
41:30 I'm concerned about the kids' ability to doodle while the teacher's talking, though.
41:35 Are we losing that?
41:36 No.
41:37 Teachers don't like kids to doodle while they're talking anyways because they're like, you're not listening.
41:42 I mean, that's what's said, right?
41:45 We, on the other hand, we have whiteboard markers all over the table, you know, out there for the tables and the walls.
41:50 That's something that Sean and I started and has kept.
41:53 Because we do like the process of writing, like Sean said.
41:56 I, you know, write out your pseudocode.
41:58 Think about what's going on.
42:00 How would this look if you were writing something in an editor?
42:03 A hundred percent.
42:04 But actual writing stories?
42:05 I use Grammarly.
42:08 Like your tweet.
42:10 Well, I forgot.
42:12 We haven't got to our joke yet.
42:15 This is true.
42:16 I actually have a really quick follow-up.
42:18 Now, for people who are in the digital side but kind of want this, you can check out Paperlike, which is a screen protector for your iPad that gives it writing on paper feel.
42:29 Oh, nice.
42:30 For the pen, that might be kind of nice because still writing on glass is just odd.
42:35 All right.
42:35 But on to the joke.
42:36 We got a couple of jokes.
42:37 Marco was picking on me earlier saying, you use Mastodon, Michael?
42:42 I had no idea.
42:46 But as much as I love it, I tried to pull up the jokes last week, which were on Mastodon, and they would not pull up.
42:53 If I pulled them up when I was logged into Mastodon, they would say, you can't find these.
42:56 But if I pull them up in an incognito window, guess what?
42:58 You can find them.
42:59 So I want to highlight a couple of jokes.
43:01 We talked about recursion like the week before.
43:03 And Kim Van Wijk says, given the nature of the joke, perhaps next week's Python Bytes joke could just be, see last week's Python Bytes joke.
43:14 And also, I saw another joke, or not really a joke, but sort of a meme derived from a real thing, is apparently crows, ravens, can learn recursion.
43:24 And so it's just a matter of time before they take over the world.
43:27 No, they're going to get stuck in a race condition where they don't have a base case, and we'll never see them again.
43:35 They're like, no exit condition?
43:36 No.
43:37 The call stack got too deep.
43:40 Sorry.
43:40 Why did that raven fall over?
43:44 Well, it just went in circles faster and faster until it collapsed.
43:47 All right.
43:48 Then I got another Mastodon sort of follow-on joke because, you know, Mastodon is like open source and like independent and not corporate.
43:55 But it's kind of weird.
43:56 So this person says, timeline of a new Mastodon user.
44:00 Day one, this sucks.
44:01 Servers are confusing.
44:02 Why is my feed empty?
44:03 Day two, there's no quote tweet.
44:05 This is dumb.
44:06 Day three, Mastodon better make some changes if it wants to compete with Twitter.
44:10 Day seven, hmm, people are nice.
44:12 Day 10, I'm loving the note ads and real conversations.
44:16 Day 15, the workers must seize the production.
44:19 It means a reduction to execute the capitalist, might I add.
44:22 The billionaires first.
44:26 Yeah, maybe I can see people getting a little too intense in this.
44:30 And then let's see here.
44:33 That's too true.
44:34 I'm telling you, this is the timeline.
44:36 We're like on day 15 around here.
44:38 And then I saw some, one of you all put this joke in here as well.
44:42 Someone want to take that one?
44:43 Yeah, this is the, you know, my source for most of my geek humor, which is XKCD.
44:48 And it's a matrix, a feature matrix of the various social media platforms.
44:52 And so on the left side, it's got things like direct messages, group chats, file transfer,
44:57 built-in games, user run instances, doesn't require a central server.
45:00 So it just goes all the way down.
45:02 And across the top, it's Twitter, Discord, Mastodon, Facebook, just goes all the way to
45:06 the right.
45:07 And on the very right side, you know, everything has like maybe half of the checkboxes at most
45:12 filled in for features.
45:13 But on the very right side, it says the Cybeco wireless handheld computer for teens from the
45:17 year 2000.
45:18 And it's every single checkbox.
45:20 It does all of it from 22 years ago.
45:23 I love it.
45:24 Interesting.
45:26 We were living in the future and we just didn't know it.
45:29 Yep.
45:30 So now there's going to be a run on Cybeco computers on eBay.
45:33 You'll never be able to find one now.
45:35 It'll be like raspberry pies.
45:37 They're just to be unobtainium.
45:38 Yeah.
45:39 Like that quote, the future is now is not true.
45:41 The future is 22 years ago.
45:43 You missed it.
45:44 You're late in the game.
45:47 Well, so thanks.
45:49 Thanks everybody for coming on the show.
45:51 It was a lot of fun.
45:52 Thanks, Michael.
45:53 Thank you for having us.
45:55 We always enjoy it.
45:56 Yeah.
45:56 Thanks for coming, Sean and Kelly.
45:57 Bye.
45:58 Bye everyone.