Python Bytes - #314 What are you, a wise guy? Sort it out!

Episode Date: December 13, 2022

Topics covered in this episode: FAQtory Kagi search "live with it” report Tools for rewriting Python code Socketify Extras Joke See the full show notes for this episode on the website at pytho...nbytes.fm/314

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 314, recorded December 13th, 2022. I'm Michael Kennedy. And I'm Brian Ocken. And it's just us this time. Very nice to be together to share some fun Python news. Yeah, we got some good stuff. I think we do.
Starting point is 00:00:20 Why don't you kick it off? Before you do, actually, real quick, I just want to say thank you to microsoft for startups for sponsoring this show tell you more about them later go nice well first up we've got something from will mccugan uh surprise surprise um um but he's got this cool project called factory f-a-q-t-o-r-y factory cute joke um but it's a it's a tool to generate a faq page uh markdown page specifically for a you know github project or something i mean you could use it for anything really um but it's what one of the fun things about it is it uses it itself so you can i mean not it there's an example there but the questions are fun so uh the idea is uh is you've got a lot of questions maybe that come in about your project and you want to answer you know keep track of them um so what you do is
Starting point is 00:01:12 you stick um you stick your questions in a question directory and then uh and then they're they're like just these little markdown snippets and uh they're let's look at the raw format it's just like this just title there's a title block and then some some and that's the question and then some uh maybe some information you can cite things maybe um it's really um pretty easy i'm gonna go actually to the read me again to to talk about that because it's not gonna go to the to go to the FAQ? Oh, yeah, we could. I'm just kidding. Just the... I wanted to make sure that we talked about alt titles. So you have a title for a question
Starting point is 00:01:50 and then an alt title maybe for different kinds of questions that are really the same question and then an answer. That's the simple form of what to do in these little markdown files, these little question files. And then you just use do factory build
Starting point is 00:02:04 and what it does is takes all those and creates a markdown page and then you can see what it looks like on there the faq.md in this project but it's nice it's got frequently asked questions at the top it's got links to all the questions and then and then you you know you you go down and you can see what the answer is yeah even like a table of contents with um the hash you know the hash inner page navigation within github which is interesting right yeah that is interesting and um links to each question so if you want to like email somebody a link to it you can link to the question uh which is nice um there's some funny ones in there as examples.
Starting point is 00:02:45 Just correct me up. I got to bring them up. Like, in fact, most frequently asked questions have never, and perhaps will never be asked. And then a quote, 89% of statistics are made up on the spot. These are pretty funny.
Starting point is 00:03:02 But it's kind of cool. And that's not all. So this would be enough, actually. If it just generated this FAQ page, it might be worthwhile taking a look at. But it also has templates. So it builds a template so that you can have a.FAQ. In the.FAQ, there's templates,
Starting point is 00:03:21 and you can tweak these to have a different look to them if it's a different look to them. If you want, you can add some more code. Um, and then, uh, and then there's this suggestion, which we've got to talk about these suggestions because it has a template for what to do on the suggestion. And why this is important is, um, it comes with this, this hook that you can put into GitHub Actions. So there's a built-in thing with Actions. You can suggest something. So if you suggest a question, it tries to figure out what the question might be
Starting point is 00:03:55 using some fuzzy, what does it say, fuzzy matching or something, which is kind of a neat idea. And then there's an example right in there. Let's see work GitHub workflows. You can look at the new issues and it's calling this factory. So if somebody asked files an issue, that's really just a question and it figures out that there's something it can answer with, it'll answer for you. So if you get, if you have, you know, I don't have any projects that have that many issues,
Starting point is 00:04:25 but I'm sure Will does. And some people do have like these huge projects and having a little thing that goes, Hey, this question's already in the FAQ or something similar. Just go look there. Or here's the answer. Maybe that's pretty cool. I haven't tried this, but it looks like fun. I think that's, that's really excellent. Even for my limited small number of small projects, I still get things like, have you considered this or why is it different than that? It seems like it's the same. It's not the same.
Starting point is 00:04:54 It's similar. It's not the same. Here's the huge long discussion on the issue that somebody filed that's closed because we're not resolving it and we don't leave it as an open issue, but you go look in the closed issues and you'll see the discussion
Starting point is 00:05:05 and you can participate there, right? That kind of just point them in the right direction. Yeah. That's really cool. I think there's a lot of stuff like this. I actually talked with Ned Batchelder last week, seven days ago, it says, on an episode that's coming out on TalkPython
Starting point is 00:05:21 called Tools for Readme Creation and Maintenance. Oh, yeah. As well as FAQs and changeelogs and those sorts of things. Remember, I did a shout out for give me all the tools for readmes on here. And so this is the episode we ended up doing because like three of the tools out of the eight or nine we covered were written by Ned. We're like, we should just I should just have Ned on the show because it seems like he's a major topic here. Nice. Anyway, there's a lot of other
Starting point is 00:05:46 tools that do that. But what I think is relevant here is this automation and this suggest feature. This is what makes it really stand out as being different. Yeah. So I'm going to, even on some of my small projects, I'm going to go ahead and turn it on and then probably issue questions myself and play with it and see how it works. Yeah. Yeah. That'd be awesome. Yeah. Cool. Yeah. Steven audience. What's the answer to what's the difference between a duck? I must know. It's an FAQ. We'll put it on the FAQ Steve. We'll help you out there. Yeah.
Starting point is 00:06:15 All right. Should we go off to the next one? Yes. All right. So way back in, let's see. We have a pretty cool search engine here. Search for Kagi, live with it. Way back here, when we had Gina Huska on the show, I talked about this Kagi thing. Yeah. Or was it, right? Like a paid search thing.
Starting point is 00:06:37 Yeah, there it is. That was suggested by Daniel. I said, you know what, I'll give this a try and I'll give you all a report. That was in June. Well, it's December now. So maybe not just one month, which was my idea, but I finally got around to writing up a report on Kagi and, you know, TLDR. I'm still using it. I still really like it. So for those of you who don't have a six month perfect memory of the extras, I don't, don't doubt that it's doubt that it's faded. Kagi is a paid search
Starting point is 00:07:07 engine that is super privacy respecting and very customizable. So instead of being the product, you can pay for a product, which is search, which is pretty rare actually, right? There's not many others that do that. So what I did is I went through and did a little write-up here. And it's really kind of the, what are my thoughts on this? Why did I go through this whole process? But I entitled it paying for search in 2022. Am I crazy? Which we'll see. So some of the highlights of the things I'm really enjoying it. I laid out some of the reasons I think it matters. Like surveillance capitalism is net net bad for society. That is you being the product by being tracked and having all of that information tracked across different sources, grouped together and resold through data brokers.
Starting point is 00:07:55 Not good. Most search engines, that's their business, right? Which is not great, right? And also if you support small companies, we all win, right? Even if you don't use it, people are supporting small companies. We have many choices. There's just, companies, we all win, right? Even if you don't use it, people are supporting small companies. We have many choices. There's just, right. There's just more choice, right? We don't, nobody wants a world where there's like one giant or two giant tech companies that make all the decisions. And search happens to kind of live in that intersection of
Starting point is 00:08:19 all of these things, right? So when you go to do search, you know, you're kind of supporting some giant tech company, but at the same time, you're also being tracked and resold and it's just i i classified it as like some things are on the neutral good side like duck duck go like they're mostly good but there's also that sneaky behind the thing scenes thing with like like only microsoft can track our users no one else can we won't talk about it a link to to that. Others fully on the dark side, right? So a link to an article about how to retarget your customers. So just some of the highlights here for Kagi is it's totally privacy respecting
Starting point is 00:08:56 because you pay for it, right? There's no ads, which don't lead to these perverse incentives or these counter incentives. One of the things I really like is you can block websites. Like I just unblocked all the things that I had previously blocked and I did a search for div tag event.
Starting point is 00:09:13 What was the first result? W3 schools. I don't know. Do you ever run across W3 schools? Do you like this? Yes, no. And there's a few of these that they just turn out questions and answers.
Starting point is 00:09:24 You're just like, could this just stop? Could I just never, like, how are they so good at SEO and so bad at answers, right? And so for those things, there's like a little globey looking icon looking thing next to this, and you can press it and just say, block. I will never, ever see W3Schools.
Starting point is 00:09:42 Now, some people may have extensions. There's like a W3School blocker extension you can get for Chrome and other browsers. But I also really don't want to install like any more extensions in my browser than necessary. There's plenty of examples of like, oh, this extension became unmaintained. And so some company bought it
Starting point is 00:10:00 and then put some tracking into it. So not only your search is tracked, everything you do ever is like now report, right? Like I just don't want to install those things. It's just not worth it. But here you can just say block these four or five domains or just lower them if you kind of want them to sort. Yeah.
Starting point is 00:10:15 Oh, you muted. How did I mute? Sorry. Check this out, Brian. If you do a search for CNN, see how this globe turns reddish orange? Yeah. Just in the search results. This is
Starting point is 00:10:26 on Kaggy, right? On the right next to it. And you're like, wait a minute, why is it red? If you go over to it, it has a big red warning. There you can click it. It'll give you more information. It has a big red warning. There's 43 trackers detected on this page. So if you click on it, you're getting 43 trackers put on you. It's like jumping, like that pool is full of leeches. Don't go in it. You're going to go in it. it warning and it even gives you the categorization of it has fingerprinting advertising has google as a tracking category and email isn't that nuts and cool yeah i mean cool it tells you not cool that it is yeah but then like just to be fair things like vivaldi and stuff can block most of that stuff yes exactly and so if you want to block it you can right certainly you should be blocking it
Starting point is 00:11:05 uh i think but anyway it's also nice that the search engine is kind of like got your back in that regard like you know here's yeah this is the category of the site yeah so are the results good though that is a super important question because if they're not then all this doesn't matter right right um i would say they're pretty close to Google. I'm pretty sure that the cost, which is $10 a month, I think the cost mostly, because that can't be compute. There's just no way that it costs that much. I think the results are, I'm pretty sure they're buying search as a service from Google and Bing. Okay. I haven't been able to verify it, but they talk about enhancing their search results with open source and other results.
Starting point is 00:11:48 So it's like, we've got those results plus, you know what I mean? Yeah. And so as far as I can tell, it's quite similar to Google, actually. But with the extra features to be able to block sites you don't ever want to see. So that's cool. Exactly. Yeah. So here's the follow-up to live with it, Kagi.
Starting point is 00:12:04 I give it a solid thumbs up. The only, really the only downside is that it costs money. Are you interested in paying another subscription, another $10 a month for something? For me, it makes me happy. I search for stuff just constantly all day. And every time I'm like, yep, still not being tracked. Feels pretty good. And so for me, it's worth it.
Starting point is 00:12:23 People can decide. All right. Well, I gotta say, this is a random comment from Vincent is, I don't know how I, I don't know how to read this. Once again, I'm rocking my baby to sleep. And once again, y'all voices aid me in doing so. So we're so boring. You're putting your kid to sleep. I'm not sure what, how to, no. Yeah. I'm not sure. No, that's awesome. Hey, Vincent, great to have you here. As somebody who had one of those baby carriers when I had twins, I would hook them both on me and I would sit there and like work on my keyboard. Cause I like in the middle of the night because they would sleep if they were stuck to me,
Starting point is 00:12:58 but not if I was like trying to lay them down. Oh God, no. So hopefully we're just, I feel you. Oh, a newborn. He has a newborn. So they're not listening anyway. They're just our voices. Or are they? And are they going to grow up to know Python by the time they're five? Yeah. And know how to properly protect themselves against search engines.
Starting point is 00:13:20 That's right. That's right. All right, Brian, before we move on, let me tell folks about our sponsor, Microsoft for Startups. You know, Microsoft for Startups has been a great support of the show, and it's really good to have them on board. Make sure that we can keep this going strong. You know what they don't have in this ad, by the way, Brian?
Starting point is 00:13:37 Retargeting. We don't have any retargeting for you. So I'm sorry about that, but you do have some really great offers if you go visit it. If you start a business, obviously it's hard to get started. A lot, 90% or more businesses go out of business within the first year. And so Microsoft for startups set out to understand what are some of the challenges and what are some of the assets that they can bring to bear to help that. So Microsoft for startups founders hub was created and it has a bunch of free resources or once you accept it
Starting point is 00:14:05 into the program a lot of included resources that are just given to you and they come in two categories they come in a bunch of cloud credits so you can run your infrastructure and code for no money out of it you know probably for free for a couple of years and they also come in the form of mentorship and connections and information so you get a a bunch of free GitHub credits. You get a bunch of Microsoft Cloud credits. You get many from OpenAI, a global leader in AI research and development as well. And it's also not just about who you know, like it is so often for companies out there on their own. You get access to their mentorship network and giving you access to a pool of hundreds of mentors across a range of disciplines like idea validation,
Starting point is 00:14:49 fundraising, management, coaching, sales, and marketing. That's definitely an important one as well as a bunch of specific technical aspects. So you can even book a one-on-one meeting with these mentors, many of whom are founders themselves. So make your idea a reality today with the critical support you'll get from Microsoft for startups, Founders Hub. Visit
Starting point is 00:15:07 pythonbytes.fm slash foundershub 2022. The link is in your show notes. Thank you, Microsoft, for supporting the show. Yeah, thanks a lot. Is it time to rewrite some code, Brian? Yeah. This was fun. So I ran across an article called Tools
Starting point is 00:15:23 for Rewriting Python Code by Luke Plant. And it's also like, by the way, it's kind of a gorgeous blog formatting. It looks like a book almost. But anyway, beside the point, we've covered a lot of these things, these tools on the podcast, things like Black and iSort and Linters and things like that. But it's kind of fun to see them, a whole bunch of things listed together. So by rewriting, we mean like hopefully tools that change your code, but hopefully for the better. So we've got things like formatting and style guides like black. And another popular one is that I don't know if we've covered is YAPF or yet another Python formatter, I think.
Starting point is 00:16:08 And it's it's similar ethos to black, but it's more customizable. So black, you can't there's only a few options. But YAPF is often used by companies that have their own style guide to be able to customize it. But it's a little more tweaky. So you have to kind of get in there and set it up so that it follows your style guide. So there's that. There's AutoPep8. iSort, which I really like, which reorders Python imports.
Starting point is 00:16:36 And so there's things like this. Table format. I have to play with this. It makes it easy to align columns in your Python source code. I kind of want to try this out because that's something I don't like about Black and other formatters sometimes is they muck up my tables. But anyway, there's upgrade things like PyUpgrade and Flint. You've mentioned Flint a couple of times.
Starting point is 00:16:57 I'm a big fan of Flint. I run it on Python Byte's website code, on TalkPython, on the train site. And it's great. Actually, I just got a pull request on one of my projects, and I'm pretty sure they just ran Flint over. They're just going through and finding some projects and running Flint and then doing PRs against them.
Starting point is 00:17:17 And I was slightly kind of annoyed by that, but also like, yeah, I didn't have to do it. So yeah, thanks. I grabbed it. Type hints, which I didn't know about this stuff. So I kind of have to do it. So yeah, thanks. I grabbed it. Type hints, which I didn't know about this stuff. So I kind of have to look at this. So things like pyannotate and monkey type to add. And there's a few others to add type hints to your code.
Starting point is 00:17:37 This is super interesting. Adding type hints based on instrumented test suite runs. So instrumented means it watches what functions get called and it says, hey, this parameter was always a string. This one was always a user object. So here's your type parameter, colon string, colon user. That's awesome. Yeah, have you ever, and then I guess you could-
Starting point is 00:17:55 No, I need to do this. Try it? Yeah. Yeah, so I'm going to try these. There's a few of them. So anyway, interesting. Some refactoring stuff is a uh that i it mostly talks about um how a lot of these refactoring tools are built into ides and i'll have to say when i'm i
Starting point is 00:18:13 usually use an ide assisted thing like pylance or i write to to uh to do some refactoring but and i actually don't use them as much as I probably should. I usually do manual refactorings, but anyway. And then some standalone ones like Rope and Jedi. And then the other category includes things like Shed, which I still have yet to try out. I need to try that. That combines a whole bunch of the tools. But one of the parts that I was really excited about
Starting point is 00:18:42 is I didn't know about libcst. So this article talks about writing your own. There's a project called libcst that apparently you can use to write your own. It does a syntax tree thing, and you can hopefully write your own reformatter. So that might be fun. Okay, nice. And one of the recommendations is the documentation's a little overwhelming for libcst.
Starting point is 00:19:10 So maybe use GitHub or libraries.io to find other projects that are using it and then see how they're using it. And I love that way to understand how to use something. Yeah, I need pretty much what this does but i want to change these two things let me copy that and go yeah yeah i guess that'd be another way to do it it's like fork black like the the people that forked black and made blue which gotta love blue uh it wasn't listed here but um oh one of the things i wanted to to bring up while we're right
Starting point is 00:19:40 here is uh there's um what there's upgrades like PyUpgrade and Flint. There was one of them that does setup PyUpgrade, which upgrades setup.py to setup.cfg. I'd really like someone to figure out how to take all of your setup stuff and create a pyproject.toml file. Yes. Yes.
Starting point is 00:20:03 That would be excellent. Anyway, cool stuff. Setup pytoml file. Yes. Yes. That would be excellent. Anyway, cool stuff. Set up pytoml or something. Yeah. Set up toml. Toppy. Okay, cool. Yeah, this looks really,
Starting point is 00:20:13 it's a really nice taxonomy of ways to clean up your code, improve your code, modernize your code. Yeah. Yeah, pretty cool. All right. Let's go talk some web
Starting point is 00:20:23 for a minute. Ciro, who I know listens to the show because sometimes drops into the live chat and gives some advice or feedback, created this thing called Socketify.py. So Socketify, I suppose the name is inspired by trying to do web sockets really well, but it's a little more general web framework and server,
Starting point is 00:20:46 as far as I can tell. So the tagline or whatever is bringing WebSockets, HHPS, high performance servers for PyPy3, that's the JIT version of Python, Python 3, as well as CPython. So how's the website today for us? So it's, it's pretty interesting. It's, if you look through here, you'll see, I guess we can see some of the features that has WebSocket support with PubSub, fast HTTPS. I think that's probably the biggest thing that people care about. It runs on all the versions. So, you know, think kind of micro- whiskey or uv acorn or something like that with a little bit of flask type of stuff on top of it okay okay um it has url routing sync and async function so it's it's kind of a mix of like a web server that is also a web framework uh fast tls
Starting point is 00:21:41 uh what else we got here this one's interesting for the async story is max back pressure, max payload and timeouts. One of the problems that can happen if you have async code is your async code will just accept the request and it'll forward it on through an await some database call or await some microservice other API call. And it can just way pile up on your server
Starting point is 00:22:04 and then like slam the database. And you might say, look, we only want to have, you know, 20 database queries in flight at a time, right? So you can limit how much pressure the web server is putting onto the database, and it'll kind of slow it down and say, instead of accepting more requests or doing more of this work, just queue up the response like a non-async web server would do. It has async support, ASGI web server support with extensions for Falcon, which is one of the web frameworks, as well as a WSGI one. And some new features coming. But the real selling point, the reason people might care to check this out is the performance.
Starting point is 00:22:40 So Falcon is pretty fast. UVCorn is pretty fast. UVA corn is pretty fast, but if you look at socketify, uh, I talked to zero and, um, they're using the tech and power benchmarks. I'll pull those up in a second. In fact, I'll just pull them up now. So over here on mass announces, um, follow up, we break a new record for Python. No other web frameworks able to reach 6.2 million requests per second in the tech and power benchmarks as This puts Python in the same ballpark as Golang, Rust, and C++. So we pull this up. What do we get?
Starting point is 00:23:09 We get waiting. Ironic, isn't it? Waiting on that. But look at this. You've got Socketify at 6.2 million requests per second on the tech and power benchmark. And then Vibora and Gibranto. And what's really interesting is like down here at 10 we have 360 000 for uveacorn but follow me down here there's a couple of interesting ones pyramid
Starting point is 00:23:31 go pyramid i love pyramid python bite stock python or pyramid the moment at a quarter million we make our way down down down down down down down down async flask is at 57,000. Straight flask is at 8,000. And let's see, we've got tornado at 40,000. Here's another one at 50,000 for tornado. Turbo gears at 70, another one at 90. And there's some variations on like some of the internal, like is it PyPy versus CPython versus whatever. There's a bunch of variations in here.
Starting point is 00:24:00 But there's some surprises there, huh? Yeah. So here's the trade-off you got to make you got to decide right like this this framework is cool it's quite new with 230,000 stars but it looks also quite promising so for most people you might not need something like this uh it's kind of a low level lower level programming uh and say um your standard flask, right? And it doesn't have as many extensions, but it also, it has some, I mean, if you get that kind of performance and you need it, right, here's a pretty cool option you could try out. So anyway, I encourage people to have a look
Starting point is 00:24:35 at it. It looks pretty interesting. It's also quite new, you know, last commit six days ago. So that's encouraging, right? Yeah. And also one of the things I like about projects like this, that, that, you know, are assuming they're doing something different to make things faster than, you know, let's think outside the box to do something a little bit different than everybody else is doing. Um, other people pay attention. So the people that are, they're, you know, um, these other frameworks are paying attention to what's going on here and, and everybody learns from each other. So,. So having a speed up in one area, maybe we can have somebody take this and make the interface as easy to work with
Starting point is 00:25:12 as like FastAPI or Blask or something. Yep, absolutely. Or get some of the learnings from here and build those into the other frameworks as well. So yeah, maybe not for everything you're doing, but if you have like some project that's some part or some part of your project that needs to be super high speed,
Starting point is 00:25:34 this is a good thing to take a look at. Yeah, absolutely. I agree. So put it in the interesting category and congrats to you on some pretty high-end performance there. Yeah, nice. Well, I think that's it for all of our items, isn't it? Our main ones.
Starting point is 00:25:47 Yeah. I got a couple extras. Yeah, throw them in. Yeah, so I was actually going to cover this, but I think it's a little early. So it's a project called Mousebender from Brett Cannon. And the idea, I think, is around producing and consuming. It says, produce and consume dependency lock files for Python.
Starting point is 00:26:09 And there's some goals for the project about this project. It hopes to eventually provide a way to create reproducible installations for a virtual environment from a lock file. And so there's a lot of stuff going on here, but it's a little early in the project. So I just want to point this out. And if people really care about packaging, maybe watch this. I'm going to be, I care about it.
Starting point is 00:26:34 So I'm going to be watching this project and see if there's anywhere where I can contribute possibly. Anyway, MouseBender looks interesting. I don't think it's ready to use for anything yet, but yeah, it looks a little interesting. Yeah, it does. Nice work, Brett. And I think I got this from Brett too, but I can't remember.
Starting point is 00:26:55 There's a page called devguide.python.org versions. We've got status of Python versions and a graphic for all the release cycles. That's so cool. People need to see this graphic. This is cool. Yeah, and it's neat because it shows you all the old end-of-life ones and how long they've been.
Starting point is 00:27:18 End-of-life for 2.6 was back in 2013. So what are you guys doing? They should put like a skull and crossbones on the 2.7 and 2.6 one or something. But so you've got a whole bunch in end of life. You got some in the security zone, which means if there's security fixes, they'll add those.
Starting point is 00:27:36 And then, but then they get like it, you only got like six months left of 3.7. So if you're still using 3.7, it might be a good time to upgrade. But it shows all the, you know, the only one with feature is 3.12 right now because that's the one that's being worked on. And it's kind of a neat visual.
Starting point is 00:27:55 This page is pretty simple too. And at the bottom, you've got more specifics of when things are end of life. But at the bottom, the description of what all these mean. So what does feature versus end of life mean things? Good thing. Neat. Yeah, that's cool.
Starting point is 00:28:10 I switched our website to run 3.11, by the way. Nice. Yeah, like a week ago. It's still running, so that's good. Yeah, I switched some of our test code at work to flip to 3.11. And one of my team members says, I wonder if we're ready.
Starting point is 00:28:26 And I'm like, oh yeah, we've already switched. So yeah. We better be. It's been doing it for a while. So do you have any extras? Of course. So I thought this would be the only thing that I would refer back to my website for.
Starting point is 00:28:40 But then that write-up I did on Kagi. I'm going to try to do a video version of that Kagi Live With It thing. But I ended up realizing that that was going to take way more time than I have this week. So I just wrote it up, but another one I wrote up, people can just check this out as, uh, sometimes you should build it yourself, um, and embracing your not, you're not built here. Maybe we should just build it. I know we could buy it, but let's build it. Uh, sort of talking about some of the things, uh, TalkPython as well as Python Bytes and like how sometimes you sort of get into this cascade of things where new possibilities arise, right? So for example,
Starting point is 00:29:16 one of the parts that says integrations abound. So for our live stream, right, we have our live stream here on YouTube at the moment moment and then it becomes the podcast says because the way we i put all the stuff together is not only do we do our live stream but i push a button on the stream deck that announces this on twitter and also the mastodon a mastodon puts the website into live stream mode but then that platform will you know python bites will take the the youtube live, grab its carefully crafted thumbnail, pull that down to actually become the social share image. So if somebody shares the episode on Mastodon or Twitter,
Starting point is 00:29:52 all the way back to the thing we did with the live stream is actually already producing the image. And so it just talks about like, you know, sometimes, because I always have had this tendency, like, well, don't build it yourself, find something that works, find something that's out there and you, well, don't build it yourself. Find something that works. Find something that's out there. And you have to break down and build it yourself.
Starting point is 00:30:08 And I'm like, you know what? There's actually some really cool stuff that we've been able to accomplish as we built it ourselves. So here's a kind of an essay on that, I would say. Nice. Yeah. So people can check that out. Also, back to the live with it side of things. I'm trying to support smaller companies and be less just integrated into like one big tech giant.
Starting point is 00:30:29 So for my personal email, I've got a domain, mkennedy.tech is what I went with, which redirects to my other one for my blog. But then that was hosted on Gmail on like a paid $6 a month email docs, whatever. And I just got really tired of trying to juggle two Gmail accounts, two Google drive accounts, two Google calendars, all these things. I'm like, why am I doing this? Why don't I get a dedicated cool place that is like even a little
Starting point is 00:30:56 more on the privacy side as well. So I'm trying to try and go all in on Proton. Do you have a Proton account to use this? I don't. Well, for a long time, it was just email. And like, you can have like a proton.me or a proton.com or whatever. But I realized recently that they have other features where if you pay $7 a month, you get access to all of their things like their calendar and drive and VPN, but that doesn't matter to me. But you get three custom domains and 15 email addresses plus catch all email addresses and hide my email aliases. So I can have all of my different domains all have email addresses and that all basically resolve back to my personal email. Ooh, cool. Isn't that cool? And so I was at Google and I just changed the MX records
Starting point is 00:31:45 and now I'm at Proton. And if I like it, I'll stay here. If not, I'll change my MX records again and I'll be somewhere else, but you know, kind of try to take control of the email. So it's my thing, not something at gmail.com, no matter what you think about it. Right. Yeah. Anyway, people can check that out. I just want to mostly point out Proton looks like it has more to offer than it used to. And how about like support? Can you just use your, I mean, to mostly point out Proton looks like it has more to offer than it used to. And how about like support? Can you just use your, I mean, do they like use your normal email client to access all this stuff? So Proton is like end-to-end encryption, which is a little tricky, but they have, what is it? It's called Proton Bridge.
Starting point is 00:32:20 So let's go to the mail thing. So this is it. So what you can do is you can run this thing on Mac or Windows or Linux. And it's like a little, you connect to basically local host for your email client, for your email server. And it talks to Proton with the end-to-end encryption.
Starting point is 00:32:37 And then it just does IMAP the last few, I don't know, it's not even the last step of the network. Right, it's just, it's a loopback. And so, yes, you can connect your usual things too with that. Okay, cool. Yeah. All right. Another quick one. There was a court in Germany that, kind of the same theme, that decided that Google fonts, usage of Google fonts, like if you look at a lot of webpages, they'll internally have slash slash fonts.google.com, like open whatever right some some font name and like the the weights of it that exchanges a bunch of cookies and tells google about the visitors
Starting point is 00:33:11 yay and of course it does because even the youtube thumbnail picture does uh why wouldn't it so um bunny bunny.net which is the awesome cd and that we were i talked about a couple times ago a couple episodes ago they released this thing called bunny fonts and so bunny fonts is epic they even talk about like this um this court ruling and uh gdpr and stuff but the idea is it's a um the bunny fonts is a drop-in placement for google uh google fonts for google fonts yeah so whatever url you would put into your website to get the fonts from Google, you just change the word Google to Bunny. Wow. That's really a drop-in. Yeah.
Starting point is 00:33:52 And it's the same API, it's just you change the word and you get like super fast CDN-backed zero privacy leaking fonts. So you just, it's super easy to adopt, right? It's pretty cool. Not zero privacy hyper yeah hyper zero privacy leaking yeah zero privacy trade-offs or whatever where's their
Starting point is 00:34:12 here we go here's their fonts but anyway that's cool isn't that cool yeah yeah so um super easy bunny i mean you don't even have to have an account and it's a cute bunny i mean they're bunny their their uh iconography is really, really good. So there's a place where you go pick the font. So you come over here and say, I'm interested in Houma or whatever. I don't even know a font. Let's say you're interested in this one. Or you could just say, I want to add it.
Starting point is 00:34:37 And it gives you the little URL, which is just fonts.bunny instead of the Google one. So yeah, it's pretty cool. Anyway, that's all I got for my extras. Well, that's great. Yeah. Good stuff. All right. I have a joke for you.
Starting point is 00:34:51 Oh, let's do a joke. Are you ready? Yeah. You've heard of ChatGPT, I'm sure. I'm trying to not hear about it. I know. I logged out so I could specifically show the homepage. So I got to get back.
Starting point is 00:35:05 Anyway, ChatGP, I'm trying to not hear about it as well. My brother actually shared this with me. Him and his son, my nephew, were playing with it, doing some coding stuff. Somehow they ran across this example. So this is a tweet from someone else that he shared with me. Riley, the tweet is not my brother. It says OpenAI's new new chat GPT explains the worst case timing complexity of the bubble sort algorithm. Okay, so what you can do is you can
Starting point is 00:35:30 say, give me a step-by-step analysis of the worst case time complexity of the bubble sort algorithm with Python code examples, right? So that's not a joke, right? That's helpful. It could tell you, here's the situation, and it could show you with Python code examples. But the next part makes it awesome. Give me the explanation with Python code examples, but write every sentence in the speaking style of a fast-talking wise guy from a 1940s gangster movie. This is good.
Starting point is 00:35:59 Are you ready? Yeah. Okay. All right, pal, listen up. The bubble sort algorithm, she's a real simple one, but the worst case time complexity, that's a whole different story. You see, in the worst case, every element in the list got to be swapped. So the time complexity is going to be proportional to the square,
Starting point is 00:36:13 the length of the list. Get it? Here's the Python code to help you out. See if you follow along. There's the Python code with commas, by the way. See, in the worst case, the while loop is going to keep looping until there ain't no more swaps to be made. In a loop, it's going to go through every element in the way. See, in the worst case, the while loop is going to keep looping until there ain't no more swaps
Starting point is 00:36:25 to be made. In a loop, it's going to go through every element of the list. So the time complex is going to be proportional to the square of the list. Get it?
Starting point is 00:36:32 What do you think? This is good. It's pretty fun, right? Yeah. So. All right. Anyway, well, I don't know.
Starting point is 00:36:39 The chat GP stuff is interesting. It's kind of scary, but it's also funny. But does the algorithm work? I haven't read it, but I think so. It looks like the right kind of, at least first glance, it looks right. I don't know.
Starting point is 00:36:55 I could always go and copy the code and try to run it. What do you think? It's like too much work. Oh, the indent. The indent is off. Yeah. You know what i'll run it and report report for next time see if the uh the wise guys code is actually any good yeah i'm i'm up for always up for volunteering you for work um but nice yeah anyway thanks yeah that was funny yeah it was all right see you later bye

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