Episode 52 Sean Tibor: [00:00:00] hello and welcome to teaching python this is episode 53, developing for mobile the web and desktop with russell keith mcgee my name's Sean Tiber. I'm a coder who teaches. Kelly Schuster-Paredes: [00:00:25] my name's Kelly Schuster printers and I'm a teacher who codes Sean Tibor: [00:00:28] And we've got Russell with us who does a little bit of everything. He's a speaker, he's a developer, he's the founder of the BeAware project. And we're really excited to talk with him this week about how we can help our students learn more about developing for other platforms than just the terminal or the CoLab window. welcome Russell. How are you this morning? Russell Keith-Magee: [00:00:47] I am very well as I was evening for me time-zones being what they are. Thank you very much for having me. Sean Tibor: [00:00:52] before we begin and get into that topic, we're going to start in the same place we always do, which is with the win of the week. And as is our custom, we like to make our guests go first. So Russell, you're up first. What's your word of the week? Russell Keith-Magee: [00:01:03] so I have an interesting pair that are actually BeAware related. and the file of awake then leads into the wind of the week. so about a week ago, it has been Sunday last week. one of the collaborators on the tiger project, is using, Toga in an application at a university in Tel Aviv. And, he has done a bunch of work recently and said, Hey, can you just cut a cut of near release so that we can, we can start using the actual package release. So use that, use these new features in that release. And so I cut the release at all. Oh, well, everything got uploaded and whatnot. And then over the next couple of days, we just started getting these really weird bug reports from people saying this just isn't working on Linux. why is this? Is this era normal? Is it because of the next version? And. After you see one, you write that off as maybe someone's doing something wrong. When you see three people in the space of a day or say the same thing as, or. Good. What did I do? What went on? And it turned out that yes, I had completely filed to package one file. And as a result, a whole sub-directory just didn't exist in the package. So there's my fail. So the, the turnaround is that, related to that is in the process of discovering our crap. All this is going on. We discovered that, the windows version of Toga was leaking memory quite badly. and again, this gentleman from Tel Aviv is, It's lucky who's been working on this for, for a while. I had a very, Hey idea where the problem was pointed him vaguely in the direction. And four hours later, he came back with a patch saying, yeah, I'm pretty sure this has got it and test it and ran it. And, and we were good to go by Wednesday. We had a patch out and the, there was no one was any, there was nothing to see here. This is not the bug you're looking for. Everything's fine. Now. Sean Tibor: [00:02:39] That's wonderful. That's a great, great journey, right? that's what we are always shooting for. Like we find one thing that maybe seems awful at the time, Oh, I can't believe I made that mistake. And you can solve that. And maybe a little bit more too. Russell Keith-Magee: [00:02:52] Yeah. And if nothing else, it's the living proof, Yes. Okay. I've got a PhD in computing and I've been doing this for 20 years and yes, sometimes I do put my legs both into the same leg of the pants and completely screw things up. So. Kelly Schuster-Paredes: [00:03:06] that's, it's always satisfying to hear for us newbies that, people still make huge mistakes and, and survive. Russell Keith-Magee: [00:03:12] the real trick is really just realizing the size and scope of the ways you will screw up. But to realize that you can dig yourself out of that hole. Yeah, there are ways to avoid you never making the same mistake twice. We'll try to avoid the, make the same mistake twice and setting up the processes to make sure those things don't happen again. but you're always going to make mistakes. This is just the nature of the, this thing called computing and programming. So Kelly Schuster-Paredes: [00:03:37] and that's good. That's one of our skills. We always try to teach the kids like. yeah, you're gonna make mistakes, but you will survive and you just have to have faith that you're going to be able to fix those mistakes somehow. Russell Keith-Magee: [00:03:49] Yeah. and more often than not particularly with modern computers, it's very hard to break things so badly that anything actually is done wrong. Like you will break your program. You might cause some little headaches here and there, you might be difficult to recover from, but you can bicycle can always recover. It's just a question of how much backtracking you need to do to get there. Kelly Schuster-Paredes: [00:04:08] Yeah, that's cool. Sean Tibor: [00:04:09] That actually leads into my one of the week. So I had, I mean, I had a lot of fun this week. There were a lot of cool things that I got working and was excited about, but by far the best moment this week was working with a student who came to me. we've been talking, this is my first week with new students. So each night, every nine weeks we have a new set of students who come in and they are. either learning Python for the first time, or it's been a year since they've been doing any sort of coding. So working with them on review and getting them back into the rhythm of coding and figuring things out. And so we spend a lot of time in this first week talking about error messages and getting them really comfortable with it. and not just knowing that these are the error messages, but what do you do next? Like I got this area. Error message. Now what, and I keep reminding them like, look, this is not NASA, right? It's not, we're not launching a rocket. It's not space X. We don't have to worry so much about making mistakes. What we do have to worry about is how do we go about fixing them? And so we spend a lot of time with us during the week and kids are getting the hang of it. if you have a name or 90% of the time, it means you've got a typo or something. And I always explained to them, look, I've been coding for a very long time and doing this. I said, I make mistakes all the time. The goal is not to eliminate mistakes or never have them it's to know what to do when you see them. And so I had this student. Schedule extra help with me. She wanted extra help time. Now, 99 times out of a hundred, whenever a student comes to me and says , I want extra help. It's because they say, I want help with this program, or I'm getting this error and I'm stuck. And they're very specific and focused on the very next obstacle in front of them. This student came to me and said, I want extra help because I want to learn how to handle my errors better. I'm not getting it. And I really want to know what to do when I get these errors so that I don't have to keep coming and asking you for extra help. And I told her, I said, look, I can't believe you've asked me for that because most students just want to help get help fixing the next thing and getting this out of their way. I said, you're trying to learn the general. solution, right? You're trying to figure out what's the broader solution here. I said, I know that this is really hard for you right now. And you're trying to figure out where the quotation marks go and which side of the assignment operator is where the variable should be. I said, but the fact that you're asking me this question suggests to me that you have a very bright future as not just a programmer, but as a problem solver in general and someone who can really, think about. What more needs to happen. So it was really exciting to see. I is probably maybe the second time since I started teaching where I've had a student take that perspective when asking for help. And it was really cool. Russell Keith-Magee: [00:06:46] Yeah, no, that's those stories either. so much of programming is not about. This problem, this era, this specific instance, it's about finding the patterns and finding how is this thing, like all the other things so that I can build the obstruction that can do all those things and a bunch of other things that I haven't thought about. So I'd have fun when you have that moment where it, where someone genuinely seems to get that there is an abstraction here. They need to understand where I a higher concept. They need to understand. I, yeah, I've had those moments and they aren't, they are a lot of fun. Sean Tibor: [00:07:16] Yeah. And I, I said to her, just give me three or four weeks. I said, right now everything is a struggle because it feels like everything is getting in your way. But I said, but give me three or four weeks of consistent effort trying to learn it, figure it out, see that bigger picture. And I said, and you're going to start to be self-sufficient, you'll be able to start coding things yourself and figuring things out. It'll start to click and then you're going to really have some fun. Kelly Schuster-Paredes: [00:07:37] cool. Well, I'm going to follow suit with, Russell and the way he did the fail and the wind together, because that just seemed to flow really well. And mine, Mine this week is a combined thing as well after talking to Allie last week. I got motivated to go into Django, not the Django. Thank you. I'm sorry. Django. So I can say it properly, tutorial and with the Django girls, and I really wanted to do that this week and I had, I was like, yeah, I'm going to go in. And she really motivated me. I started it and I took, Django girls tutorial on terminal and which is fabulous. She is probably one of the best teachers of terminal. I have seen, she explained it in a non-coding way and it was a great, a cup, two different metaphors. So if you haven't checked out her tutorial and I don't know her name, I'll have to look that up. really good. But I got to literally into the. Django installation. And I hit a wall, lack of time, et cetera. So then I jumped to BeAware. So GENCO was my fail so far. I did not do what I want to do, but I've got into BeAware and I was hacking at that for a couple of days. And this morning, finally, I don't know what was going on with terminal. And we'll talk about this later in my issues with terminal. but I finally got. After deleting 20 million, hello, worlds and B where tutorial folders in my finder window, I finally got my app.py up and running and starting to look through what you know, and understanding the. The HTML like, features of BeAware. So I, as a huge win this morning, I tweeted about that it was seven o'clock in the morning and I got the little bee on my dock and it was just like, yeah, I got it. So it was a hard win, but I did it. So thank you. That's mine. Sean Tibor: [00:09:31] well, I guess, I'm last than on the fails list. So, so my fail this week was, really just trying to explain to students how the expectations work in the class. And this is something that's a little bit different than a lot of the other classes that they have. if they're in an English class, a lot of their work is based on, how much did you write? How much did you turn in? How do your eyes ideas connect and that's. True also in computer science in a different way, but I feel like I'm still struggling to set the right expectations at the beginning of the new class, to be able to say, here's what I expect you to do. I'm not expecting you to do everything on time because I know that. It's going to take you longer, but I do expect you to put in consistent effort, right? So it's not the, did it take you an extra day or two it's? Did you spend four days doing nothing and then try to scramble at the last minute that we're trying to solve for? So I know that I'm. Explaining it. And I know I'm making a little bit of progress and making it better each time I explain it, but it's still not getting through, it's still not there yet. And I don't know if it's the way I'm explaining it. If it's the age and circumstances of the children that we're teaching, or if it's something totally different that I just haven't seen yet, but that's my fail that I'm still working on is how do I get. Students to really get how this class is supposed to work and how they're supposed to think about it. So I'll keep working on it. It's not something I have a solution for yet, but, this is that area where, you know, when you talk about, coding is easy, people are hard, right? this is the hard thing with people are, there is no, there's no patch I can release for this. It's just constant iteration and trying to find a new way to do it. Kelly Schuster-Paredes: [00:11:15] But it's funny. It's like we've gone through this shift. So all my wins and my fails earlier in our show about, 50 of them will go. I was all about stuff about teaching and everything. And now look, we've made this, apifany kind of switch in our conversations. I'm like, yeah, Cody. And Sean's Ah, I haven't reached that one child yet. He's definitely a teacher now. Oh, Russell. You'll have to bear with us. Sorry. We have these moments. Russell Keith-Magee: [00:11:44] Oh, no, it's quite all right by. My wife is a teacher and my mother and mother-in-law are both teachers. So I'm been surrounded by education. I know what this is like. Kelly Schuster-Paredes: [00:11:52] Excellent. Well, let's get into this, Sean. I'm excited to talk about it. Sean Tibor: [00:11:55] For me too. So I think one of the things just to set the context for this and why we're excited to speak with you Russell, is that, we were at the, I guess the last pike on us that was live where you spoke about how Python should be in more places, it has some domains where we're very, well-established where things work really well. And there's a very robust and mature, Set of tools and capabilities, but there are other areas that we really don't have a lock on yet. It's really not there yet. And what's interesting to us as teachers is that those areas that are emerging or still new for Python are some of the areas that our students are most interested in, especially in middle school and upper school, our high school students. So for example, I can talk to our students about web, because they've used websites and things like that, but they're more familiar with the front end of it. Or I can talk to them a little bit about data and how to use it, but going into the data science stack of Python with, 11 and 12 year old kids might be a little bit hard to Russell Keith-Magee: [00:13:00] yeah. Or feel a little bit too much like math class tonight. Sean Tibor: [00:13:05] And some kids love that, right? Oh, Russell Keith-Magee: [00:13:06] Yeah. Oh yeah. Sean Tibor: [00:13:07] kids yet. Other kids are like, no, please, anything but that. but what we find is that the areas where they're most interested in their most engaged are the things where they can touch it. They can see it, they can play with it. And for most of our students that tends to be on their phone or on their laptop, not necessarily in. A terminal window or in a Jupiter notebook. So the BeAware project that you founded, starts to address some of those things. And we're very curious about how it works, how it fits together. And we are essentially newbies at this. we started looking at this just a few weeks ago, as we started to gear up for the podcast. And I know that there are a lot of teachers who were probably also thinking about. Where do we go with us? how do I make my examples more relevant? And what we wanted to talk to you about today is how could we potentially use BeAware to bring those more relevant examples to our students of how to use coding and Python specifically to create and implement the ideas that they have. Russell Keith-Magee: [00:14:05] Sure. so yeah, I mean, like is an interesting case, cause there's a couple of converging like my own personal story about how I got involved with this was a couple of converging things. One, I had a startup where I wanted to write a Bible app and I had this sort of thesis about user interfaces that I wanted to play around with and toy around with the baby. But in the process of building it out, it became more and more apparent to me that this was. an existential thing for Python, because a lot of the places where Python has historically had traction and historically being useful, either disappearing or becoming less and less relevant and the things that are emerging, new platforms like iPads and phones and tablets and that sort of thing. and Python doesn't have a story day yet. from the education perspective, that, and you're absolutely right. you can absolutely teach people how to write for loops and print things to the screen and write during evaluate Fibonacci and all that kind of thing. But that's not going to get a student excited about the prospect, I've, I presume it is still true is with middle-school students today. But I even when I was growing up, if you got into programming it's because you wanted to write games. It's you've you play games. Do you wanna, you want to write the games too? And that's what is getting people excited? So unless you can offer a path to that, it's why am I going to bother to learn to program like this? you're showing me this thing where I can print characters on the screen, but that's not what a computer like. Well, I wanna, I want to write fortnight. I wanna write this big game. And okay. Riding Fortnite is probably a bit advanced , from even, you're advanced Weissman, extremely students, but I cast my mind back to like when I was getting into programming in the early eighties, I learned like my first computer was a Commodore Oh, 64. And I learned to program with this series of books, walks from, a publishing house called Osborne. there was, it's a British company and it was a whole series of books that came with titles, write your own computer space games. And the cover would have and fighters and zapping lasers everywhere and everything. And every page was like a full page, double, a double page spread with, some scenario about destroying the. Asteroids that are coming to destroy. The universe are coming to destroy earth or whatever, and they would give you a program listing and it would be, I, 50, 60 line programming list program listing that you would type in the code line by line, and then you play it and you have a game. Now, the game was guessed. The numbers, the game was, something really silly that you could do. that was really simple, but the visualization and the story, they wave around the outside of that. Was enough to capture your interest. Now this is also in like early eighties. So the technology actually wasn't up to doing a whole lot anyway, but cast the thing forward 30 years, one as board has actually now open-sourced all of those books. You can get those books and get the original listings and search through them as PDFs. And I've got a little side project where I've trying to resurrect those for, my own, my own sank of memories and turn them into Python that you can run, but more broadly. That kind of thing, but for the modern era is the piece that's missing. Like you need to be able to say, yeah, you're are going to sit down on this class and yes, it's going to be hard. You're just going to be difficult. But at the end of this term, you're going to have an app on your phone, running on your phone and you're going to be able to push buttons and it might not be, it's not going to be fortnight, but it will be. A game of some kind or some form of, data gathering thing that we'll respond to, use the geo location in your phone to work out where you are in the school or something like that. You can give them that idea. You can give them that kernel and they can build that thing themselves and have it on their device, that phone that they are attached to it, 24 seven, and then take it home and show their grandparents and share their mum and dad. And. And build that excitement through real experiences with the technology that they are using on a day-to-day basis and transform this phone from being this thing that just, I spend all my life looking at social media to being a device that I can control a device that I can make do what I wanted to do, which is what the promise of computers has always been. Python is really well positioned as a language to do that kind of thing, because it is a good language for teaching it. It doesn't have all the stray, punctuation, everything, it has a good pedigree as a teaching language. The piece that's missing is being able to do that on a phone, being able to do that on a tablet. And so part of what beware is trying to do is to provide the tools to. The app that will run on the phone and the tools to make it easy to get from. I'm sitting at my laptop. I needed to be on my phone to get that, that stuff running. So, so that you can then build on that over time and, potentially build lessons in classes, around, writing the game that is going to get someone excited, for that next, enter didn't take it further and further learn another language or do whatever else they want to do. Sean Tibor: [00:19:08] It's interesting to me too, that the, the components of that story, the pieces that you're talking about, the context that was given to the program, the ability to take that game and go show it to someone else. Those are all the things that don't necessarily relate to it. Being a game. we see that with, the circuit Python and micro Python, implementations, right? What students really seem to get excited about. And at least in my experience, and I think Kelly, you have seen this also is the ability to say I made this thing that I'm excited about because it's tangible, it's physical. I can see it. I can interact with it, whether that's hardware or whatever. And most importantly, I can go show it to someone. I can go take it and say, grandma, look at this thing that I made and she can go, Oh, that's so amazing. look, you're such a coder, and she can see it and understand it. Whereas sometimes that's hard to do when you're doing everything in a Jupiter notebook or you're doing it on a terminal. the person you're showing it to has none of that shared context. Whereas, with circuit Python, they can see that you made this gizmo widget thing that moves around and it does stuff and it has sensors and everything. They can get that and understand it. And it makes that much more accessible and real, I think for the student. Kelly Schuster-Paredes: [00:20:20] Yep. And the funny thing is, and this is a fun fact that I don't think Sean knows, but when I was in Peru, I taught a 10th grade class and it was a design technology class. And, I've dabbled in a lot of coding and the class was a to design an app. it was an eight week unit on here. We're going to design an app and I would list out the ways that you can design an app on your phone. here was a PowerPoint that you could load in a browser on your phone that would look like an app and simulate an app, but it was running on a browser. and we're in Peru where the wifi is really garbage. I was going to say a bad word, but we can't. This is like a middle school thing. And I had excode as well. And I told them, listen, I'll pay for the $99 developer fee for you guys, because we were in a wealthy school and you guys can do X code. And I was in there playing around with X code, trying to do the template version. Cause I guess I, if I remember correctly and this is about. eight years ago where you could do the template version. And it would also view on your phone a little bit if, I guess if you opened it. So we had a lot of kids doing that. And then when I saw beware, it was like, Oh my God X code. That was the year that I faked knowing what I know I was. but that ability, even when we were doing the PowerPoint template on the browser, that ability the kids were so excited. To show people here's my app. And it was like, here's a map of the school. Here's where I order food. Or here's just my little silly pictures that I've drawn. And you're going to go through this app. I think that really hits home for a lot of our kids. It's a great opportunity to talk about that digital citizenship, where they're not just these consumers, these suckers of tick-tock and Instagram. And they're just not sucking in this information from their phone. They're actually making the stuff on their phone and their devices. And that's one of the reasons why I'm looking at this going, I'm going to do this one. This is my diehard. I'm going to get this thing going. Cause I think that's a great opportunity for the kids to see. Russell Keith-Magee: [00:22:21] I couldn't agree more. And that the sort of the extension of that is once you have got that, I know the basic tools I can build the app that has the map and the data entry and whatnot. When that percolates, it becomes just the set of things that I know I can, this is not something I can do with my phone. It's an, it's a new set of tools. You then start looking at the world as which problems can I solve. with those tools. And there are so many, like we there's a computing, entrepreneur people. We just start talking about the long tail where there is. Yeah, there is this set of apps that is installed by everywhere. Everybody has Microsoft word on the economy, a computer, but there is this long tail of apps that are used by exactly five people. But those five people, it will transform their lives. And. If you can be the person that makes that app, that makes those five people's lives better. I have had the, I've done that a couple of times where someone says, Oh God, it's just so annoying that I've got to do this. And you realize, I could make that problem go away in half an hour. I just did it. Here you go. I had a startup a couple of years ago. And like it all basically started with, we had this grand idea for an app that we were going to build. And we got in front of an actual plumber who we were trying to sell this thing to, and he said, no interest in that whatsoever. You can make that pile of paper, go away. I'll give you as much money as you want. and what it basically came down to is they were being mailed PDFs. Like hundreds of PDFs a day. And for co we had contractual reasons they needed to open the open, the PDF, print the PDF, and then, they have a physical copy of everything they received. And there was a girl in the front office whose job for three hours a day was open email, print, PDF, open email, print, PDF, open email, print PDF. And I, we basically were able to replace that job with push one button, a 300 page print job comes out the other side. And she could get on and start doing other things that needed to be done in the business. It was like half a day's work for me to put that script together. It completely changed the way the business operates and it gave this particular a woman chance to fend herself in the business. And a couple of years later she was running payroll and doing all this other stuff because she now had the time in her day to do things, to improve the business. But unless you look at the computer and you look at the tools you've got as. Tools that you can use to solve problems. it's not just, I can see it's not just a TV. I can push it is a hammer. It is, it's a saw it's, a set of tools I could use to build things until you make that mental transition. It is just a TV. You can push Kelly Schuster-Paredes: [00:24:57] And that's the thing. That's the mental transition. I think. and I love these conversations that we have on our podcasts. And I like going back and rewriting down these ideas, but that's a skill that we S we kind of skirt around in our classroom. at least I do, but not specifically teach as a, as a teacher, you need to specifically teach to them that yes, it is a tool. And you can make things easier. Sean always tells me, you know, you can automate that. I'm like, I know, but command sees so much easier for me and I don't have to think about it. I know we could use Python, but that's going to take me a day and a half and I'll be done with this in 45 minutes. But I don't think I teach that well to the kids. Literally, this is a tool that a could save someone's life, do wonders for somebody improve somebodies S something around the world. And we've got to take that as teachers and teach them the digital citizenship behind programming, why it's so beneficial for the rest of the world. So it's a huge task. my coffee morning light. So. Sean Tibor: [00:26:04] think that where we also think about our larger purpose at teaching computer science at this age specifically, right? So we are looking at this, not in terms of creating a whole set of software developers in the future, Or, people who go into a software engineering career path. What we're looking to do is create doctors who look at. processes and systems and problems and say, Oh, I bet we could use code to solve that right now. They may go hire someone to do it, but at least having that mindset that says it doesn't have to be this way. It doesn't have to be this manual or this arduous or whatever. I can make this person's life better, or I can solve this problem or whatever. Those are the things we want them to start thinking about now. And it is something that they have to practice and learn. I think, to be able to really develop that over time. Russell Keith-Magee: [00:26:52] Yeah, no, I couldn't agree more. Kelly Schuster-Paredes: [00:26:54] can I make a switch real quick? Cause it's been, it's been one of these things I've been wanting to ask all week, but why terminal? Why do we have to use terminal? If I'm going to bring this to the kids? I was telling Sean, he's it's really simple once you know how to use it. And I'm like, but I can go into the finder window and make Sean Tibor: [00:27:13] I did not say it's really simple when you didn't know how to use it. I said in Kelly Schuster-Paredes: [00:27:16] Oh, and co. Sean Tibor: [00:27:17] was dying for six months trying to figure it out. Russell Keith-Magee: [00:27:21] And if we had to learn this way, then soda you debit. Kelly Schuster-Paredes: [00:27:24] But I had to go into the finder window and find all those files and delete them that I installed because I had, like I said, five or six BeAware, folders, a couple of hello, world folders. And for me, trying to go in and remember CD LS, make directory. I was like, why terminal? Russell Keith-Magee: [00:27:44] Yeah. that is a very good question. And there's actually a book you might want to hunt down. I might even be available as an online at this point by Neal Stephenson called in the beginning was the command line. And it is essentially a, almost an answer to that question. It's it's a, not a big book, but it's it's a long essay, really long essay talking about, How we got to this place, like what is a command line? Why does it exist? And how does it compare to the Mac OS the windows, the, why are these systems like the way they are, what problems were they trying to solve? And, I won't spoil it, but there's there is part of the reason that it is done that way is because of heritage, because it is. That was the way it was done in Unix systems in the 1970s. And for all of the advancements in technology, we are really still using exactly the same tools we were using in the 1970s. They're just some other, I've got pretty, a front ends on now. that said there is no reason we can't put a prettier front end on them. and interestingly, this is actually one of the, to the, to convergent, like the thesis that I originally had when I was going into BeAware, was what I wanted to do. Was have a rich graphical debugger for pilot. so when I was learning to program, what was I getting serious about learning to program? I looked on a series of tools by a company called Boland and they were famous for having a really good compiler and a really good debugging environment. And it was still terminal. there was the graphic user interface. It was all 80 by 25, but inside that terminal window. It was a gooey, they were windows and scroll bars and, things you would identify as being a graphical user interface. It was just being rendered. it was really easy to see this is the line of code that you're working in because it's highlighted in red. as you work down the line as a work down the line of code and. That was great. And then I advanced a little bit further and you end up writing in C and whatever writing, even in Python, you are using, you try to debug it path and you end up with PDB or GDB, the goody bugger, or the pilot debugger and their terminal tools. Like you see one line of context of time, you type of command, and it shows you the next line of context. And it's very powerful. But not very visual, not very easy to comprehend what's going on. Or I had this thesis that I have a very expensive laptop here with a 4k screen. Why the hell can't you show me the entire code file that I'm working on wildlife debugging it. And I've got, word and I've got X code. I've got all these tools that show me that I can do this. So why can't I do that with pricing? But there is power in what, like the whole Unix philosophy is by building tools that do one thing and do one thing well, and okay, you're at the stage where you know, this LS and is envy and the CP, and there's all these little to two letter commands that you've got to know. The real power of Unix is that each of those commands you can pipe one into the next. And you can show me all the files, then sort them then find all the names that are unique. And they give me a count of how many lines there are. And rather than have a pull down, this is how many, how many files are there in this directory. You compose together these little pieces until you answered the question you want to solve, or the question that you've actually got. Part of what I was trying to do with BeAware is say that philosophy of built little tools that do one thing really well and make them plug together well. And then, the infinite diversity that comes from plugging those pieces together is a useful concept. But that doesn't mean that they have to be text-based tools. You can put a graphical user interface or the front of that to control how all the pipes are moving and how all the pieces are interacting together. And so that was the reason be where usually happened. One of the reasons people originally happened was that I to do that, but I couldn't find an easy to use graphical toolkit that would just work out of the box where you could just say PIP, install my debugger and it would work now. That was about six or seven years ago. And I've got just a little bit distracted alone away, but I do want to get back to that point of being able to like actually build graphical tools. One of the, one of the items on my wishlist anywhere is actually to build a graphical front end for the process of doing the tutorial so that you can say right startup, not a whole IDE, but just a launchpad. So that you can say, create, and it gives you a form where you fill in the details. You've got to fill it on the form. He's go and it gives you a location. You can click on and say, now build it now, run it. And that's not a complicated piece of programming to do. it's not a complex idea, but you can wrap it up as a nice little gooey that you can give to a student and say, click on that. And they press that button answer these three questions at, Hey, look, you're running an app. And they don't have to learn the convoluted two letter commands to get things going. It may be beneficial for them to learn them at some point in the future. what I really go forward, but they don't have to learn. I mean, effectively yet another programming language, which is what you're getting at the terminal for all intensive purposes. just so that they can get into the other programming language that you're forcibly forcing them to learn to write. so yeah, that's. Kelly Schuster-Paredes: [00:32:58] It's funny the whole time. Like I keep thinking of Nick and his mood editor, and I keep visualizing this whole thing that you were saying and be where, how I saw it running in there. And. And even though I've been coding now almost three years, every time I go to visual studio code and I try to do a tutorial, or I even tried pie charm, I always go back to either CoLab notebook or mood to run code because it's such a user-friendly beginner. And I don't have to worry in that folder and wherever that is and find it. And so as you're talking, I keep, I kept saying, Oh yeah, that would be cool. here's my web address where I want, here's my email. Here's my person. As you're running the BeAware. Yeah. I'm for that, I'm waiting for, Russell Keith-Magee: [00:33:41] It's Kelly Schuster-Paredes: [00:33:42] I will have all my stuff. Six and seventh graders building apps. Did you bring me a pretty little package? We're on it. That's a promise. Russell Keith-Magee: [00:33:50] Yeah. And yeah, Nick me is, I've had he's a good friend. I checked with him. Semi-regularly. About what we're working on and where we can go with it and whatnot. And yeah, the first time I spoke to him about mew and the pitch that he had about this idea of here is an editor. You write some code in the editor and you ship the app to your device, or wherever it runs. And you see that guardian, yay. This isn't a great, but then you go and you peel the thing back and you say, Hey, this editor you're using, it's written in Python. And you can edit the editor and make the editor do more things that is like from a programming perspective, is that's it that's exactly what you want to blow kids' minds that you can make this editor have a save as command where it didn't previously have one using the same language that you were using to ship to this other device, because it's all just code and you can all just try it, transform it. And, that's. That's one of those sort of transformative experiences that I can see being really powerful as a teaching tool to really break that mold. We're talking about earlier about that this is a tool and the tool is designed to be modified, but the tool is itself a tool that can be used and edited with the tool. And yeah, Kelly Schuster-Paredes: [00:35:00] so is it sorry, Sean. I'm so sorry. I got really excited this morning. So is his Toga is Toga Python or is that another language? What is or a library or what? Russell Keith-Magee: [00:35:12] Okay. So beware itself, there's a whole bunch of things under the BeAware umbrella. B will be where it's the Gavi governing project of a bunch of little things, all of which work well together. so Toga is the graphics toolkit. So it's the part that says, I want to put a window on the screen on the window. I want a button. And when I press the button, I want, a dialog box to pop up Kelly Schuster-Paredes: [00:35:31] so, so sorry. That's like the TK inter version. Russell Keith-Magee: [00:35:35] Yep. It is effectively TK into, TK into, but maintained, looking like a modern app and also working on mobile. so like originally I started with TK into, because it was just there in Python and it was a convenient thing to have a TK. It doesn't have a web browser. and that's, there's only so far, you can go when you can't display web content. These days you've gotta be able to do it. And I hunted around the workout. How hard would it be to add a web browser to TK into? And the answer is a lot harder than you think it would be. so it was easier to build my own tool kits than it was to try and get a web browser into, and then as an added bonus ticket and it doesn't work on mobile. So I, this was an opportunity to say I can, let's get it up, working on iOS and Android as well. yeah, so, so Toga and TK into I in that similar sort of space. Kelly Schuster-Paredes: [00:36:18] mix of HTML, CSS kind of idea, or, okay. Russell Keith-Magee: [00:36:22] Well, so there's the CSS and HTML is really just for it's a useful way of describing how things fit together. you build. It's a way of describing, it is easy to explain to someone how this HTML pages that I'm looking at. Like here is a rendered page and here is some HTML and you can say there are boxes and all the little boxes fit inside boxes. That's conceptually an easy model to explain. So let's steal that. And if someone's going to, if we're going to teach someone how to do HTML, because these days, if you're teaching someone, teaching kids, teaching anyone, how to program. They're going to need to learn how to do HTML at some point. Cause it's just an unavoidable skill. And that means they're going to learn about CSS at some point. So let's try and reuse those skills as much as possible. And just use this idea that, yeah. Okay. So on a web page, you're putting a , which is your heading and underneath that you're putting a P which is a paragraph, and then you're making the style to be font, whatever, and color, whatever. Take those it's not called H one anymore. It's called a label and it's not called a paragraph anymore. It's called a text box, but the S the ideas are laid out executive sign. And so there's a transferability of skills or knowledge between those various pieces. and so, yeah, that's the Toga is a. 2015. And at this point, a version of let's build a graphical toolkit that is pathetic, it fits naturally into, by it. And a lot of the problems with the are a lot of the toolkits that are available in Python, Python, wrappers around C plus, or Python, wrappers around some of the language. And, I know C plus, and I can see where the C plus is leaking out. your, the way that they refer to things, the way that they build things, the way that pieces interact together are not the Python way of doing things. so this was an opportunity to start from scratch, build a Python graphical user interface, toolkit that has all the lessons that we've learned through, 30 odd years of building things on the web. And what have you there? so that's Toga. The other big piece that you'll come across is briefcase and briefcase is really solving the problem of, okay, I've written this app, it's got a window. How do I give it to someone else? Which is historically a problem that Python has been really bad at. you can't like there as an is used. It is people are using it to give to others, give code to other people or whatnot, but. The I, my experience of every other app in the world is not PIP install. It's going to an app store, it's download a zip file or DMG from a website somewhere and you double click on it and I can peers and I drag it into my applications folder. And that's how I started. How do I do that with Plaza? And historically we haven't had an onset. And that's what briefcase is basically trying to do is to say, I have written my game. I have written my walk around the school app. How do I give that to someone else? How do I wrap that up so that I can just say here is the DMG four, visit my school has an app, give that to them and it will just work. And that person doesn't need to care that it's written in Python because you just you don't care. That word is written in C sharp. You don't have to care that this app is written in whatever language is in, it just runs. And that becomes increasingly important with things like mobile, because in mobile, you can't install a Python interpreter on your phone because that's not how phones work. Everything on an app is on a phone is sandbox. So you've got to have a way of packaging up everything into an app that you can put on your phone. Kelly Schuster-Paredes: [00:39:50] So when you do briefcase and you package it up, you put it up into, and I'm thinking through just the tutorial of B, where it goes up where, and so Python anywhere, and then you run or where does it go? Like how do you get your briefcase package out to your Russell Keith-Magee: [00:40:06] out to your point, so, okay. So in the case of what, so, okay. it depends on what platform you're on and what platform you're targeting. So if you're on, say, let's say Mac OS, for example, and you're depending you're building a Mac app, you briefcase create, creates the end of the stub. you go and you put your application code in there. It's like briefcase build compiles, that briefcase run, and you can see the app running, you say briefcase package, and it turns it into a DMG file. So it turns it into a disk image, which is, so the build process turns it into a.app. The DNG puts that app into a disc image and that disc images like the way that you would normally see an app being distributed. if you put it onto a, a download site, something like that, we haven't gone through the process of actually doing this because there's a whole bunch of code signing and notarization stuff that you have to do, but at least in principle, you could take that.app file and upload it into the Mac OS app store. And then anyone else just go was to the app store and deadlines the app on it and off it goes. Kelly Schuster-Paredes: [00:41:03] and that's where X code comes in or Russell Keith-Magee: [00:41:05] So for Mac OS yeah, for Mac OS. You don't actually need X code at all. So Mac OS is just a collection of like folders laid out in a particular way. You do need it for the code signing, but that's a different thing. But when you get to the phone, Everything on your phone. Like the reason there is an app store and you can't just install, download an app onto your phone is because everything is secured and locked down and tied to developer accounts and whatnot. And for that, you need to have X code and to get the phone, get the code running on your phone. There is a little tiny little piece of objective C that needs to run that says start the pilot interpreter and briefcase. When you say briefcase create POS. So you create your iOS app. It creates that stub populates the stub. Cause it's just, it's a template. Basically. It says, this is the name of the app. Go over there to run it. it generates that stub. It generates that template. It generates the X code project around the outside of it. That can be that knows or how to package everything together. It downloads a pre-compiled version of Python that will run on your phone. We'll just apply for the libraries that will work running your phone, and it compiles it into the IPA bundle that can then be installed on your phone. And because. the X code has the developer link to your phone. It then knows how to use X code to ship this app to the phone so that it can then run. And then when you get finally publishing it and you go in through X code, you say, no, I want to package this for distribution, sign it for distribution centers to the app store. And then you wait for Apple, do the thing and put it in the, in the app store for distribution. Sean Tibor: [00:42:37] So if we use like a real-world example of this, So if I'm not mistaken, the mew editor does use briefcase to package, Russell Keith-Magee: [00:42:44] on that cross, you said where this they're, they're only on macros at the moment, but they're we've we were talking to them. So we're trying to do what we can. Sean Tibor: [00:42:51] So in theory, with this, what we could do is, we have briefcase working for Marcos. We can ship Mac iOS versions of new using that. I'm sure there are modifications that are necessary, but in theory, you'd be able to say, okay, now take this same code base, package it and build it for iOS and ship it. And now it's running on my iPad Russell Keith-Magee: [00:43:13] Yes. And yeah. And that is actually, is already possible. So they're actually, you don't need to make. You don't even need to make any changes to the app because Toga, if you're building it with tiger anyway, Toga is already cross-platform and there is a set of backend. Like when I say I want a button on Mac OS, it's an S button using objective CD into the next step libraries or the Coco libraries and on iOS it's UI button using the app kit libraries that provides. But as an end user, you just say, I want a Toga dot button. And when someone presses by Togo dot button, I want it to say hello world. And that gets connected up. So as if you written your app in Toga, you can then briefcase package it for Mac OS brief as package it for iOS, for Android, for windows. And it spits out as an MSI file. It can be installed for Linux. It spits out an app image that will just run as long as you've got a relatively modern version of Linux. and yeah, the goal is you write this code once and didn't. Package it for the deployment, the platform you wanted to run on and what you get is the installer or bundle or app or whatever the, that platforms concept of a distributable thing is. Kelly Schuster-Paredes: [00:44:18] Yeah, I cause I was sitting there going, Oh my God. And then we have the 10 kids that have windows. I'm like, there's gotta be the mode button on B. Where are you working in? O S are you I'm just sitting there going, okay. I might learn this for Apple or whatever back Sean Tibor: [00:44:34] but I Russell Keith-Magee: [00:44:34] Yeah, no. Sean Tibor: [00:44:35] though, in the education environment, the fact that we can teach them a very similar tutorial and then say, okay, now Mac users package it for Mac windows, users package it for windows, and now you can both run your code and it just works. And if you want to, Russell Keith-Magee: [00:44:49] Yeah. Sean Tibor: [00:44:49] you can, you cross compile. So windows users now make something for the Mac users and send it over Russell Keith-Magee: [00:44:53] So, yeah, so you can definitely write the app that way so I could write the app. And then share the code with you. And then you'd I've written it on windows. I could give what you give you my code and then your code would then run on if you're running backups, you could then go build you get it from that class, unfortunately, because the tools are also plastic platform dependent. You can't build a windows package on macros, at least not easily. And we haven't done the legwork to make that possible. Interestingly Mac OS you can, but that's only because of an accident, but a Mac OS app is actually just a directory that's enabled in a known format. So you can, you don't even need to have tools to do that. You can just make directories. And as long as you've got the right directory structure, Mac OS will think it is. He's an app. fun fact about the internals of how Mac OS apps work. so. That is the only platform for which that is true on every other platform. Like you've got to have Android studio in order to compile an Android app. You have to have X code in order to compile for an app for iOS, just because that is the only way you're getting those tools. so that is that part of it, packaging it for someone else's problem. But the app itself be where apps are cross-platform if you build the app and it runs. CSA asterisk needs to this. If you build it and it runs on Mac OS, the same app will run on windows, the same app, or run on Linux. And with the modifications that like the understanding that you don't have multiple windows on a phone, as long as you're not using that capability, the sort of subset of APIs that work on mobile will work the same on iOS and Android. Now I did put a little asterisk on that. The Astros case beware like the Toga is version 0.3. That is the light. Like it's not production ready throw this in front of your fourth graders. And they're going to be out of here mobile phone app yet. We're still a little bit away from that being completely true, but we want to get there. and it is sure enough that I would feel reasonably confident giving it to, talented middle, upper middle grade, middle school, kind of college students. I think they could probably work through the tutorial and like they would get the Fahrenheit associates converter or whatever, coming out the other end. Kelly Schuster-Paredes: [00:47:05] Well, we'll see I'm working on it. I ha I had, because, we tell the kids where we do a lot of code challenges with, pie bites for those kids and they're working on the newbies. And, I always tell them, you have to read the newbie bite three times first time. Okay. You read it. If you can get the code super move on, you can't get it. Second time you read it. You can't do it third time. Read it out loud. As I was hacking through BeAware this week, I'm in the, some in my lunchtime or whatever planning periods, don't tell anyone. And this morning I was like, okay, screw this. I'm going to do my third time, read it out loud. So it is something where newbies have to stop and reread because you skim, you see that little box just type. So it Russell Keith-Magee: [00:47:49] no. It's and it's not just newbies. This is the thing that keeps hitting me again. and again, if you are sitting there looking at this bug and it makes no sense, and it just keeps crashing and I don't understand it. no. Read what the message actually says. Read the actual error message it's actually giving you, because it is telling you that you've typed this variable name wrong, and you're just misreading it every time you look at the error message or whatever. So this is not just a newbie problem. Sean Tibor: [00:48:13] well, and I saw a great t-shirt this week that I think we might have to get for, for Kelly. It's the, the old, explain it to a rubber duck, exercise. there's a, t-shirt that one of our fellow teachers on the, on Twitter made that is, Back of the t-shirt has a giant yellow duck on it. And it says I've got your back and behind it is all of the programming. yes, I think it really does. It really does make a difference, no matter how complex the subject is that you're trying to learn a, the tutorial that you're trying to follow. The simple act of reading it out loud or trying to explain it to someone else. Really makes a big difference. And I'm very blessed to have a very patient wife who listens to all my explanations and smiles and nods and says, yeah, that sounds really challenging. I hope you figure it out. Yeah. Kelly Schuster-Paredes: [00:48:58] Okay. That's a lot of things that we have in common with, his wife and I'm like, yeah, sure. I listened to Sean Tibor: [00:49:05] so where did here's get started? So we've talked a lot about the tutorial, right? And we've talked a lot about, different aspects of this, but if someone wanted to start learning this or wanted to start teaching it, should they start with the tutorial? Are there things that they need to know before they get started with that? what's your recommendation for how we can start using this in an education context? Russell Keith-Magee: [00:49:27] So the first one I'd put on that is I don't want to mislead anyone. This is still very early stage software. There are a lot of missing pieces. There are a lot of sharp edges. Be prepared to put on some very sturdy gloves and sometimes you will hit a problem. And the problem isn't you, the problem is that the code is actually broken, particularly if you download it early this week and it wasn't working on Linux. so you know, that is the first preface I want to put on that, but beyond that, Part of the reason or part of the problem with it being so early stages, like the tutorial is we, the best piece of documentation that we have at present? we desperately want to get more documentation. We do want to write more documentation. It's just time and resources. And where do we put the time into, writing up more documentation for something that's incomplete or do we make it complete first and then run the documentation? And, there's Perpetual thing. We, I have put a lot of work into the tutorial just to try and make it as Bulletproof as possible. So if anyone, if you do come across, when you do hit problems or misunderstandings or confusions or whatever, please let us know. Cause that's, that is that is one that I do want to really nail down. but yeah, that probably is the place to start. if you look at the tutorial, work through the tutorial, see what is there. And then take a poke around the, what pieces of documentation we do have for Toga, for what else you might be able to do. I'm definitely interested in speaking to anybody who is doing this in an education context though, because this is one of the areas that I see that'd be where has this potential? it is unlikely that someone is going to build the next tick tock using Toga and briefcase. Just because when you are like cross-platform tools instead there's, whenever you put in an abstraction, you lose a little bit of fidelity and there is an obstruction in place here. That's working across multiple platforms and across mobile and on desktop. So you are losing enough fidelity that I'm at least for the short term. I wouldn't expect people to be turning out commercial apps like wide, right? Like wide, audience, commercial apps in Python. Any time soon. However, scale that back scale back your expectations and just write apps that have buttons and inputs and, the basic stuff that you needed to have. That's all very plausible. And one of the big audiences for writing that is an education. So, you don't need it to be all singing, all dancing, animations, and all the rest of it. You just need to be able to show the kids that they can put. A button on a phone that they can press, which will make a fart noise when they press the button. Kelly Schuster-Paredes: [00:51:54] Yeah. So if I can put a wishlist besides the pretty little button thing that you're going to make eventually, the video for me, it's still trying to process, The visual idea of, I make it on my computer and poof, it's on my phone. I've see, like this tutorial, video graphic thing for kids, sixth graders here. It is here, you're coding. And I don't know if you have any friends like that who can make it. But that's where I think, for me as a new teacher of coding, Is the hardest thing to find is some sort of little bit of informational video that puts the image in the kid's mind Russell Keith-Magee: [00:52:32] visualizing the context of Kelly Schuster-Paredes: [00:52:33] this is what's going to happen. Russell Keith-Magee: [00:52:35] this is the magic of, okay. Kelly Schuster-Paredes: [00:52:37] So I always think that I searched all the time for some good videos and I wish I had the time to make my own videos or even the, I think Paul Craven has done that with his book on Python arcade and he's visualized his book, to an extent yeah. And that's what I keep thinking is one of the things that kills the newbies is we can't see it. I don't know how this magic happens. It's like a leap of faith when I'm typing in terminal that something's happening or when I'm coding something's happening. But once somebody gives me a picture of here, Russell Keith-Magee: [00:53:08] Yeah, we're gonna, we're going take the thing from here and put it over there. And Kelly Schuster-Paredes: [00:53:11] Think Jurassic park. Yeah. Think Jurassic park. When he talks about the DNA, that one part where the little guy's like here's our DNA and we wrapped it into a that's what I need. That's sixth graders, seventh graders, eighth graders need. So find somebody out there in the world who can do that. Russell Keith-Magee: [00:53:27] Well, and that's related to through this, is it. If anybody out there does be where he's at from primarily volunteer project, we did get some very helpful funding from the PSF to get our Android support, up and running again just recently, but by and lodge it's volunteers working on volunteer time. You might think that the most useful skills or program is, but more often than not the useful, what skills are the ones that we can't like, the things that program has come through, it's the documentation, it's the art, it's the graphic design. So if there is someone out there who is a budding artist, budding animator, budding, cartoonist, whatever. And we'd like a little bit of a project to play around with, to do that kind of visualization. We'd love to have a chat. Sorry, come and chat. And we can, we've got projects. We can give you things to do. We just need to know someone out there wants to play around this space. Kelly Schuster-Paredes: [00:54:13] Very cool. Sean Tibor: [00:54:14] excellent. So I guess the short version is contributors are always welcomed, no matter what they're contributing or how any help is Russell Keith-Magee: [00:54:22] Absolutely. And, I would hold it up to camera right now, although this is a visual podcast audio podcast, but I'm one of the artifacts of the b-boy project is that we have these challenge coins, which unfortunately, because I'm packing my office to move. I haven't got it on my desk and I normally would, The little, a little one and a half inch, challenge coins, which we give out to, at sprints for anyone who gets involved, who contributes to the project. And, we've given out a couple of, hundred of those at this point. Kelly Schuster-Paredes: [00:54:49] in the show notes. I saw them. it's a great picture. So Sean Tibor: [00:54:52] Excellent. Well, Russell, we know that it's getting later on your side and still early on our side, but, we really want to thank you for joining us and talking to us a little bit about being. Where it's something that, has sparked some ideas for me in terms of how we can work with our students, to learn more about things that are interesting to them. And I really do think that there's a nice fit here, walking home after school and showing your parents, Hey, I made this Celsius to Fahrenheit. Converter is a pretty cool experience for any budding programmer and to be able to do that on their phone. I think it would be really exciting. So we're really thrilled about the potential here. and we'll start playing with it more in our classes and be in touch with what's working and what maybe needs a little bit of help. but we do want to thank you for joining us and chatting with us about this today. It's been really enlightening and a lot of fun to talk with you. Russell Keith-Magee: [00:55:42] It's been my absolute pleasure. Thanks for having me and yeah. any feedback you've got, particularly if it's coming from the trenches of being thrown in front of real live students who have failed all the live wise that we've accidentally left in place. Anything you give any sort of feedback or, or report would be gratefully received. Kelly Schuster-Paredes: [00:55:58] I have a sixth grader in mind who came in and said, I already know a lot of Python. I'm like, perfect. I'm going to try it. I'm going to, you want to bother me and tell me, you already know this stuff. I got you be aware. You try it. Sean Tibor: [00:56:11] You don't same student. That's going to tell you in about a week and a half, I don't understand why you have so many problems with using the command line bus parade, us really easy, Kelly Schuster-Paredes: [00:56:19] I know. I know. I'm setting myself up for failure, but Hey, it's okay. I can handle it. Sean Tibor: [00:56:23] If you'd like to continue the conversation with us, you can always chat with us on Twitter. At teaching Python. Kelly is at Kelly Perez on Twitter. I'm at SM Tibor on Twitter. I'm also on ADA fruit IO, like sharing data out to everyone. So I will put the link to that in the show notes as well. You can send us your feedback and comments on our form@teachingpython.fm on the web. and again, one last thing we'd like to thank our Patrion supporters. We don't thank them enough. The work that you do, the contributions you make to ensure that this podcast can keep happening every week, is really, really meaningful to us. And we appreciate it. some of the things that we've been able to do as a result of that is we've been able to have blog weeks. So really trying to get more content out there regularly and your Patrion support is helping make that happen. So thank you very much for that. thank you to our guest Russell, Keith McGee from BeAware. And you can find more information about the beware project@beaware.org. we will talk to you next week. So for teaching Python, this is Sean. Kelly Schuster-Paredes: [00:57:19] and this is Kelly signing off.