Python Bytes - #365 Inheritance, but not Inheritance!

Episode Date: December 20, 2023

Topics covered in this episode: * Hatch v1.8* svcs: A Flexible Service Locator for Python Steering Council 2024 Term Election Results Python protocols. When to use them in your projects to abstract... and decoupling Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/365

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 365. Wow. It's like we've been doing it for a year. Yeah. Recorded December 19th, 2023. Yeah, and I'm Brian Ocken. Hey, I'm Michael Kennedy. And yeah, if we did it, if somebody listened to one a day from now on, they would be behind because we'll be way ahead of 365 by the time they finish. Still be awesome. Well, want to kick us off with something cool?
Starting point is 00:00:40 Before we kick it off. Yeah, go ahead. Let's say that this episode is sponsored by us. So please support us and other people. I'm going to talk about that a little bit later at the end of the show. But also check out all the courses at TalkPython Training. Check out the Complete PyTest course. You can be a Patreon supporter.
Starting point is 00:01:00 And also, if you want to connect with us, one of the best ways to do it is through on mastodon and uh we're all on fostadon or at least michael and i are at m kennedy at brian and at python bytes so indeed hey do i feel like i'm really fast brian like Neo in the matrix, mind-bendingly fast. Let's go with yes. Okay. I appreciate that. Because I just got fiber, gigabit fiber installed 30 minutes ago. I was hoping it wouldn't destroy the show, but it almost didn't make it, but it made it. Ooh, nice.
Starting point is 00:01:42 So hopefully that doesn't curse it, that something doesn't go wrong and it will crash. But 950 megabit down, which is fine, but 950 megabit up is glorious. We should speed up the playback speed when we release the MP3 so it sounds really fast. No, we're talking really fast because it's really uploading. Now let's talk about Hatch because Hatch is awesome. Ofec is the maintainer creator of Hatch and boy oh boy has he gone big on his latest release 1.8.0. So Hatch is like Flit, is like PDM, is like Pip, ENV, and many of these other poetry others. If I'm leaving your version of this out. I apologize. But with version 1.8, this has gone in a bit of a different direction.
Starting point is 00:02:31 Now, I had OFAC on the Python packaging panel. I think Steve Dower was there. Some other folks were there. Really interesting that there's this tension between should there be an app that manages Python environments with Python or should there be a thing that manages the Python itself? Right. Kind of like PyEMV, for example. Right.
Starting point is 00:02:58 So Hatch has gone in that direction of now Hatch manages Python, not just Python projects. And there's this thing to solve this problem in the form of pie app. So pie app is even maybe more awesome. pie app is a runtime installer for Python projects written in rust. And they can be you ready for this? I'm so, so excited. Your Python app can be distributed as a standalone executable, a.exe or a.app for users. What do you think, Brian? I'm very interested in finding out more. Now this whole post is a little bit wordy.
Starting point is 00:03:39 So let me jump into the Omnivore version of it over here, which has a huge icon. So Ophax says, look, one of the things that's been a perpetual problem for Hatch and all the others I named is that Python itself is a dependency. So in order to use Hatch or any of these other tools or any apps, you have to say, well, go get Python and then get back to me
Starting point is 00:03:58 and we'll start talking, right? So he came up with this thing called PyApp that will create installers for the different platforms. Claims it's trivial. It's probably never trivial, but possible. Possible would be awesome even. And so starting with this, releases not only are the binaries available for every platform, but there are installers, as in like install wizards on windows and a DMG type
Starting point is 00:04:26 thing I'm guessing, or a PKG on Mac OS. That's awesome. If you have ever in the recent days, try to put something onto, um, Mac OS or windows, there's a whole nightmare of digitally signing around it, Brian. So you can't just get a binary and give it to somebody. The platforms will freak out. They won't let you open it. Like macOS will not let you open it unless you go into settings and say,
Starting point is 00:04:53 allow me to run apps from untrusted developers. And Windows gives you this big, scary dialogue and tries to not run it. So that's why this next part- It's not developers that you don't trust. It's developers that Apple doesn't trust. Yes, exactly. You may or may not run it. So that's why this next part- It's not developers that you don't trust. It's developers that Apple doesn't trust. Yes, exactly. You may or may not trust them, but that's a different conversation.
Starting point is 00:05:13 It's a fair feature, but it makes creating desktop distributable apps super painful. So check this out, halfway there. The installer for macOS is signed using a certificate so you already your apps built with this are already trusted honestly i don't know how this is possible i mean i know why why how it works i'm not sure that it how it's allowed but i'm all for it so because i have dealt with apple and they are not lenient in any way,
Starting point is 00:05:45 shape or form when it comes to stuff running on their platform. But so the installer for the Mac OS is signed using the certificate from the same account used to sign the official distributions of Python. So you won't get any security warnings or blocking. Thank you E-Durban for helping out with that. And Hatch itself with any good system is self-updating. So you can Hatch self-update. What else I want to point out?
Starting point is 00:06:07 There's also a new Python, like Hatch space Python command group that will allow you to manage things. So you can show what you have installed. You can install different versions of Python, see Python and PyPy for those. Works with virtual environments. It has built-in rough and rough format integrations. and PyPy for those. It works with virtual environments.
Starting point is 00:06:28 It has built-in rough and rough format integrations. And traditionally, it's been somewhat slow to activate and set up a virtual environment that's already previously been installed because it'll refresh and recheck that all of the dependencies are there and everything. So now it does a hash of those and so only if the dependency statement doesn't match the hash right basically so it'll pre-compute all that stuff so now it should be basically instant so also some minor breaking changes around build defaults and the new app build target targets
Starting point is 00:07:03 what i've been raving about so So OFAC, you killed it. I can't believe it. It's awesome. Awesome. So Hatch has hashes? If you hash a Hatch with hashling, and there's some kind of tongue twister in there we could do. I'm not doing it, though.
Starting point is 00:07:22 Got to be. I'm excited about this. It's very cool i i definitely want to play with it yeah yes indeed what would you all right well um a i'm not sure how long this has been out but um hinnick has been uh promoting a new uh project that he's got called services or SVCS, which is short for services and pronounced services. And it is a he, I think it could be used for more than web stuff. But the the intent, I think was for removing some labor the plate code from hooking up dependencies and different, like your database and your cache and all sorts of stuff to an application,
Starting point is 00:08:10 typically a web application, but I think it could really be anything. But it's a flexible service locator. And one of the reasons why I haven't covered it yet on Python Bytes, I don't think I have, is because I didn't quite understand what it was doing. And it took me a while to get my head around this exist. But it's, it's pretty cool. And in it apparently realizes that it is a
Starting point is 00:08:36 bit difficult to get your head around what this is doing. So he he just recently released a video describing this project. So really great video describing services, what you can do with it, and also how to pronounce his name. He doesn't pronounce his last name, though. Apparently that's left for maybe episode two. But anyway, it's pretty cool. Actually, I'm pretty excited about it after after watching it. Watching the video. I thought maybe it wouldn't be for me, but especially for
Starting point is 00:09:16 keeping services contained, or the setting up services, looking them up within different parts of your application. And then and then getting them all cleaned up correctly at the end. That's kind of what it does, plus a whole bunch of other stuff. And one of the neat things is throughout all of this documentation, the documentation is amazing. Throughout all the documentation, he has examples in AIO HTTP, FastAPI, Flask, Pyramid, and Starlet. Nice. And the video is talking about Flask, but it's cool that he just already hit all the bases.
Starting point is 00:09:52 Like, how do I do this in Starlet? Well, it's just a little different. Mostly they're similar, but a little different ways to use it throughout the different applications. So it's pretty cool. He also mentions in the video that he took a really long time really talking about the terminology in the glossary of the documentation.
Starting point is 00:10:16 And actually, I really appreciate this, of somebody saying, okay, this is generally what I think of as what the meanings for all of these words are and it's a lot of these words are are they're overused in the English language to begin with and even in talking about programming web programming but things like what is the service what is a resource what is a dependency service layer it goes through a whole bunch of different terms what it means to him and
Starting point is 00:10:45 probably to everybody else, but if you're unfamiliar with them. And even a decent discussion of dependency injection. So one of the things he talks about is that this is not really a dependency injection thing. It's inversion of control, but it's a little different than service locators are a little different than dependency injection. And I kind of appreciate that discussion. It's pretty cool. So anyway, kudos to Hinnick for doing this and for helping us pronounce his name. Yeah, this looks cool.
Starting point is 00:11:18 I definitely want to check this out. It's news to me, so I will be checking it out. Cool. We have new leaders brian we do yes for the python world we have new leaders and specifically the steering council election results are in for next year okay so for the 2024 term we have pablo Galindo Salgado. We've got Gregory Smith, Emily Morehouse, Barry Warsaw, and Thomas Wothers. So very cool to see them all leading the way. There's a lot of familiar faces there. So that's pretty cool. I don't expect a whole lot of different from the year before, but here's the
Starting point is 00:12:05 results. You can actually see in PEP 8105, you see everybody who was potentially a candidate, how many votes they got by people who are disenfranchised. I don't know what that means. Or the not the franchised voters, the one who are enfranchised, how many votes that they got. And you can put that all together. So this begs the question, like, well, how do you get on this list? You get on this list by being nominated by a core developer. So everyone on the list was nominated by a core developer. If you are a core developer, you can nominate yourself. So that could be the person you see here because everyone i see i think is a core developer okay but anyway the results
Starting point is 00:12:51 the results are in and we have those five folks welcome and congrats awesome nice oh it's a good set of names too yeah so yeah all right indeed um well uh there probably is some protocol around elect the election results right now you could model it with classes or you could functionally model it like in a immutable way but i don't know about a protocol okay um but we're just great at transitions on this podcast. The next I want to talk about Python protocols. So there's an article from Carlos Vecina, I think, called Python Protocols, Defining a Protocol and When to Use It. And actually, this is something that I've been meaning to play with for actually some years, and I haven't really done much with it yet. So I really appreciate this article.
Starting point is 00:13:56 He's talking about protocols are a feature of Python that were added in Python 3.8. So really anything maintainable right now, you can use protocols. But they're, and you kind of, mentally, I think of them kind of like class inheritance or mix-ins or abstract-based classes. And that's one of the things he talks about in this article is they are in that same similar space, but you use them a little different. And you might use them together with other forms too, like with mixins and abstract base classes. So the article just goes through on how to define a protocol.
Starting point is 00:14:31 And he's also discussed also a decent tutorial on abstract base classes and mixins as well, which is nice to kind of describe them all together. But the protocol thing is just sort of, let me see if I can find an example. So you have a class that's inherited from protocol and you kind of give it function definitions, but don't fill in the body. So that's kind of what a protocol is.
Starting point is 00:15:00 And then other classes that use the protocol derive from that, you know, from that protocol from like, in his example, there's a class called explainable, that something that has an explain function. And so you would derive from explainable, and then your new class would have would would be a instance of protocol. But all it really says is that you can, other places that use it for types and stuff can declare that they need a protocol passed in or a explainable class,
Starting point is 00:15:34 and then you can use anything that derives from that. So pretty cool. Yeah, Brian, let me jump in and just say one extra point here. Like what's awesome about this stuff is we've had duck typing, like there's an assess fairness function that it has to call explain on the object passed in. And duck typing said, well, if it takes that, if you can pass it in there
Starting point is 00:15:56 and it will run when you call explain on it, it must fit, right? But the typing tools don't check. So like PyCharm, for example, would just go, well, it's a whatever, so good luck with that. But once you do this protocol stuff, if you say the function takes an explainable and you have explainable as a protocol, you can pass stuff in and it doesn't even have to derive from or be related to that protocol in a base class. Like anything that is passed in there, the type system will look at it and verify it
Starting point is 00:16:25 hasn't explained, even if it's in a third party package and you don't control it. So it's like a way to project typing structure onto a dynamic thing that is not necessarily your code. It's wild. Oh, cool. I kind of had that a little bit wrong then. Awesome. You can drive from it. It gives you more information potentially, but it doesn't have to be, you don't even have to, which that's the totally wild aspect. That's what I think is really different for this. Okay. Yeah. Oh, awesome. That's pretty cool. No. Yeah. So clearly I haven't thoroughly read this article,
Starting point is 00:16:57 but I do want to get into really getting my head around abstract based classes, mixins and protocols and stuff. And partly I wouldn't say that, though, because your experience is in C++. Mine also is in C++ and C Sharp, and all those languages have these interface ideas, but they're put into the type system through inheritance, and so you can inherit from it,
Starting point is 00:17:18 and it does what you expect, and it seems the right thing, but what's weird is you don't even have to. That's what's weird about it. Okay. Cool. Oh, awesome. Now I definitely want to play with it more um yeah because i've kind of missed that of aspect of c plus plus in python yeah um so nice anyway also um i'm assuming it's a ai generated
Starting point is 00:17:40 image but really cool image at the top of the article it's good i'm not sure what my opinion is about it i'll chat gpt how i feel about it it's hard to describe how i feel so i'll you know yeah i'm actually sort of i don't know this is a tangent but i've switched to um uh was i was playing with like bing is my primary search engine at work. I don't know. A new computer just was there, and I'm just going with it for a while. But everything I search gives me an AI-generated answer first, and I'm like, I don't know if I like that very much. Yeah, I know.
Starting point is 00:18:18 I know. Anyway. Well, that's it for our main stuff. Do you have any extras? I could have almost made it an extra, extra, extra this time. So yeah, sure, I do. First of all, I've been wanting to say this several times, and I'm usually like looking at my screen
Starting point is 00:18:32 and see what I want to share and stuff, and I didn't have this anywhere. So I just pulled up Mastodon to remind me. There are tons of people interacting with us over on Mastodon, and I've had some great conversations. And I want to, I'm sure you do too, Brian, want to follow people back, but there's, there's kind of a, at least for, I'll say these are Michael's Mastodon's conventions. You, you could take them for what you want. I just made
Starting point is 00:18:56 them up, but this is how I think about it. So people will follow me and I'm like, huh, did that person follow me? Cause they listened to the show and listened to Brian say, you should come join us and have a conversation. Hey, I'd like to follow that person. But a lot of times they have no picture, no description, no webpages, no posts. You're like, yeah, maybe not. Next, you know? And so I'm just gonna say,
Starting point is 00:19:15 if you have a picture and a description, a description seems somewhat relevant, I will certainly follow you back. If you have posts, that's plus one. If you have a verified webpage, which is easy, another plus one. And a lot of people have private accounts who follow me. I'm like, why are you in social media if you want a private account? I don't understand what this is because your profile is public.
Starting point is 00:19:37 Just your posts are private. But the platform has a way to have private posts. I don't understand. So anyway, probably not going to get a lot of engagement if you have a private account just post private messages for things you don't want to see so and while i'm on the topic of macedon i had a really nice and productive conversation with the psf around my mask rant on pycon so that was nice over there some people weren't nice as they sent me like not necessarily nice responses but the psf
Starting point is 00:20:05 did and that was cool that's nice yeah all right next one oh wait before you move on i just want to add my two cents on the uh yeah i do the picture um i also prefer to be able to see who it is but also primarily if the picture is something that they're using on other stuff so like if a lot of people have their profile picture on their, like the profile picture on their blog and on their, and they're primarily a GitHub user and, and they have the same profile there, even if it's like a stylized something,
Starting point is 00:20:37 but if it's the, if it's distinctive and the same everywhere, like glyph for instance, has a, has a different thing for them. I'm okay with that. But most people, I think, go with their picture, I think is the right answer. Yeah, when I say picture, I don't mean necessarily has to be your picture, just the fact that
Starting point is 00:20:55 it's not the default icon. You've taken enough effort to put in something, even if it's just a picture of a triangle. I don't care, you know? Yeah. All right.ul is asking in the audience what is your secret okay well we'll do this um we earlier on we were talking about how michael's got a faster internet now so we should make it really fast speed and then somebody commented wagrant wagrants uh commented i played it at one
Starting point is 00:21:27 and a half times speed then i got up to a live event uh and all of a sudden brian should sounded like he got drunk in one second um and so i said brian secret is out so nice i'll just have another drink of my Irish coffee. It's coffee. Trust me. All right. More extras. So Dropbox spooks users with turning on new AI features that can almost automatically send your private documents to OpenAI. Now you have to interact with part of the site for it to happen, but it doesn't say, hey, necessarily, cause you just, you touch this. We're now sending your social security number away. But anyway, that's kind of unnerving. Yeah. So you can check that out on defaulted to on,
Starting point is 00:22:18 if you're not subject to the GDPR, but defaulted to off if you are. So, you know, plus one for GDPR there, I suppose. So mine was turned on. Okay. So you have to go check to make sure that they're not sharing all of your. Yes, exactly. And it's on by default for you, Brian. So you might want to check. The whole conversation, it's on ours.
Starting point is 00:22:41 The comment section of our tech mega is like the top notch place for comments, I think. So really good. Okay. Yeah. It talks about how to go find it. So anyway,
Starting point is 00:22:52 this like maybe think, you know what? I should really be a little more, I have like three terabytes of data and Dropbox. So I'm like, maybe I should be a little more specific and intentional about where I put my stuff. So I went on this,
Starting point is 00:23:02 this rant on mastodon, by the way, a bunch of people sent me all sorts of options of like, if not Dropbox, then what? And I decided whatever I'm doing is probably good to have it end-to-end encrypted because then I don't care what they try to do with it, right? Because they can't decrypt it.
Starting point is 00:23:18 That solves a whole lot of problems. You care about the security, but it doesn't matter as much as if you're just exposing files or leaking stuff or whatever. Right. So I decided to go, I already have a paid Proton account. So all my private stuff, all my private documents, I like my scans of things I want to save that might be sensitive. They're going to Proton drive where I have 500 gigs and it's already paid for and encrypted. There's a sync thing you can install.
Starting point is 00:23:47 That's pretty excellent. I looked around and some people suggested NextCloud, which is really interesting. It's maybe more than I want. It's almost like a document, calendar, everything, self-hosted. Maybe do that next. Yeah, OwnCloud got like super owned just last week and is a similar self-hosted thing, which makes me a little nervous to self-host stuff.
Starting point is 00:24:09 I know there are people who host it for you, but it's not NextCloud. It's a little bit indirect. So maybe. Violin, I don't know if you've heard of this, but they have encrypted cloud storage end-to-end again. Pretty nice. I think this is a British.
Starting point is 00:24:27 I don't remember exactly. UG. Not sure. But somewhere in Europe, this company, it looks pretty good. I have not tried it, but end-to-end encrypted. There's IceDrive, the next generation cloud storage. Also, I think this might be the British one. Yeah, this is in Wales. I mean British. I mean UK. Also, I think this might be the British one. Yeah, this is in Wales.
Starting point is 00:24:46 I mean, British, I mean, UK. Sorry, folks. So that's pretty interesting. And I think I'm going to go with sync.com. Super simple. All they do is sync and then encrypted. For six terabytes, it's like 140 bucks a year or something like that, which is a lot, you know, versus 240 for less than that
Starting point is 00:25:05 Dropbox. Anyway, if people are in this zone of like, I'm looking for all this stuff, oh my gosh, like, what am I going to do? Regardless of whether you care about the Dropbox fiasco, here's a bunch of options people can pick. There was one comment in this whole discussion that was pretty interesting. I think it was in the Ars Technica thing. And it said, look, if you give your data unencrypted to somebody, another company, even if you trust them, you don't really necessarily control that anymore, especially if they decide to pass it along. So somebody pointed out Cryptomator. Have you heard of this, Brian? No. Cryptomator is cool. I have used something like it, but it's older and no longer supported,
Starting point is 00:25:45 which makes me sad. So what you do is you run this app. It does like super strong encryption. You control the key, right? It's just like a thing you make up and don't give away. And then it will create a drive, a mountable drive on your Mac or on Windows, like a D drive or E drive or whatever, and that thing is encrypted.
Starting point is 00:26:06 So when you mount it with this software, it looks like a drive, but then when you unmount it, it becomes just an encrypted pile of files. So you put that in Dropbox, you put that in sync or whatever, and then no matter what happens, they just get an encrypted blob of stuff. So things I super care about, I have encrypted in something, either crypto meter or something like it. On top of all the safety around the cloud drive and trust and whatever you might have there, like worst case scenario, they get a huge hard, hard to decrypt a blob of stuff that they don't know the value of, and I don't know if it has Linux. Someone's asking, does this have Linux?
Starting point is 00:26:41 Uh, I think it might. Let's see mac no let's see if i go to download what it says yeah it's worth knowing for people downloads use your dmg yeah windows mac linux android and ios even yeah so that's that. I think that it's a loss. I mean, cool, but crypto meter would have been great as a rotten tomatoes sort of thing to, to rate different cryptocurrencies. I know it's the word is taken. I'm pretty sure this has been around before crypto became a thing. Like I'm not sure how old this is,
Starting point is 00:27:25 but yeah, there's 17 pages of releases on GitHub from 2017. So yeah, they were ahead of their time in that. But this is super cool, Brian. Like you can just say, I don't really care that much about the security of where these files go. You're not getting them. Interesting.
Starting point is 00:27:44 So I suggest a sweet combination of these things. I'm going through like a super digital decluttering as part of this. And it's glorious. I'm having like a tech love affair with Notion. It's so good. But yeah, anyway, that's I'll leave it there. Maybe I'll come back and tell you more about this. Last thing for me, I'm doing the keynote at pycon at yes at pycon
Starting point is 00:28:06 philippines 2024 in february how awesome is that slightly jealous man somewhere i scroll down and over oh yeah cool three three of us and i get to be one of them so that'll be awesome thank you for inviting me and if you're going to be there i will see you there nice yeah in february cool oops i just told you for your extras uh well i just deleted one so sorry about that but uh control shift command t oh shift commit oh whatever i'll just tell you guys about it. So this is the time of year that some people like to donate some money to different people, different groups. I had the link up for the Python Software Foundation. So Python Software Foundation is not hard to find. So I would encourage people to consider giving some money to the PSF.
Starting point is 00:29:05 Also, Django Software Foundation is doing a drive. consider giving some money to the PSF. Also Django Software Foundation is doing a drive, so giving some money. If you use Django, of course. If you enjoy Python Bytes, of course, you can check out Patreon. Patreon, we do accept money for Python Bytes to help keep the show going. This is great.
Starting point is 00:29:31 Also, I wanted to highlight as well just the idea to just go on GitHub. So the different things you use on GitHub, like adders, for instance, you can go down and you can sponsor this project. You can throw some money that way. PyTest has a sponsor link. Palettes and Flask has a way to sponsor either all of Palettes or particular projects within the Palettes program. And really a lot of projects that you use every day have a sponsor this project on GitHub. So I think it'd be great for people.
Starting point is 00:30:04 If you have extra and you want to help out so i think it'd be great to for people if you've if you have extra and you want to help out i think it's a good idea i have um sometimes i help out different projects and i kind of shift it up every year and local things and um i think the things that i use and one somebody asked me once uh recently about like some projects don't really need the money. And I guess like, for instance, I really love having people support Python bites through Patreon. It's, it's fun to have our community help support us.
Starting point is 00:30:34 It's not, if you, if you in particular don't donate, we're not going to disappear. Michael and I are going to keep doing it anyway. It is totally up to you and definitely don't do it if it's a hardship, but I think it's a so it's a fun thing to do this time of year is to spread the love around that's all i wanted to say
Starting point is 00:30:50 so indeed i second that as well uh that's kind of serious though do you have something funny for us let's lighten it up no this is not funny this funny. This is too, it's too close to home. You tell me how you feel about this. So here's the joke. Here's the joke. So there's two red buttons. Think Ren and Stimpy or something like that. And a huge, scary red button. You can press either of them. One of them says pay $12. The other one says, admit to yourself, your dream is dead. And there's somebody sweating, trying to decide which button to press and it's the domain renewal. Oh yeah, totally. This is always too close for home to home for me because I just transferred 25 domains from all the different places in the hovers. I talked about like a while ago and I talked about all the,
Starting point is 00:31:41 the name servers and all that. And there was a few where I'm like, God, is the dream dead or do I just move this? So how many are you using still out of those? Well, lots of them are to like protect people from doing crappy stuff. For example, I have talkbython.com. I don't technically use it. It redirects to talkbython.fm. But if I don't have it, someone will get it.
Starting point is 00:32:05 And then all sorts of badness. Like there's a bunch of these guard. I would say half of them fall into that realm. Okay. And then maybe another third I'm directly using. And then there's the, whatever the balance, the one sixth that's left is the dream could be dead,
Starting point is 00:32:19 but it could be not there yet. Not realized yet. We'll see. I had about eight that I was not really using last year. And I admitted that about half of those are not going to go anywhere and let them expire. Let them go. Although, I mean, the domain companies don't make it easy. You're like, okay, I'm just going to let it expire.
Starting point is 00:32:42 But you get like emails. No, it's going to go. Oh, it's gone but we've just we're gonna save it for you for a couple more months uh and you get a whole bunch of guilt emails but yeah anyway yeah yeah exactly i have one real quick sad story to round this out brian okay friend of mine and i decided we're gonna write some iphone apps right when the iphone came out like 2007 or whatever it was. And he had the clever idea of like, let's get a domain. I probably did it together. I don't know. Got the
Starting point is 00:33:11 domain iPhone dot L Y iPhone Lee. And we worked on stuff for like a year because we didn't know we're going to build. We'll just like come up with this. We'll put stuff there. Never really came up with stuff. It looked like there was nothing on the this. We'll put stuff there. Never really came up with stuff. It looked like there was nothing on the horizon. We're like, you know, after three years, the L Y it was like the FM. I was like kind of expensive. Like, ah, just let it go. A week later, somebody says, Hey, I'll give you $5,000 for that domain.
Starting point is 00:33:37 So I shoot my friend, like, Hey, don't let it expire yet. Let's do this instead. He's like, it expired last week. Like, no. Oh no. Oh, well, so it goes so that somebody could have paid you five thousand dollars but they instead got it for like 20 they got it yeah for like 20 bucks or something i'm sorry to laugh at your pain uh no it's okay i mean it's like i'm telling you this is not a joke admit to yourself your dream is dead or pay
Starting point is 00:34:02 12 for the rest of your life every year that's where you are no it's good it's a good joke and people can uh hopefully laugh at it yeah everybody most people that listen to this podcast probably are feeling this yeah all right all right well i'm feeling good about our year's worth of show every day yeah 365 pretty cool yeah i don't know talk to you later yeah see you thanks everyone

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