Transcript #393: Dare enter the Bash dungeon?
Return to episode page view on github00: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.