Python Bytes - #312 AI Goes on Trial For Writing Code

Episode Date: November 29, 2022

Topics covered in this episode: Coping strategies for the serial project hoarder GitHub copilot lawsuit Use Windows Dialog Boxes from Python with no extra libraries Extra Extra Extra Extras Joke ... See the full show notes for this episode on the website at pythonbytes.fm/312

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 312, recorded November 29th, 2022. I'm Michael Kennedy. And I'm Brian Ocken. This episode is brought to you by the Compiler Podcast from Red Hat. Check them out. Really appreciate them supporting the show. Brian, we've got a lot to cover today. You want to just jump right into it? What I want to talk about is Simon Willison.
Starting point is 00:00:24 This is incredible. So Simon did a talk at DjangoCon 2022, and then he wrote up the slides and everything, and we're going to link to his blog. His blog title is Coping Strategies for the Serial Project Hoarder. And then the talk title was Massively Increase on personal projects with comprehensive documentation and automated tests. Yes, that's a mouthful. But really, I don't know what a good name for this is other than everybody that works with development needs to watch this talk because it's incredible. So he goes through a lot of stuff.
Starting point is 00:01:02 I'm going to go through it. I'm going to luckily he's got screenshots on here, but he starts out. So this is this is important, not just for open source projects or personal projects. This is also for if you're working in a company. I think this is equally true. So he talks about how he got this these techniques from working at. Now I'm going to forget where he worked, but yeah, it's gone. A large company with multiple continents,
Starting point is 00:01:31 and it was helpful to do this model. So what is he talking about? So one of the things he talks about is the perfect commit. So we don't really, as a professional software developer, you're not really doing new code all the time. What you're doing is maintaining existing software. So, so the commit is your unit of work and a perfect commit is, is includes the implementation of whatever you've done, but it also has tests and documentation and a link to the issue thread. And this is, it seems like a lot to me, but walking through his talk,
Starting point is 00:02:10 it totally makes sense. So he gives an example of, of one of his with, with some, some cool highlights that highlights that he's got documentation changes also. And the document change documentation might just be a single line change or something. But the tests, he does pause here and say tests are hard for some people, some developers. So it's important to get a working test framework in place quickly so that a test developer isn't starting from scratch. They're just or a software developer when they're writing tests it's just um it's not like comprehensive testing has to be there but it is a test that passes uh when you're when your change is there and fails when it's not there or fails when it's not working that's enough um you
Starting point is 00:02:57 can do more thoroughly test thorough testing but that's enough to to get us started and i think that's a good way to think about it. But he goes, talks about, he throws in this little cool thing of like, just keep common types of projects that you have around as cookie cutters in your own GitHub area. He's got a Python library and a Click app and dataset plugin for him.
Starting point is 00:03:20 I might have different things like a PyTest plugin or something. And that way you can just keep up with your best practices, what you think of as best practices in one place. This is a cool idea. I'm totally going to steal this. I've done that for myself as well. I built like this predated cookie cutter,
Starting point is 00:03:37 but I built this thing like I always want to have logging and I want it like this. I always want to connect to this other service and like ping it to make sure that the to you know connect to this other service and like ping and to make sure that the thing is alive or whatever whatever thing we decided for monitoring inside of our the company i worked at and like all the new projects would just start that way and it was so nice because you didn't like is it really worth doing the thing to make sure that we can monitor it sometime like you just run the one command line thing and it's it's there right we
Starting point is 00:04:02 could give it to an intern and they could run it to start their projects it was great and then he's got like this thing that supposedly with a github hook and i'm gonna have to dig into this more because i didn't quite understand how this works but he's got a way within the github interface to say i want a new project and it automatically like gives you the choices or what kind of project and then fills out all the defaults from the start instead of just getting the readme like normally. So this is kind of neat and I guess I wanna try figuring this out. The documentation bit, at least one of the things
Starting point is 00:04:35 about including this, even if it's difficult, you can have this be part of the code review requirements. So don't accept a code review until the documentation's there also um so this is a cool idea um and then uh it's about a trick of testing documentation which is a cool idea um and then the links to the issue and i thought this was just sort of uh yes you should do this but this is really the meat of the talk is him doing his entire thought process in the issue thread. And he even gives examples where there's sometimes like up to 50, 60 comments and it's just him talking to
Starting point is 00:05:13 himself. But this is brilliant. And I'm not going to convince you as much as, as he is, but includes screenshots and, and dead ends. Like I tried this thing and it didn't work and we're going to go back and do this other thing. This isn't, he calls it temporal documentation. And I just love this idea. And I'm going to try to follow this myself because I have like a memory issue. I write stuff down and I, then I forget where I wrote it down. Um, and this is where this way he says, you don't have to remember anything you just jump it there and that way let's say you you get uh pulled off of a project and uh and you don't get back to it for like six months because you've been fighting fires and doing other stuff and then you get back to it
Starting point is 00:05:55 you won't remember where you're at and with this this this line of thinking of keeping all of your thinking in the issue thread you can just jump in and go, oh, that's where I was and get started pretty quickly. I love this. It's cool. So then the rest of the talk is pretty interesting to talking about how like, you know, site has been doing this and other engineers have been doing this for a long time. They called them lab notebooks before, and we kind of got out of the habit of doing that with software. But anyway, lots of great techniques. And I think this is just how to be a professional software developer now. I love that it's like a casual conversation and not like, here are my four recommendations, but like the playing around and the dead ends are really, really valuable.
Starting point is 00:06:36 Kim out in the audience says, the cookie cutter approach also works beautifully from a DevOps perspective for setting up developers to use your firm's specific infrastructure. Yeah, I totally agree. And that's a little bit of what I was hinting at of like, here's how we integrate with this, like uptime manager and stuff. But obviously DevOps, that was talk. We were deploying to a server in a closet there, which I mean, that tells you all you need to know.
Starting point is 00:06:58 Yeah. Speaking of stuff you might need to know, Brian, Google Copilot and these code writing AIs, I have more to say about that at the very end of the show, book in this a little bit. They train themselves on lots of code. And Google Copilot, for those of you who don't know, you basically can give it a comment and like, I want to connect to a Postgres database with SQL alchemy. And then boom, it'll like literally write all the code,
Starting point is 00:07:25 import the usings, you know, come up with a connection string, all that kind of stuff. It's pretty fantastic. Has some privacy issues. I don't know what it's doing now. It used to send your source code that you wrote up to GitHub, which made me not want to use it already. But the big news here is the website, the website github copilot litigation.com and that's
Starting point is 00:07:49 as ominous as it sounds it says we filed this is what the website uh sort of uh announces always we fought a lawsuit challenging github copilot an ai product that relies on unprecedented open source software piracy why piracy because it's trained on things that are like GPL and Creative Commons share alike or attribution. And then it outputs code based on that original input that has no GPL and it has no, you know, whatever license, right? The license is stripped and no attribution. What do you think?
Starting point is 00:08:21 Something we talked about from the very beginning of like, how is this okay? Yeah, not sure. Absolutely. If it did things like we're only going to look at MIT licenses and other commercial open, no attribution licenses, I don't think there'd be anything, anything to say about it, but apparently that's not the case. So there's a couple of updates as well. I suppose we should also, like they do on this page, say we are not a lawyer. Please don't take legal advice from us. We write code, not legal documents.
Starting point is 00:08:51 But nonetheless, it says this is Matthew Butterick. And they've set up to investigate Google Copilot. And they filed a class action lawsuit in the US federal court in San Francisco on behalf of a couple folks. So they're challenging the legality of GitHub Copilot and a related product, OpenAI Codex, which powers Copilot. The suit has been filed against a set of defendants that includes GitHub, Microsoft, and OpenAI. Wow. There's an update down here somewhere um let's see it says by training here's the motivation for their um lawsuit by training their ai systems on public github
Starting point is 00:09:32 repositories though based on their public statements possibly much more we contend that the defendants have violated the legal rights of a vast number of creators who posted code or other work under certain open source licenses on GitHub, which licenses a set of 11 popular open source licenses that all require attribution, the author's name and copyright, including I guess the MIT license as well, the GPL and the Apache license. And it's listed out there. There's a whole bunch more details. And it says update November 10th. That original was November 3rd. There's an update here. This is, we filed a second class action lawsuit on behalf of two additional plaintiffs. The defendants and claimants are
Starting point is 00:10:12 otherwise similar to the initial one. So there you go. It's going to be interesting. It's not going to be just interesting for Google, for GitHub Copilot, but basically AI in general, right? It says it's going to challenge that AI strips the ownership and other requirements of inputs and outputs, right? And maybe it does, maybe it doesn't. I mean, we heard that APIs are not copyrightable in the Google Oracle Java lawsuit. So we're going to find out here. Oh, interesting. java lawsuit so we're going to find out here oh interesting yeah i mean like in it when i when we looked into this a little bit earlier if it if it's helping you fill in parameters to a function
Starting point is 00:10:52 or what what likely things you're going to fill in for a function call that's one thing but when it plops down like 20 lines of code for you where did it get those 20 lines of code and and then i mean open source doesn't necessarily mean you can copy it. It's just open to read. I mean, you can put your own license in there. You can make up your own license that says anybody can read this, but you can't copy it, use it, or do anything else with it at all. Can't even fork it. And there's nothing stopping you from doing that sort of a license and right or the default if you put on github i believe if you put no license means you have no like you're conferring
Starting point is 00:11:31 no license whatsoever right yeah it means it's just like uh it's like like writing a book you can't when you write a book you have the full copyright um unless you give it to somebody else so yeah absolutely all right well let's stick with my screen for a second. I want to tell you all about our sponsor for this week, Compiler. So this episode of Python Bytes is sponsored by the Compiler podcast from Red Hat. Like you, Brian and I are fans of podcasts. I listen to them more and more these days, actually. And I'm happy to share this one, Compiler, an original podcast from Red Hat.
Starting point is 00:12:05 So if you want to stay on top of tech without dedicating tons of time to it, check out Compiler. They present perspectives and topics and insights from the tech industry free of jargon and judgment. They want to discover where technology is headed beyond headlines and create a place
Starting point is 00:12:19 for new IT professionals to learn, grow, and thrive. Compiler helps people break through barriers and challenges, turning code into community at all levels of the enterprise. One recent interesting episode is their great stack debate at Level of Love, talking to people about their architecture, their code, all the trade-offs and conventions. As you'll see later in the show, I'm going to talk a bit about that at the end as well for us. And the costs that come with this, the challenges, things that are awesome, the things that are not.
Starting point is 00:12:45 So this episode is like that. So you can check it out to see if software is like an onion or like lasagna or it's more complicated. It's the first episode in a compiler series on the software stack.
Starting point is 00:12:56 So listen to more about compiler at pythonbytes.us. You can just go type compiler into your podcast player and that's what I would do in general. But please use our link so that the folks at Red Hat know that it came from us. Yes.
Starting point is 00:13:08 Yes, and thanks to Compiler for keeping our podcast going strong. All right, over to you, Brian. What's the next one? So this is a silly thing, but sometimes I've got Python code that I want to have a pop-up, you know, a window pop-up
Starting point is 00:13:26 and um i've always been using uh what is it uh pi simple gui i well not always but that's what i've been using lately for for like really easy just a simple pop-up thing especially if i needed to use run on max and really anywhere um because it's like totally fast to get it done and i don't have to think about it anymore however pi simple gui doesn done and I don't have to think about it anymore. However, PySimpleGUI doesn't, I haven't mastered the art of getting it to look just like a native dialog box. And maybe there's some tricks that you can do that I just don't know.
Starting point is 00:13:57 But if I know it's on Windows, maybe we could just go ahead and use the Windows DLLs and do a a native windows just go straight into the windows 132 api for yeah sure like that shouldn't be too hard right it sounds scary to me but i ran across uh matt callahan's blog matt Callahan has an article called display a message box in Python without using a non-standard library or other dependency. Actually, you can just do this. You don't have to install anything. And I got this, I want to, where did I get this from? Give credit where credit is due. I got this from the PyQuarters Weekly So thanks. Thanks to them. Um, anyway, this is not
Starting point is 00:14:46 hard. So he has a little pop-up example and, uh, I should have read the article, but I was just skimmed for the code. Um, here, here's some code. That's it. This pop makes a dialogue box pops pop up and it's calling the, uh, so it calls, um, it's just like a couple of flags. It's like 10 lines of code. It calls C types when DLL user 32 message box, E X W, whatever that means. And with some, with some stuff in it, like a title and a message and everything.
Starting point is 00:15:15 So it's using C types, which I don't use much, but you know, you can get into DLLs. So C types is built into Python. And so this message box, I wanted to play with it a little bit more. So as I was playing with this,
Starting point is 00:15:29 looked into the Microsoft documentation, the message box dialog, there's a, one of the flags is this U-Type and it's like this hex value thing or a bit field. And you can orient a whole bunch of stuff. So you can use this to to get like an okay box or an okay cancel box you get different types of dialog boxes using this this flag and then once you've got this popped up how do you you need to know like what users clicked on and
Starting point is 00:15:57 stuff so there's there's return values from this and you can just like check the return value and it's defined to be like you know uh a three for abort and a two for cancel and one for OK. And you just check this value. So with just a little bit of code, you can have a native dialog box pop up if you need to in your code. So, yeah, that's awesome. And it does things like natively that you would expect. Like, for example, you hit escape and you have an OK cancel. It'll return cancel.
Starting point is 00:16:25 I hate some of these like UI things. They show up and you're like, well, it's got one text input and a submit button. You hit enter, it does nothing. You're like, yeah, great. OK, apparently this is not real. I'm going to just, you know, go click it or whatever, right? So hooking into the native OS is sweet like that.
Starting point is 00:16:40 This looks like a thing that would be ripe for a short, simple little package that wraps up say all the okay cancel yeah okay cancel what kind of icon you want do you want like a warning do you want an informational icon um the button yes yeah it seems really great but um this is fantastic so so neat and um and built in neat so anyway just a quickie yeah it, it comes included. And yeah, I really like it. And it's also a bit of a roadmap to show what you could do beyond that, right? There's more than just really simple dialog boxes.
Starting point is 00:17:12 For example, like the open file dialog box on Windows could probably be real similar, right? Oh, yeah, probably. Someone was looking it up. There's a whole bunch of dialog boxes you got access to. Yeah, exactly. It's like a roadmap to like, well, I can like create a file or, you know,
Starting point is 00:17:27 any of these things, which I think is pretty cool. All right, let's flip away from OS specific to OS general, but stick with PyCoders for a minute. So this one also comes from PyCoders. I don't know if it's the same issue or not, but very cool. It says write Chrome extensions, which also mean like Brave and Vivaldi and others,
Starting point is 00:17:45 Edge maybe. Write Chrome extensions in Python. Oh, how does it work? PyScript, of course. So yeah, we just take PyScript and this is an article by Pete Fiston and it sort of walks through how he was able to use PyScript, which is Python on WebAssembly running in the browser to use that to power a Chrome extension. And it doesn't really matter if it's a bit of a nine meg download because you install it once and it's local on your computer, right? So it just, if you want to do this, it walks you through all the things you got to do in order to use PyScript to write Chrome extensions or Python to write Chrome extensions. What do you think? Cool. Even shows you how to put an icon.
Starting point is 00:18:29 That's pretty cool. Yeah. But I have more for you. So just so in case people don't know, this is an extra, extra, extra, hear all about it section, because I'm going to hit a whole bunch of things. So as of recently, just published this episode, let me look. 30, 31 minutes ago. And it says PyScript powered by MicroPython. So one of the challenges that PyScript has had traditionally is it's based on the full,
Starting point is 00:18:53 nearly the full CPython runtime compiled into WebAssembly, which after you strip a bunch out that doesn't work in the browser, it comes down to like nine megabytes. Okay. It's for like this browser extension thing. That's reasonable.
Starting point is 00:19:05 But for, you would never use in place of like Vue.js on a popular page because you want that page to load quickly. You want it to be good for SEO, all those things. But you know what's small and fast? MicroPython. Oh, neat. So I just had Brett Cannon, Nicholas Tolervey and Fabio Flieger on TalkPython to talk about the work that they're doing to make PyScript not run on full CPython, but to run on MicroPython.
Starting point is 00:19:34 Oh, wow. MicroPython, you can get that to load up in 100 milliseconds on your page, and it's only a couple hundred K. All of a sudden, that starts to sound a lot like a pretty rich front-end framework level of stuff you got to download and get started. And you cache it, then you're good to go. That's exciting, huh? That's super exciting. Yeah. Yeah.
Starting point is 00:19:52 So this Chrome extension thing is cool. When you look at the shipping version, I don't know if you can call it shipping because price grip is still like super alpha. But what you can get today. So Nicholas said probably spring that they'll have something to share, but in terms of being able to use MicroPython, but I think that's pretty excellent. That could really, really unlock some super cool features.
Starting point is 00:20:15 If now we could build like a Vue.js type thing, but with Python. And one of the goals that they stated is that they're looking to build this as a framework or excuse me, a platform that you can build frameworks on top of. One of the goals that they stated is that they're looking to build this as a framework, or excuse me, a platform that you can build frameworks on top of. So it's not just, here's how you write some Python code
Starting point is 00:20:31 in the browser, but here's a foundation that people could create like a PyView or a PyAngular or whatever they wanted to create, right? Yeah. OK. Yeah, go ahead. Question just for my own personal use. Would Chrome extensions work on Vivaldi? Yeah, yeah, they do.
Starting point is 00:20:48 One of the things that's interesting about Vivaldi, and I think it probably affects its reporting a little bit, when you look at the user agent of Vivaldi, it's exactly the user agent of Chrome. So it lies to the world and tells the world it's Chrome. There's no user agent for Vivaldi. It's just whatever version of world it's Chrome. There's no user agent for Fibaldi. It's just whatever version of Chrome it's like using, you know? So when you go to the Chrome web store, it's like, put this in Chrome, you click it and yeah, it goes. So it worked perfectly. Sure.
Starting point is 00:21:13 Cool. Yes. And John Sheehan says, yes, they do. All right. Next extra, extra, extra. Brian, I've been excited a little bit about Mastodon. I don't know if you noticed. Yeah, me too. I know. It's fantastic fantastic it's really tons of great interactions and i started putting in our show notes which you'll see when i publish this um your mastodon account in mind so people can connect with us and and have even more conversations over there but there was a really interesting article by eugene the guy who created mastodon called some i've been looking and looking it's about scaling mastodon called some, I've been looking and looking, it's about scaling Mastodon and the
Starting point is 00:21:46 challenges they were having. And boy, it's, I would love to link to it, but I just can't find it, but it's so it's written in Ruby, right? And so it talks so much about, these are the challenges of scaling out threads and, oh, we have this thing called a GIL and it really doesn't allow you to use threads very easily. And, and here's, there's just, it was so interesting to look at, at how a technology that doesn't have async IO and async and await getting all tangled up trying to do IO based things. So it's like, well, can we have, maybe we should have 10 to 20 threads to do the network communication. But if we have more than 20,
Starting point is 00:22:25 then we get like a context switching and contention in the operating system, you know, that just comes with having OS threads. Well, guess what? You can do really well with no threads or one thread. You can talk to web, you can call other websites, you can receive web requests. And the mechanism for doing that in Python is async and await. And async IO requires no additional threads, very, very little overhead, no contact switching. So this project by Andrew, I'm sorry if I am not getting,
Starting point is 00:22:59 Andrew Godwin, sorry. Forgot his last name for a moment, of Django Channel said, what if I rewrote this, but in Python with an async and a wait? Okay. So there's a bunch of challenges of running Mastodon. People want to have their own server because they're like,
Starting point is 00:23:14 oh, I want my own server. So I'm not stuck in one of these communities. And as beholden to them, the problem is every one of those is like a standalone DevOps adventure. There's tons of like things working together and it's a lot of work, right? It'd be better if you put,
Starting point is 00:23:29 like host more of them on one machine and sort of scale that up in a nice way. So this one lets you host multiple domains for small to medium instances. And it's written with async and await, which is pretty awesome. So yeah, anyway, I think you should check this out. I didn't know if I caught you trying to pronounce it.
Starting point is 00:23:50 Takahi? Takahi? I don't know. I'm going to go with Takahi. I'm going to go with that. And of course, Andrew Godwin just said, you know, I can probably write this in Python and like get it out in a couple of weeks. I think it was like five days or something.
Starting point is 00:24:04 So key features multiple domain support multiple identities per user which is kind of interesting um desktop mobile pwa compatible again how many days and easy deployment a web worker a background worker and one database not all this crazy crazy stuff so anyway people can check it out just let's check out the requirements see what we got going on here uveacorn for an httpx i mean that pretty much pretty much says it right there oh interesting it's based on each django htmx is pretty interesting as some of the building blocks but yeah super cool um so there's another one all right right. We just had our Black Friday sale over at TalkPython. Cool.
Starting point is 00:24:47 And that was really excellent. Sold a bunch of courses. We sold some PyTest courses, by the way. Yeah. I'm just excited because sometimes we have these sort of conversations about cool sales and stuff. And I'm glad that I get to be a part of that now. We've done other fun things where we can sell your book through them because it's through the publisher and I guess, yeah, it gets tricky. Right. So I'm really excited as well. So we did our Black Friday sale and I guess what? I noticed something a little bit
Starting point is 00:25:14 unusual. It said, after a little bit, I opened up glances on the main web server and said, CPU usage is 85%. I'm like, oh, that's not so good. 88, 91, 92. Uh-oh. But what was super interesting was Nginx, not Python, was the thing getting hammered. So both Nginx workers were like almost 100% and Python was just chilling. I'm like, okay, that is a really interesting story for Python performance that something amazing like Nginx that people say is fast all the time is the bottleneck. And it turned out it survived, but just barely, right? If it were like twice as bad,
Starting point is 00:25:50 it would have keeled over, which had been bad. So I talked to a bunch of people about this and I realized that there's one HTTP response. I've got to spell that better. And 12 CSS files, 43 images and one JavaScript file on the page. I was sending them.
Starting point is 00:26:04 So I'm like, all right, maybe I should try to use some interesting CDN, which I had got a recommendation from one of our listeners, but otherwise hadn't heard about. What a cool service. So now we have 112 different locations serving up those static files. Nice. And just processing. So I went back today when we did our Cyber Monday and I said, when I, that was yesterday, when I pushed out the announcement for Cyber Monday closing
Starting point is 00:26:30 and I pulled up the real-time data, look at that traffic. That's CSS and JavaScript and images. 1.4 gigabytes a second. Oh my gosh. It's insane, dude. And check this out on the server. This is the most important part.
Starting point is 00:26:44 3% CPU usage on Nginx and across the whole computer, across all of the micro-WSGI processes, just a couple of more percent. CDN to the rescue. Exactly. But the thing that's also interesting is that Python is just like,
Starting point is 00:26:57 yeah, it was nothing. Like we can take that, but it's all those static files. So anyway, I put that right up together for people in order to serve out that data, pay $2, right, for 0.35 terabytes. And by the way, it's going right now. Oh, it's got a refresh here. They have these cool real-time maps and whatnot. But that little spike right there is when I released the TalkPython episode. And that's about four and a half terabytes per second, which is just insane.
Starting point is 00:27:28 So anyway, I totally recommend people check this out. It's super fun. You're reaching people all over the world. That's pretty cool. Yeah. Isn't that amazing? You get all these different locations. I think it lost its web socket connection because it stopped updating.
Starting point is 00:27:43 It's like, there's a little warning this live monitor is like a little bit of a suggestion of how things might be but yeah anyway yeah what's up with the Alaska people not listening hey Alaska yeah man come on yeah they're gonna have to uh cdn over to to Canada or anyway so uh not that this final one here no not final second final one of the the read all about it or hear all about it. Reader five. I'm actually been really getting back into RSS. And I do.
Starting point is 00:28:12 I've never left. Yeah. What's your RSS story these days? Like, no, I use a Feedly on my phone just to keep up on stuff. Nice. I'd switch to things like Zite, which is sadly gone and Flipboard and these sort of, you know, like Apple news, like things where they kind of curate a bunch of different sources. I'm like, you know what? There's a bunch of great places I would really like to just directly get
Starting point is 00:28:36 them from and curate a little more than just, I suggest more Python because you know how many times my Python channel in like Flipboard has woman scared of python that comes out of toilet like you know no not that python really not oh no no and so i've just been super loving uh i've been using uh reader 5 with two e's and what a nice piece of software this thing is for for 10 bucks um okay really cool yeah so i'll check it out yeah and another thing i would like if people have awesome recommendations for blogs especially python blogs that i should be following or people listeners should be fine put that on the youtube channel comments or send it to us on massad on our twitter and uh maybe i'll give a shout out to ones that are extra good, but very, very cool. Let's see.
Starting point is 00:29:26 Check this out. There's a podcast called Sing for Science. And on season three, episode eight, which just came out six days ago, Rivers Cuomo of Weezer and Guido van Rossum sit down for a conversation. How cool is that? That's pretty cool. That's really cool. So have you listened to it? Yeah, I listened to it.
Starting point is 00:29:43 I grabbed my phone and my dog and went for a walk and listened to it because the sun came out and that was rare right now. So, yeah, it's really interesting. Neat. It's a lot of the host talking to Rivers and talking to Guido and a little bit of interaction. I would love a little more facilitation of them two talking directly. But both great people. Rivers is awesome. He does really cool stuff with Python. I had him on TalkPython 3.27, little automation tools,
Starting point is 00:30:12 which was fun. So yeah, he's a legit developer these days, which is pretty neat. All right. Final thing, Brian. Final extra, extra, extra. We started with, I started at least my segment with AI coding and I'm going to end it with AI coding kite. Do you remember kite? It was like the original GitHub copilot. Yeah. Yeah. Unfortunately they are shutting down. So they've been around for 10 years or so. Not quite seven years, something like that. Really quite a while, but, uh, they're shutting down. So, uh, thanks for all the code, I suppose. And that's it. That's all I got for all my extras. I want to add one. So we talked to Simon Willison, talked to one of one thing I
Starting point is 00:30:54 didn't mention about in his talk is he encouraged people to write blogs because there's not that blogs were huge for a while and then everybody was doing it and now not so much and so um uh you do get noticed more if you're writing a blog i think that that's a good thing plus you can link we can link to it easier if you if you got your article on a blog but um also and rss wise uh planet python is something i still check out so planet python.org if you haven't heard of it um it has uh you can either have the full content, so you can read, and it pulls all of this through RSS from from different blogs. And so if you have, and titles only, if you have a Python blog, or you're starting one, check out Python,
Starting point is 00:31:39 planet python.org, and try to get your name on the list, maybe put out like three or four articles first, and then and then try to get your name on the list or your blog on the list. And that way it gets seen by people like us, even if you don't notify us. Yeah, that's excellent. I didn't subscribe to that because I feel like it's a little bit too much of everything. But I went through all the recent posts and said, this writer looks interesting or this source looks interesting and like subscribe directly. So I kind of used it to, to start my exploration of those things. I wanted to subscribe to. Yeah. Not a bad idea. And you know, they have RSS feeds because they're, they're in here. So exactly. I, since you brought it up, I just want to also point out like one of
Starting point is 00:32:17 my roadblocks of writing a lot was, well, I don't have time to write like an article, something well thought out and, you know, a thousand words and that, you know what my, my new philosophy has been, let's just write like really short posts. Like here's one about a fun thing I did with spammers. And it's like three paragraphs or a here's one about installing something as a PWA it's two pictures and four paragraphs. And you don't, you don't have to write essay, like long essays to contribute interesting things and ideas, I think. So I just following up on that. Yeah.
Starting point is 00:32:49 My, my thoughts are if it's going to be a thread, make it a post instead. Yeah, exactly. Exactly. All right. Well, my jokes have vanished. I had a cool joke on social media and it got taken down. It was, it was, down. It was very funny. It was totally benign.
Starting point is 00:33:07 I don't know why it's gone, but whatever. And then, by the way, following up on this, Jeremy Page says, you can also RSS Mastodon users. Okay, that's- And Mastodon hashtags as well. You can RSS those. Okay, yeah, I follow the Python hashtag over there. I could RSS it, I suppose. Excellent, all right. Brian, so do you have a joke for us? Yeah. So speaking of Mastodon,
Starting point is 00:33:29 on Mastodon, I said, I'm getting, I'm getting a lot of great Python content on Mastodon, but I need some joke people to like, I need some nerd jokes. So I'm asking for people. And this, somebody didn't ask, tell me a person to follow. I'm still looking for people to follow with good jokes. So if you send them my way, or send me their way, if you know of people. But here's one that I got from somebody on Mastodon. So I got it from who did I get this from? I should probably give credit. So this came from Steven box. Nice. Thanks, Steven. So exit condition from monkeyuser.com. So it took me a while to get this. So there's a couple of people sitting at a desk, pair programming or guessing, and then somebody else that's frustrated, they hear, wait.
Starting point is 00:34:19 And he says, the frustrated guy says, that's it. And he starts going towards a door that's labeled recursion. And somebody says, wait, there's no, I'm going in. He goes in and he gets into the other side and says, wait, he's the person trying to say wait. Oh my gosh. There's no exit condition. So that's a dumb joke, but that's right. It's's really good and it's got some clever um the cartoon is clever where like the the speech of the other one is off screen so it kind of looks
Starting point is 00:34:52 like it comes from the original group but in fact is coming from the recursion of the first one and yeah it's yeah okay well one more um somebody said uh i should follow uh oliver white anyways um i just thought this was dumb and funny uh bobby pin no i go by my full name robert pindle and it reminded me of the bobby tables thing so yes exactly i love it all right well thank you everyone for listening and brian thanks for being here thank you yeah bye everyone bye

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.