diff --git a/transcripts/327-little-automation-tools.txt b/transcripts/327-little-automation-tools.txt index e567fc16..68e1669e 100644 --- a/transcripts/327-little-automation-tools.txt +++ b/transcripts/327-little-automation-tools.txt @@ -1,6 +1,6 @@ -00:00:00 You've heard me talk to a wide cast of people building amazing things with Python. Some of them are building bio reactors to remove carbon from the air with artificial intelligence and Python. Others are optimizing the aerodynamics and race strategy at the highest level of automobile racing. This episode is different. Rather than seeing how far we can push Python to the edges of technology, we're diving into the tiny Python applications that might never be released publicly, and yet can transform our day to day lives with simple automation on an individual level. We have four great guests here today, rivers Cuomo, Jay Miller, Kim van wyck, and Rusty Gregory. They'll each share a couple of apps and the underlying packages they use to build them. I know this will be a super motivational episode for many of you. And I hope that after listening, you'll transform something tedious and error prone in your life to an instantaneous button click solution with Python. This is talk Python me Episode 327 recorded July 15 2021. +00:00:00 You've heard me talk to a wide cast of people building amazing things with Python. Some of them are building bio reactors to remove carbon from the air with artificial intelligence and Python. Others are optimizing the aerodynamics and race strategy at the highest level of automobile racing. This episode is different. Rather than seeing how far we can push Python to the edges of technology, we're diving into the tiny Python applications that might never be released publicly, and yet can transform our day to day lives with simple automation on an individual level. We have 4 great guests here today, Rivers Cuomo, Jay Miller, Kim van Wyk, and Rusti Gregory. They'll each share a couple of apps and the underlying packages they use to build them. I know this will be a super motivational episode for many of you. And I hope that after listening, you'll transform something tedious and error prone in your life to an instantaneous button click solution with Python. This is 'Talk Python to Me' Episode 327 recorded July 15 2021. -00:01:12 Welcome to talk Python to me, a weekly podcast on Python, the language, the libraries, the ecosystem and the personalities. This is your host, Michael Kennedy, follow me on twitter where I'm at m Kennedy and keep up with the show and listen to past episodes at talk python.fm and follow the show on Twitter via at talk Python. This episode is brought to you by linode. us over at talk Python training in the transcripts are brought to you by assembly AI, please check out what we're offering during our segments. It really helps support the show, Rusty Kim j and rivers. Welcome all of you to talk Python to me. Thanks. Great to be here. Thanks, thanks. Happy to be here. It's really excellent to have you here to share this topic. A lot of times I have people on the show like oh, here's how we built Instagram, or we're using this cool library to scale like the largest Django deployment or here's how I built flask and, and how we're evolving it and or something like that in data science. And that's great. But I think so many people out there listening are like, Well, I'm not building those kinds of apps, I'm building something entirely different, or I don't build little things. And I think actually, that's where a lot of the magic is, for everyone out there listening, you know, we all have these things that are in our day to day. And it's just like, you know, that is I'm not looking forward to that, but so many times a couple hours of Python, or other coding and a little automation, and then that becomes automatic. And life is just, you know, it's so rewarding to do those little things. I am excited to share the ones that I did. They're incredibly simple. But they're they just make me smile so much as I do them. So really looking forward to doing that. But before we get into the apps in the details, you know, let's maybe go around the YouTube stream picture here and let you all quickly introduce yourself. Three, the four of you have been on the show before but just you know a quick introduction. Rusty, let's start with you. +00:01:12 Welcome to talk Python to me, a weekly podcast on Python, the language, the libraries, the ecosystem and the personalities. This is your host, Michael Kennedy, follow me on twitter where I'm @mkennedy and keep up with the show and listen to past episodes at 'talkpython.fm' and follow the show on Twitter via '@talkpython'. This episode is brought to you by 'Linode' & Us over at talk Python training and the transcripts are brought to you by 'AssemblyAI', please check out what we're offering during our segments. It really helps support the show, Rusty,Kim,Jay and Rivers. Welcome all of you to talk Python to me. Thanks. Great to be here. Thanks, thanks. Happy to be here. It's really excellent to have you here to share this topic. A lot of times I have people on the show like oh, here's how we built Instagram, or we're using this cool library to scale like the largest Django deployment or here's how I built Flask and, and how we're evolving it and or something like that in data science. And that's great. But I think so many people out there listening are like, Well, I'm not building those kinds of apps, I'm building something entirely different, or I don't build little things. And I think actually, that's where a lot of the magic is, for everyone out there listening, you know, we all have these things that are in our day to day. And it's just like, you know, that is I'm not looking forward to that, but so many times a couple hours of Python, or other coding and a little automation, and then that becomes automatic. And life is just, you know, it's so rewarding to do those little things. I am excited to share the ones that I did. They're incredibly simple. But they're they just make me smile so much as I do them. So really looking forward to doing that. But before we get into the apps in the details, you know, let's maybe go around the YouTube stream picture here and let you all quickly introduce yourself. Three, the four of you have been on the show before but just you know a quick introduction. Rusty, let's start with you. 00:02:57 Okay, I'll be I gave my long introduction last time. So I'll just say that I'm a reformed teacher. About two years ago, I or maybe three years ago, I started coding and then I had an opportunity to kind of become the data manager at my school district. So I'm trying to build pathways between all the various services that we use and keep our data clean. @@ -10,55 +10,55 @@ 00:03:38 Yeah. Fantastic. Jim, -00:03:39 if I can borrow a phrase from rusty. I'm a reformed embedded software engineer. So moved from C A couple of years ago to doing many DevOps work for a financial services organization here in South Africa, +00:03:39 if I can borrow a phrase from Rusty. I'm a reformed embedded software engineer. So moved from C a couple of years ago to doing many DevOps work for a financial services organization here in South Africa, 00:03:51 where I'm best. Yeah. Fantastic. And you also hosting the Ask me anything? Not long ago. Was there? Thank you for that. Yeah, that was great. Yes, it was. Not that long ago. Yeah. That was really good. Yeah. Yeah. It was fun. Jay. Hello, hello. I just saw you over on Python bytes not long ago, but happy to have you here. 00:04:06 Happy to be back. I will crip everyone and say I am also a reformed marketer, veteran, now developer advocate and spend a lot of my time just talking to the community and learning from folks that are a lot smarter than I am like the four people on this panel. Yeah, good -00:04:23 stuff with Elasticsearch and some cool database like things right. Absolutely. Yeah. Reverse. Your first time on the show. Thank you so much for coming in. It's really great to have you here. Tell people real quickly about yourself. +00:04:23 stuff with Elasticsearch and some cool database like things right. Absolutely. Yeah. Rivers, You first time on the show. Thank you so much for coming in. It's really great to have you here. Tell people real quickly about yourself. -00:04:33 My name is rivers Cuomo, I'm the singer and songwriter for the band Weezer. Our first album came out in 94. And we've been touring and making records on and off ever since. +00:04:33 My name is Rivers Cuomo, I'm the singer and songwriter for the band Weezer. Our first album came out in 94. And we've been touring and making records on and off ever since. 00:04:44 I'm such a fan of your music. It came out when I was in college, and I've been a fan of what you're doing longer than I've been a fan of Python, which is crazy. That's so awesome. So thank you for that. 00:04:53 Yeah, I'm a huge fan of your show. Michael I listen every morning and of course I've learned so much and gotten turned on to some So many cool packages. But also, it's just nice to get that human connection in the midst of a few hours of coding every morning to hear a theory. All you guys talking about, it's really warms the heart. Awesome. -00:05:13 Thank you. You know, I think a lot of people who have told me they listen to the show and some of the guests as well, they don't work in like a startup tech place environment, but being able to listen to podcasts like talk Python, me and others, it kind of brings that community to them, even though they're not necessarily like everyday showing up with a group of people who would be that community. +00:05:13 Thank you. You know, I think a lot of people who have told me they listen to the show and some of the guests as well, they don't work in like a startup tech place environment, but being able to listen to podcasts like Talk Python to me and others, it kind of brings that community to them, even though they're not necessarily like everyday showing up with a group of people who would be that community. 00:05:34 Yeah, that's exactly my situation. I'm working on my own here. And I don't know anybody who is into coding. So it's great to know you. -00:05:42 Yeah. Awesome. Yeah, you as well. So, as you said, people will know you from Weezer. And that's amazing. But you are doing such cool stuff with automation, and Python and code. And so I think people are really going to be blown away by what you're doing as well. So I'm super excited to get into that, let's just sort of go down, we all put together a couple of things that we're working on in a shared doc here. And it looks like rusty, I put you first. So rusty, you want to kick us off with the first sort of automation thing that you built? Sure. +00:05:42 Yeah. Awesome. Yeah, you as well. So, as you said, people will know you from Weezer. And that's amazing. But you are doing such cool stuff with automation, and Python and code. And so I think people are really going to be blown away by what you're doing as well. So I'm super excited to get into that, let's just sort of go down, we all put together a couple of things that we're working on in a shared doc here. And it looks like Rusty, I put you first. So Rusty, you want to kick us off with the first sort of automation thing that you built? Sure. -00:06:10 So when COVID hit, we had to change a lot of different things and you know, adjust like everybody else did in the world. And we send ended up sending out a lot of notifications from our school district when an infection would happen at a school and we'd have to notify people and it was this huge thing. And we're, you know, at the height, we're getting lots of these things a day. And so schools started to put the information up on their website, so that you could just go and refer to the website, instead of get a wall of text every time something happened. So my Superintendent came in and said, she wanted to put this dashboard up. And then she showed me some other schools that had done it. And I looked at what they were doing, and just knowing how the web works and schools work, I knew that somebody who's gonna have to update this information every single day or every other day on the website, it was something that could easily fall by the wayside. So I thought to myself, you know, who's going to be updating this and then she's like, don't worry about it, I'll update it. You know, you've got so much to worry about, like, that's not what you want your Superintendent doing, right? You updating the website, you know, once a day or whatever. So it's like, I should be able to handle this with Python somehow. So I hit read it. And I just asked kind of, you know, or Well, first off, I had to find out where she was getting information. So the health department put it up on the website, but it was a PDF, and I was like, Oh, that's crazy. Oh, God. Yeah. So I can't scrape that. So maybe I'll just update it every day. All right. So they read it. And I was like, is there a way to turn you know, a PDF into a CSV with Python, of course, there was. So about two or three different packages got recommended, I played around with them for about a half an hour. And this one called tabula, which I wasn't crazy about because it depends on Java underneath. So it uses Java to kind of like recognize patterns on there, and it'll so it'll it'll turn your your PDF, pull out just the the tabular data and stick it into a CSV for you. So I was able to just with a bit of requests go up, grab that every time save it process, it wrote a really gnarly little loop that finds my four schools, and then puts those into my own CSV. And then I use Python again, yeah, Gmail to just send it to myself, I did it twice a day, because it was updated at different times. And then, on the other end, with a little JavaScript, I just went into my email, and I find that and I just update a Google Sheet that's embedded on the on the website. So there's a bunch of little parts on it. But literally, the Python was about 96 lines of code, go with comments and stuff and accomplish this. And +00:06:10 So when COVID hit, we had to change a lot of different things and you know, adjust like everybody else did in the world. And we send ended up sending out a lot of notifications from our school district when an infection would happen at a school and we'd have to notify people and it was this huge thing. And we're, you know, at the height, we're getting lots of these things a day. And so schools started to put the information up on their website, so that you could just go and refer to the website, instead of get a wall of text every time something happened. So my Superintendent came in and said, she wanted to put this dashboard up. And then she showed me some other schools that had done it. And I looked at what they were doing, and just knowing how the web works and schools work, I knew that somebody who's gonna have to update this information every single day or every other day on the website, it was something that could easily fall by the wayside. So I thought to myself, you know, who's going to be updating this and then she's like, don't worry about it, I'll update it. You know, you've got so much to worry about, like, that's not what you want your Superintendent doing, right? You updating the website, you know, once a day or whatever. So it's like, I should be able to handle this with Python somehow. So I hit read it. And I just asked kind of, you know, or Well, first off, I had to find out where she was getting information. So the health department put it up on the website, but it was a PDF, and I was like, Oh, that's crazy. Oh, God. Yeah. So I can't scrape that. So maybe I'll just update it every day. All right. So they read it. And I was like, is there a way to turn you know, a PDF into a CSV with Python, of course, there was. So about two or three different packages got recommended, I played around with them for about a half an hour. And this one called 'Tabula', which I wasn't crazy about because it depends on Java underneath. So it uses Java to kind of like recognize patterns on there, and it'll so it'll it'll turn your your PDF, pull out just the the Tabular data and stick it into a CSV for you. So I was able to just with a bit of requests go up, grab that every time save it process, it wrote a really gnarly little loop that finds my four schools, and then puts those into my own CSV. And then I use Python again, yeah, Yagmail to just send it to myself, I did it twice a day, because it was updated at different times. And then, on the other end, with a little JavaScript, I just went into my email, and I find that and I just update a Google Sheet that's embedded on the on the website. So there's a bunch of little parts on it. But literally, the Python was about 96 lines of code, go with comments and stuff and accomplish this. And 00:08:22 that's super cool. And it's really valuable, right? That if something like that gets missed, exactly, you know, it could make a big deal. Or it could be kind of some kind of outbreak. 00:08:30 Yeah. And I can apply that to just about, you know, to so many other things as well. So the time all the time I invested in learning how that wasn't, it was an afternoon, and I was able to figure that out and impress my immediate boss, which was really cool. He enjoys those types of things. So I was good. -00:08:45 I bet Paul out there in the live stream. Hey, Paul says I use Yag mail to automate sending out emails for the sci fi conference, very cool. Rivers, it sounds like you and Rusty Sarah, share some of the same pool said they're like attorneys with like web scraping PDFs, Google Sheets, that kind of stuff. Yeah, I +00:08:45 I bet Paul out there in the live stream. Hey, Paul says I use Yag mail to automate sending out emails for the SciPy conference, very cool. Rivers, it sounds like you and Rusty , share some of the same tool said there like it turns with like web scraping PDFs, Google Sheets, that kind of stuff. Yeah, I 00:09:00 was just remembering. In fact, I emailed you a few years ago in desperation, because I was trying to get some data from our agents. They have a web service where they give you the artists, tons of details about their upcoming shows, attendance and tickets sold and gross income, all this stuff. So I wanted to get all that and I had to, I had to deal with Pete like it's rendered as a PDF. I made the mistake of going to stack overflow first I read it. And my question is getting all these down votes. So Oh, yeah. You've got to find time to Michael. Yeah. Yeah. Michael, help me out. -00:09:39 Yeah, that's awesome. I remember you were really frustrated because somehow the wrong information had been given to you when you showed up like this. This was supposed to be one hour and it's two hours and I was at the wrong Yeah, I just I could see him at I imagine you're like how do I get this table or, or this part of the information out of the PDF? And yeah, that was perfect. Yeah, but what does that package Yag mail I think I think I ought to try that one. Yep. +00:09:39 Yeah, that's awesome. I remember you were really frustrated because somehow the wrong information had been given to you when you showed up like this. This was supposed to be one hour and it's two hours and I was at the wrong Yeah, I just I could see him at I imagine you're like how do I get this table or, or this part of the information out of the PDF? And yeah, that was perfect. Yeah, but what does that package 'Yagmail' I think I think I ought to try that one. Yep. -00:09:59 Yep, gag bell. It's really simple. The toughest part is going through the hoops with Google. But once you get your little file back from them, you can use it for everything. So very cool. +00:09:59 Yep, 'yagmail'. It's really simple. The toughest part is going through the hoops with Google. But once you get your little file back from them, you can use it for everything. So very cool. -00:10:09 All right, thanks, resi. Kim, yours first ones up next, +00:10:09 All right, thanks, Rusty . Kim, yours first ones up next, 00:10:13 just remind myself which one I wrote down is my first one. That was it. Yeah, this little one did, there's no link to it doesn't have a name or anything. It's just a little small script that one of the many that sits on my harddrive. And this I think, is really kind of an epitome of small time or very small Python writing small tool I wrote basically, as my the team, I work with a week there's about five or six of us, we kind of as agile as we need to be, which includes a Trello board, because we're no longer standing in front of a whiteboard in the office. We're all in our own homes. So basically tracking cards of what we're doing for the week. And we include in our team, people who have from day to day responsibilities for deployment to some of our environments that one of the guys will push changes to staging when a different guy was dangerous to our production environment. And then that thought kind of boring setup. But effectively, what it means is at the start of the week, I need to generate 10 columns. So who's doing what? So I used to get an email from one of our administrators to say, Here's the schedule for the week. You know, Bob's doing the staging on Monday and Fred's doing production on Tuesday. And I want to track those on my Trello board. And I reached the point where it shouldn't be a big deal. It took me about 10 minutes on Monday morning, I would make 10 cards and I'd write down Fred Monday, Bob Tuesday. But it was tedious. And it was fiddly. And I was putting it off. Because it was 10 minutes, I'd rather not spin and it's only 10 minutes. But still it was irritating into that this kind of Yeah, not the thing I wanted to do on Monday morning. So basically, I have sitting on my harddrive about 150 lines of Python purely to to ask me interrogate when I run it, who's doing what or basically I've now got it set up. So this is for staging on Monday, which of these six people is the deployer, then we'll just repeat for each of those cards. And that was literally it takes me 20 seconds to run it. Now I just have to read the email I get on Monday morning to say, you know who's doing when, and then it all does it for me. And it's incredibly daft. I mean, I saved myself 10 minutes a week, it's no big deal. But I also saved myself in the rotation and stretches that little edge. And that's the only thing I really love about a really small Python tool. It took me a couple hours to write. So it's not like it costs the company days of my time. Yeah, -00:12:17 yeah, I probably saved on some mistake or some forgotten Exactly, yeah. Yeah. What's the Trello communication, but that's all REST API +00:12:17 yeah, I probably saved on some mistake or some forgotten Exactly, yeah. Yeah. What's the Trello communication, bit, that's all REST API -00:12:24 on Trello. So like, most risks, similar REST API services, you go along to your trailers side, you identify yourself, you get back a token from them. And then that's all API queries. So the 150 lines of Python about 40 are just config files. For me mapping the names of my team members and various bits of information about the trailer to ID numbers. I've seen vector trailer. Yes, definitely sexual code. That's fantastic. +00:12:24 on Trello. So like, most similar REST API services, you go along to your Trello's side, you identify yourself, you get back a token from them. And then that's all API queries. So the 150 lines of Python about 40 are just config files. For me mapping the names of my team members and various bits of information about the trailer to ID numbers. I have'nt seen back to Trello. Yes, very cool even less actual code. That's fantastic. -00:12:47 So I don't know how we managed to pull this together. And when you all arrived for the meeting, but we're exactly sort of in the loop of the same order in the dock. So +00:12:47 So I don't know how we managed to pull this together. And when you all arrived for the meeting, but we're exactly sort of in the loop of the same order in the docs. So awesome Jay -00:12:58 your next I don't keep it easy. Awesome. Well, as I mentioned before, I work as a developer advocate, and I work for elastic. We do search stuff and search things. I'm sure any of my co workers listening, like that's it. That's all you're gonna say. Yes. But one of the things that we have done because we do a lot of visualization as we build dashboards for like everything, there's so many dashboards, I have actually built a series of my own set of dashboards using one of my new favorite tools called Ilan, which is like a pandas like data framing tool, but for Elasticsearch and it's great because it's designed to work with pandas, but it's also designed to work like pandas. So if you've ever done any type of data, framing, any type of dealing with big numbers, big any type of information like that, and you're used to those commands, you can just try them and usually they work and what I've learned is Ilan is amazing for like parsing CSV files, parsing JSON files, you don't have to do like the boar or with open whatever the CSV file is as dict reader and like all this, like that whole pattern, you just do. You know, in pandas, you would just do pandas read CSV or an Ilan, you and say, Ilan, CSV to Ilan, and then it just loads that information into your database, no questions asked. And it just go. That's super cool. +00:12:58 your next that'll keep it easy. Awesome. Well, as I mentioned before, I work as a developer advocate, and I work for elastic. We do search stuff and search things. I'm sure any of my co workers listening, like that's it. That's all you're gonna say. Yes. But one of the things that we have done because we do a lot of visualization as we build dashboards for like everything, there's so many dashboards, I have actually built a series of my own set of dashboards using one of my new favorite tools called Ilan, which is like a Pandas like data framing tool, but for Elasticsearch and it's great because it's designed to work with pandas, but it's also designed to work like Pandas. So if you've ever done any type of data, framing, any type of dealing with big numbers, big any type of information like that, and you're used to those commands, you can just try them and usually they work and what I've learned is Ilan is amazing for like parsing CSV files, parsing JSON files, you don't have to do like the for or with open whatever the CSV file is as treater and like all this, like that whole pattern, you just do. You know, in pandas, you would just do pandas read CSV or an Ilan, you and say, Ilan, CSV to Ilan, and then it just loads that information into your database, no questions asked. And it just go. That's super cool. 00:14:19 So instead of trying to work with it directly with pandas, you put it into the database. So you can do queries and reporting and stuff like that driven off of it. Right, -00:14:26 exactly. Instead of like having a database company, all of the mutations that you find exactly what you need, you just do a general elastic search query. And then it shows you the information you're looking for, but in like a data frame format, which is sweet, and I've used that for a couple of projects. I built a tool in react Sorry, I know it's a Python podcast, but it's called diversity org dot tech. I do a lot of diversity work in my job connecting with organizations that work with underrepresented folks. And this has been a way for me to collect like a At this point, like over 500 different organizations that work with underrepresented folks in tech and put it in like its own little mini search engine, its own like small meetup and updating it. I actually just use flask, which I think is funny because you have that is not it. I wish that was it. Diversity works dot tech. I was like their design work much better than mine. +00:14:26 exactly. Instead of like having a database company, all of the mutations that you find exactly what you need, you just do a general elastic search query. And then it shows you the information you're looking for, but in like a data frame format, which is sweet, and I've used that for a couple of projects. I built a tool in react Sorry, I know it's a Python podcast, but it's called "diversityorgs.tech". I do a lot of diversity work in my job connecting with organizations that work with underrepresented folks. And this has been a way for me to collect like a At this point, like over 500 different organizations that work with underrepresented folks in tech and put it in like its own little mini search engine, its own like small meetup and updating it. I actually just use flask, which I think is funny because you have that is not it. I wish that was it. "Diversityorgs.tech". I was like their design work much better than mine. 00:15:23 There we go. Yeah. @@ -66,27 +66,27 @@ 00:15:29 So you can just search for it and like, but yeah, like, it's cool that like, you can just use things like flask on the back end and build your own little admin portal. And you don't have to worry about spinning up a server or like being worried that someone's gonna try to brute force your back end or anything, you're just like, oh, let me start my flask engine run. It's sending REST API calls to Elastic Search. And then it just works, which is great. That's really cool. -00:15:55 This portion of talk Python to me is sponsored by linode. Visit talk python.fm slash linode. To see why linode has been voted the top infrastructure as a service provider by both jeetu and trustradius. From their award winning support, which is offered 20 473 65 to every level of user, the ease of use and setup. It's clear why developers have been trusting linode for projects both big and small, since 2003. deploy your entire application stack with all the nodes one click app marketplace, or build it all from scratch and manage everything yourself with supported centralized tools like terraform. The node offers the best price performance value for all compute instances, including GPUs, as well as block storage Kubernetes. And their upcoming bare metal release. linode makes cloud computing fast, simple and affordable, allowing you to focus on your projects, not your infrastructure, visit talk python.fm slash linode. and sign up with your Google account, your GitHub account or your email address. And you'll get $100 in credit, as talk python.fm slash linode. Or just click the link in your podcast player show notes. And thank them for supporting talk Python. I think this whole diversity or tech places is really cool. So the idea is basically you're trying to create groups of that people can reach out to you because if you see people like you, you feel way more like you should be part of that community right way more part of technology or whatever. +00:15:55 This portion of "Talk Python to Me" is sponsored by Linode. Visit 'talkpython.fm/linode'. To see why Linode has been voted the top infrastructure as a service provider by both G2 and TrustRadius. From their award winning support, which is offered 24/7, 365 to every level of user, the ease of use and setup. It's clear why developers have been trusting Linode for projects both big and small, since 2003. deploy your entire application stack with all the nodes one click app marketplace, or build it all from scratch and manage everything yourself with supported centralized tools like Terraform. The Linode offers the best price performance value for all compute instances, including GPUs, as well as block storage Kubernetes. And their upcoming Bare Metal release. Linode makes cloud computing fast, simple and affordable, allowing you to focus on your projects, not your infrastructure, visit 'talkpython.fm/linode'. and sign up with your Google account, your GitHub account or your email address. And you'll get $100 in credit, as 'talkpython.fm/linode'. Or just click the link in your podcast player show notes. And thank them for supporting talk Python. I think this whole "diversityorgs.tech" places is really cool. So the idea is basically you're trying to create groups of that people can reach out to you because if you see people like you, you feel way more like you should be part of that community right way more part of technology or whatever. 00:17:23 Just try it out. Just type in Portland and hit Search and see what comes up like there should be groups in Portland, there'll definitely be groups. -00:17:30 Yeah. Oh, yeah. Ladies, blacks and technologies, Django girls rolling more. There's more. Yeah, there you go. Oh, yeah, like, +00:17:30 Yeah. Oh, yeah. PyLadies, Djacks in technologies, Django girls rolling more. There's more. Yeah, there you go. Oh, yeah,, -00:17:40 I need a lesson in UI. So this is all running react. But the way that I update this, like if someone messaged me and says, Oh, hey, I want my my organization added to this list, I just have a flask site that I just spin up locally on my machine that sends all that like, it's just a quick form with you. +00:17:40 This is less than UI. So this is all running react. But the way that I update this, like if someone messaged me and says, Oh, hey, I want my my organization added to this list, I just have a flask site that I just spin up locally on my machine that sends all that like, it's just a quick form with you. -00:17:55 And then it sends all the data to my server in elastic cloud. And then it's up on the website instantly, I was just going to point out one of the powerful things that you can do that I'd only occurred to me much later than I wish it had done is a very fast way to get a gooey tool for something you're only ever going to use for yourself is something like classical Django or something like that doesn't have to be pretty, it doesn't have to look good. The only place it's ever going to run is on your own machine. But you get all the HTML, gooey stuff, basically, for free. You're not writing anything, you're not writing a desktop for buttons to click it just firing up some HTML. So that's actually quite a useful thing to do. You don't have to worry about deployment, there's no security issues, etc. It never leaves your hard drive. But yeah, +00:17:55 And then it sends all the data to my server in elastic cloud. And then it's up on the website instantly, I was just going to point out one of the powerful things that you can do that I'd only occurred to me much later than I wish it had done is a very fast way to get a gooey tool for something you're only ever going to use for yourself is something like Flask or Django or something like that doesn't have to be pretty, it doesn't have to look good. The only place it's ever going to run is on your own machine. But you get all the HTML, gooey stuff, basically, for free. You're not writing anything, you're not writing a desktop for buttons to click it just firing up some HTML. So that's actually quite a useful thing to do. You don't have to worry about deployment, there's no security issues, etc. It never leaves your hard drive. But yeah, -00:18:33 yeah, absolutely. You know, another one. That's pretty good at the anvil. Yeah, in terms of I was gonna want something prime misspelling. Again, we're watching Mike Google, which is, yeah, there we go. There we go. I thought that's what I typed. But that's okay. It's interesting, because you write Python, even on the front end, and it runs in your browser, but it takes care of the hosting. And yeah, what you don't have to share it publicly. So it's kind of you know, if you want to have a semi hosted one, that's also a pretty decent option. But yeah, give me right that if you're looking for a UI, sometimes the right thing might be just a private flask app for you. Or maybe just for like your people who are going to work with behind the scenes. It doesn't have to be pretty. +00:18:33 yeah, absolutely. You know, another one. That's pretty good at the 'Anvil'. Yeah, in terms of I was gonna want something probably misspelling. Again, we're watching Mike Google, which is, yeah, there we go. There we go. I thought that's what I typed. But that's okay. It's interesting, because you write Python, even on the front end, and it runs in your browser, but it takes care of the hosting. And yeah, what you don't have to share it publicly. So it's kind of you know, if you want to have a semi hosted one, that's also a pretty decent option. But yeah, give me right that if you're looking for a UI, sometimes the right thing might be just a private flask app for you. Or maybe just for like your people who are going to work with behind the scenes. It doesn't have to be pretty. 00:19:08 Yeah, it doesn't have to be pretty, you're not selling it or anything. It has all the buttons in the right places, or for that matter if it's the only people you know, they can ask you What do I do? And you can tell them, it doesn't have to even be particularly attractive or easy to use if it gets the job done. -00:19:20 Yeah, absolutely. Absolutely. Very cool. All right. Thanks. Thanks, Jay. That's a good one reverse, what's the first one you want to share? +00:19:20 Yeah, absolutely. Absolutely. Very cool. All right. Thanks. Thanks, Jay. That's a good one Rivers, what's the first one you want to share? -00:19:26 first one I want to share is an app called demolisher. And I made this because when I'm writing songs, I very often like to Frankenstein, unrelated bits together, that ends up sounding like a coherent song. But for me, it feels like the song feels fresher when I have these unrelated bits, where when I was writing each bit, it was like this is the only thing in my mind. I'm just making this as good as possible. So I stick the few of those together and it turns into a song. However, when I when I'm looking for a bit to attach to the previous bit, I usually have some idea of What I'm looking for, +00:19:26 first one I want to share is an app called 'demolisher'. And I made this because when I'm writing songs, I very often like to Frankenstein, unrelated bits together, that ends up sounding like a coherent song. But for me, it feels like the song feels fresher when I have these unrelated bits, where when I was writing each bit, it was like this is the only thing in my mind. I'm just making this as good as possible. So I stick the few of those together and it turns into a song. However, when I when I'm looking for a bit to attach to the previous bit, I usually have some idea of What I'm looking for, 00:20:01 right? They can just be random combination of different types of music or riffs. -00:20:06 Yeah, at some point, even if it's a very contrasting bit, it's still something somewhat specific. So I don't want to have to look through all 1500 of my old unused demos. So I needed some kind of filter. There's a Windows out called mp3 tag, which I highly recommend for, for tagging, music files, there's a search bar in there. And I'm not sure exactly what the languages for that search where it's some kind of sequel looking thing. But I would write these filter queries. And they'd get quite complicated and long and like all these nests with parentheses, there's the filter bar down at the very bottom gotcha, I think I was using this app in a way that most people weren't, because my filters were just gigantic and unmanageable. I wrote this this app called demolisher, which is tkinter window with a bunch of switches that you set all the switches, and then you hit a filter, and it will copy this long string into that filter bar there. And you end up with the demos that only match the criteria you're looking for. +00:20:06 Yeah, at some point, even if it's a very contrasting bit, it's still something somewhat specific. So I don't want to have to look through all 1500 of my old unused demos. So I needed some kind of filter. There's a Windows out called 'MP3TAG', which I highly recommend for, for tagging, music files, there's a search bar in there. And I'm not sure exactly what the languages for that search where it's some kind of sequel looking thing. But I would write these filter queries. And they'd get quite complicated and long and like all these nests with parentheses, there's the filter bar down at the very bottom gotcha, I think I was using this app in a way that most people weren't, because my filters were just gigantic and unmanageable. I wrote this this app called demolisher, which is tkinter window with a bunch of switches that you set all the switches, and then you hit a filter, and it will copy this long string into that filter bar there. And you end up with the demos that only match the criteria you're looking for. 00:21:13 Oh, how interesting. So it basically develops this the SQL query type thing? Yeah. For this app, is it okay, if I put it up on the screen? Do you mind the screenshot? @@ -104,7 +104,7 @@ 00:22:46 own stuff as well and intensely personal, because you built it exactly to your needs. So very neat. Yeah. -00:22:51 And it's quite easy to add or remove parameters. There's a file in this package called sections. And each section is one of these columns. So it's basically just the dictionary. That is so cool. works perfectly fine. Yeah. Excellent. I love that there's a field there like I would add fiddly to think I've ever tried to do. That's how it always feels. I think you have the poetry guy on the podcast. So I've just tried to start converting a bunch of these to real packages. And then I could put them up on GitHub. So other mp3 tag users could download this and eat and use it themselves. +00:22:51 And it's quite easy to add or remove parameters. There's a file in this package called sections. And each section is one of these columns. So it's basically just the dictionary. That is so cool. works perfectly fine. Yeah. Excellent. I love that there's a field there like I would add fiddly to think I've ever tried to do. That's how it always feels. I think you have the poetry guy on the podcast. So I've just tried to start converting a bunch of these to real packages. And then I could put them up on GitHub. So other mp3 tag users could download this and and use it themselves. 00:23:28 Oh, yeah, that'd be really neat. And maybe they can add some extra features and stuff as well. Yeah, yeah. I love this. I love how you brought all this stuff together. And it's just, it's so exactly what you need to make your life better. And like you said, you had 1000s of these demos and these pieces you want to bring together and it's just such a challenging format to combined. And then here's how you just bring it all together. Right? @@ -114,21 +114,21 @@ 00:24:05 Well, probably not anything you guys would know, because this is only I've only been using this the last few years. And sadly, none of those songs have become massively well known. So like, if you go back to the old Weezer classics, I was cutting and pasting, but I didn't have 1500 demos back then it was just you know, -00:24:24 I had a cassette tape, I could look through awesome. the live stream deck or the hacker nice username there. So if I use this, and it made us came up with a search, and it didn't return a sound, I couldn't help but to see that as a challenge to myself to come up with a sound that matched that query. That's a great idea. +00:24:24 I had a cassette tape, I could look through awesome. the live stream Zacker the Hacker nice username there. So if I use this, and it made us came up with a search, and it didn't return a sound, I couldn't help but to see that as a challenge to myself to come up with a sound that matched that query. That's a great idea. 00:24:43 random things and see what comes up and then from those searches, just notice, one of the things I think is very kind of recall about your approach to rivers, particularly in a small tool approaches you didn't even sit down and write yourself a replacement, mp3 file player or what have you. You're quite happy with the two of you here, but Once you have the filter query, you're quite happy with the existing tool to find them and play them and so forth. So you just write yourself a filter maker. Basically, there's a, there can be a strong temptation, or if he's I would be tempted to go too far, and then throw in foul playing and media playback and so forth. And you don't need any of that. You've got it too, right. You just need something to make you a filter. Yeah, yeah. Yeah. Good point. -00:25:17 Yeah, I was talking to Matthew Rocklin from dask and coil a little while ago. And he said that they have this interesting philosophy, I have probably misquoted just a little bit but something of the principle of minimum or minimal innovation, or like, what is the least thing we can introduce? And what is, what other pieces can we combine that everyone is already using? And knowing about and yeah, I think this sort of matches that. Oh, +00:25:17 Yeah, I was talking to Matthew Rocklin from Dask and 'Coil' a little while ago. And he said that they have this interesting philosophy, I have probably misquoted just a little bit but something of the principle of minimum or minimal innovation, or like, what is the least thing we can introduce? And what is, what other pieces can we combine that everyone is already using? And knowing about and yeah, I think this sort of matches that. Oh, -00:25:42 so I should add that one of the packages I use then is called pie when auto. So when I start demolisher. The first thing it does is it pie when auto opens up the mp3 tag Windows app. And then when I'm done with the creating the filter, pie when auto copies and pastes it into the filter bar on mp3 tag, oh, how cool. +00:25:42 so I should add that one of the packages I use then is called py win auto. So when I start demolisher. The first thing it does is it 'pywin auto' opens up the mp3 tag Windows app. And then when I'm done with the creating the filter, 'pywinauto' copies and pastes it into the filter bar on mp3 tag, oh, how cool. -00:26:04 Yeah, so basically, the use case is you import the application from it, you can tell it to start some EFC on Windows, and then just tell it to start typing. He's into it. Yeah. It's awesome. It's very cool. It's a really cool way to combine. Yeah, yeah. Fantastic. +00:26:04 Yeah, so basically, the use case is you import the application from it, you can tell it to start some EXE on Windows, and then just tell it to start typing. He's into it. Yeah. It's awesome. It's very cool. It's a really cool way to combine. Yeah, yeah. Fantastic. -00:26:20 If I can just maybe make a note, you've reminded me about Python auto, and I'd forgotten about a career episode from my career of 10 years plus ago, pi when auto is also very useful if anybody's looking for well, exactly what does windows automation, what the kind of thing I'm thinking of is that more than once, in my previous work, we got the tools custom made by the supplier, a particular vendor in and somebody was asked to knock together in a day. So it was terrible to use, you have to click 50 buttons to get what you wanted, it didn't remember any settings, every time you fired it up, you had to click all the boxes, again, for exactly what you need for your output. And it also means your factory work you wanted as automated as possible, you want the soul to be running as part of a bigger stream of work. And you, you can't really say well do all these automated tasks, then send somebody to the computer, take this piece of paper, click these five or 15 sections, and then take the resulting file. And I will an auto was fantastic for that kind of thing. Because you've got I actually wrote some Python basically remembered what the tool should be set to do, by as the tool makes those settings, runs it and grabs the resulting file. +00:26:20 If I can just maybe make a note, you've reminded me about "Pywinauto", and I'd forgotten about a career episode from my career of 10 years plus ago, 'pywinauto' is also very useful if anybody's looking for well, exactly what does windows automation, what the kind of thing I'm thinking of is that more than once, in my previous work, we got the tools custom made by the supplier, a particular vendor in and somebody was asked to knock together in a day. So it was terrible to use, you have to click 50 buttons to get what you wanted, it didn't remember any settings, every time you fired it up, you had to click all the boxes, again, for exactly what you need for your output. And it also means your factory work you wanted as automated as possible, you want the soul to be running as part of a bigger stream of work. And you, you can't really say well do all these automated tasks, then send somebody to the computer, take this piece of paper, click these five or 15 sections, and then take the resulting file. And 'pywinauto' was fantastic for that kind of thing. Because you've got I actually wrote some Python basically remembered what the tool should be set to do, by as the tool makes those settings, runs it and grabs the resulting file. -00:27:20 Yeah, that's super neat. Because if you want to automate something on the web, you could use something like Selenium. But if you want to automate, like a custom VB six app that somebody wrote, 20 years ago, there's no API. Well, exactly. Yeah. And when you open these tools +00:27:20 Yeah, that's super neat. Because if you want to automate something on the web, you could use something like Selenium. But if you want to automate, like a custom VB 6 app that somebody wrote, 20 years ago, there's no API. Well, exactly. Yeah. And when you open these tools -00:27:31 up these things like, you know, you need to tick a box 27. And, you know, drop down to this. It's not, it's like not they haven't been designed to be particularly well written. But the Python auto doesn't care is heavy enough to use dodgy variable names and so forth. Yeah. +00:27:31 up these things like, you know, you need to tick a box 27. And, you know, drop down to this. It's not, it's like not they haven't been designed to be particularly well written. But the 'pywinauto' doesn't care it's happy enough to use dodgy variable names and so forth. Yeah. 00:27:45 Yeah, for sure. @@ -138,21 +138,21 @@ 00:28:29 the toughest parts about getting people to understand you know how to get into Python is you don't really know the little tasks that you can do that you can solve with it until you get in and you can do a few things. So little things like that open the door for you. -00:28:40 Yeah, just like a comment on Livestream. Brian has never heard of Python auto. This has just opened a lot of quasi RPA doors. d. Fantastic. Alright, so I wanted to talk about one as well. So I'm going to throw out this one that I have to do, though, over on the course website, we have literally 1000s of videos. And these are MP fours. There's a whole bunch of really cool automation about like geo distributed in them and all sorts of stuff that I wrote, during a break at my hotel at pi con one year when I got caught. I knew just a break from humanity. But the thing I wanted to highlight is I end up with a folder full of folders will have hundreds of MP fours and I need to come up with some way to import those into the database. And I was going through bigger on how long is this video, I'd go in my Mac finder as hard as three minutes and 20 seconds. So what is that that's 200 seconds. And I would put that into the database and the file name is this and that would do it again and again. And after a couple of those and a couple of mistakes and similar stuff with the podcast, I would just go crazy. I'm like I can't take this. Maybe I have to hire somebody because I make too many mistakes. And it's not useful for me to spend so much time converting minutes and seconds, two seconds and trying to do this. So what I ended up doing is writing a little script I just go to a directory type JSON to find the videos I get a giant JSON document that I can just import into MongoDB Boom, and it goes through. And it finds it does two things that are really fun. One is it goes through and it uses a little bit like what rivers was talking about uses FF probe, not the same thing. But it goes in and figures out information about the audio stream, or the video stream. And it'll give me back the time and information. And the way it works is I'm not using some API for this, I'm actually using sub process. And then there's an output format for JSON. And I just capture the standard out, and then read it into a Python dictionary. And then boom, I have all that information. It's as if FFmpeg had an API for Python. So that's really fun. And then I want to not bother to scroll back and copy it. So I use paperclip UI, I was wondering how you're gonna say that. I've used it, quite hard to pronounce it. And so then I just I generate this huge thing, this composition of all these video files, and then I just use paperclip to copy it to the clipboard. And then I just paste it in to the tool that is editing the JSON and like, does all the important stuff, and boom, off it goes. So real simple, but this thing was like, it's no big deal to say I just want to, you know, sort of get the right file name relative to each other and get the time and convert it. But boy, did it save me a lot of frustration. So I want to recommend those two things, especially paperclip, that's a cool one. +00:28:40 Yeah, just like a comment on Livestream. Brian has never heard of 'pywinauto'. This has just opened a lot of quasi RPA doors. For me. Fantastic. Alright, so I wanted to talk about one as well. So I'm going to throw out this one that I have to do, so, over on the course website, we have literally 1000s of videos. And these are MP4's. There's a whole bunch of really cool automation about like geo distributed in them and all sorts of stuff that I wrote, during a break at my hotel at PyCon one year when I got caught. I needed just a break from humanity. But the thing I wanted to highlight is I end up with a folder full of folders will have hundreds of MP fours and I need to come up with some way to import those into the database. And I was going through bigger on how long is this video, I'd go in my Mac finder as hard as three minutes and 20 seconds. So what is that that's 200 seconds. And I would put that into the database and the file name is this and that would do it again and again. And after a couple of those and a couple of mistakes and similar stuff with the podcast, I would just go crazy. I'm like I can't take this. Maybe I have to hire somebody because I make too many mistakes. And it's not useful for me to spend so much time converting minutes and seconds, two seconds and trying to do this. So what I ended up doing is writing a little script I just go to a directory type JSON to find the videos I get a giant JSON document that I can just import into MongoDB Boom, and it goes through. And it finds it does two things that are really fun. One is it goes through and it uses a little bit like what rivers was talking about uses FF probe, not the same thing. But it goes in and figures out information about the audio stream, or the video stream. And it'll give me back the time and information. And the way it works is I'm not using some API for this, I'm actually using sub process. And then there's an output format for JSON. And I just capture the standard out, and then read it into a Python dictionary. And then boom, I have all that information. It's as if FFmpeg had an API for Python. So that's really fun. And then I want to not bother to scroll back and copy it. So I use 'pyperclip', I was wondering how you're gonna say that. I've used it, quite hard to pronounce it. And so then I just I generate this huge thing, this composition of all these video files, and then I just use pyperclip to copy it to the clipboard. And then I just paste it in to the tool that is editing the JSON and like, does all the important stuff, and boom, off it goes. So real simple, but this thing was like, it's no big deal to say I just want to, you know, sort of get the right file name relative to each other and get the time and convert it. But boy, did it save me a lot of frustration. So I want to recommend those two things, especially pyperclip, that's a cool one. -00:31:14 Yeah, hobbit grip is very nifty. The other thing I would just pick up from what you said they've Michael is the point that you don't have to use Python to solve all the problems. If If probe exists, it's perfectly good at getting you the data you want. subprocesses are perfectly reasonable way, let the expert to get you to do the difficult thing. If If probes already on your system, it knows how to get to the doctor, you want to get to the doctor and the format you can use just use it to do it. You don't have to fight them to do everything perfectly. There's lots of very useful tools out there that are literally using Python to glue three other other tools together. And that's fine. And that works perfectly. +00:31:14 Yeah, pyperclip is very nifty. The other thing I would just pick up from what you said they've Michael is the point that you don't have to use Python to solve all the problems. If If probe exists, it's perfectly good at getting you the data you want. subprocesses are perfectly reasonable way, let the expert to get you to do the difficult thing. If If probes already on your system, it knows how to get to the data, you want to get to the data and the format you can use just use it to do it. You don't have to fight them to do everything perfectly. There's lots of very useful tools out there that are literally using Python to glue three other other tools together. And that's fine. And that works perfectly. -00:31:46 It works great. I'm sure you see this a lot in your world where there's a lot of sort of stuff that is more like desktop apps or COI apps meant to automate things. But maybe there's not a programming API for Python two, it is often that kind of thing. Yeah, yeah. Fantastic. All right. I think we've looped around our group here. So rusty, what I'm picking up on the next thing you wanted to share? +00:31:46 It works great. I'm sure you see this a lot in your world where there's a lot of sort of stuff that is more like desktop apps or CLI apps meant to automate things. But maybe there's not a programming API for Python to it , it is often that kind of thing. Yeah, yeah. Fantastic. All right. I think we've looped around our group here. So rusty, what I'm picking up on the next thing you wanted to share? 00:32:07 Yeah. So the next thing I needed to do at work was that I was going to automate was, we have to do state reporting. And it's this big year long thing. And it's basically what's caused my position to pop up all over the state. So it's to keep giving the state information about our students and what's going on all the time. And it was a horrible process that they decided to automate. It used to be people filling out papers and sending it in, and then all of a sudden, it just became this computer thing. And then computer people had to do it. But it really wasn't their area of expertise before. So we have to send our files and CSV files in and then they get checked, we get errors back that we have to fix that and do whatever. So we're given an automated way to do it. So if we can get the files there overnight, we get the time slot, and then we get everything back. But eventually these errors creep in. It's a flawed system. And they know it's flawed. But since it's a government agency, there's like nothing that can be done about it for multiple years, or whatever. So we're looking something different to kind of combat that. Basically, I would get back errors every day. And then I would have to go and hunt them down. They wouldn't actually be errors that be false errors. Oh, man. So what you have to do is upload three sets of blanks, and then boom, then you can start over and that now your files are clean, and they can it can work. So what I just did was I was like, well, we only have the one automated spot. So I whipped up a little program in selenium, that goes in and submits my blinks every night, at nine o'clock at night. So I'm always working off of the clean files. Maybe that's something I would never think of to do. But I could do it's it's a bit like Kim's project, you know, I could have done that take five minutes at the end of every night and submitted my blanks and then let everything else happen afterwards. But it just seemed really easy for me to go ahead. It was a it was a great puzzle to find out, you know how to navigate around inside Selenium inside this older looking website. But it was a it was a great solution for me. And I don't really get the errors anymore. And because we can address things, you know, that day, it's really improved my job tremendously. So I'd say it takes I would say it saves me hours a week, just being able to have this little tool automated. Fantastic to just like reset -00:34:06 the errors. Yep. Talk Python to me is partially supported by our training courses. Do you want to learn Python, but you can't bear to subscribe to yet another service at talk Python training we hate subscriptions to that's where our course bundle gives you full access to the entire library of courses. But one fair price. That's right, with the course bundle, you save 70% off the full price of our courses, and you own them all forever. That includes courses published at the time of the purchase, as well as courses released within about a year of the bundle to stop subscribing and start learning at talk python.fm slash everything. So I would say Selenium is the PI when auto but for the web, right? The equivalent of that is such an amazing tool for that kind of automation. Yeah, because we've got things like beautifulsoup we've got requests and scrapey and stuff but they don't so easily. scarer let me go over here, log in, you know, enter my username and password here, click the button called login, then go to this page and then do that thing. It's It's amazing, right? I think that's definitely one of the secrets, select these 10 files and +00:34:06 the errors. Yep. Talk Python to Me is partially supported by our training courses. Do you want to learn Python, but you can't bear to subscribe to yet another service. At talk Python training we hate subscriptions to that's where our course bundle gives you full access to the entire library of courses. But one fair price. That's right, with the course bundle, you save 70% off the full price of our courses, and you own them all forever. That includes courses published at the time of the purchase, as well as courses released within about a year of the bundle so stop subscribing and start learning at "talkpython.fm/everything". So I would say Selenium is the 'pywinauto' but for the web, right? The equivalent of that is such an amazing tool for that kind of automation. Yeah, because we've got things like beautifulsoup we've got requests and scrapey and stuff but they don't so easily. scarer let me go over here, log in, you know, enter my username and password here, click the button called login, then go to this page and then do that thing. It's It's amazing, right? I think that's definitely one of the secrets, select these 10 files and 00:35:13 really good. That was one of the reasons why, you know, with my previous one, the dashboards, I had to create that web app, that simple web app to like upload stuff, because at first my first thought was like, well, I'll just go to the website and scrape it with like beautifulsoup. But then when you start getting like JavaScript frameworks and things like that, that come into play, you're just you can't get that 00:35:35 curly braces that are just where the data would go. Yeah, -00:35:38 I cycle in my spare time. So they came up with these velo sambas from the Dinos, which were like cycling shoes, but they look like soccer shoes, which I was like instantly alert with, they sold out within seconds every time they put a new batch up. So I actually use Selenium and I kind of automated check every three hours to kind of go in and scrape it and send me an email. If my size was then and I eventually got him. But yeah, so that it was a really cool little fun project that I just kind of used everything I learned on this to go ahead and make that happen. I thought I should do that for they, they build everything out of JavaScript. So it's really hard to get so you couldn't do it with beautifulsoup. I had to go in and grab it this way. +00:35:38 I cycle it in my spare time. So they came up with these velo sambas from the Adidas, which were like soccer shoes, but they look like soccer shoes, which I was like instantly alert with, they sold out within seconds every time they put a new batch up. So I actually use Selenium and I kind of automated check every three hours to kind of go in and scrape it and send me an email. If my size was then and I eventually got him. But yeah, so that it was a really cool little fun project that I just kind of used everything I learned on this to go ahead and make that happen. I thought I should do that for they, they build everything out of JavaScript. So it's really hard to get so you couldn't do it with beautifulsoup. I had to go in and grab it this way. 00:36:15 Yeah, yeah. Very cool. Rivers. Did you use Selenium? When you were getting that schedule for your when you're touring? @@ -162,9 +162,9 @@ 00:36:31 Yeah. When I was trying to scrape from our agents web service, I was trying to use Selenium. Yeah, very cool. -00:36:37 I kind of wanted to just mention one other thing, Michael, I had the mic here, just the way that I've been automating things, I use a lot of Raspberry Pi's in the early days to use cron jobs to kind of fire these off, because I know that's something that I had trouble figuring out when I wanted to start automating things was how to make it happen when you want it. And I had a guy that was a heavy Linux guy was able to help me figure out, you know, kind of how to do that with cron jobs and things then I moved on to an app on my Mac called Launch Control, that helps create demons and things like that, which is usually I found really helpful. So those are some great tools to help make these things happen on the time that you want it. Yeah, +00:36:37 I kind of wanted to just mention one other thing, Michael, I had the mic here, just the way that I've been automating things, I use a lot of Raspberry Pi's in the early days to use crown jobs to kind of fire these off, because I know that's something that I had trouble figuring out when I wanted to start automating things was how to make it happen when you want it. And I had a guy that was a heavy Linux guy was able to help me figure out, you know, kind of how to do that with cron jobs and things then I moved on to an app on my Mac called Launch Control, that helps create demons and things like that, which is usually I found really helpful. So those are some great tools to help make these things happen on the time that you want it. Yeah, -00:37:13 that's really neat. on my Mac, I install stuff with homebrew. And a lot of times you can install it as a service as well. And it behind the scenes will basically run the Launch Control stuff, install something like MongoDB or something on your Mac, which gives you slightly simpler commands to do it. But it's got to have been like lined up just like that. That's cool. Now, this is actually quite dandiya. The other thing that is maybe worth looking at, if you wanted to do that kind of automation for stuff that's not just on your own machine, the GitHub actions, which are not particularly familiar with, or Diplo itself has got some very powerful, effectively free to use until you get quite heavily involved, ci and I've forgotten what ci stands for right now. +00:37:13 that's really neat. on my Mac, I install stuff with homebrew. And a lot of times you can install it as a service as well. And it behind the scenes will basically run the Launch Control stuff, install something like MongoDB or something on your Mac, which gives you slightly simpler commands to do it. But it's got to have been like lined up just like that. That's cool. Now, this is actually quite dandy. The other thing that is maybe worth looking at, if you wanted to do that kind of automation for stuff that's not just on your own machine, the GitHub actions, which are not particularly familiar with, oh yeah itself has got some very powerful, effectively free to use until you get quite heavily involved, CI and I've forgotten what CI stands for right now. 00:37:49 Continuous integration, that's the word but really, it's just automation at a particular time do this thing like that can be quite powerful. @@ -172,19 +172,19 @@ 00:38:13 my GitHub action experiences not great, but certainly if you can do it on Git lab, I'm sure you can do the CI tools are all geared around this guy. I've heard whispers but something's changed in the chatter do something. -00:38:24 Yeah. Let's chat, Rusty, because my topic is actually designed for +00:38:24 Yeah. Let's chat, Rusty, because my topic is actually designed for git hub actions 00:38:29 fantastic. I'm glad I shaved today. Yeah, -00:38:34 yeah, I can I put my DevOps hat on that, that ci kind of stuff is bread and butter. For acids, it's it makes a heck of a difference. Because it means when the developers make changes to the code, they don't have to know how to go about and deploy things or build things and so forth. It just happens. It basically happens folding, +00:38:34 yeah, I can I put my DevOps on that, that ci kind of stuff is spreading better for us, it's it makes a heck of a difference. Because it means when the developers make changes to the code, they don't have to know how to go about and deploy things or build things and so forth. It just happens. It basically happens folding, -00:38:51 that's fantastic. I also set up an automation. So if I get pushed to a certain branch, I'll just automatically do a zero downtime, redeploy of like the top Python training, yeah, infrastructure and stuff like that, which it's so fantastic. Rivers, you mentioned source code before you guys are using GitHub for your kind of stuff is there like source control plus music going on here? +00:38:51 that's fantastic. I also set up an automation. So if I get pushed to a certain branch, I'll just automatically do a zero downtime, redeploy of like the talk Python training, yeah, infrastructure and stuff like that, which it's so fantastic. Rivers, you mentioned source code before you guys are using GitHub for your kind of stuff is there like source control plus music going on here? -00:39:11 That's one of my many weaknesses, because I'm usually just working on my own, I haven't had much use for that sort of collaboration tool. I do have my own website. So it does go through GitHub. I've recently started volunteering, like a volunteer coder with this other group of people. And I'm gonna have to learn a lot more this gift of these gift tools, push pull all that. +00:39:11 That's one of my many weaknesses, because I'm usually just working on my own, I haven't had much use for that sort of collaboration tool. I do have my own website. So it does go through GitHub. I've recently started volunteering, like a volunteer coder with this other group of people. And I'm gonna have to learn a lot more this git of these git tools, push pull all that. 00:39:35 Once you have a need for it. I think it's easier to learn, you know, until then, it's all just something you hear about, but then it's like, oh, now I need this. Now I can dig in and figure it out. -00:39:44 Yeah, if I can basically have one suggestion. If you are currently making changes to your software by making final final version of two kinds of files on your hard drive, look into Visual control doesn't have to be good, but Git as effectively won this argument. It really is by far the the most well used one Even if you never collaborate with it, just the ability to use a version control system to basically see what your code looked like yesterday, or when you made the last, the change, you made three changes ago, compare them to each other, those kinds of things. Until you have that capacity, you don't really kind of think about how you thought it would be once you are able to do it, you cannot really imagine not being able to do it. +00:39:44 Yeah, if I can basically have one suggestion. If you are currently making changes to your software by making final final.version.2 kinds of files on your hard drive, look into Visual control doesn't have to be good, but Git as effectively won this argument. It really is by far the the most well used one Even if you never collaborate with it, just the ability to use a version control system to basically see what your code looked like yesterday, or when you made the last, the change, you made three changes ago, compare them to each other, those kinds of things. Until you have that capacity, you don't really kind of think about how you thought it would be once you are able to do it, you cannot really imagine not being able to do it. 00:40:21 You're saying, even if I'm not collaborating with anyone, it's still very useful. See, do so involve give? Yeah, @@ -194,63 +194,63 @@ 00:41:05 Yeah, that is super handy. But like, just the ability to see like, I want to see how it was two weeks ago when it worked. Like I expected, and now it doesn't anymore. Tell me? Why did I break it? What did I do? Right? And then you don't make it public? Right? No, definitely. No, no, definitely not. Yeah, yeah. I feel like we all have been there with Zack the hacker, like once you've accidentally lost eight hours worth of work because of misunderstanding a get you probably that's when you -00:41:31 given talks on the data I've lost from bad man's +00:41:31 I've talked on the data I've lost from bad git commands 00:41:35 or because you didn't commit something. And you really, really wish you did. Yeah, if we had more time and some beers, I would definitely be able to tell some good horror stories of that. But uh, I think it's Kim, you're up next on the sharing. All right, -00:41:48 I just wanted to just finish off that good discussion. Just another just to comment on what you were saying there rivers in terms of making it public, git itself never needs to necessarily needs to leave your hard drive, you could run git entirely locally, if you want to do and it's still useful as a version control system. GitHub is just a publicly accessible Git tool. And it's not the only one Git lab exists as well. But even then, you don't have to share anything, you can do it all privately. And as long as you're the only person overseeing it, that is still useful, right? +00:41:48 I just wanted to just finish off that git discussion. Just another just to comment on what you were saying there rivers in terms of making it public, git itself never needs to necessarily needs to leave your hard drive, you could run git entirely locally, if you want to do and it's still useful as a version control system. GitHub is just a publicly accessible Git tool. And it's not the only one Git lab exists as well. But even then, you don't have to share anything, you can do it all privately. And as long as you're the only person overseeing it, that is still useful, right? 00:42:17 I never do that. Right? You could just do get in it and just save it there. Right? Is something you could do if you wanted to. Yeah, Yeah, I did. If it were in Dropbox, it'd be backed up even Yeah, exactly. -00:42:26 A lot of us are using get lab, get lab and GitHub as off site backups of our files, not necessarily to collaborate with anyone on them. Oh, yeah, that's absolutely true. In my case, we're back to PDFs, actually, and manipulating the data in them, although not csvs. This time. The second little tool I wanted to talk about was, again, doesn't have a name. And in fact, this is ties into a previous example, this, this is in my Git lab. But it's one of my private GitHub repos, because it involves some kind of data that the world doesn't need to see, that has basically, my wife and several other colleagues regularly receive large PDF documents, and she's in the financial services industry, that's got 60 to 70 people's account details in them. So it's three, three pages per person. So you could get a 200 page document. And they then basically need to split those up and send them to each of the individual recipients. And similar to what you were saying earlier, st you get your CSV doctor and a PDF be much more convenient if you could get that CSV directly, in this case would be much more convenient if you could get 70 people separate files, but that's just not how they come. It's just that there is no, you can't go to the provider generally and say do something else, you know, what you get is what you get. And from various cries of anguish on my life of hours of doing this, and it's error prone and you opening up a PDF GUI tool, selecting the first three pages and saying save these three years, this person's name, then the next three and save these three is this person's name, that kind of thing. It was actually surprisingly easy to use some Python to write them a tool to make life a lot easier on their side, which effectively opened the PDF. And I had a comment of the name of it. What did I use PI mu PDF, which I had never heard of before. I said, You've never heard of that either. I don't know I in fact, I haven't looked at it. Since I wrote this thing. I forgotten what it was called. It used to be called Fitz. There's something called fits if it said, which this has become, which is what was confusing because Fitz, what's his what's in my poetry history in my project at amo file, and this is actually a it's a remarkable project, because you split up everything in in your PDF, you can basically access all the text fields. And once I done that, it was a lot of kind of trial and error, I split up each page, printed out all the fields until it looked like the one I wanted. And when I had that now, it's just a simple loop that goes through each page. And if the page happens to have the details of an account holder on it, then that's a new document. Take the ones I've seen before then and save those three pages or four pages as the person's name that I found in that PDF and repeat and within seconds, it's spitting out in 70. pdf files with automated names, so maybe not the most best way to do it. If particularly if you've got as is common in South Africa, two or three surname, two or three words and you'll soon It's trying to be smart divided. But ultimately, it's easy enough to identify who's due the file belongs to. And that was saving hours and hours on of time. +00:42:26 A lot of us are using git lab, git lab and GitHub as off site backups of our files, not necessarily to collaborate with anyone on them. Oh, yeah, that's absolutely true. In my case, we're back to PDFs, actually, and manipulating the data in them, although not csvs. This time. The second little tool I wanted to talk about was, again, doesn't have a name. And in fact, this is ties into a previous example, this, this is in my Git lab. But it's one of my private GitHub repos, because it involves some kind of data that the world doesn't need to see, that has basically, my wife and several other colleagues regularly receive large PDF documents, and she's in the financial services industry, that's got 60 to 70 people's account details in them. So it's three, three pages per person. So you could get a 200 page document. And they then basically need to split those up and send them to each of the individual recipients. And similar to what you were saying earlier, Rusty you get your CSV doctor and a PDF be much more convenient if you could get that CSV directly, in this case would be much more convenient if you could get 70 people separate files, but that's just not how they come. It's just that there is no, you can't go to the provider generally and say do something else, you know, what you get is what you get. And from various cries of anguish on my life of hours of doing this, and it's error prone and you opening up a PDF GUI tool, selecting the first three pages and saying save these three years, this person's name, then the next three and save these three is this person's name, that kind of thing. It was actually surprisingly easy to use some Python to write them a tool to make life a lot easier on their side, which effectively opened the PDF. And I had a comment of the name of it. What did I use 'PyMuPDF', which I had never heard of before. I said, You've never heard of that either. I don't know I in fact, I haven't looked at it. Since I wrote this thing. I forgotten what it was called. It used to be called Fitz. There's something called fitz if it said, which this has become, which is what was confusing because Fitz, what's his what's in my poetry history in my project at amo file, and this is actually a it's a remarkable project, because you split up everything in in your PDF, you can basically access all the text fields. And once I done that, it was a lot of kind of trial and error, I split up each page, printed out all the fields until it looked like the one I wanted. And when I had that now, it's just a simple loop that goes through each page. And if the page happens to have the details of an account holder on it, then that's a new document. Take the ones I've seen before then and save those three pages or four pages as the person's name that I found in that PDF and repeat and within seconds, it's spitting out in 70. pdf files with automated names, so maybe not the most best way to do it. If particularly if you've got as is common in South Africa, two or three surname, two or three words and you'll soon It's trying to be smart divided. But ultimately, it's easy enough to identify who's due the file belongs to. And that was saving hours and hours on of time. 00:45:08 Yeah. And that's really rough error prone work that you go to this big PDF and break it up PDFs. -00:45:15 Yeah, once you use a tool like iMovie, if you break the PDF app, I mean, it's all the little bits of text as a full stop here. And there's two commas in separate text fields, they look perfectly fine when rendered, but when broken up that terrible data format. But the beauty is if for work like this, if a tool made it in the first place, it's likely to be consistent enough that you can break it up and expect to find the same doctor in the same places because it wasn't written by human in the first place. Yeah, +00:45:15 Yeah, once you use a tool like primary, if you break the PDF app, I mean, it's all the little bits of text as a full stop here. And there's two commas in separate text fields, they look perfectly fine when rendered, but when broken up that terrible data format. But the beauty is if for work like this, if a tool made it in the first place, it's likely to be consistent enough that you can break it up and expect to find the same data in the same places because it wasn't written by human in the first place. Yeah, 00:45:40 yeah. That's super neat. Another thing you mentioned in the notes is -00:45:44 gooey, gooey. Yes, girI is a beautiful thing. +00:45:44 gooey, gooey. Yes, Gooey is a beautiful thing. 00:45:47 I think it was really interesting. -00:45:49 I vaguely mentioned I vaguely recall living now. And then on pattern bites, he brought them up briefly, you don't discuss gooeys much, but every now gooeys magnificant. They come in waves. Yeah. +00:45:49 I vaguely mentioned I vaguely recall living now. And then on python bites, he brought them up briefly, you don't discuss gooeys much, but every now gooeys magnificant. They come in waves. Yeah. 00:46:02 Jimmy g o e y as an ooey. gooey by creates a G UI GUI for applications. -00:46:09 What I really like about gooey is that when I develop things, I'm very much a learning space developer these days, I don't really want to be developing a UI app at all, if I can avoid command line is perfectly fine for what I want. So I wrote this tool as a command line tool, and then just basically attached vewy to it. And then I think two or three lines of code, I think it's really just a gooey decorator on one of my functions. It produces wonders. If you guys are watching the people on the livestream, you can have this little bit gooey, just makes really basic looking gooeys in form layout that pretty much taking every option you could give on the command line. +00:46:09 What I really like about gooey is that when I develop things, I'm very much a learning space developer these days, I don't really want to be developing a GUI app at all, if I can avoid command line is perfectly fine for what I want. So I wrote this tool as a command line tool, and then just basically attached gooey to it. And then I think two or three lines of code, I think it's really just a gooey decorator on one of my functions. It produces wonders. If you guys are watching the people on the livestream, you can have this little bit gooey, just makes really basic looking gooeys in form layout that pretty much taking every option you could give on the command line. -00:46:43 Yeah, if you wanted to create an app that would come up and show like a UI that would have little textfield or even dropdowns or stuff exactly would be the command line arguments like this. Is it and then you package it up with pi, two installers? All right. That's what I did. Yeah, well, pi installer, +00:46:43 Yeah, if you wanted to create an app that would come up and show like a UI that would have little textfield or even dropdowns or stuff exactly would be the command line arguments like this. Is it and then you package it up with Py2 installers? All right. That's what I did. Yeah, well, py installer, -00:46:57 I think I saw Yeah, sorry. You're thinking pi two, etc, perhaps, which is I'm thinking pi two. So pi installers is beautiful. So with a bit of I wrote the code, I got it working in the command line, I was happy with it, attached gooey to it. And suddenly I have a gooey, which not isn't a Windows or anything, it works just fine on a Linux box, too. And then pi installer to make any xe and I can hand the tool over to somebody else. And they don't know Python, they need no installation expertise, I'm certainly not going to be able to explain to people who aren't in the technical lead industry, how to open a command prompt on your Windows machine, find where you put this file and then give it command line arguments that that's not reasonable, +00:46:57 I think I saw Yeah, sorry. You're thinking pi two, etc, perhaps, which is I'm thinking pi two. So pi installers is beautiful. So with a bit of I wrote the code, I got it working in the command line, I was happy with it, attached gooey to it. And suddenly I have a gooey, which not isn't a Windows or anything, it works just fine on a Linux box, too. And then py installer to make any exe and I can hand the tool over to somebody else. And they don't know Python, they need not know installation expertise, I'm certainly not going to be able to explain to people who aren't in the technical lead industry, how to open a command prompt on your Windows machine, find where you put this file and then give it command line arguments that that's not reasonable, 00:47:34 right? Oh, yeah. And also set up a virtual environment. Make sure exactly. Install the requirements, like this is not gonna fly now. Exactly. Like why did you not build me an app 00:47:43 even if it exceeds its distribution level? I mean, you can make any use that's come on by No need, but no one's going to want to use that. Unless like me now for sure. You prefer not to ever use the mouse. But then most people aren't like me. They wanted to. They understand on the screen. So gooey is beautiful for that. Yeah. -00:47:57 Yeah, absolutely. That's awesome. Thanks for sharing that. All right, couple livestream comments all throughout here. But what once worked for almost like three weeks on a project and a company that had commissioned me, then the server crashed. My backup got fried, and I lost everything. Yeah, so good reason. So yeah, I've been there. good reason to put stuff up on maybe like GitHub private repos, or something like that. And then also reginal Davis came here to share love to my guy, J. Hey, original. Thanks for being here with all of us. Let's see. So now we're on Europe. Next J. Awesome. So +00:47:57 Yeah, absolutely. That's awesome. Thanks for sharing that. All right, couple livestream comments all throughout here. But what once worked for almost like three weeks on a project and a company that had commissioned me, then the server crashed. My backup got fried, and I lost everything. Yeah, so good reason. So yeah, I've been there. good reason to put stuff up on maybe like GitHub private repos, or something like that. And then also reginal Davis came here to share love to my guy, J. Hey, original. Thanks for being here with all of us. Let's see. So now you're up next Jay. Awesome. So 00:48:28 like, most of us haven't, at some point in our lives, I built my own website, I would say I don't think the show isn't gonna be sponsored by like Squarespace or anything as it might because I'm gonna, I'm gonna give you the perfect. -00:48:47 So I built my site, I made the static site generator. And one of the things that my brain is kind of buzzing right now because I actually just launched a new podcast on relay FM called conduit and like the first episode went live the same time this live stream did. So there's like a bunch of stuff happening in my head. But I say all of that to mention that when you run your own site and you're doing stuff on like other people's podcasts and other people's sites and things like that, and you're doing it consistently, you always forget to put it on your website. So I built a small tool from my little static site generator that uses feed parser to just check the RSS feeds for the shows that I do regularly and then check for certain information if I'm a guest. Like if I'm just a regular guests it'll just check to see if my guests if it's there, then it'll it'll create the blog post for me using the summary for the show. So now I do a show every Tuesday I do you know condo it's going to be bi weekly. I'm a guest on another show once a month and every once in a while Mike calls me to give me on here to guess share Python tricks and stuff. But I can have all of that running and just have a cron job for through GitHub actions that checks all of these RSS feeds every, you know, six hours or so. And it's perfectly free perfectly within the realm of it. And I don't know, it's just one of those things. It's like I love the idea of taking RSS, which is an amazing but often forgotten format, and just say, let me parse this data, because it, it has a very defined schema on it. And I mean, I love data. And I love data that's well defined. So that's kind of my tool. And feed parser is kind of the thing that that really makes that happen in conjunction with GitHub action +00:48:47 So I built my site, I made the static site generator. And one of the things that my brain is kind of buzzing right now because I actually just launched a new podcast on relay FM called 'Conduit' and like the first episode went live the same time this live stream did. So there's like a bunch of stuff happening in my head. But I say all of that to mention that when you run your own site and you're doing stuff on like other people's podcasts and other people's sites and things like that, and you're doing it consistently, you always forget to put it on your website. So I built a small tool from my little static site generator that uses feed parser to just check the RSS feeds for the shows that I do regularly and then check for certain information if I'm a guest. Like if I'm just a regular guests it'll just check to see if my guests if it's there, then it'll it'll create the blog post for me using the summary for the show. So now I do a show every Tuesday I do you know conduit it's going to be bi weekly. I'm a guest on another show once a month and every once in a while Mike calls me to give me on here to guess share Python tricks and stuff. But I can have all of that running and just have a cron job for through GitHub actions that checks all of these RSS feeds every, you know, six hours or so. And it's perfectly free perfectly within the realm of it. And I don't know, it's just one of those things. It's like I love the idea of taking RSS, which is an amazing but often forgotten format, and just say, let me parse this data, because it, it has a very defined schema on it. And I mean, I love data. And I love data that's well defined. So that's kind of my tool. And feed parser is kind of the thing that that really makes that happen in conjunction with GitHub action -00:50:38 feed partner of ours are super neat. If you're working with some kind of RSS feed, you could approach it from a like, ground up thing, I'm going to use requests, and I'm going to use element tree and do my XPath queries, you're like, Whoa, but it has just this format, right? So you could use feeds parser. And it just turns us into like a dictionary of dictionaries, which is so much nicer. Yeah. So you don't have to worry about the RSS format. Yeah, it's a quick and easy one. So it's a nice example of taking a higher level Python library, you know, maybe a good place to look would be awesome Python or something like that to go. Instead of just saying, I'm going to start from scratch, you're like, Okay, well, I'm gonna go over here and find the audio section. And then over here, I want to do like liberal Rossa for the audio and music analysis. And so we're gonna go with that, and then like, see if that's gonna solve my problem, right? So I'm trying to start with something higher level, you know, something that I forgot. Now this reminds me, I was going to ask you about, have you done anything with fox.no. So with Fox dot, basically, you can write little tiny Python things and build up like almost like a growing symphony of times. It's super, super interesting. This like the sort of interactive and not quite it, like repple. For music, it's something pretty interesting for making music. Yeah, for making for like live performance. So you write these little tiny Python elements to like change the tempo, or bring in like a background drum or like now I want this, this sort of bass guitar to come in and add to it and the performances of it are really, really interesting. I'll check it out. +00:50:38 feed partner of ours are super neat. If you're working with some kind of RSS feed, you could approach it from a like, ground up thing, I'm going to use requests, and I'm going to use elementary and do my XPath queries, you're like, Whoa, but it has just this format, right? So you could use feeds parser. And it just turns us into like a dictionary of dictionaries, which is so much nicer. Yeah. So you don't have to worry about the RSS format. Yeah, it's a quick and easy one. So it's a nice example of taking a higher level Python library, you know, maybe a good place to look would be awesome Python or something like that to go. Instead of just saying, I'm going to start from scratch, you're like, Okay, well, I'm gonna go over here and find the audio section. And then over here, I want to do like lib Rossa for the audio and music analysis. And so we're gonna go with that, and then like, see if that's gonna solve my problem, right? So I'm trying to start with something higher level, you know, something that I forgot. Now this reminds me, I was going to ask you about, have you done anything with 'FoxDot' no. So with FoxDot, basically, you can write little tiny Python things and build up like almost like a growing symphony of times. It's super, super interesting. This like the sort of interactive and not quite IDE like repple. For music, it's something pretty interesting for making music. Yeah, for making for like live performance. So you write these little tiny Python elements to like change the tempo, or bring in like a background drum or like now I want this, this sort of bass guitar to come in and add to it and the performances of it are really, really interesting. I'll check it out. 00:52:08 I think GitHub universe use this for like their intro this year. Like they had a live DJ that was like writing code to make the actual music live like so now, DJ sets are being controlled via Python. I love that. 00:52:23 It's fantastic. Yeah, love it. -00:52:25 Remember, get the end of the 2020 pattern day conference, which I was attending was purely online, there was a DJ set by two Brazilian chaps his name I forgotten, I can look up who were also doing basically programmatically controlled with these generated music similar to this. It's actually quite an interesting idea. This is +00:52:25 Remember, get the end of the 2020 Python day conference, which I was attending was purely online, there was a DJ set by two Brazilian chaps his name I forgotten, I can look up who were also doing basically programmatically controlled with these generated music similar to this. It's actually quite an interesting idea. This is -00:52:42 something that kind of builds up over like 1015 minutes, but it's really neat if you just want to like have something in the background, but the fact that the way they do it is really impressive. Yeah, cool. Rivers got a quick shout out in the live stream there. I love rivers. You're pretty epic. The Sierra dm says, awesome. Definitely. We all agree. Speaking of rivers, I think you're next and before we move on, just Jake, congrats on the podcasts. That's cool. I'm already subscribed. Alright, rivers here. Next, +00:52:42 something that kind of builds up over like 10 15 minutes, but it's really neat if you just want to like have something in the background, but the fact that the way they do it is really impressive. Yeah, cool. Rivers got a quick shout out in the live stream there. I love rivers. You're pretty epic. The Sierra dm says, awesome. Definitely. We all agree. Speaking of rivers, I think you're next and before we move on, just Jake, congrats on the podcasts. That's cool. I'm already subscribed. Alright, Rivers here. Next, -00:53:05 Michael hearing. You mentioned live brosa. In FF probe reminded me that to maintain the tags of all those 1500 demos, I use a fantastic Python package called ID three. Oh, yeah. Which makes use of FF probe in lib, Rosa. So you know, every night, my program will run. And using ID three, it opens up the tags of all those files, and does a ton of maintenance. I'll access spreadsheets of my my managers. See what what comments they've left on these demos for ratings. That's awesome. And you have automation back over to Google Sheets as well, right. I mean, that's how I got into coding in the first place was from spreadsheets, but especially Google Sheets, just getting tired of like those trying to work those formulas in those little cells. I went on a was it fiver and and was had some people code code me some, some scripts to to help with the spreadsheets. And then I just started looking at the code. I was like, well, this is pretty interesting. And then I from there, I just got into it on my own. +00:53:05 Michael hearing. You mentioned librosa. In FF probe reminded me that to maintain the tags of all those 1500 demos, I use a fantastic Python package called 'eyed3'. Oh, yeah. Which makes use of FF probe in lib, Rosa. So you know, every night, my program will run. And using 'eyed3', it opens up the tags of all those files, and does a ton of maintenance. I'll access spreadsheets of my my managers. See what what comments they've left on these demos for ratings. That's awesome. And you have automation back over to Google Sheets as well, right. I mean, that's how I got into coding in the first place was from spreadsheets, but especially Google Sheets, just getting tired of like those trying to work those formulas in those little cells. I went on a was it fiver and and was had some people code code me some, some scripts to to help with the spreadsheets. And then I just started looking at the code. I was like, well, this is pretty interesting. And then I from there, I just got into it on my own. 00:54:11 Yeah. So what's the last one you want to share? Is that air you -00:54:14 got another one. I love to listen to a lot of music. But also I feel like it's part of my job is to just be aware of new ideas. And some just constantly listen to music. I feel like I don't need to hear a song more than once or twice. And then I kind of get it and then I don't I just want to hear more new music. And by new I mean new to me. So there's tons of old records, classic records I still haven't heard yet. So it's very tedious to go through the Spotify app every day and try to find stuff for myself. So I have an app called new music that assembles a playlist for me, first of all, using Beautiful Soup. It goes to all the online charts so I can get like the whatever the hot songs and the different formats are get gets a few of those. Uh huh. And using package called Spotify, +00:54:14 got another one. I love to listen to a lot of music. But also I feel like it's part of my job is to just be aware of new ideas. And some just constantly listen to music. I feel like I don't need to hear a song more than once or twice. And then I kind of get it and then I don't I just want to hear more new music. And by new I mean new to me. So there's tons of old records, classic records I still haven't heard yet. So it's very tedious to go through the Spotify app every day and try to find stuff for myself. So I have an app called new music that assembles a playlist for me, first of all, using Beautiful Soup. It goes to all the online charts so I can get like the whatever the hot songs and the different formats are get gets a few of those. Uh huh. And using package called Spotipy, -00:55:01 Spotify. Okay, yeah, +00:55:01 Spotipy. Okay, yeah, 00:55:03 it accesses the Spotify API. And I can access any playlists from there. So I go on to all the editorial playlists, like today's top hits, or rap, caviar, whatever, whatever it is. But then I can also access any user playlists, playlists, my manager shared with me or playlists I've created. And I grabbed a random sample from each of those, some of the parameters are hard coded in that script. But then I also came up with the idea of creating a front end with a Google Sheet. So in the Google Sheet, I can see one column is all the different playlists I'm drawing from. And then another column is how many songs I want to pull from there each day. Another column would be like, how long do I have to wait before a song is allowed to come in? Again, that's super cool. I @@ -262,33 +262,33 @@ 00:56:21 you want. I only go to that same playlist every day makes my life a little simpler. -00:56:25 Wow, that is so neat. And I you know, I did not plan this. I don't know, this is just sort of some awesome Inception thing. So I pull up the peipsi listing for Spotify. And their documentation shows how to get from rivers from wheels. Think that's a recent change. Yeah. Ryan on the live stream. Also. I noticed that that's awesome. And then Zachary, the hacker says, rivers, please tell me this app is available. This sounds amazing. I needed. +00:56:25 Wow, that is so neat. And I you know, I did not plan this. I don't know, this is just sort of some awesome Inception thing. So I pull up the PyPI listing for Spotify. And their documentation shows how to get from rivers from weezer. Think that's a recent change. Yeah. Ryan on the live stream. Also. I noticed that that's awesome. And then Zachary, the hacker says, rivers, please tell me this app is available. This sounds amazing. I needed. 00:57:02 Yeah, it was one of the very first apps I tried to publish online and so is super janky. And I don't think it works at all anymore. But yeah, maybe I found that people didn't use it in the way I expected them to. Most people, they would say, they would just put in the name of an artist or the name of an album. And really, it's more useful for sampling from playlists, because then you have a much greater variety, people would just go and put in their favorite three bands. And the results weren't all that impressive. And 00:57:32 guess what, you know, with music from your three favorite bands, like there was a talk -00:57:36 last year pi Gotham by angelyn Protoss. SEO, called the album discover, which was like an album recommendation system that uses something similar to this, but it was it was like going into a deep dive of Spotify API. And I mean, I will give Spotify all the props, because there's just so much information and stuff that is like similar to like your previous example, rivers, where you had these variables that most people who don't think about music wouldn't think about originally. Like, they're like, is it somber? Is have good gut feel like stuff like that? You're just like, I don't know how you quantify that. But at the same time, like the talk was really interesting, because it showed like a comparison of tracks that were in different genres, but had similar feelings. And it was a really cool example. And I've been trying to find it online. Well, while you when you mentioned it, but I can't find it. So I'll have to reach out to the PI Gotham team and see if I can get you to find out where that link is. +00:57:36 last year Py Gotham by angelyn Protocio. , called the 'Album discoverer', which was like an album recommendation system that uses something similar to this, but it was it was like going into a deep dive of Spotify API. And I mean, I will give Spotify all the props, because there's just so much information and stuff that is like similar to like your previous example, rivers, where you had these variables that most people who don't think about music wouldn't think about originally. Like, they're like, is it somber? Is have good gut feel like stuff like that? You're just like, I don't know how you quantify that. But at the same time, like the talk was really interesting, because it showed like a comparison of tracks that were in different genres, but had similar feelings. And it was a really cool example. And I've been trying to find it online. Well, while you when you mentioned it, but I can't find it. So I'll have to reach out to the Py Gotham team and see if I can get you to find out where that link is. 00:58:35 Yeah, I know just what you're talking about. And Spotify gives you access to all that data. That being said, I'm skeptical of a lot of it, because I've seen seen the data on my own songs. And we covered Take on me by aha which is a very danceable song. Especially compared to a regular one. Yeah, especially compared to normal Weezer song, you'd think that would be rated very high on the on the perimeter of danceability. But it's they rated as one of our least danceable songs. 00:59:07 Oh, interesting. Very cool. I love this. Look into how you're interesting acting with music because it's really different than I think a lot of people out there just looking looking for something in the background. Cool. -00:59:18 I must admit, I think you're onto something. Yeah, you're saying the Bible. If you just let Spotify do its own thing it'll say to you, here's the things you've listened to again, and again and again, including the things you've always skipped, which will convince you or listen to if you play enough, but I should be doing this. I should craft it more deeply to kind of get exactly what I want to listen to, or at least things that sound like stuff I like to listen to. This is brilliant. +00:59:18 I must have been, I think you're onto something. Yeah, you're saying the Michael. If you just let Spotify do its own thing it'll say to you, here's the things you've listened to again, and again and again, including the things you've always skipped, which will convince you or listen to if you play enough, but I should be doing this. I should craft it more deeply to kind of get exactly what I want to listen to, or at least things that sound like stuff I like to listen to. This is brilliant. -00:59:38 Yeah, absolutely. And atheists out there in the live stream. Welcome, welcome. There's awesome app reverse please share so I can get it automated. Channel One, both playlist. Data. Yeah, I agree. That's a really really cool and I want to share one I'll be really quick since we're at the end, this is my second one as well. This brings together a lot of pieces. It is ridiculously simple. Like you Almost like why would you ever do this? So I built this app. And it has a screenshot because it's an app that runs in the Mac toolbar in the notification area by the clock. And this is primarily why I even wanted to bother bringing this up. Because if you've got these little scripts, like Jim talked about gooey, which is a cool thing, you package up as an xe, you can share, but sometimes you want like a little notification thing, or something that might listen to a hotkey that it can just like live up there. And so one of the things that I have to do all the time is I'll take the title of a podcast, I will take the title, of course, video, and 1000s of them, and I want to turn that into a file name that will work well. So I have this little app called URL phi, which is probably poorly named, but it does like simple little text transforms. So it uses paperclip again, and I can just click a thing, and it'll turn it into something that would look as like a slug for URL. So like if it was the playlist with spaces and a capital T, it'll be all lowercase with dashes, and it'll strip out symbols that wouldn't it work, right. So that actually turned out to be incredibly helpful, because I can always reliably name stuff the same. And anytime I put something in, I just copy, like the title of a presentation. And then I hit that button and it turns it into the just the right file name. And then that app I talked about before, it will actually read that and then reverse engineer it back into likes, like a title, like with case, the right casing and stuff again. So it actually sort of comes all around about but the thing to build this is there's this app called rumps. And I'm just be careful when you search for this. And I'll link to it rumps. And it's an acronym for ridiculously uncomplicated Mac OS, Python statusbar apps. Ooh, so caught as a shorter name. But just like gooey, like there is a full on application on the screen here that you can find on the PI listing, which I don't know what's that 1215 lines of code. And you've got a notification app that pops up Little Mac OS toast runs as a dot txt, and not a die a dot app in your Mac bar there, which I built the dot app with PI to app. So yeah, that's two really cool things to put together to just like I want something that's always up in my Mac bar. There's probably something like this for the taskbar in Windows, but I haven't found it. So it sounds like a free course. It does. Take a week of village I've actually been thinking about building like little notification app, like a simple simple, gooey, like gooey, gooey at GOY and like this and maybe that taskbar. One +00:59:38 Yeah, absolutely. And atheists out there in the live stream. Welcome, welcome. There's awesome app reverse please share so I can get it automated. Chimbo Wamba playlist. Yeah, I agree. That's a really really cool and I want to share one I'll be really quick since we're at the end, this is my second one as well. This brings together a lot of pieces. It is ridiculously simple. Like you Almost like why would you ever do this? So I built this app. And it has a screenshot because it's an app that runs in the Mac toolbar in the notification area by the clock. And this is primarily why I even wanted to bother bringing this up. Because if you've got these little scripts, like Jim talked about gooey, which is a cool thing, you package up as an exe, you can share, but sometimes you want like a little notification thing, or something that might listen to a hotkey that it can just like live up there. And so one of the things that I have to do all the time is I'll take the title of a podcast, I will take the title, of course, video, and 1000s of them, and I want to turn that into a file name that will work well. So I have this little app called URLify, which is probably poorly named, but it does like simple little text transforms. So it uses pyperclip again, and I can just click a thing, and it'll turn it into something that would look as like a slug for URL. So like if it was the playlist with spaces and a capital T, it'll be all lowercase with dashes, and it'll strip out symbols that wouldn't it work, right. So that actually turned out to be incredibly helpful, because I can always reliably name stuff the same. And anytime I put something in, I just copy, like the title of a presentation. And then I hit that button and it turns it into the just the right file name. And then that app I talked about before, it will actually read that and then reverse engineer it back into likes, like a title, like with case, the right casing and stuff again. So it actually sort of comes all around about but the thing to build this is there's this app called 'rumps'. And I'm just be careful when you search for this. And I'll link to it rumps. And it's an acronym for ridiculously uncomplicated Mac OS, Python statusbar apps. Ooh, so caught as a shorter name. But just like gooey, like there is a full on application on the screen here that you can find on the PI listing, which I don't know what's that 1215 lines of code. And you've got a notification app that pops up Little Mac OS toast runs as a dot txt, and not a die a dot app in your Mac bar there, which I built the dot app with Py2 app. So yeah, that's two really cool things to put together to just like I want something that's always up in my Mac bar. There's probably something like this for the taskbar in Windows, but I haven't found it. So it sounds like a free course. It does. Take a week and fill it down I've actually been thinking about building like little notification app, like a simple simple, gooey, like gooey, gooey at GOY and like this and maybe that taskbar. One -01:02:20 you can fork archive project that I have then because I actually use romps to make like, like we've all seen those little timer apps where you can put a bunch of dates in and it'll tell you like how soon until that thing was happening. Yes, I made an app called winds that though just like put on GitHub, and I was just like, I'm not gonna develop this anymore. So I'll send you the link or my goal. But the thing I like about this is there's so many tools that just do the thing and do it like really simple really quick. And when you think of stuff like what is it PIP x, where you can call a command directly from your command line, and it just runs and does the thing. Like, that's always nice. And then doing things like ramps, where it's like, okay, I want to do this thing normally, but I want to put it up in my menu bar so that I can just take a quick look and see it. I think it's super awesome to you know, we've talked about these big programs or these things that change our lives. But sometimes it's even just like the little things that you can look to see when how you know how soon before your anniversary is coming up, so you don't forget it or like, hey, when is that big meeting that I'm supposed to be preparing for? When is that big conference presentation or when the CFP deadline is due? And you can you can just make a little applet that you just run every now and then and get results like that. +01:02:20 you can fork archive project that I have then because I actually use rumps to make like, like we've all seen those little timer apps where you can put a bunch of dates in and it'll tell you like how soon until that thing was happening. Yes, I made an app called winsat that though just like put on GitHub, and I was just like, I'm not gonna develop this anymore. So I'll send you the link for michael. But the thing I like about this is there's so many tools that just do the thing and do it like really simple really quick. And when you think of stuff like what is it PIP x, where you can call a command directly from your command line, and it just runs and does the thing. Like, that's always nice. And then doing things like rumps, where it's like, okay, I want to do this thing normally, but I want to put it up in my menu bar so that I can just take a quick look and see it. I think it's super awesome to you know, we've talked about these big programs or these things that change our lives. But sometimes it's even just like the little things that you can look to see when how you know how soon before your anniversary is coming up, so you don't forget it or like, hey, when is that big meeting that I'm supposed to be preparing for? When is that big conference presentation or when the CFP deadline is due? And you can you can just make a little applet that you just run every now and then and get results like that. 01:03:33 Yeah, you're making me think that the next one that I want to build is one for when I go live stream on recording, I want to send out a tweet, I want to update the website. So I was a little banner. We're live streaming right now all those kinds of things that just seems like another one up there. I just click 01:03:46 I live like a little button that opens up my Jupyter notebooks. You know, like I always have to clear my desktop all over. So I would Yeah, I would take the time to make something like that would be cool. -01:03:55 Yeah, that'd be super neat. Alright guys, looks like we're a little bit over time. But so many interesting things. Thank you all for being here. Now, since there's so many of us, I'm not gonna end I think we've all just this basically been the entire show like these little libraries and normally ask you what's your favorite pie pie package you want to recommend but like we've got 30 of them. So that was the show was awesome, but just really quick. I'll go around for the final question. Favorite editor started VS code again, Rusty. Right on Kim. Emacs. Still on? Probably always Emacs. Right on Yeah. You'd like to type on an operating system that is itself artificial intelligence. Yeah. Reverse VS code. Okay, right on. That's a good one. J, the war begins. Can you see using the image neova? Yeah, yeah. +01:03:55 Yeah, that'd be super neat. Alright guys, looks like we're a little bit over time. But so many interesting things. Thank you all for being here. Now, since there's so many of us, I'm not gonna end I think we've all just this basically been the entire show like these little libraries and normally ask you what's your favorite PyPI package you want to recommend but like we've got 30 of them. So that was the show was awesome, but just really quick. I'll go around for the final question. Favorite editor Rusty VS code again, Rusty. Right on Kim. Emacs. Still on? Probably always Emacs. Right on Yeah. You'd like to type on an operating system that is itself artificial intelligence. Yeah. RiversVS code. Okay, right on. That's a good one. J, the war begins VIM . Can you see using the image neova? Yeah, yeah. -01:04:42 I can I can tolerate them that basically, yeah, I can tolerate it. But if I have to very, very slowly get things done. Because basically the problem and I'm sure you've probably happens list of them guys. If you're an Emacs guy. Then you remember the key bindings for Emacs and VI is what's on the really primitive servers and you cannot remember how to make it. Do things. As you keep pushing the wrong buttons, because your fingers remember, he makes demands, the same would have happened to you. But you probably don't necessarily have to use Emacs very often because VI is everywhere. +01:04:42 I can I can tolerate them that basically, yeah, I can tolerate it. But if I have to very, very slowly get things done. Because basically the problem and I'm sure you've probably happens list of them guys. If you're an Emacs guy. Then you remember the key bindings for Emacs and VI is what's on the really primitive servers and you cannot remember how to make it. Do things. As you keep pushing the wrong buttons, because your fingers remember, EMACS, the same would have happened to you. But you probably don't necessarily have to use Emacs very often because VI is everywhere. 01:05:08 Yeah, if I have to use a text editor, there will be like hjkl just all over the place. Because I think I'm in normal mode. I'm just like, Oh, no, it's it's just typing. Yeah, -01:05:19 I'm reminded of the joke. Like, how do you generate a random string? You give a first year computer science student vim, and you tell them to exit it. Alright, you guys, thank you so much for being here. It's been really great. Everyone is doing such neat stuff. And I'm sure we're gonna inspire a lot of people, even ourselves like rusty, like I need a button to launch on my Jupyter notebooks. Right. I'm gonna do one for live streaming. So thank you. Thank you all for being here. It's been great. You. Thanks, Michael. That was fantastic. Thank you, everyone. Yeah, Yeah, you bet. Bye. Bye. This has been another episode of talk Python to me. Our guests on this episode had been rivers Cuomo, J. Miller, Kim Van wyck and Rusty Gregory, and it's been brought to you by linode. us over at talk Python training in the transcripts were provided by assembly AI. Simplify your infrastructure and cut your cob bills in half with linode. Linux virtual machines develop, deploy and scale your modern applications faster and easier. Visit talk python.fm slash linode and click the Create free account button to get started. transcripts for this and all of our episodes are brought to you by assembly AI Do you need a great automatic speech to text API get human level accuracy and just a few lines of code visit talk python.fm slash assembly AI. one level up your Python we have one of the largest catalogues of Python video courses over at talk Python. Our content ranges from true beginners to deeply advanced topics like memory and async. And best of all, there's not a subscription in sight. Check it out for yourself at training talk python.fm Be sure to subscribe to the show, open your favorite podcast app and search for Python. We should be right at the top. You can also find the iTunes feed at slash iTunes, the Google Play feed at slash play and the direct RSS feed at slash RSS on talk python.fm. We're live streaming most of our recordings these days. If you want to be part of the show and have your comments featured on the air, be sure to subscribe to our YouTube channel at talk python.fm slash YouTube. This is your host Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code - +01:05:19 I'm reminded of the joke. Like, how do you generate a random string? You give a first year computer science student vim, and you tell them to exit it. Alright, you guys, thank you so much for being here. It's been really great. Everyone is doing such neat stuff. And I'm sure we're gonna inspire a lot of people, even ourselves like Rusty, like I need a button to launch on my Jupyter notebooks. Right. I'm gonna do one for live streaming. So thank you. Thank you all for being here. It's been great. You. Thanks, Michael. That was fantastic. Thank you, everyone. Yeah, Yeah, you bet. Bye. Bye. This has been another episode of 'Talk Python to me'. Our guests on this episode had been Rivers Cuomo, J. Miller, Kim Van wyk and Rusty Gregory, and it's been brought to you by Linode & Us over at talk Python training and the transcripts were provided by 'AssemblyAI'. Simplify your infrastructure and cut your cob bills in half with Linode. Linux virtual machines develop, deploy and scale your modern applications faster and easier. Visit 'talkpython.fm/linode' and click the Create free account button to get started. Transcripts for this and all of our episodes are brought to you by AssemblyAI. Do you need a great Automatic speech to text API get human level accuracy and just a few lines of code visit 'talkpython.fm/assemblyAI'. One level up your Python we have one of the largest catalogues of Python video courses over at talk Python. Our content ranges from true beginners to deeply advanced topics like memory and async. And best of all, there's not a subscription in sight. Check it out for yourself at "training.talkpython.fm" Be sure to subscribe to the show, open your favorite podcast app and search for Python. We should be right at the top. You can also find the iTunes feed at /iTunes, the Google Play feed at /play and the direct RSS feed at /RSS on talkpython.fm. We're live streaming most of our recordings these days. If you want to be part of the show and have your comments featured on the air, be sure to subscribe to our YouTube channel at +'talkpython.fm/youtube'. This is your host Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code