Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #393: Dare enter the Bash dungeon?

Return to episode page view on github
Recorded on Tuesday, Jul 23, 2024.

00:00 Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 393, recorded July 23rd.

00:09 And I am Brian Okken.

00:10 And I'm Michael Kennedy.

00:11 If you'd like to watch the show live, you can catch us.

00:15 You can go to pythonbytes.fm/live and you can watch it live.

00:18 We'd love to have you on board.

00:21 Usually it's Pacific Time, Tuesdays at 10 a.m.

00:24 Sometimes it changes.

00:26 And if you'd like to connect with us or offer, if you've got a topic that you'd like to have us cover,

00:31 you can find out how to contact us on pythonbytes.fm.

00:35 Or you can follow all of us on Mastodon and Fosstodon.

00:40 So check out those links in the show notes.

00:42 Yeah, should we jump in?

00:44 Let's jump.

00:45 I think the first thing I want to talk about comes to us from Matt Wilkie.

00:51 And so Matt Wilkie suggested this cool project called Marimo.

00:55 Have you heard of it?

00:56 No.

00:57 Think Jupyter, as in Jupyter Notebooks.

01:00 I feel like I'm on a vibe lately.

01:02 Last time I talked about Saturn, the Mac desktop application that was like a minimalist Jupyter notebook.

01:08 This is not that.

01:10 This is a what's called a reactive notebook.

01:13 And this actually solves one of the big pet peeves of mine about notebooks.

01:18 And notebooks are basically human-selected go-to statements, which is a little bit sus.

01:25 In the end, I mean, it's great, but I can go and say, I can go and run cell 1, 2, 3, 4,

01:32 go back and edit cell 2, but not run it, edit cell 3, and then run cell 3.

01:38 And then you look at it, and you have cell 1, which ran, cell 2, which has data and it never ran,

01:44 and then old 3, 4, 5, and then new 3.

01:48 How do you visually know about that?

01:49 I mean, I guess there's a little number on the side that says 1, 2, 3, 4, 5, right, as you go back up.

01:55 But the ones that are not the latest numbers, those are not knowable effectively to you, right?

02:01 And so this concept of a reactive notebook is it understands the relationships of the cells and the pieces of data in the cells.

02:08 And so probably the best way here is to look at an example.

02:12 Okay, if you go and look, let's see, this one, I'm going to see, come on, show me somewhere.

02:17 So for example, if I go, I don't know where I would find a good example for you.

02:22 Anyway, if I go and say in that cell 3 there, yeah, here we go, they've got a cool example on their page.

02:27 If you go in there and you make some kind of change to a data cell, for example, if you say the number of items is 100,

02:34 and then you print out that number of items says, oh, sorry, 1,000, then it'll say, well, it's 1,000.

02:38 But if you go and edit, say, cell 3, which then cell 4 is using some of the outputs from, and you make changes to it,

02:46 it knows that and it automatically re-renders and re-executes that Python code that is in there.

02:50 And then you even have UI widgets, which you can put in and, you know, slide them around,

02:54 and every cell that depends upon that slider bound to that piece of data runs.

02:59 Oh, that's cool. That's how I want it to work anyway.

03:02 Exactly, yeah. Another big change here, there's some other things that are worth talking about here,

03:07 is it's also Git-friendly in the sense that the notebook format, so the notebook format for Jupyter, just keep contrasting it, right,

03:17 is a JSON file that has the cell definition and then the cell output embedded in the JSON file.

03:24 And specifically because of the cell output, it can get pretty ugly in Git if you're not careful about clearing out the cell output every time.

03:31 Right, because if it just uses something like call an API and get the current data, and if that data changes,

03:37 the output changes, and then you get weird merge conflicts like this graph conflicted with the old graph.

03:42 You're like, that's just the output. What is going on here, right?

03:44 Yeah.

03:44 So this is a pure Python. The notebook itself is stored as a pure Python thing that when you put into GitHub,

03:51 or any form of Git, honestly, it, you know, it diffs like Python, right?

03:56 Okay.

03:56 So, yeah, Python first design, reproducible by default, because they're always executed in a deterministic order without hidden state.

04:06 The editor comes with GitHub Copilot, auto-complete.

04:09 Mm-hmm. Mm-hmm. Remember, Git, JupyterLab and Jupyter Notebooks, you've, in order to get the auto-complete to render, you've got to hit like a chord of keys.

04:20 It's not just typing that'll make it come up. So, very cool.

04:23 This one's for you, Brian, Vim Key Bindings.

04:26 Yay!

04:27 Yeah, yeah, yeah, and a VS Code extension.

04:29 So, anyway, I think this is pretty neat, and it is open source under the Apache 2 license.

04:36 It has 5.5 thousand stars.

04:38 I don't mean to sound super negative on notebooks.

04:40 I think they've been transformative for data science.

04:43 But I do think some of the drawbacks, like I laid out at the beginning of basically like

04:48 human-selected go-to statements is really tricky.

04:51 And I definitely like the idea of a little bit more cohesion between the pieces.

04:55 Yeah, and also just different takes on stuff that people build on each other.

05:00 I'm sure that this, you know, if some of these ideas take off, maybe Jupyter will pick them up.

05:06 Sure, and Christopher out there does have a valid point.

05:08 I wonder how it handles computationally heavy stuff.

05:10 Sometimes you don't want a cell to rerun quite yet, right?

05:13 You know, if it takes 10 seconds for something to re-render, re-update, and you're just trying to edit that code, you know.

05:21 But I don't believe it re-renders until you render the cell that affects it.

05:26 But I mean, it still might be valid.

05:28 There might be times for both behaviors.

05:31 I can imagine like a time when, though, like if you're doing a demo, where having it redo it automatically would be awesome.

05:39 Yeah, anyway, take it or leave it, but there it is.

05:43 Marimo, Reactive Notebook for Python.

05:45 I want to talk about change a little bit.

05:48 Mostly a changelog.

05:51 So, wait, that wasn't really a good transition, but yeah, whatever.

05:57 pytest has a new update, yay!

06:02 So, pytest updates fairly regularly anyway, but I'm really excited about 8.3 that came out just the other day

06:11 because there was a flag that I worked on.

06:13 So, there was in 8.0, there was in the 8.0 release, I don't even remember when that was,

06:21 there was a change that I helped put in place that was to turn on tracebacks for X fails.

06:28 So, this is sort of inside baseball stuff, but if you expect a test to fail,

06:32 it normally didn't produce a traceback, but I added, or I and a few other people worked on a feature

06:39 to turn on tracebacks if you had the -rx flag on, which means extra reporting for X fails.

06:47 I thought that made sense, but it turned out that broke a whole bunch of people.

06:50 Sorry, but it's fixed now again.

06:53 It's back to the normal behavior by default.

06:55 However, now there's a new flag called X fail -tb that will turn those on.

07:01 So, it turns on independent of the -rx flag.

07:05 Those are separate now.

07:06 So, I like the way this is here.

07:10 The other thing that I want to talk about, so that's one of the features.

07:14 There's a bunch of new stuff also.

07:15 There's a change to keywords and markers, and this is a little hard to quite get your head around,

07:23 except for if you'd look at an example.

07:25 So, the idea is that you used to be able to do a marker, run a marker test or a marked test,

07:32 but you couldn't - sometimes markers have parameters to them, and you couldn't - basically, the gist is now,

07:39 if there's a parameterized marker, you can specify that, and there's a few - not all types,

07:45 but a bunch of types are supported.

07:47 So, I think we've got ints, strings, bools, and none.

07:51 So, cool.

07:53 >> Yeah, very cool.

07:54 >> That's a cool feature.

07:55 And then the no-fold skipped.

07:58 So, apparently, this was something that I didn't think I needed, but now that I see it, I really am happy about it.

08:05 The idea was when you used to skip a test, it would tell you the file and line number.

08:12 I guess I didn't realize that, but it wouldn't in the reporting, but short summary,

08:16 but wouldn't tell you the name of the test, and now you can turn on a no-fold,

08:22 and it'll show you, I guess, more information.

08:26 And a bunch of other features.

08:27 I'm thinking a lot of this stuff came out of the -

08:30 there was a recent pytest sprint that happened in Austria, and I'm thinking maybe a lot of these features came out of there.

08:37 So, cool. Cool progress on pytest.

08:40 >> That's some big news. Very big news.

08:42 >> So. >> Love to see it moving along.

08:45 >> Yeah.

08:45 >> Would you say it's the de facto testing framework for Python, or are you still all about unit tests?

08:50 >> No, yeah. I'm all about pytest.

08:53 I don't hear much - there are some other fun ones coming up that I've looked at a little bit,

09:00 but, you know, pytest is the big behemoth now.

09:02 >> Yeah, for sure.

09:03 >> It's not a big piece of code.

09:06 It's just most people are using it as far as I can tell.

09:09 >> Yes, indeed. Awesome.

09:11 All right. First of all, bit of real-time follow-up.

09:13 Chris answering his own questions.

09:15 Ah, looking at the docs there, it's a way to mark cells as stale if they're too expensive.

09:18 >> Oh, cool. Nice.

09:19 >> Yeah. Excellent.

09:20 Now, let's move on to Pittsburgh, not Austria, where we can talk about the Python Language Summit 2024.

09:28 This happened at PyCon 2024 in the US, and this happens every year.

09:35 It occurs just before PyCon US happens because this is the biggest gathering of core devs

09:41 and other core dev influencers, if you will, people who have projects that influence Python significantly,

09:47 like Pydantic or FastAPI have, I believe, in the past.

09:50 So there were 45 people in attendance, which is a lot, right?

09:55 >> Yeah.

09:56 >> I think of the core devs, that's quite a few.

09:58 So what was covered?

10:00 So this year, you previously talked about the calendar version.

10:05 So they discussed whether or not they should adopt a calendar version name for Python.

10:11 And it actually had more pushback than maybe you would imagine, basically around like,

10:16 "Hey, there's a lot of systems that read the version and make meaning out of it already."

10:20 And they might get freaked out, I think, is one of the takeaways.

10:24 But my only pushback would be, "Come on, use the whole year, the 2024, not just '24."

10:31 Anyway, but it doesn't affect me too much one way or the other.

10:35 I'll be happy with whatever it goes.

10:37 We're already incrementing by year on 3/13, 3/14, 3/15.

10:42 If we just skip a few and then keep incrementing by year, I don't know, it's a huge difference.

10:48 >> Yeah.

10:48 >> Then we have Python's security model after the XZ-utils backdoor.

10:54 That was one of the, wow, we dodged a huge bullet.

10:57 That was a multi-year campaign to get into the XZ backdoor, into the XZ utility for Linux.

11:05 I don't know if you all remember hearing us talk about that, but basically they berated the beleaguered maintainer

11:11 of this really important tool until they let them become a core contributor.

11:15 And that core contributor turned out to be a malicious actor.

11:18 So pretty insane.

11:19 >> Yeah, it's crazy.

11:20 >> Yeah, so Pablo Gallino Salgato gave a talk about Python security model after that.

11:25 Like, "What are we going to do about these kinds of things?" There's also a talk on native interface and limited C APIs.

11:35 We had free-threaded ecosystems on how to talk about that and how to consider this.

11:40 Remember the free-threaded Python is coming in 3.13 as a custom build output, not by default.

11:46 And we'll see how that goes.

11:47 Basically, it's got a big asterisk by the accepted on the PEP saying, "We reserve the right to unaccept this."

11:56 Another one that is super exciting for me is Python on Mobile by Malcolm Smith

12:00 and talked about how Python is basically the foundations of it being built for macOS and Android ARM 64

12:11 and x86 64 almost, almost there.

12:15 They've got a build bot coming along and like how they're making this work.

12:18 But in Python, they've got tier three support accepted for making sure that CPython works on iOS and Android.

12:27 And now it's up to, well, what are we going to do about it?

12:30 Which I think would be awesome to be able to write mobile apps in Python, right?

12:34 Yeah.

12:35 So the foundations are coming along.

12:37 Yeah, this is all based on the B-Ware project, right?

12:39 So B-Ware, Toga, those types of things and I'll let it begin.

12:43 Come on, that would be really, really great to be able to have some kind of cool UI framework

12:48 that lets us publish native or any form of apps right in Python that publish as something other than a web page

12:56 to mobile.

12:56 Keeping with the awesome, but also controversial a little bit is PyRipple.

13:01 PyRipple is the, when you type Python, the ripple that you get from PyPy, P-Y-P-Y,

13:06 and it's, we've talked about this before, there's a new ripple for Python, regular Python,

13:11 and they're borrowing that one, which is a lot nicer, has a better editing of things like blocks of code

13:19 instead of just want to go back one line at a time for an embedded if statement or an indented if statement,

13:25 something weird like that.

13:26 A lot nicer, the uncertainty was at the time, at least, it didn't work on Windows.

13:32 So a lot of people were like, "What, it's going to be really weird to ship this

13:35 and tell people to use it, but then if they're on Windows, they can't use it."

13:39 So one of the big efforts is to get it working on the new Windows terminal, not the old cmd.exe crummy thing,

13:46 but the new Windows terminal people should be using anyway, but it's still going to cause probably some confusion,

13:51 I guess.

13:52 Should we make PDB better?

13:54 Honestly, I don't know.

13:55 Limiting yield and async generators, also an interesting talk.

13:58 Annotations as transforms and some lightning talks by some folks, for example, unsupported build warnings,

14:07 Rust in Python, formalizing the PEP prototype by Emily Morehouse, Python on iOS, finally.

14:15 Now, this sounds like what I talked about with the BWord Mobile.

14:18 I don't believe it is.

14:19 I think this is more of how do we get basically the Python REPL running on iOS and Android,

14:24 if I understand it correctly.

14:27 There's things like Pythonista and others that let you run basically limited run of Python.

14:34 So, but it could be, I might be misunderstanding whether it's about making a search more meaningful

14:40 and efficient data sharing between sub-interpreters, which is actually what is I think most exciting, right?

14:45 Sub-interpreters open up possibility of even without free-threaded Python,

14:49 basically multi-threaded Python computationally, but then if you can't share any data,

14:54 then it gets a little bit funky.

14:56 So this talks about things like, well, what if you had the ability to have immutable data

14:59 shared across things like that, right?

15:01 So anyway, very cool.

15:03 People can check all of that out.

15:05 All of these are written up with details and I believe it was Seth Michael.

15:09 Yeah, Seth Larson wrote all these articles.

15:12 So thank you, Seth as well.

15:14 - Yeah, great.

15:15 Good length.

15:16 I mean, enough detail to really understand what's going on, but not so much that it's overwhelming.

15:21 You can really catch up really quickly on some of these topics.

15:25 That's pretty cool.

15:26 - Yeah, indeed.

15:27 Over to you.

15:28 - It's not like just getting into a dungeon, which would be bad.

15:32 - No, that would be very bad.

15:34 How would you get out of the dungeon?

15:36 - Yeah, well, you might wanna check out Bash Dungeon if you wanted to get out of--

15:41 - If it was like a Linux dungeon?

15:42 - A Linux dungeon, yeah.

15:44 So I can't remember where I saw this, but I came across a project called Bash Dungeon.

15:51 It's on GitHub.

15:54 We got a link to it.

15:55 And apparently it's built off a couple other ones.

15:58 There was a Dungeons and Directories and a Bash Crawl, but I'm looking at this.

16:03 It's a work in progress.

16:05 The idea is it's a game that's intended to teach new users how to use their shell in a fun and interactive way.

16:14 And there's some various, like, how to play it.

16:19 You can get, there's like a Gitpod account or Docker.

16:23 That's weird.

16:24 But the way I recommend is you can just clone the thing.

16:27 So, and it has instructions on that too.

16:29 Just clone the repo and CD it to it.

16:31 - I love you could play it as Docker.

16:34 Or through Docker.

16:35 - Yeah.

16:35 So I'm just gonna cheat and look at the repo here.

16:40 So you, when you, so the instructions are to CD into Bash Dungeon and then do an LS,

16:47 then CD into Enter and then LS, and then cat for parchment, cat the parchment.

16:52 So you're reading the parchment.

16:53 So yeah, let's follow it a little bit.

16:56 So I'm gonna go in to, go into Enter and there's a parchment.

17:01 And then when you do a cat, you cat is how to like read a text file or just print the whole thing on your screen.

17:08 So it has this little parchment with like, oh, here's what you should do.

17:11 You could use LS and it recommends doing LS-F to try to teach you about that.

17:18 And then when you look around right away and the only thing you've got is a corridor.

17:24 So if you CD into the corridor, then there's a couple more parchments that you can read.

17:29 There's a spell you can cast that the spell is.

17:33 - A spell.

17:34 - A hint that says, hey, you can use head dash end one to look at a file, see at the top.

17:39 And if it happens to be a script, it might be runnable with a warning that in this repository, you can trust it,

17:46 but you should not just run random scripts that you find.

17:49 Good warning.

17:50 But then if you cast this, if there's a chest that has a cast and then it always,

17:56 it teaches a bunch of different things.

17:59 One of the cool things I like, what was it?

18:02 Is the file, file spell, which will tell you what kind of, what type of file it is.

18:09 Actually, I totally forgot about file.

18:11 So that's why I think this is fun.

18:14 It's if you've ever done dungeon crawler type games, this is kind of a neat way to brush up on your bash skills

18:22 and or learn them anew if you're new to bash.

18:27 And it's kind of a fun way to present this information.

18:31 - It's actually super fun.

18:33 And since I've been doing a lot with Docker, I just literally hit copy and paste.

18:36 And within about like 15 seconds of seeing it could run in Docker, I was already like, "Orator, insane."

18:42 (laughing)

18:43 So fun.

18:44 - There's some cool stuff like the chest, for instance.

18:46 So in this first chamber, there's nothing there or the quarter, there's nothing until you open the chest

18:53 and it tells the, it says, "Find an amulet of color." And to use it, attach it to your torch

19:02 with --color equals always.

19:04 So basically it's telling you to do color with your LS and teaches about aliases.

19:09 - Yeah, yeah, yeah.

19:10 - And then hidden, so that's what's printing out, but hidden, there's a spoiler alert.

19:14 It's gonna move a hidden directory to non-hidden.

19:17 So our first chamber was dot and it moves it to.

19:21 - Yeah, I love it, I love it.

19:23 Mark out in the audience wonders if at the end they'll give you tree as a map spell.

19:28 I love it.

19:30 I bet Mark has played some MUDs, it's a multi-user dungeon.

19:33 I used to play, I used to play some, spend a lot of time over there.

19:36 And this reminds me of that a little bit and it's making me smile.

19:40 Let's go Shadow's Edge.

19:41 - I've never done multi-user dungeons, but I totally was doing lots of dungeons

19:45 back in my TRS 80 days.

19:48 - Yeah, I remember the dial up.

19:50 You'd be like, oh yeah, you'd hear maybe like a 30, 32K, 36K connection.

19:55 Oh, this is gonna be a good day.

19:57 Remember that 9600 business.

20:00 I won't be able to read the text that's coming down.

20:02 - Yeah, I love that stuff.

20:04 Yeah, anyway.

20:05 - Yeah, this is actually really, really cool, really cute.

20:09 - All right, those are our items.

20:11 I wanna remind everybody that we are sponsored this week by ourselves.

20:16 So please, if you enjoyed the show, check out, start with this pytest stuff.

20:22 No, check out Michael's Talk Python Training.

20:27 If you go to pythontest.com, there's pytest trainings as well.

20:31 And you can have links to my pytest book, a new shorter pytest training coming up soon.

20:37 But all sorts of, there's always exciting new courses on Talk Python Training.

20:43 So check that out.

20:44 - So yeah, indeed.

20:45 Thanks, yeah, check them all out.

20:46 - Do you have any extras for us?

20:47 - Links to that stuff, I do.

20:48 And links to all those things you mentioned are at the top of the show notes.

20:51 - Yeah, definitely.

20:52 - Yes, so how about some drama?

20:54 Don't we always love some drama, Ryan?

20:56 - Yeah.

20:57 - So David, the data script author over on Fosstodon, Mastodon happens to be on Fosstodon,

21:04 sent us a post, mentioned, said, hey, thoughts, and the thoughts are on a discuss

21:12 brought over on python.org that says, PySimpleGUI now requires a paid license, opinions.

21:18 So there's this project called PySimpleGUI, and I actually invited them to be on talk Python,

21:23 but they never got back to me.

21:24 So I guess I'm feeling better about that.

21:27 Anyway, the post says a rather popular GUI package.

21:31 It's like a real simple way to specify, like a quick way to specify a simple GUI in Python, yeah?

21:37 - Yeah.

21:38 - Recently changed its policy, now requires a paid license to go forward.

21:43 You're doing the hobby stuff, you can do it for free, but if it's commercial, you gotta pay for it.

21:47 I don't know a whole lot of the details about it, but went so far as to go back and remove the older commits

21:53 that had the older codes.

21:56 You can't even roll back the repository to the code.

21:58 And anyway, it's interesting.

22:01 And I think it's just, if you're thinking about an open source project, you're thinking about maybe charging for it,

22:07 I'm certainly not against that.

22:08 Like you put in a lot of effort, it's your project.

22:10 If that's what you wanna do to try to make a living from it and put more energy into it, fine.

22:15 I think the frustration here is that it was open source, it got a bunch of contributions from other people,

22:23 and then it got switched to commercial out of the blue with all those old commits getting blown away and stuff.

22:29 So anyway, people have thoughts, they can check out this conversation, it's interesting.

22:33 - Yeah.

22:34 - Yeah, also just two other really quick things here is the code in a castle in Tuscany thing

22:41 still has some spots available, so people can check that out if they want to learn Python, FastAPI,

22:50 basically build a high performance web app in Python, using some database stuff and Pydantic

22:55 and all sorts of fun things, do load testing, but do that in the first half of the day,

22:59 and the second half of the day, go to vineyards and other excursions in Tuscany

23:03 with me and a bunch of other Python enthusiasts, check that out.

23:06 And I just realized as we were talking, as I was talking about that Marimo thing,

23:10 is real similar to Shiny for Python as well, which is also one of these reactive web dashboards.

23:15 So we have a 100% free, no strings attached, reactive web dashboards with Shiny,

23:22 of course, you can check out over at Talk Python.

23:24 So people can check that out in the show notes.

23:26 And yeah, like I said, it's free.

23:28 So if it sounds interesting, give it a try.

23:30 How about you?

23:31 - A few extras.

23:32 Last week, we mentioned Python 3.13 Beta 3.

23:37 Now Python 3.13 Beta 4 is out, came out a couple of days after we talked about 3.

23:43 But this is, the Beta 4 is the final Beta, last chance for bug fixes.

23:50 So please, if you have a package that should be tested against new Pythons,

23:56 which means if you have an open source package, Python package, you should go test it.

24:01 Test it against 3.13, make sure that it works.

24:04 So there's that.

24:06 Also, when I was there, there was a pop-up that I closed talking about new guidelines.

24:11 So there's, I think these are new, but there's, if you want to hang out on discuss.python.org,

24:18 please check out the community guidelines.

24:20 These are some, they're pretty easy to read, pretty standard stuff.

24:23 And if you're thinking, why do we need new community guidelines?

24:28 Or why are we emphasizing this?

24:29 There's a, there was some drama in the Python world a little bit, a couple of weeks ago.

24:36 And there's an article called, "Inclusive Communications Expectations "in Python Spaces,"

24:41 put out by the Steering Council.

24:45 I think that's who put that.

24:47 Yeah, the Steering Council does not endorse bad behavior, essentially.

24:50 So, a decent read.

24:52 So if you want to talk about, look about how to be a good citizen in Python,

24:57 check this out.

24:59 Last thing I wanted to bring up is, we've talked about security in web browsers and stuff before.

25:06 And there was some news I noticed on Forbes the other day.

25:10 Google confirms bad news for 3 billion Chrome users.

25:14 What's the bad news?

25:16 They had, they were trying to do, like for four years or something like that,

25:22 talking about killing tracking cookies, but they're not gonna kill those anymore.

25:28 That effort has stopped.

25:30 A quick summary, maybe there's more details here, sure.

25:33 But yeah, it's just, I don't think it's going anywhere.

25:38 Chrome likes to make--

25:40 - I love it.

25:42 Actually, I think the title is, 180 degrees wrong.

25:47 I think this is good news for Chrome users and for people on the internet, all right?

25:51 Because the alternative was, our web browsers will have baked in tracking

25:56 that is part of the execution of your environment, that it tracks you and has an ad engine

26:01 that lets it think about you and then apply these for, and with third-party cookies,

26:07 we have tools that are not in control of Google or Chrome that will basically neutralize

26:13 the vast majority of them, right?

26:15 Next DNS, iHole, ad blockers, Vivaldi, or others, other things that are more privates-focused browsers.

26:23 And yeah, to me, I think, we've talked about this before, Brian, we even talked about it before we hit record.

26:30 I think there's a fundamentally wrong assumption or an axiom of what Google believes the internet should be.

26:37 I think Google believes the internet should be, it must be that you can track people on the internet.

26:42 Let's do that in a nice way.

26:44 Like, no.

26:45 I know neither of us think that the first assumption should be, of course you have to track people.

26:49 How can we do that nicely?

26:50 Like, wait, why do we have to, of course you have to be able to track people.

26:53 No, you don't.

26:54 You gotta have ads based on the content of the site, for example, or the content of the article.

27:01 It doesn't have to be, Michael viewed this thing, then that thing, then that thing.

27:05 And so now we're gonna sell him shoes while he's trying to find hardware supplies

27:11 or who knows whatever, right?

27:12 - Yeah.

27:13 I mean, we already have, like, even without, I've done a little bit of work on,

27:16 I know you have too, about how do you do, like, could you do targeted ads without tracking?

27:21 And of course you can.

27:23 There's, based on, I don't know how it does it, but based on the IP address or whatever,

27:29 that's a little creepy, but basically even regions, you can find out essentially, like, based on the content,

27:37 but also based on, like, what country is the person in.

27:40 I'm okay with people knowing what country I live in or which part of the country even,

27:45 so that maybe there's a festival in Oregon that I might wanna see.

27:49 Throw me an ad for that.

27:50 That's fine.

27:51 But like, you don't need to track my personal stuff.

27:54 - No.

27:55 - Yeah, anyway.

27:56 - Yep, indeed, indeed.

27:58 We'll roll real quick, real-time follow-up.

28:00 Mark also says, "RE by Simple GUI, "it wasn't exactly open source.

28:04 "It was more source open before this change.

28:07 "The project had a warning that it does not accept "user-submitted code nor user-submitted documentation."

28:12 So it was more source open anyway.

28:14 - Mm.

28:15 (laughs)

28:16 - And with that--

28:17 - Don't.

28:17 - Yeah, exactly.

28:18 I wanna help.

28:19 Yeah, no.

28:20 - All right.

28:21 I wanna go over to something funny.

28:24 - I sure do.

28:25 - Okay, I got a few things.

28:27 Anyway, so let's go to, there was a, I got this from, who'd I get this from?

28:36 VM Browser posted this on Mastodon, so I saw it.

28:40 So this is a SMBC, Saturday Morning Breakfast Cereal, cartoon.

28:48 There's a lot of text here, so bear with me.

28:51 A woman looking at, looks like a, I don't know, desk with a microphone.

28:56 Maybe she's being, anyway.

28:58 - Looks almost like a court situation.

29:00 - Kinda.

29:02 And she says, "Ladies and gentlemen of Congress," oh, she's speaking to Congress.

29:05 "Ladies and gentlemen of Congress, I have bad economic news.

29:09 "Historically, it has been very hard to measure "whether or not our economy offers

29:13 "many good investment opportunities.

29:15 "However, new methods have been discovered.

29:19 "Economists can now determine how many good opportunities "exist by seeing how much money we can raise

29:25 "for transparently idiotic startups." This is actually a decent idea.

29:30 And one of the Congresspersons says, "How bad is it?" She says, "Well, as of this morning,

29:38 "I myself secured $40 million in Series A funding "for this balloon, which I have written AI on it

29:45 "with a Sharpie." - (laughs) Amazing.

29:48 Wow, wow, wow, amazing.

29:49 When is the Series B?

29:51 (Dave laughs)

29:53 And may God have mercy on us all.

29:55 I think that's a positive indicator, although it could be the sign of an impending crash.

30:00 - There's so many businesses that are basically rappers around ChatGPT, and they're like,

30:06 "We're revolutionizing the world." They're not, they're just--

30:09 - Until the API changes.

30:11 - Yeah.

30:11 - Or the cost changes, or it's 1999 all over again.

30:15 - Yeah.

30:16 - Cue the Prince and Will Smith songs.

30:20 - The last thing I wanted to bring up was Pie Jokes.

30:23 Pie Jokes has, we've used jokes from Pie Jokes before.

30:27 Last release was in 2019, but there was just a new release this month.

30:31 - Woo!

30:32 - Woo!

30:33 - Go back and install Pie Jokes.

30:34 - Yeah. - Let's go.

30:35 - So Pie Jokes, you just pip install it, and you can run Pie Jokes.

30:40 I pulled out a few that I liked.

30:42 If at first you don't succeed, call it version 1.0.

30:46 Actually, probably 0.5.

30:49 Anyway. - Yeah, yeah, yeah.

30:51 - Okay, I'll skip one.

30:54 Oh, that's pretty good though.

30:55 A product manager walks into a bar, asks for a drink.

30:58 The bartender says no, but he'll consider adding it later.

31:01 Okay, the last one.

31:04 Triumphantly, Beth removed Python 2.7 from her server in the year 2030.

31:10 Finally, she said with glee, only to see the announcement for Python 4.4.1.

31:15 - No. - No.

31:17 Although, yeah, so 2030, if we went to Calvr, that would just be Python 3.30.

31:22 So, see, Calvr's nice.

31:25 - Yes, it is nice.

31:26 Yeah, you could understand, yeah.

31:27 I do think it's good that it links more clearly back to the year, like how long ago,

31:31 oh, that was that, that's right.

31:32 - Yeah, like what will we be at in 2030 now?

31:37 We'd have to do, what, six plus whatever it is.

31:40 Yeah, it's difficult.

31:42 - Yeah. - So, anyway.

31:44 So, well, one more Python bytes in the bag.

31:48 Thanks, Michael, for a wonderful time.

31:50 - Yeah, thanks as always, lots of fun.

31:52 - All right. - And thank you to everyone for listening.

31:54 See y'all later. - Bye.

Back to show page