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

Transcript #313: Programming Robots With a Marker

Return to episode page view on github
Recorded on Tuesday, Dec 6, 2022.

00:00 Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 313 recorded December 6, 2022 and I am Brian Okken.

00:11 Hey, I'm Michael Kennedy.

00:12 I'm the person with the scroll bar going across. I just realized that.

00:14 I'm Kelly Schuster for 8 days.

00:17 And I'm Sean Tybur 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. 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 worthless under your show.

00:35 >> A hundred percent. It's more like about anybody who's a learner, which is everybody hopefully out there listening.

00:41 >> 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, 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, 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 gotta do is pip install inflect.

01:22 Check this out. 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 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 written numbers into spoken set numbers, this is the way to do it.

01:56 I think this is great.

01:58 I don't know you need it for eight 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:11 Have you heard of num2words as well?" So num2words is another one that you can use.

02:17 Num2Words is possibly better, but the API seems a little bit cleaner.

02:21 Now, I haven't pushed the outer bounds of like, 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 usefulness, this num2words, the two spelled out as a number, you can actually get a command line version.

02:36 So you can pipx install this, and then on your terminal or command prompt, you just say num2words and put a number, and then you don't even have to write Python code, you just call it.

02:46 But of course you can, and it will work in multiple languages.

02:49 >> Oh, the language part is cool.

02:51 >> I saw that there. My teacher side just went, "Wow, I can go into Spanish and French." >> Exactly.

02:57 >> So excited.

02:59 >> Yeah. 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:08 >> Yeah. This is neat.

03:09 I wrote a little bit of code to just throw some examples together and put those in the show notes.

03:15 So you can use inflect or you can use numToWords.

03:18 I think I would trend towards the numToWords because the multilingual as well as the command line version, if you pipx install it.

03:25 Also the fact that we don't have to call an instance.

03:28 Is that correct terminology?

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 Pythonic, you might say.

03:36 I have a second grader in my household who's probably ready to cheat on his math homework with this.

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 are have kids in, you know, trying to come up with pronounced big numbers and stuff. Occasionally I forget.

03:54 I know that's what I was saying. I'm thinking of that too. But this is like, fact number like 20 for the math teacher. I always tell them, no, we don't need math anymore. We'll just have Python. We don't need math anymore. I have a Python library that's going to give us number sense.

04:09 - All right, so I got some homework for someone out there who's feeling ambitious.

04:14 How about create this as a website, as a service, so we can just put it in as a progressive web app, we can 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, and then set it up for phonetic pronunciation so we can just have Siri pronounce it properly.

04:35 - Yeah, there you go.

04:37 And 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, I thought about that.

04:45 That's pretty, pretty dope.

04:46 Okay.

04:47 All right.

04:48 Cool.

04:49 All right.

04:50 Well, that's that's mine.

04:51 After you, Brian.

04:52 Okay, so I'd like to, I'd like to go back in time to the origins of Python.

04:57 No, I'm not going to read the whole article.

05:00 But there was an article by Lambert, Merton's Merton.

05:03 Sorry, Lambert, I got your last name wrong.

05:06 But this is really, it's a really cool, but long article.

05:10 So we've, I've heard, 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:22 I guess you probably have all heard that, right?

05:25 But I haven't heard a lot of that.

05:27 Like what, where did ABC come from?

05:30 And I, and maybe that's out there, but I just haven't looked.

05:32 But this is, this is kind of going through it.

05:35 This is going back to 1970.

05:37 Lambert was involved with teaching programming.

05:41 This is teaching programming at university levels to people that had no programming experience.

05:46 They had a computer arts society.

05:49 They had non-numerical programming.

05:52 He mentions teaching artists and other people that probably don't even hang around computers at all, and especially in the '70s, you wouldn't.

06:03 And then he kind of ties it in also to modern day, a similar sort of topic is Django Girls, 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, 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 Istanbul.

06:30 So these workshops go on all over the world, which is pretty awesome.

06:34 So he started with a programming language called Telkomp.

06:37 It was an unstructured language similar to BASIC.

06:43 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 Then this tale goes through, it's a pretty long tale, but it goes through a lot of the frustrations they had even with Telcom, and then deciding to go into developing ABC, which was like, started out as B for beginner, or beta zero or B zero for the initial element or something, which is, I think, too nerdy for a programming language name.

07:20 But it talks about the ABC project.

07:22 a lot of this articles around the ABC project, but one of the things I wanted to highlight, I'll try to get my notes back up, but I wanted to highlight one of the things they brought up was really wanting to have ease of learning and ease of use 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 and that was probably that was my experience with basic it was fairly easy to learn but then we try to do something large it's tedious and pascal was the same way with me but i'm not so much and one of the things they talk about is even they had this the put command right in there. So put one two in a b was to put two values in two variables.

08:15 And again, the swapping of you could say put a b in b a to swap variables where every other language I've ever used, you've got to use a third intermediate variable. And so we use that in Python today, right? So a comma b equals, becomes a, will do the same thing.

08:33 >> This is like looking back on evolution or something.

08:37 >> Yeah.

08:37 >> 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. I encourage people to read it.

08:50 It's just a great read and a romp through history of Python.

08:56 And they even brought in, like ABC brought in, I think BetaZero did also, of the space, you know, the spacing making sense and not having to do brackets and things, but having spaces for blocks.

09:11 Pretty cool ideas.

09:14 What else?

09:15 One of the things, a couple of quotes, I'm not sure where it's at, talks about Python's success.

09:20 The growth 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:31 Instead it's been a long, slow, and steady rise.

09:34 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:46 Having Python be easy to learn has been powerful.

09:48 And then 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:03 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, but it hasn't slowed down.

10:15 And anyway, great read.

10:17 - Yeah, it's pretty cool. 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:30 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 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 of the walrus operator to new engineers.

11:20 So, yeah, indeed. Very nice one.

11:22 All right, Kelly.

11:23 I'll go ahead and do one more comment.

11:25 I was going to swap it over to your next item.

11:27 Yeah, all right. Well, here we go.

11:29 Let's talk about robots that teach kids.

11:32 Yeah, 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. This one's an old bot and it's one of, it's a very popular bot for little kids. Very cute. They draw the line, it can follow the line. It was using block code on the iPad, connects easy, and it's always been a real big staple for a lot of classrooms. It's called the OzoBot. But the interesting thing, coming in August 17th, the OzoBot just introduced of Python beta version, which is super cool. They got rid of the original Ozobot bit, which was a similar version, and then they made a new version of the Ozobot called the Evo Ozobot. And with this bot, it has line following, it has color detection, it has sound, it has proximity sensor, it has Bluetooth, it has crash detection. You can even write functions within this, within the program for the beta. 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. You have a tree following and it can count how many branches are in a tree. 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 a from a ape, you would go down the cladogram or the tree and you can calculate how many branches away. So it'd be really cool how to incorporate the EvoBot 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. Yeah. So it says, it says there's two ways of programming and, you know, Brian just spoke about the history of programming languages and all these text oriented languages, but neither of those are particularly, I mean, it does come with the Python aspect, but it's not, the two options here are kind of like, there's this blocky style of programming 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 and then the block would it would increase in difficulty depending on the age. Similar to a lot of 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. But this one seems to be just a full on Python beta version. And I think I put in the there is an in online web browser where you can connect to the Ozo bot. I think I gave you. No, that's the simulator. That one's for the block. But that one's cool, too. I'll try to find it for you. But there's - There's a, it's called, I'll find it for you, but it's called like Evo Ozobot, and you can code right in the browser once you connect via Bluetooth.

14:27 - Yeah, let me see, 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, 'cause everyone asks me like, "Hey, what should I get for my kid?" Like, "Should I get a micro bit?

14:38 "What kind of robots should I get?" The Ozobot is a great one because it can now grow even further with your child as they're learning more about coding.

14:48 So you can get them started with really basics, you know, writing on paper with a marker.

14:53 It can follow the line and do different things as the color changes.

14:56 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:14 Let me just try to do a little commentary for people listening and not seeing.

15:17 of course the links in the show notes, it looks like a little miniature R2D2.

15:21 Maybe a little bit smaller than the palm of a kid's hand.

15:25 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 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 a blue one maybe means disco, whatever.

15:43 I don't know what the mapping over to its actions are, 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:52 I agree, this is neat.

15:53 - And I put the editor on the notes for you, so you can click on it.

15:58 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:08 So they have to be exactly four millimeters in order to do tree branching.

16:12 So it's working on that feature.

16:16 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.

16:22 And they have the examples.

16:24 So they have the three simple ones that you can get right into the square walk example.

16:28 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, yeah.

16:34 - Any idea how much, I mean like, if I'm teaching.

16:37 - Yeah, $175 for the new Ozo Bot Evo.

16:42 Used to be 95.

16:44 But like I said, it's a new and improved.

16:48 You can get a class set of, I think, eight is, I don't know, I want to say 2,000.

16:53 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 teacher at home sort of thing as well.

17:03 That's not out of bounds for...

17:05 Yeah, 175 is not bad for the bots going, the bots that I've seen out there right now.

17:11 >> I really like the idea of having programming be something that's interacting with the real world.

17:18 That's what I liked about some of the MicroPython stuff or CircuitPython, the Playground Express and stuff does lights and everything.

17:29 But this, maybe it's just a little robot, but having 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 size, which is I love.

17:45 It's not big and bulky.

17:47 You can throw it in your pocket and walk around.

17:49 >> I might lose it in my house.

17:51 >> Yeah, you might. Your cat might take it or something.

17:54 Yeah, that's fine.

17:57 >> Excellent. 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 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.

18:20 And it's the Founders Hub.

18:22 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, 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:40 Speed up development with free access to GitHub and the Microsoft Cloud.

18:44 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:58 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:16 Make your ideas a reality today by visiting

19:23 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 audiences, I envy every child who gets hooked on a programming with one of these.

19:40 Yeah, that's way more than compelling than original basic or Fortran or whatever many of us had to fight our way through.

19:49 >> Yeah. Guess the number game.

19:51 >> Yes, exactly. How about the print your name diagonal infinitely many times? 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 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:14 I need to go back and find it because it was such a creative way of getting kids engaged, and it was the cost of a book.

20:21 >> Choose your own adventure.

20:23 >> With code.

20:24 >> It's like the Advent of Code thing.

20:26 That's my next sixth grade project. 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. Exactly.

20:33 [Laughter]

20:35 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:07 Nothing seems to be happening.

21:08 Is it like the CPU is pinned or is it just stuck?" 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. It's always Python.

21:20 There might be many things called Python that are not even related to your thing called Python.

21:25 You're like, no.

21:26 So I want to tell people about this thing called set proc title, as in set process title or name, which is really, really cool.

21:36 And its use case is incredibly simple.

21:38 I think I even have an example here.

21:41 Yes, here, no, one of these.

21:44 I don't have the exact code, but one thing that's cool is if you do anything with web stuff like MicroWizKey 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 micro whiskey, you can say proc name prefix is like, for example, on talk by then training, we use micro whiskey.

22:03 So it says training dash and then you just say auto proc name is true.

22:07 When, 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:17 Well, guess what? It's called training micro-WSGI worker one, training micro-WSGI worker seven and eight.

22:24 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 PocPython search, as in training, search daemon, and these things. And all you got 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. But also the web frameworks will pick this up and use it if they find it a lot of times.

22:47 >> Nice. This is really cool when you're working in a Docker environment where you've got a bunch of containers that are all running Python, especially ones that maybe you are just hosting rather than building.

22:59 This is a great way to identify your specific processes, 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, but 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 prog title to Python.

23:21 (laughing)

23:24 - You could be mischievous. - Also Python.

23:26 Could be also Python.

23:27 - Exactly.

23:30 You could set it to like sneaky things, like you could set it to notepad on Windows or service host or like some weird thing, 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, so we just have the cursor and the ticking cursor going around.

23:49 - Each one, right.

23:50 - Just combine them two together and just go, yes, it's still processing.

23:54 (laughing)

23:55 - Exactly.

23:56 - Evil virus.

23:57 - All right, well, anyway, that's set_proctitle.

24:00 People should check that out if they haven't used it.

24:02 - Nice. - Cool.

24:03 - Well, I was looking in the past before, looking at old, the origins of Python.

24:09 Now I wanna look in the future at 3.12.

24:12 Didn't we just get 3.11, though?

24:14 Yeah, so 3.11 really just was finally released in 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. This isn't the right morning." But basically, stuff in alpha might change.

24:42 So be careful if you're using alpha.

24:44 So 3.12 is on the alpha two 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, so I'm glad they're going for more changes is the improved error messages.

24:56 So I'm already seeing, have you guys noticed like the--

24:59 - I love it, it's so much easier to teach, just let me tell you.

25:02 I'm like, read down last line, read it.

25:05 - Yeah, if you import something or use a wrong variable or something, having it be able to say, did you mean and then pick the right thing?

25:15 That's incredible. I love it.

25:18 Even more improvements in the error messages, which is great.

25:22 This is nice. Did you mean from import?

25:27 I've done this before.

25:28 You say import from, you can't do that.

25:30 You have to say from thing, import thing. Nice. Those are great.

25:36 The new features so far, it's a Linux perf profiler.

25:40 So if you care about that, run it on Linux, that's kind of neat.

25:43 There's a whole bunch of other changes.

25:46 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 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 3.12 at, and I just went through the changes. 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 Pi, which is Brett Cannon's Python on launcher on Mac in on Windows, it just comes with pie. But once you install it, you can use three, you can use that to launch 312 to play with things. So the one liners really are I've got a toxin E file that I just added 312 to that's it. And then what else? GitHub actions, GitHub actions also does 312. Now. So I added 312 dev to the to the test matrix. But so I released this this morning, I just wrote this up. And sent it out, and I already got a question back from Brian Skin saying, what if it fails? I don't really want to, like, not release something just because 3.12 failed.

27:15 And there's a, if you care about that and want to make sure that that doesn't muck up your pipelines, there's a way to deal with that. So there's some documentation on GitHub Actionstone on how to deal with that, and it's using continue on error. And I'm using the documentation uses the variable experimental, and that sounds good to me.

27:36 So I'm adding like a treat everything else normal without experimental, but treat 3.12 dev 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 allows your different things that you're testing, it allows some of them to fail and not stop others.

27:59 So by default, if anything fails in the GitHub Action pipeline, then it stops running all the rest of them.

28:06 And what this does is it allows the rest of them.

28:09 You still see that something failed, and so you have to decide whether you care about that or not, but it'll let everything else pass.

28:16 - Nice. - 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 [LAUGHTER]

28:27 You'll never break the build and have to worry about it.

28:30 >> Yeah.

28:30 >> That's fine. Brian, is this what you're recommending?

28:35 >> No, actually, seriously, I like that feature, and I love the experimental classification. That's cool.

28:40 >> Yeah. Anyway, what do we got next?

28:43 >> Well, over to Sean.

28:47 >> Yeah. I was in Las Vegas last week for re-invent from AWS, and I'm still not sure what day it is.

28:55 Las Vegas is its own time zone, meaning all of them at the same time.

29:00 But what I saw there was actually a really great chat by a company called EF, Education 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, and they were talking about how they were using the Cloud to reinvent online learning.

29:18 They've been doing online learning for years and years, since the '90s in fact.

29:23 What they recognized was that when we all went into the pandemic and we did online learning, a lot of it looked like old school classrooms where everyone was neatly arranged in rows and all sitting there facing forward and looking forward, just like we are 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 are more interactive, we're more engaged, we're more collaborative in the classroom, and they wanted to redesign their platform to do that.

29:53 So they retooled their entire thing using AWS Cloud, 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, 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, transcription, they used a bunch of NLP work with it, 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, these ones not so much.

30:45 And then they also use some really great computer vision to see how people were interacting with the coursework.

30:51 Even just where their mouse was and what the position was, as well as their level of engagement with the students.

30:57 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 What got me thinking about in this talk was, how could we use this in computer science?

31:14 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, 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, like educational data mining at its best.

31:42 - No, they really took it to another level.

31:44 I mean, just their classroom experience is very dynamic.

31:47 So it's almost that Twitch style if you see on the screen here, the instructor is green screened in in just the corner of the screen.

31:55 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, 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 checking into a hotel using the foreign language with him as the receptionist and the student as the guest coming in.

32:20 - That's pretty cool.

32:21 I think there's a lot, a big uptick in a lot of the educational data mining side for the data scientists, and there's been a lot more ability to collect all this big data from these websites.

32:34 We got a slew, tons and tons of data from COVID-19, And I think a lot of people are realizing, wow, we have so much data now, what can we do?

32:44 And that's awesome.

32:45 It's awesome.

32:45 Just changes the dynamics.

32:48 - I haven't been in the education space directly enough lately to know, but obviously, I've seen kids through there and I was in a lot of school myself.

32:57 I feel like there's still probably a lot of opportunities for technology in education to make it smoother and nicer.

33:04 Is that still true?

33:05 - Yeah, 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 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, so you're not in the way and you're still there and you're still engaging and you're still keeping that physical contact.

33:44 I did air quotes there for those people listening.

33:47 I keep forgetting, podcast.

33:48 Physical contact with your students.

33:52 - Yeah, and did you just air quote that we were a podcast?

33:55 - A podcast, too.

33:59 - Can't take her anywhere.

34:02 - Sean, what else was your takeaways from AWS reInvent?

34:05 There were a ton of really great talks there, and I'm catching up on a lot of them that I missed online.

34:12 But really, the main point was that everything is asynchronous, everything is event-driven, and it's pretty much Python all the way down.

34:21 There's lambda functions everywhere, and most people are writing them in Python.

34:25 There's plenty of other options as well, but it seemed like it was the most popular choice for making things happen in the cloud.

34:33 - It looks like a lot of the videos, you know, it's in other sessions are available on demand as well, so.

34:38 - 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 cloud more asynchronous.

34:49 As well as a, I forget the other one I put in, 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:59 So EventBridge on AWS is like a place you can have event-driven code. So one process will finish, it will post an event saying, "Hey, I'm finished," 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. 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 and say, "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, very interesting.

35:38 Nice. 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. So that's amazing.

35:48 Yeah, they had live streams for just about everything. 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 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. It's just money, right?

36:18 Yeah. Well, it's a great example of 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 Sean.

36:38 Yeah.

36:38 do we have any extras?

36:41 let's, I guess, round it out.

36:43 Kelly.

36:43 You want to go first?

36:44 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 edu SIG and it's led by Timothy Wilson.

36:55 And so I actually reached out to them 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:17 There's not much on it from the PSF.

37:19 So I'm hoping to find some more information soon.

37:22 But it's only been out six days.

37:23 So I've got to be patient, I guess.

37:25 (laughing)

37:26 I'm like, go.

37:27 And launch with full five pages of information, please.

37:31 - Yeah, that's excellent.

37:33 - That was cool. - Nice.

37:34 Sean, do you have any extras?

37:36 - I posted a couple of links to those talks at reInvent that I really liked.

37:40 Go check them out.

37:41 They're pretty fun to watch.

37:43 And like Michael said, I think pretty much all of the live streams are out there, certainly of all the keynotes, but it was like dozens of different breakout sessions available now and all of it online for free.

37:53 - Wonderful.

37:54 All right, 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, whether this is a video you're watching with like a code demo and they're like, oh, here, call this API, or here's a link to just quick command shift to 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 this ever, I'm sorry.

38:25 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, you know, hit a button or hotkey, 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:47 I want to just paste them.

38:48 Boom, here you go.

38:49 So there's that, that's a great free one.

38:52 - Nice.

38:54 - 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, just those quick ones.

39:09 - Okay.

39:10 I just had, like I guess, now that I have two teachers and we were talking about how education has changed, I just want to hear if you have a similar experience.

39:19 My daughter is in junior high, eighth grade.

39:23 She was in sixth when they were home the whole year, and they did it all on iPads.

39:32 Now they're back, of course, but they're still using the iPads a lot, and they're even turning a lot of their work in.

39:40 I didn't type when I was in junior high, I was writing stuff.

39:45 some of their writing assignments have to now have to actually be in paper, which is the unusual thing. 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." Do you guys deal with that at all? I feel the same way. I hate writing. I do too. Sean and I would not have a printer in our room. They're like, "Do you have scissors? Do you have a pencil?" I'm like, "What's a pencil? Who uses pencils in this school?" I think it's a it slows down it's for for us for me at least it's inefficient I'd rather type something I can even start typing while kids are up to me looking at me and I can without you know looking at the keyboard and whereas if you're writing you have to stop and well one of the interesting things is the due dates now the due times are not on they're not like 9 p.m. yeah they're admit like midnight or something like that faulted in most learning management systems and and teachers are lazy, just like coders.

40:40 - Okay.

40:41 Interesting.

40:43 All right, well, thanks.

40:44 - Yeah, 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 if the, 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 CRAN.

41:08 But as long as it's not, "Oh, write it because I told you to." >> Or write it so you don't cheat.

41:13 >> Right. 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 typing it out.

41:25 That makes sense to me, but I never appreciated the "Just do it because I said so." >> I'm concerned about the kids' ability to doodle while the teacher's talking though.

41:35 Are we losing that?

41:37 Teachers don't like kids to doodle while they're talking anyways because they're like, "You're not listening." And 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 was 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, think about what's going on.

41:59 How would this look if you were writing something in an editor?

42:03 100%, but actual writing stories.

42:06 I use Grammarly like a tweet.

42:09 Well, I forgot we, we have a, we haven't got to our joke yet.

42:15 So this is, this is true.

42:16 I actually have a really quick follow up now, for people who are like in the digital side, but kind of want this could check out paper, like, which is a screen protector for your iPad that gives it writing on paper feel for the pen.

42:31 that might be nice because still writing on glass is just odd.

42:35 All right, but onto the joke.

42:36 We've got a couple of jokes.

42:38 Marco was picking on me earlier saying, "You use Mastodon, Michael?

42:43 I had no idea." 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." But if I pull them up in incognito window, guess what? You can find them.

42:59 I want to highlight a couple of jokes.

43:01 We talked about recursion like the week before, and Kim VanWijk says, "Given the nature of the joke, "perhaps next week's Python Bytes joke "could just be see last week's Python Bytes joke." (laughing)

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, or ravens, can learn recursion, and so it's just a matter of time before they take over the world.

43:28 - No, they're gonna 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, no.

43:37 - Yeah, the call stack got too deep, sorry.

43:40 - Why did that raven fall over?

43:44 Well, it just went in circles faster and faster until it collapsed.

43:48 All right, then I got another Mastodon sort of follow on joke because, you know, Mastodon is like open source and like independent and not corporate and it's, but it's kind of weird.

43:57 So this person says, timeline of a new Mastodon user.

44:00 Day one, this sucks, 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 here, really nice.

44:13 Day 10, I'm loving the note ads and real conversations.

44:16 Day 15, the workers must seize the production.

44:19 That means a reduction, execute the capitalists, might I add, the billionaires first.

44:24 (laughing)

44:25 "Yeah, maybe I can see people getting a little too intense in this." 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 on day 15 around here.

44:38 Then I saw one of you all put this joke in here as well.

44:42 Someone want to take that one?

44:43 >> Yeah. This is my source for most of my geek humor, which is XKCD, and it's a feature matrix of the various social media platforms.

44:52 On the left side, it's got things like direct messages, group chats, file transfer, built-in games, user run instances, doesn't require 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 the right.

45:07 And on the very right side, everything has like maybe half of the check boxes at most filled in for features.

45:13 But on the very right side, it says the Cybeco wireless handheld computer for teens from the year 2000.

45:18 And it's every single check box.

45:20 It does all of it from 22 years ago.

45:23 (laughing)

45:23 - I love it.

45:24 (laughing)

45:26 - Interesting.

45:26 - We were living in the future and we just didn't know it.

45:30 - Yep, so now there's gonna be a run on Cybeco computers on eBay, you'll never be able to find one now.

45:35 - They'll be like raspberry pies, they'll just be unobtainable.

45:39 - Yeah, that quote, the future is now is not true.

45:41 The future is 22 years ago, you missed it.

45:44 (laughing)

45:45 - You're late, you're in the game.

45:47 - Well, so thanks everybody for coming on the show, it was a lot of fun.

45:53 Thanks, Michael.

45:54 Thank you for having us.

45:55 We always enjoy it.

45:56 - Yeah, thanks for coming, John and Kelly.

Back to show page