Episode 27: Automate the Boring Teaching Stuff Sean: [00:00:19] Hello and welcome to Teaching Python. My name is Sean Tibor. I am a coder who recently began teaching. Kelly: [00:00:24] And my name is Kelly Schuster-Paredes and I'm a teacher who recently began coding. Sean: [00:00:29] Welcome to episode 27. This episode is called Automate the Boring Teaching Stuff, inspired by the I guess now classic Al Swigart book, Automate the Boring Stuff, which so many people have used to learn Python for the first time. We're going to take a little bit of a detour this week away from the direct instruction and away from the teaching techniques and we're going to talk about how we can use Python to automate some of the more tedious repetitive tasks that come along with the job of teaching. Kelly: [00:00:57] And it's a great topic. As teachers, we don't like to highlight all the negative and repetitive things that we have. But you know, it's something that it does come with our job and I think Python can do a great job with helping it. Sean: [00:01:08] We're going to talk through that. We've got some examples to share with you. We've got some techniques. We've got some things to look for in terms of identifying those things that could be automated. But before we start all of that we're going to start at the same place we always do each week, which is one of my favorite places is start and that's the win of the week. Wins of the Week [00:01:24] So something inside or outside of the classroom something positive that's occurred that you want to share with everybody Kelly and you're making you go first. Kelly: [00:01:33] So, please please share. He's making me go first and trying to give me time to think about it. Yes, so I started teaching sixth grade this year for the first time and. So that's why I guess you were give me a lot of time to do once a week. No, I'm just kidding. So these are so these are 10 year olds and at their an interesting group and they're a little bit different than seventh graders, but I have to say it was a great win today. We finished up the microbits. We've been working on Turtle Python and MicroPython with an introductory for the past four weeks and we started with just basic Python 3 skills, and I forgot how excited kids get when they see print hello world and print two plus three equals five and you can put spaces and add a couple variables and you have yourself your first program and it was just fun seeing them getting engage in the fact that they can write numbers that were million characters long and do that math problem. All in a couple seconds it was a good one. Sean: [00:02:32] Nice . I think it's important to remember that sometimes those early steps. Although you may get old at jaded or you have moved past it those early steps are really important. And those are the things that get people often kids, but people of any age excited about coding because it's kind of magical it's fun. It's something that you made happen you created just by writing a little bit of code. Kelly: [00:02:57] Yeah, and they really like there's like wow, this is better than my calculator. I could see all the numbers and then a couple of kids did some math problems on the Colab and they noticed that it had a different decimal float output and you'll have to explain to me later why that was than Mu, so it was kind of cool and it's nice to be reminded of the things that you take for granted now. Sean: [00:03:20] Yeah, I agree and so for me this week, I was teaching a subject that I have taught and actually learned many many years ago. I started teaching my students about web development. This week coming off of a lot of data science, Google Colab, Jupyter Notebooks, working with data structures just understand now the other really popular aspect of Python, which is to use it for web development. So along with web development comes a lot of other skill development like HTML and CSS and occasionally some JavaScript. So we were doing something very similar with my 7th and 8th grade classes this week and this morning in fact. Where we were writing hello world, but with HTML and I was moving over it pretty quickly because my assumption was that like, you know kids have seen some HTML before but we started all the way back at like what happens when you type in a URL into your browser and you hit enter what's that sequence of back-and-forth that occurs between your computer and servers out on the internet to fulfill that request and series of requests and what is some of that content look like so I was trying to move fairly quickly. And I caught one of those moments where kids started saying. Wow. I got hello world to show up if that's cool. And then we started putting pictures up there. I had a picture of two kittens fighting with lightsabers on the screen and and just for something silly and fun. And I forgot how empowering web development is especially for students who have grown up their entire lives using the web but never really needing to know how it works. Kelly: [00:04:56] Yeah, and they use their a lot of free websites out there that actually made those web pages for them with Google sites. You don't really have to see it in the back code or Wix and a lot of our kids have grown up using that so who needs to use HTML when you can go to those one pre-made site and they just make the web pages beautiful for them. Right and I nice to look underneath the hood of something. Right, Sean: [00:05:15] I use the example, but look if I have an ice cream shop, and I have like a pretty basic five pages and I can add pictures to it and some Styles and make it, you know a brand site where people can come find my ice cream store and it can be found on Google and everything Wix and Squarespace are beautiful for that. You don't need to know HTML to set up a site like that. But then I showed them here's YouTube. You want to make a site like YouTube or is really more like an app and it's dynamically powered in every time you login it's personalized for you and what you're looking for. You can't really do that with Wix and Squarespace. You have to go further you have to go deeper and I said and coincidentally much of YouTube is written in Python. Kelly: [00:05:51] that's a good thing for them to hear. They like to they like to know why they're doing python I think Sean: [00:05:55] so that was my win was hello world, but now in a new context a new place and even though these students are now four weeks into coding and it's their second year of text based coding hello world still has some power for them when it's a new area for them to explore Kelly: [00:06:10] Yeah that's good to remember. Sean: [00:06:11] So I also wanted to mention just some news this week two things. I wanted to announce that are kind of relevant for educators out of there necessarily announcements. But just to share them with you. First of all, our friends Julian and Bob over at PyBites have released a new set of bites for newbies and they're pretty good. So I asked Bob and Julian if I can get a review code so I could take a look at them. So they hooked me up with a review code for for their new BB. And these are exactly what you kind of need for those first few steps into python where it takes you through the basics of working with strings and understanding different data types and how to use dictionaries or functions or anything like that. So these bites are great in that challenge set up. So they're all set up as code challenges you login you have to write some code that satisfies the challenge materials and it runs some automated tests on and tells you whether your challenge worked or it failed. Kelly: [00:07:09] Yes. I really like these we worked with one student to test him out. She was one of those apprehensive coders the quiet person that always sits in the back and she got through eight of them. So I think it's a testament to kind of what we're doing. She's like these are these are easy panting. I'm scared. No she likes I think once she started to realize what it was required of her and having to read instructions. She really did get into it. And I think it's going to be a great hit for everyone. Sean: [00:07:36] Yeah, it really works. Well, I also spent some time earlier this week teaching my students a little bit about how to test code so that they could understand how the test components of Tynker, of PyTest of all these sites work when you are submitting code for review and it runs checks against them to see if your code passes or fails to understand what it's actually doing behind the scenes and once they saw how it works and they realize that the test output could help them alter their code to be able to pass the test. It was like a light bulb went off for them that they knew how to write better code to pass tests. And that's a good thing in software engineering and software development. So I guess if Brian Okken is listening, you know like this. There's something to this whole automated testing thing that seems to be working pretty well and we're using more and more of it in our classroom this year. Kelly: [00:08:24] that's great because now I can get into pie testing too, but I like that feature. And Tinker I when you were explaining it to the kids and I was like, yes, that's how you pass them. All you have to get it was kind of a cool feature of bringing the idea of testing and testing your code and seeing what that output was. It helps the younger kids that helps them to see. Oh it's that was a variable and it was changed. Why doesn't my code run and it's a good talking point. So we're going to put a link to pie bites and code challenges in the show notes. So you can check that out. We don't have any sort of like promotional link or anything like that Bob and Jillian are good friends of the show and we want to support them in whatever we can and so some of that's just getting the word out and letting people know that here's one more resource or one more thing for you to tap into. The other thing I wanted to share and bring up was that there's a new Alpha version of the circuit playground Express, which is pretty exciting. We use the circuit playground a lot. It's a board from Adafruit. It's about what 50 millimeters in diameter. It's pretty small. But what it does is it runs python on hardware and it has everything you need to be able to teach python Hardware to beginners in the code. So if you have a different board that doesn't have anything hooked up to it. It may be hard to see why it's so exciting. The circuit playground has lights. It has sensors. It has a little speaker and microphone and there's all these little things you can do with it. That's really great. And we've used them extensively in class. What's exciting is that Adafruit is releasing a bluetooth-enabled version of the circuit playground, which now means that you can code it from many other platforms as well. So you can code a circuit playground from an iPad or from an Android device, or you can have your circuit playground. Connect to a Gateway and get on the internet and now you're starting to do some iot stuff. So this new edition of Bluetooth on the circuit playground. I think is a really welcomed addition and it's a great next step for the platform. It looks like it is compatible with all the other stuff that the circuit playground is is compatible with including the cricket including their protoboard. That looks pretty cool. So you can use this new circuit playground bluefruit. They're calling it. Pretty much any of the stuff that we've already been using with the circuit playground still got all the same alligator clip friendly holes. It's still got a lot of the same sensors. It's just a really good next step in the right direction. Yes, and if you went to Pike on and got your Adafruit circuit playground red. Was it the red board? Yep. Now, you have to go order your blue fruit board and now you can have you know, maybe we'll have a green one an orange one. Sean: [00:10:59] There's a green one. That's right for each model, right? So you got to complete Kelly: [00:11:02] the set get that the whole array of colors Sean: [00:11:05] all the all the colors of the circuit playground rainbow. Kelly: [00:11:07] Absolutely. Automating the Boring Teaching Stuff [00:11:08]Sean: [00:11:08] Let's switch gears a little bit now that we got the news out of the way and the Wins of the week. Let's talk a little bit about the day-to-day drudgery of teaching. so Kelly what are some of the things that you find yourself doing over and over and over again as a teacher that are necessary you can't get away from them and they're valuable because they need to be done. But maybe if there was a magic wand you'd like to just have them done. Kelly: [00:11:30] So it's funny when you think about a teaching job, I guess people really assume that you just come in and talk to kids, you know, give a few tests and then walk away and your jobs done. But in all honesty, I think we work a lot more hours than not more than a doctor maybe but we work a lot of hours and a lot of it is that repetitive aspect that we have to do on a daily basis. One of the hardest things is the grading and having to mark papers entered into a hard copy Gradebook, which is the best way in case something happens and then entered into an electronic grade book, sending out reports responding to emails writing lesson plans copying lesson plans changing lesson plans. You name it there it's there. There's a lot of repetitive things and I know in our jobs. We have a lot more than just the normal teaching rule. Sean: [00:12:23] we also have Ed Tech responsibilities. It's where the technologist for our middle school around how we integrate technology into the classroom. So there are things that come along with that. I know before I became a teacher my impression was that the outside of school stuff was really mostly grading papers and reviewing homework and stuff like that. And that was the stuff that didn't really feel like it could be automated but it was certainly tedious and repetitive at times. Kelly: [00:12:49] Yeah, and just in my role as well with dealing with book subscriptions and online subscriptions just adding and making CSV list at the beginning of the year things that could be done or automated but have not been automated half the battle so I could probably take my workload of four weeks and compress it. After I automate that information Why Should We Automate Teaching? [00:13:12] Sean: [00:13:12] yeah, I think the thing that I always thought about when it comes to automation is that automation is not there so that you work less. It's an opportunity to give you a choice to choose. How do you spend the rest of your time? So sometimes that choice is to work less if you're working 60 hours a week and automation lets you work 45 or 42. That's a great win. And that's something that should be used, right. The other thing is to me at least things that can be automated are not necessarily the things that are the highest value or the highest impact for me as a teacher to be working on. So if I can find a way to automate something and deliver the same result or even a better result in less time, that means that I can focus my energy and my attention on things that are more valuable to my students and to my school. Kelly: [00:14:01] when I do subscriptions at least making the csvs that I tend to make human error. And if you can get rid of those silly mistakes, you're going to win time back and I think every teacher needs more time. I think about the little things with using tinker and trying to take their Gradebook and you'll probably talk about this later but taking their Gradebook and somehow. Transposing that grade and pushing it into our Gradebook. That would save me at least 30 minutes of class for each class period and then you multiply that Sean: [00:14:36] right and then you reduce the chance for error. Kelly: [00:14:39] Which I do a lot of at five o'clock in the morning. Oh, I'm sorry. Did I give you a zero That was supposed to be a hundred. Sean: [00:14:45] so automation lets us do two things. It really lets us reduce the opportunity for error and it lets us speed up processes. So. Really what this comes down to is seeing opportunities and problems. I look at a problem that we have, something that's tedious something that could be optimized and I look for the opportunities in it. And what I came up with was for simple characteristics that indicate that something is a good problem to solve. A good problem to automate more likely here's something that we could automate Kelly: [00:15:15] and I think as you go through this list, especially if your teachers if you can just think of a few things for each of these categories, you can probably narrow those categories down to one thing that you really want to automate and that's a great starting point to why you need to improve your python skills. That's her whole Ploy, right? So what is one of those things that you wish you could just fix with python, The Four Criteria of Good Opportunities for Automation [00:15:38] Sean: [00:15:38] and this is something where as you're going through that list if you've got something that's hitting multiple criteria here. That's like yeah, that's that fits here that fits here that fits here that makes it a good candidate to start with first. So the first category is that it's repetitive and tedious. so it has to be something that is the same repetitive motion or the same repetitive action over and over and over again that makes it a really good candidate for automation. If it's something that's different every time it may still be something that can be automated but it's going to be more complicated and harder and take longer to solve and solve completely. So that's where we say let's look for something repetitive and tedious and automate that. Kelly: [00:16:14] And the next one on your list is technology-driven helps with helps. Right? So you think about something where you have to work online where you might be working in a spreadsheet maybe where you have to connect to a web page or website? It has to have something formed in technology or it could be put into technology in order to help you Sean: [00:16:35] To be clear, this is something that. A good problem to solve with python. So if your job is digging holes in the middle of your school, it might be a good opportunity to automate it using a backhoe but not with python. So just to be clear. These are python solvable problems. the next thing is it should be a necessary problem to solve it something you have to do. There are plenty of things that you could automate that are things you want to do, but if something that's you have to do and you have to do it. Well, it makes it a slightly better candidate because if you don't have to do it, your other choice is just not to do it. so if you're trying to save time or reduce error, make sure it's something that has to be done as a good opportunity as it makes it a better choice. Kelly: [00:17:16] And number four. This is a great one for everyone that's starting to code. It needs to be within your reach of coding technology skills, or at least with some potential for your growth and I take this one to heart because I've been saying that I want to make this database for students and for their assessments, but right now all I really can do is manipulate dictionaries decently. And so there is some growth there and I know one day I will get the product that I want. But it's not there yet. So make sure you're you know where your level is and if you want something automated quickly, but you don't know how to do it just be comfortable with the fact that it's not going to get done right away Sean: [00:17:58] or find a partner who can help you. Kelly: [00:17:59] Absolutely A Suggested Approach for Automation [00:18:01] Sean: [00:18:01] Okay. So we've got our four criteria. You've got in your mind some sort of project or some sort of process that you want to automate. Here's the approach that we'd recommend that you take and so here's our suggestion. Start by writing out all the steps you currently use to solve the problem at the way you do it. So resist the temptation to start thinking about how you can solve it with python right now. Just write it out whether it's on a whiteboard or on a piece of paper or back of a napkin whatever it is just write down. Here's all the things that have to happen in order to make this process. Work just plain English doesn't have to be pseudocode or anything like that. Just write it out. You could flow chart this there's a million different ways you could do it. But just a way that's easy for you to get it out of your head and onto paper or on to some other medium that you can look at it and see what's going on. Kelly: [00:18:48] number two on the list is after you've written that go ahead and look through those parts of the problem and identify the repetitive Parts highlight the ones that happen again, and again, and those are the things that you want to make sure that you focus on. Sean: [00:19:06] And then related to that make sure you identify how often this happens. So if you have some it's happening over and over and over again , but only once a year is that as strong of a candidate for optimization as something that you may only do 5 or 10 times, but you do it every week. so you're just trying to prioritize is this really a good opportunity still and do I really understand the opportunity and The Time Savings? This is about setting your own expectations for what you're going to get out of this Automation. Kelly: [00:19:31] And then as you start to look at those repetitive. and then as you start to look at those repetitive Parts start looking for those parts and what they are affiliated with for example, how can they be automated is it about sending emails? Maybe you want to. Send every child who's made an 80 or better on their coding challenges Kudos email or maybe it's about filling out forms or collecting data answering questions. Try to get specific on what it is that you want to automate because that's also going to help you solve the problem. Sean: [00:20:06] this is about matching up the things that python can do really well in really easily with the things that are in your process. So sending emails, that's not really a problem. You know parsing through csvs and manipulating data that something python can do really well organizing files or even if you see that part of your process is copying and pasting data from one system to another pythons pretty good at taking data from one place and putting it in another. So you're looking for the opportunities where python is strong and can easily automate what you're trying to do. So then once you've got. One of those areas and you think it's a good thing to automate, you know that python can do it. You know that you can do it right automate one part and test it right. So test your process make sure that it works. So if I'm reading all of these names from a spreadsheet I test that I'm reading all the names correctly right once I've got that tested is working. Then I test the next part which is sending an email to all of them. Maybe don't send an email to all of them right away start with like a test batch of like I'm gonna send an email to myself. so just something that lets you build and test in small increments rather than trying to automate the entire process from the beginning and this is where your original steps all that stuff that you documented at. The beginning can help you out because you can organize your automation into chunks that can be automated and integrated back together. Kelly: [00:21:31] And I think that's really important for people who are starting to code. Just thinking about that process if it's something as simple as generating an email from a list. As a newbie that kind of that's a little bit frightening. We like oh, well, how do I get it to talk to my Gmail that I have to log in you start getting a little bit overwhelmed. Well, maybe it is just that step from copying. A list of names from a CSV and putting them out as an email address . So take a step test it out. And once you get past that first hurdle, it doesn't seem so daunting. Sean: [00:22:08] so you just repeat that process for each step along the way and there's a point where you stop. When you start to see diminishing returns on your time investment, so when you start to see that you're not saving as much time in automating it as you are putting into the process of automation. That's a good point to stop. once you've got all these things automated and working together, you can release it in phases. You can start using it as it's ready and just keep adding to it piece by piece because you still have your big master plan of here's all the parts that I'm going to automate and then finally, You maybe you stopped for a while because you've done all you can do with the process that you have in your Knowledge and Skills. You have come back when you know more so it's always good to revisit some of those automation practices after a few months or a year. Once you've grown your knowledge of python and your skills to be able to come back and look at it with a fresh set of eyes and say, oh wait I could do this part better or I know how to do this part now that I didn't before. I've got a good way of automating that I'm going to make this part automated. So it's always a good idea to come back to something you've automated in the past: One, to make sure it's still working. But two, to see if there are any new opportunities to apply what you've learned since then to make it better. Kelly: [00:23:22] so what better way to see how these steps actually work in action, I guess is to hear about what you've done for our iPad set up at the school. We deploy how many iPads to our campuses? Sean: [00:23:37] Right now over 1400 Kelly: [00:23:39] 1400. And before you took on this job one of our colleagues who moved on to a different country Sean: [00:23:49] not because of this just to be clear. Kelly: [00:23:50] I don't know after seeing what's that was? No, she used to do a lot of this with spreadsheets. And forms and it was well organized, but I couldn't imagine doing this at the level that she was doing that. You came in and you automated some of these practices with python and Google Cloud platform and our jams. Sean: [00:24:15] That's right. Kelly: [00:24:15] We're going to walk through a little bit about what you saw. As the steps of the problem that you had to do, Sean: [00:24:22] so this all started back at I guess April or May when our boss was looking for someone to take over this project as our colleague was moving on to a new role and I didn't really want to volunteer for more work but one of the things I was excited when I saw this project was how manual everything was and how repetitive everything was and I'll give you an example of this we have. A server system called Jam which works with apples best practices their apis. There are systems for communicating with devices and managing devices at a large scale to let us manage our 1400 iPads at the school and is used in many other places not just in education, but around the world to manage fleets of iPads and iPhones and all sorts of devices. You can even use it for MacBooks which is kind of cool but lets me do things like if I have a new app that I want to purchase in volume for our school. I can deploy that app to dozens or hundreds of iPads all at the same time and it all gets installed in the same way on all the devices. It's great. It's a wonderful tool for us to have at our disposal to be able to manage all of these different iPads. I mean, I can't even imagine going iPad by iPad to install apps. But what was what was happening was that there were some things that just didn't make sense to me as a former. It guy as a technologist was that we it was very tedious for us to enroll new iPads into the system. Every time I got a new iPad we'd have to go through this series of steps to add it to our server and to give it a name and to get it on our Wi-Fi and to make all these things happen along the way and I thought there's got to be a better way to do this. There's got to be a way to automate. Kelly: [00:26:02] So to be clear, this is just data that is listed out and could have been stored in a CSV or and then put into jamp, correct. Sean: [00:26:11] Well, it's really more like any time a new device comes in. We can figure that device all the apps that it gets all the restrictions that aren't based on that device has named it was over this naming convention for it based on the name. It gets a certain set of apps. Whenever we got a new device and we'd have to manually set the name of that device before would start getting any of that content. So what I wanted to do is move this process to be much more automated and so I started to look at what it would take to do that. The other big piece of this was that if you wipe a device out like you say erase all the settings and contents on it and then re-enroll it to the server. It's like it's a brand-new iPad again in terms of the apps and content and everything like that. So let's say we get a new iPad that comes in it takes us between 5 and 10 minutes from end-to-end to configure that iPad with all the content and settings everything like that that it needs to get on our server and it has to be done by our director of it plus someone like me who's got knowledge of how the system works and is trained on it. Plus it has to be connected to our Wi-Fi which requires a password. So it's 5 to 10 minutes per iPad to get the setup Kelly: [00:27:21] times 1400. Sean: [00:27:22] Well times 250, this year, right. So we had 250 iPads and I thought to myself I'm not going to take 2,500 minutes of my time to enroll all these iPads if I just do them one by one, I'd rather spend the 2500 minutes implementing an automation process that lets us enroll these iPads in a smoother faster way going forward so. What we said was I'm going to focus on just one part of this. I'm going to focus on how a I've had gets its name and what I found was that when a new device gets added to the JAMF server and it comes through Apple device manager and when you turn on an iPad for the first time it talks to the Apple servers and apple servers say oh this iPad based on its serial number belongs to the school and it should talk to this GIF server to get all of its configuration. It's very cool thing, but our JAMF server really didn't have any idea that that device was coming in and what it should be named. So I wrote a Google Cloud function so that when that device gets added to JAMF, JAMF will automatically go to any server address that you want any web address and call that address with some information about the device that just got enrolled. So I made it go to Google Cloud functions and I wrote a python function that takes all that information looks up the serial number for the device. In a Google sheet of all the new devices that we had pre-configured with here's the name that goes with a serial number and then mine Cloud function would then talk back to the jamp server and say "this device that just came in, please give it this name." What are Google Cloud Functions? [00:29:03] Kelly: [00:29:03] sorry to interrupt you - what I do you all the time. So for people that don't really know about the Google Cloud. Yeah, like myself. Can you explain what that is? How do you find it? How it in just very briefly how it how it works. Sean: [00:29:21] Google Cloud functions is in many ways a similar offering to Azure functions as well as Amazon's Lambda. It's really just a bit of python code that you can Define and upload to Google's Cloud platform and they manage all of the other aspects of what server runs on what version of python how it talks to the internet all of the messy aspects of making a online web function work. So. It makes it very simple. It gives you a structure or a framework for how you can execute a bit of python code in the cloud. Okay, so we've got these Google Cloud functions and I really I really like them because they're small they're easy to conceptualize the code within the function and I know that there are some drawbacks to it in terms of like other complexity that that creates but I like them because they're relatively small there faster create and they have a high degree of availability and we're working at a school. Sometimes we don't always have the best it infrastructure or the best servers that are just available to be able to develop on so sometimes it's easier to go to a Cloud solution, especially like Google cloud or as your web functions or AWS Lambda because they give you a certain number of cloud functions for free, Kelly: [00:30:41] and as a newbie a person just starting into coding. How what's the what's the learning curve? On these cops Sean: [00:30:48] depends on the function. So if you're doing something that's can be self contained within the function something that's calculated like depending on what day it is. I return a different result. If all of your code is contained within the cloud function. It's pretty easy, right? what it does is it lets you create this web address that you can go to and get. Code back from it like I can call the function over the web. It returns a result to you. Now, of course because we're talking to other servers and because we're connecting to Google Sheets. It gets a little bit more complicated but at its core it's not that much harder than writing a python function that lives on your computer and has to call Google Sheets or talk to the jam server, whatever you can kind of move that code from your local computer. Into the cloud. Okay. So it's a little bit beyond the scope of what we want to talk about here. Just suffice it to say that this is one approach that you can take that can move your code from being on your own computer to some place in the cloud where you can get to it from other places, but regardless of the implementation the cool part about this is that automation step that part that makes it easily connected. From your iPad management server to This Cloud function and then the cloud function does some work on it. So in this case what it does is it sets the name it verifies a few things. It also keeps a cache of all the devices so that if I re-enroll a device and it comes up with that new iPad generic name, it knows what it used to be named and will rename it to be the new name. So that's pretty cool. Then. In addition to that I get some of these other side bonuses now that I have a cache of all the devices that are on the server or have this pythonic way of talking to the iPad server. I can do data science type stuff on there where I can look at all the iPads. We have I can start to predict like which I've had are going to start failing based on how they've you know failed out in the past. So gives you some extra added features by just you know, starting to write code that talks to the server. Kelly: [00:32:42] It's pretty cool and it's these steps this data that's coming back. It's allowing you to identify the repetitive Parts already. So you had a repetitive issue. And then now it's highlighting other repetitive issues that you can solve for Sean: [00:32:58] so if I can write instructions in a Google doc that would tell you how to rename a device in our server to say take this device and change the name to this and here are the rules for determining if I can write that kind of prescriptive document for you. Why not just write that in Python and have python do those steps instead of you because you're pretty fast Kelly but might that fast it's pretty fast and you have certain working hours that we can't get around. Like, you know, I can't call you at 2 o'clock in the morning and say hey rename this device for me, but I can make Google Cloud do that. Kelly: [00:33:30] Exactly. Sean: [00:33:32] So all that being said, it doesn't really matter the implementation steps. Okay, it's this idea of taking something that's repetitive. Find a way to automate it reliably test it to make sure that it works correctly in that it you can verify the results but the important thing is the results what time has this actually saved for us what has this enabled for us as a school that we didn't have before and so now that this process is up and running we've gone to a place where I can take an iPad that we have pre-configured in our system with here's the name that it's supposed to be. Here's what department it is. Those things we put that in our Google sheet. I can hand you that shrink wrapped box directly from Apple. You can unwrap it yourself. And the first time you connect it to the internet. It will go talk to Apple and to our server and get named properly and start downloading all the apps that belong to you and that all happens within about 90 seconds, and Kelly: [00:34:25] it's pretty cool process. And I know a couple of our colleagues that are working with that are starting to get used to it the idea of not having to go in and enter Everything In It's a great. It's a great thing. Sean: [00:34:37] what is been really gratifying to see is that the this capability also works when you have to wipe a device? So what's a device gets into a state where it's like, I don't know why it's working. I don't really have time to figure it out. I'm just going to wipe it erase everything on it and reload it from scratch. It will again pick up the name that it used to have and start downloading all its apps again. So our colleagues ourselves included whenever we start to run into an issue instead of spending days or hours trying to figure out. What's wrong with us iPad? We just wipe it and reload it and now we're starting with a fresh device. So clears out all student photos or songs or recordings that they made it lets us keep our devices in a more fresh and ready state for our students. Kelly: [00:35:17] I'm going to put you on the spot. Sean: [00:35:18] Okay, Kelly: [00:35:19] you probably do this, but for someone that's going oh my gosh, I can never do this. Right? Can you name some of the few python functions or. Simple of the lines that some of us newbies will go. Oh, yeah, we know that word is there are some things and they're like just to give everyone else they're out there who's kind of like me who's kind of going. Yeah. I can never get this just to reassure us that there are the same applications that we've been learning are in your code. Sean: [00:35:49] Yeah. I mean really when it comes down to it. It's just a series of instructions. So I'm still using things like if statements else statements. The name is one of these or the it's in my list of devices then do this function. So we're still talking about the same basic control control structures. I'm still using for Loops to iterate through every device in the inventory to say do this series of steps for every device right Kelly: [00:36:13] that idea of just getting the list of things that you want to look through that, you know for iPad and iPads. Sean: [00:36:21] I mean and look I've probably over I know I've definitely over-engineered this solution. I've definitely over engineer this you do not have to go to this level to see benefit from the automation even just having something that takes your server and says give me all the devices all the iPads that we have and put that in a Google sheet every day so that I can analyze it or that I can run my own. You know charts and everything on it that could be a huge savings and Kelly: [00:36:46] that's the thing to keep in mind when we're talking about the automated solution is just starting at the basics. If you can think of that problem and break it up into smaller steps and think about the things that you can do, how can you manipulate that and then search for the stuff that maybe you don't know how to do I'm sure someone else has some help for that stack Overflow or another colleague of yours and and check it. Sean: [00:37:11] And do it in iterative chunks, right? So you can iterate through this process of start with something small that you know, you can get to work you can test it to prove that it works. Thanks Brian Okken. How do you know that it works? You can verify it you can test it and then deploy that actually start using it and then do the next round of iteration and add a little bit more to it. You can treat it as a learning project where once you have code that's working. You can deploy that code. Put it on Google Cloud functions, or you can put on that server that's running in the corner, whatever your places that you're putting this you can get it out there and then try to learn the next little step forward that moves you for this is a series of small steps forward to get to a solution not giant leaps Kelly: [00:37:56] very cool excited about that. Automation Resources [00:37:58] Sean: [00:37:58] So if you need some resources, and I always love having resources to work, I would highly recommend recommend the automate the boring stuff book by Al Sweigart. It's a really well-written book in general, but it really works well for teachers also because there's a lot of great examples in there for things that you'd want to automate like if I have a list of names in an Excel spreadsheet, I can load that in well, you can swap Excel spreadsheets for Google Sheets with just different libraries and you can read through it. Kelly: [00:38:25] Yeah. I read that book before it was last year when we talked about it briefly. It was it's really nice to to get the concepts of projects that he puts in there. If you just switch out a couple of the words if you're in the basics, for example dictionaries, I was working sort of a database and and how I could map out a student with a score or a birthday and just getting your mind into that. That's a great book. Zapier [00:38:52] Sean: [00:38:52] Yeah, it works Arters. It works really well. The other thing that I kind of call the duct tape of the internet, I'm not the first person call it the duct tape of the internet, but the duct tape of the internet is zapier and if this then that so if you've ever tried to figure out well, how could I get this system tying to another system in a very easy way tools like zapier and if this then that what you do that with a website so you can go in there and they even give you I think like ten rules that you can set up for free every. And to buy more and more rules that you can create and run is like $20 a month. It's not a huge amount of money. But what it lets you do is basically take any web service and connect it to another web service using your own set of rules in between. So maybe you don't have the knowledge and know how to pull together the API from Gmail and connect that to the API from Google forms. But zapier can do that and you can take some sort of trigger event that happens in Gmail and use that to submit a Google form. So there's all these great ways that you can connect these systems together and use Python to fill in the other pieces. The cool thing about zapier in particular is that it runs on python itself like the back end. Is this massive cool python system. But it also lets you create your own little chunks of python code that run within zapier to be able to do some more advanced manipulation of the content that you have Kelly: [00:40:22] and just doing a quick look for all the Educators out there. A lot of things in Google Drive are supported in zapier and Twitter and Gmail and Google forms and Instagram. Sean: [00:40:33] Yeah, it's very cool. I used it in my past life for digital marketing and it was great just to organize and automate things. I've got a zap that if I have a new contact that's gets created. It puts it into other systems for me so that I can easily get to it just that I'm not copying and pasting so it kind of automate the boring stuff for web applications things that are available online. Kelly: [00:40:54] Very cool. Good fine. Sean: [00:40:56] Yeah. this is one example of how to automate something and I hope the tips that we've given here are useful and I hope that you can find ways to apply it these should be pretty simple basic approaches that may end up with complex Solutions or highly engineered Solutions, but you have to start somewhere if the start with one small idea. One small opportunity automate that and then automate the next thing and build onto it Kelly: [00:41:21] and I'm still looking for someone out there in their listener World who's going to automate my database uploads for me. So if you've got a solution Sean: [00:41:29] what you already told me you didn't want my help. So Kelly: [00:41:33] well, you know we're going to is we're gonna check for listeners first to see what they have but. We get all of those darn students and all their class schedules into all these different types of csvs. I'm sure we can figure that out together for juncture. Sean: [00:41:45] Yep. Well, we'll get there and that's the thing. Don't beat yourself up over the things you haven't done yet.Wrapup [00:41:50] Just give yourself a chance to try something and learn from it and use these as ways to build your own skills and growth by just saving yourself a little bit of time. So it's a double whammy. Yeah, so I think that's kind of the end of our topic Kelly. How can people reach us if if they want to get in touch with us or suggest topics that they want to automate and need help with? Kelly: [00:42:11] Well, like always you can send us a direct message at teaching python or you can tweet to us. Sean: [00:42:18] We're also on the web at teaching python dot f m Kelly: [00:42:21] or you can contact us personally at Kelly parade on Twitter Sean: [00:42:25] and at SM Tiber on. We also accept pictures of cats soldering guides any sort of memes about python jokes success stories photos of students winning it things pretty much anything that furthers our love of teaching and of coding and and helping students be successful Kelly: [00:42:44] for teaching python. This is Kelly Sean: [00:42:46] and this is Sean Kelly: [00:42:47] signing off.