WEBVTT

00:00:00.001 --> 00:00:04.020
Hey, all Michael here. Thank you so much for listening to this episode. Before we jump right

00:00:04.020 --> 00:00:08.080
into it, I just want to make a quick announcement. I'm sure you've noticed that we've talked about

00:00:08.080 --> 00:00:12.580
certain people being on the live stream or the live chat. And I want to make sure you know how

00:00:12.580 --> 00:00:17.160
to get to that if you're interested in being part of the show. So if you just go to pythonbytes.fm

00:00:17.160 --> 00:00:22.420
up in the menu, there's a live stream link, click on that, it'll take you over to our YouTube

00:00:22.420 --> 00:00:27.960
channel where you can subscribe and get notified about upcoming live streams. Most people just

00:00:27.960 --> 00:00:31.440
listen to the audio and that's fantastic, but it's really cool to be able to interact with

00:00:31.440 --> 00:00:35.900
some of the audience to get that broader perspective. So hopefully we can see you on

00:00:35.900 --> 00:00:40.320
the live stream recording sometime. Either way, so happy to have you here. Enjoy the show.

00:00:40.320 --> 00:00:45.760
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:45.760 --> 00:00:52.180
This is episode 230 recorded April 21st, one day before Earth Day, I guess Earth Day Eve, Brian,

00:00:52.180 --> 00:00:57.400
2021. I'm Michael Kennedy. I'm Brian Okken. Hi, and I'm Peter Kazarnoff.

00:00:57.400 --> 00:00:59.880
Hey, Peter. Welcome to the show. So good to have you here.

00:00:59.880 --> 00:01:05.980
Yeah, thanks so much for having me. So I work as an instructor at Portland Comini College and I teach

00:01:05.980 --> 00:01:14.460
engineering. And I also blog at Python for undergrad engineers. And I'm a book author too. So if you're

00:01:14.460 --> 00:01:21.980
interested in like that NumPy, Jupyter, kind of Matplotlib sort of stuff, that's the kind of stuff that I'm

00:01:21.980 --> 00:01:22.200
into.

00:01:22.660 --> 00:01:26.160
Yeah, fantastic. You do like engineering work at the local university, right?

00:01:26.160 --> 00:01:31.660
Yeah, at the local community college. And that includes teaching Python in our engineering

00:01:31.660 --> 00:01:32.560
programming class.

00:01:32.560 --> 00:01:39.140
Yeah, awesome. Well, you've spoken at the Python, Portland Python meetup. You've been on Talk Python

00:01:39.140 --> 00:01:41.620
to me. Now you're on Python Bytes. You're making the rounds.

00:01:41.620 --> 00:01:44.860
Awesome. I'm excited to be here. Thanks for having me.

00:01:44.860 --> 00:01:47.740
Yeah, you bet. Well, Brian, are you feeling calm today?

00:01:47.740 --> 00:01:48.140
Yes.

00:01:48.140 --> 00:01:49.160
Feeling a little chill?

00:01:49.160 --> 00:01:51.620
Keep calm and program in Python, right?

00:01:51.620 --> 00:01:52.360
Right.

00:01:52.840 --> 00:02:01.560
Yeah. So this was suggested by Renz Demondahl, something like that. Cool name. This is a site,

00:02:01.560 --> 00:02:07.680
but we've covered some of Vincent's stuff before. This is a site by Vincent Wormerdam called

00:02:07.680 --> 00:02:14.040
comcode.io. And what he's got is he's got a whole bunch of, basically a whole bunch of tutorial

00:02:14.040 --> 00:02:20.560
videos on software topics. But what I, and there are little tutorials to go with them. I checked

00:02:20.560 --> 00:02:25.400
out the, there's a whole bunch of stuff. There's a pie test, there's rich data set and others.

00:02:25.400 --> 00:02:30.580
I was checking out data set this morning and I got kind of hooked and I watched like the entire

00:02:30.580 --> 00:02:35.960
series because it took like 20 minutes or something like that to like watch all of them. It was pretty

00:02:35.960 --> 00:02:42.400
quick. And, and I kind of like the minimalist, it's kind of the minimalist style. It's a, it seems

00:02:42.400 --> 00:02:49.140
to be a balance of like, not just overview and not a deep dive, but somewhere in between.

00:02:49.340 --> 00:02:55.920
And it's kind of a nice place to be for, and I was like kind of blown away at how much he did with

00:02:55.920 --> 00:03:02.400
data set just really quickly. So the data set one, I started with a CSV file with a bunch of data in it,

00:03:02.400 --> 00:03:11.260
turned that into a SQLite database with a tool that he pip installed, use data set to open that. And that

00:03:11.260 --> 00:03:17.740
opens a server on your own computer. And then you use that to explore the data and then used a plugin to

00:03:17.740 --> 00:03:23.820
visualize the data with plots and charts and stuff. And then showed us how to like, actually just use

00:03:23.820 --> 00:03:32.240
raw, see, see what the exploration is in raw SQL and see what that looks like. And then, and then

00:03:32.240 --> 00:03:39.240
take that, take it. But one of the things is it's a, it's like a little service. So you could share that

00:03:39.320 --> 00:03:45.400
on your, in your internal network with somebody else, to look at it. But, the question of

00:03:45.400 --> 00:03:51.540
it's raw SQL should really let raw SQL be run. And he said, yeah, it's fine because, what data set

00:03:51.540 --> 00:03:57.620
does is open up the, SQL database in a read only mode. So you can't write anything. So you're safe

00:03:57.620 --> 00:04:01.640
there. You can't delete anything or anything. Yeah. And this is interesting in that it's like really

00:04:01.640 --> 00:04:07.180
intended to be a hundred percent shared data. And like you said, it's read only. So little bobby tables

00:04:07.180 --> 00:04:13.700
won't be a problem. Exactly. But, and then, then there's a couple of buttons that are like Jason or CSV,

00:04:13.700 --> 00:04:21.580
but they actually open up, they just open up queries and you can use those, as a, an API,

00:04:21.700 --> 00:04:28.360
into the data and you essentially have just with the data set have had, have a API that you can use

00:04:28.360 --> 00:04:33.100
directly for some, something else then. And then he's like, okay, well, with this is good enough.

00:04:33.100 --> 00:04:38.260
Could you stick it out on the cloud? And apparently data set has a tool to do that. And you can just go

00:04:38.260 --> 00:04:44.260
ahead and create a Docker around it with a couple of commands and stick it on a, stick it on a cloud

00:04:44.260 --> 00:04:49.420
service. I was just blown away at how much you can do with data set and just watching somebody play

00:04:49.420 --> 00:04:54.360
with it is good. And like I said, it's not a complete data set tutorial. It's just a

00:04:54.360 --> 00:04:58.900
scratch in the surface a little bit more than scratch in the surface, seeing what kicking the

00:04:58.900 --> 00:05:04.400
tires sort of video. So it's neat. Yeah. Cool. Yeah. It seems really neat. And there's a ton of

00:05:04.400 --> 00:05:09.420
small little tools and things you can go explore there. So yeah, nice, nice, nice. All right.

00:05:09.420 --> 00:05:14.180
Peter, what do you think about this? Well, I loved it. I think this is a great resource, for

00:05:14.180 --> 00:05:19.520
students too, cause they're all free. And the one I really liked was the one on SimPy,

00:05:19.520 --> 00:05:26.060
which is doing symbolic math, with Python. And that's kind of a confusing topic because there's

00:05:26.060 --> 00:05:30.980
like a difference between using the regular square root function that'll give you a float as an output

00:05:30.980 --> 00:05:39.120
compared to like the SimPy function, that is a symbolic math representation of, a square root.

00:05:39.120 --> 00:05:46.400
And, I was, I was hoping maybe it would be so like the ASMR videos that there would be very calming

00:05:46.400 --> 00:05:53.080
music, while you were doing it. but, there wasn't, the instruction though is really

00:05:53.080 --> 00:05:56.860
calming and really, really good. So I'd love to share this with students.

00:05:56.860 --> 00:06:03.160
Yeah. Very cool. Very cool. Nice. All right. On to the next one. This one comes to us from

00:06:03.160 --> 00:06:09.320
Brian's skin pointed out that here's a cool thing that I don't believe we've spoken about yet. So

00:06:09.320 --> 00:06:15.720
Brian, thank you for telling us about natural sort or Nat sort. Have you guys heard of this one?

00:06:15.720 --> 00:06:22.620
No, I've never seen this before. So one of the things that can be frustrating is if you sort with

00:06:22.620 --> 00:06:27.640
something that is really strings, but it has some other meaning like version numbers. Like if I have a,

00:06:27.640 --> 00:06:32.140
a bunch of strings and they'll have version numbers. And I say, sort that of course it's going to go,

00:06:32.140 --> 00:06:40.300
you know, like two dot zero, then 12, then 100, you know, or maybe 100, then 12. Like it's the way

00:06:40.300 --> 00:06:45.240
it sorts will just be, I guess, lexographically. It would be nice if I could just go to certain

00:06:45.240 --> 00:06:51.680
things and say, sort it. And it automatically kind of understood, oh, there's, there's separators and

00:06:51.680 --> 00:06:56.520
there's like meaning between these. And if they're numbers, you know, look at the number part and then

00:06:56.520 --> 00:07:01.620
sort based on the size of the number, not the, whether it starts with a one or a two,

00:07:01.620 --> 00:07:08.300
but if it's a two or a 10, right? And so that's what this simple little library does is it's simple,

00:07:08.300 --> 00:07:13.900
natural sorting in Python. So one cool example, this one actually might be interesting for you,

00:07:13.900 --> 00:07:20.780
Peter, for your students is if I had this, a list of strings, like quote, two feet, seven inches,

00:07:20.780 --> 00:07:27.660
one foot, five inches, five feet, two inches, and so on. If I sort it is just going to go one foot,

00:07:27.660 --> 00:07:32.980
10 feet, two feet, two feet, seven feet, right? You know, the lexographical version, but if you natural

00:07:32.980 --> 00:07:38.960
sort, it does exactly what humans would do. One foot, five inches, two foot, seven inches, two foot,

00:07:39.000 --> 00:07:43.380
11 inches, seven feet, six inches, and so on. So that's pretty cool, right? You can just go and

00:07:43.380 --> 00:07:50.180
basically use NAT sorted instead of sorted, right? The sorted built in, just NAT sorted. And you could

00:07:50.180 --> 00:07:55.580
also import NAT sorted as sorted if you wanted to go off the hook and just, you know, kind of globally

00:07:55.580 --> 00:08:00.380
replace that on a file there. So there's different things that you can do, you know, not just that one.

00:08:00.380 --> 00:08:06.920
You can sort versions, you can sort file paths, real numbers, like scientific numbers, you know,

00:08:06.920 --> 00:08:14.980
1.72 times 10 to the 20th or whatever, that kind of stuff. You do locale aware sorting, like

00:08:14.980 --> 00:08:21.420
basically case incentive sorting. You can customize it, you can sort custom types, but then if you select

00:08:21.420 --> 00:08:28.200
a key out of the, like say a class or an object, a bunch of the instances of that class, then that key

00:08:28.200 --> 00:08:32.980
would then be naturally sorted as if, as this thing does. So here's an example with versions,

00:08:32.980 --> 00:08:39.080
like version dash one dot nine, version dash two, version dash one 11. And of course it sorts the way

00:08:39.080 --> 00:08:44.700
humans would sort it, right? One nine, one 10, one 11, then two O and so on. That's pretty cool.

00:08:44.700 --> 00:08:51.300
You can get a sorted directories. Now, some of these come from not the same NAT sorted, but like,

00:08:51.300 --> 00:08:58.160
for example, there's an OS sorted and there's for the real numbers, there's an real sorted and so on.

00:08:58.160 --> 00:09:03.580
there's ways to customize it. There's ways to build like custom sorters. Like I create an

00:09:03.580 --> 00:09:09.660
algorithm, which is like real or and locale and ignoring case and all of these things, right?

00:09:09.660 --> 00:09:15.460
Like throw them all together with like the, or bitwise or operator and so on. Yeah. And I think

00:09:15.460 --> 00:09:21.040
that pretty much covers it, but it's, it's pretty neat. it has like some cool debugging stuff.

00:09:21.040 --> 00:09:30.020
Z docs is asking if it, NAT sort handles non ASCII Unicode. I think so. there is,

00:09:30.020 --> 00:09:36.260
talk about that actually working with bytes directly, but I think it's works on strings

00:09:36.260 --> 00:09:41.160
itself. So I don't know why it would necessarily be different. I mean, unless you try to treat the

00:09:41.160 --> 00:09:46.100
Unicode as binary, then that might be something else, but yeah, thanks for that. One other thing

00:09:46.100 --> 00:09:49.260
that's interesting, just looking through here, I'm like, okay, this is neat. kind of cool.

00:09:49.260 --> 00:09:55.520
Here's how you customize it. Oh, wait, there's this thing called fast numbers. Most efficient,

00:09:55.520 --> 00:10:00.360
the most efficient sorting can be done if you install the fast numbers package, which apparently,

00:10:00.360 --> 00:10:05.340
you know, it has nothing to do with this, right? But it's something that it uses. And what fast numbers

00:10:05.340 --> 00:10:12.140
does is it allows you to have different behaviors for like float and end and stuff parsing strings into

00:10:12.140 --> 00:10:17.180
floats and integers. And apparently it does it faster as well. So for example, instead of saying

00:10:17.180 --> 00:10:22.480
float of a string, that is a floating point number, you can say fast float of that. And of course you

00:10:22.480 --> 00:10:27.780
could go crazy and import as wipe that out. Right. but you can do things kind of like the dictionary

00:10:27.780 --> 00:10:33.640
that get, so you can say fast float, try to parse this, but instead of throwing a value error, whatever

00:10:33.640 --> 00:10:37.960
type of exception it is, you can say the default that I'm going to get, if I can't parse it as zero

00:10:37.960 --> 00:10:43.720
for bad input or, you know, what number will I treat as not a number and all sorts of interesting stuff.

00:10:43.720 --> 00:10:46.820
So if you're doing parsing of numbers, fast numbers is kind of cool.

00:10:46.820 --> 00:10:49.920
Yeah. I got to check this out. I do that all the time.

00:10:49.920 --> 00:10:55.140
Yeah. Yeah. That's, that's cool. So I think this is just, you know, that's not the main topic,

00:10:55.140 --> 00:11:00.280
but I do think it's a neat one there. So anyway, yeah, people who do sorting of strings and stuff,

00:11:00.280 --> 00:11:05.640
they should check it out. And Zdocs is talking about like sorting, like a umlaut over a,

00:11:05.640 --> 00:11:12.520
I don't know the name of the little circle above a vowel, but there's the locale aware sorting.

00:11:12.520 --> 00:11:20.660
And so you can give it, you can give it like the Swedish locale. and I bet it does sort

00:11:20.660 --> 00:11:24.120
it. Okay. But I don't know for sure. I haven't, I haven't actually tested the Swedish locale,

00:11:24.120 --> 00:11:26.940
but you know, that's, it does seem to have like something that addresses that.

00:11:27.080 --> 00:11:34.420
Nice. Nice. Yeah. For me, the use case, is always the one versus zero one. So if I've got

00:11:34.420 --> 00:11:39.540
something that's 10 and something that's one, the way that that automatically gets sorted. And then,

00:11:39.540 --> 00:11:43.920
uh, I don't always like putting the zeros in front. so this seems really useful.

00:11:43.920 --> 00:11:46.360
Right. You don't have to left pad it type of thing.

00:11:46.360 --> 00:11:50.440
Yeah, absolutely. Well, how about Mars Peter?

00:11:50.440 --> 00:11:57.800
So how about Mars? So this is something I'm super excited about, the Mars perseverance rover

00:11:57.800 --> 00:12:05.080
uh, the rover, landed on Mars in February, but just a couple of days, before

00:12:05.080 --> 00:12:13.080
this recording on March 19th, the Mars helicopter, which is called Ingenuity,

00:12:13.080 --> 00:12:19.640
lifted off for the first time. And so this was the first power controlled flight on another planet,

00:12:19.640 --> 00:12:26.600
uh, which is so cool. and you can go to the NASA website and take a look at the Mars helicopter,

00:12:26.600 --> 00:12:33.480
uh, like lifting off for the first time. It's kind of got two counter rotating rotors and a little

00:12:33.480 --> 00:12:42.120
solar panel, up at the top and a little antenna up at the top. and the cool thing about this

00:12:42.120 --> 00:12:49.800
is that, some of the software, that's running the Mars helicopter, is, built with Python.

00:12:49.800 --> 00:12:56.280
it's also totally open source. so, on GitHub,

00:12:56.280 --> 00:13:04.360
there's, this package for something called F prime and NASA writes it F, apostrophe and,

00:13:04.360 --> 00:13:12.040
uh, F prime is the flight control software, that the Mars helicopter uses. and if you look at

00:13:12.040 --> 00:13:18.360
the GitHub repo, you'll notice in the installation instructions, that, you have to make sure

00:13:18.360 --> 00:13:26.440
that you have Python three and pip installed, in order to, install F prime, the Mars helicopter

00:13:26.440 --> 00:13:33.800
software. so I just think that that's super, super neat, that, Python's being used as part of the,

00:13:33.800 --> 00:13:36.360
uh, Mars mission and that, open source, to make this F prime, flight software, was used, in order to make this happen. so Brian, you excited about space?

00:13:36.360 --> 00:13:56.360
and, and, Mars rover. Yeah. And also one of the things that happened with this is, so GitHub put a bunch of, achievement awards on it. A whole bunch of people's GitHub accounts to anybody that contributed to a project that was used by F prime.

00:13:56.360 --> 00:14:25.800
and, and it may have been other packages too, but at the very least with this. And so a bunch of us got these, like, you know, you contributed to the Mars helicopter Mars mission thing. So yeah, I felt cool about being an Arctic code vault contributor. And now that's, that's just out of this world, man. It's awesome.

00:14:25.800 --> 00:14:44.960
Yeah. Yeah. Yeah. I love in that post, how they, showed like a screen capture for Marietta, one of the core devs, and showed like her little shield. so I thought that that was awesome. Yeah. Yeah. That's really cool. Yeah. Sam Morley also called that out that she got a badge for contributing to the helicopter.

00:14:44.960 --> 00:14:53.820
Yeah. And, apparently I got one for contributing to pie test, which is cool. So I didn't know pie test was used by this, but that's neat.

00:14:54.220 --> 00:14:56.000
No kidding. You have one of these badges.

00:14:56.000 --> 00:14:58.160
Yeah. Let me pull it up.

00:14:58.160 --> 00:14:59.140
Oh my gosh.

00:14:59.140 --> 00:15:00.780
Oh, that is so awesome.

00:15:00.780 --> 00:15:10.340
that is super cool. Yeah. And while you're pulling it up, Zedoc says super amazing, great work by NASA. Crazy that Python is considered stable enough to be used by them. I totally agree.

00:15:10.340 --> 00:15:11.340
Oh, where is it?

00:15:11.340 --> 00:15:11.900
There it is.

00:15:11.900 --> 00:15:13.940
Oh my gosh, you have the badge.

00:15:13.940 --> 00:15:16.320
Dude, I am so jealous.

00:15:16.320 --> 00:15:18.260
It's pretty cool.

00:15:18.260 --> 00:15:24.200
Yeah, that's really cool. So one of the things I was going to, talk about is some extra, extra, extra stuff, but,

00:15:24.200 --> 00:15:28.120
two of those have to do a little bit with like what we're talking about now. So I'll mention them in the moment.

00:15:28.120 --> 00:15:29.340
So,

00:15:29.340 --> 00:15:32.200
I rem mentions on Twitter that,

00:15:32.200 --> 00:15:34.200
um,

00:15:34.200 --> 00:15:34.540
uh,

00:15:34.540 --> 00:15:35.720
points out for us.

00:15:35.760 --> 00:15:42.560
there's this quote from Dustin Ingram who runs the IPI along with some other folks and says Python packaging sucks and sort of quotes,

00:15:42.560 --> 00:15:44.340
but now it sucks on multiple planets,

00:15:44.340 --> 00:15:45.120
which is pretty awesome.

00:15:45.120 --> 00:15:46.520
And then it goes off on this long,

00:15:46.520 --> 00:15:47.300
like this,

00:15:47.300 --> 00:15:49.840
he goes for a long thread of like how it's being used,

00:15:49.840 --> 00:15:51.080
what it's being used with.

00:15:51.080 --> 00:15:52.400
And I linked to this in the show notes.

00:15:52.400 --> 00:15:55.100
There's like a ton of stuff you can follow along there.

00:15:55.100 --> 00:15:56.700
And then also,

00:15:56.700 --> 00:15:57.280
um,

00:15:57.280 --> 00:16:02.640
a lot work points to an article over here that talks about this badge that you were referring to,

00:16:02.640 --> 00:16:02.940
Brian,

00:16:02.940 --> 00:16:07.220
and the various people were getting it and the repositories that qualified for it.

00:16:07.440 --> 00:16:09.680
So Linux F prime CPython,

00:16:09.680 --> 00:16:10.520
Voto three,

00:16:10.520 --> 00:16:11.260
Voto core,

00:16:11.260 --> 00:16:12.840
see what else jumps out at me.

00:16:12.840 --> 00:16:13.460
That's Python,

00:16:13.460 --> 00:16:14.200
a map plot,

00:16:14.200 --> 00:16:14.620
lib,

00:16:14.620 --> 00:16:15.360
numpy,

00:16:15.360 --> 00:16:16.140
open CV,

00:16:16.140 --> 00:16:17.000
Python,

00:16:17.000 --> 00:16:17.820
um,

00:16:17.820 --> 00:16:20.260
Python date util requests.

00:16:20.260 --> 00:16:20.620
Yeah.

00:16:20.620 --> 00:16:24.660
So Kenneth writes saying how humble he was to see that S three transfer,

00:16:24.660 --> 00:16:25.460
which I use.

00:16:25.460 --> 00:16:26.120
I mean,

00:16:26.120 --> 00:16:27.100
the list is like,

00:16:27.100 --> 00:16:28.500
this is a list on GitHub,

00:16:28.500 --> 00:16:31.480
but this is actually like a list of many of the big hitters of Python.

00:16:31.480 --> 00:16:32.460
And it talks just about,

00:16:32.460 --> 00:16:32.900
I mean,

00:16:32.900 --> 00:16:37.020
it hints at how important Python is for this whole mission is awesome.

00:16:37.360 --> 00:16:37.600
Yeah,

00:16:37.600 --> 00:16:38.160
that's great.

00:16:38.160 --> 00:16:38.700
Cool.

00:16:38.700 --> 00:16:39.120
Yeah.

00:16:39.120 --> 00:16:39.680
Yeah,

00:16:39.680 --> 00:16:40.060
absolutely.

00:16:40.060 --> 00:16:40.800
Absolutely.

00:16:40.800 --> 00:16:41.760
Super cool.

00:16:41.760 --> 00:16:42.320
All right.

00:16:42.320 --> 00:16:42.960
Um,

00:16:42.960 --> 00:16:45.620
I guess real quick before we move on to the next thing,

00:16:45.620 --> 00:16:48.660
just point out that this episode is brought to you by us.

00:16:48.660 --> 00:16:50.740
So if you want to support us,

00:16:50.740 --> 00:16:51.860
check out the things that we're doing,

00:16:51.860 --> 00:16:53.940
like check out the Talk Python Training courses,

00:16:53.940 --> 00:16:54.720
check out Python,

00:16:54.720 --> 00:16:55.240
uh,

00:16:55.240 --> 00:16:57.920
Brian's high test book and things like that.

00:16:57.920 --> 00:16:58.400
And,

00:16:58.400 --> 00:16:58.660
uh,

00:16:58.660 --> 00:16:59.060
yeah,

00:16:59.060 --> 00:17:01.320
Anthony Lister gives you a little shout out there.

00:17:01.320 --> 00:17:01.700
Well done,

00:17:01.700 --> 00:17:02.020
Brian.

00:17:02.020 --> 00:17:03.380
You're basically,

00:17:03.380 --> 00:17:04.040
you're basically,

00:17:04.040 --> 00:17:05.820
basically an astronaut.

00:17:05.820 --> 00:17:07.140
You know what I mean?

00:17:07.280 --> 00:17:08.240
Uh,

00:17:08.240 --> 00:17:08.680
well,

00:17:08.680 --> 00:17:08.940
it's,

00:17:08.940 --> 00:17:09.500
and it's,

00:17:09.500 --> 00:17:09.980
I got,

00:17:09.980 --> 00:17:11.080
I'm almost embarrassed though,

00:17:11.080 --> 00:17:11.580
because I,

00:17:11.580 --> 00:17:12.060
I like,

00:17:12.060 --> 00:17:15.840
I contributed one test to a defect report,

00:17:15.840 --> 00:17:16.640
a defect report,

00:17:16.640 --> 00:17:18.120
and then wrote the test to,

00:17:18.120 --> 00:17:18.920
to show the,

00:17:18.920 --> 00:17:19.800
the defect.

00:17:19.800 --> 00:17:21.940
That was my contribution to py test,

00:17:21.940 --> 00:17:22.520
but yeah.

00:17:22.520 --> 00:17:23.380
All right.

00:17:23.380 --> 00:17:24.100
That's okay.

00:17:24.100 --> 00:17:24.700
It's all good.

00:17:24.700 --> 00:17:25.840
Cool.

00:17:25.840 --> 00:17:26.700
All right.

00:17:26.700 --> 00:17:27.520
Take us back to earth.

00:17:28.020 --> 00:17:28.380
Uh,

00:17:28.380 --> 00:17:28.780
well,

00:17:28.780 --> 00:17:29.100
let's,

00:17:29.100 --> 00:17:29.420
uh,

00:17:29.420 --> 00:17:30.040
um,

00:17:30.040 --> 00:17:30.940
so we,

00:17:30.940 --> 00:17:32.720
there's a lot of cool projects,

00:17:32.720 --> 00:17:33.560
uh,

00:17:33.560 --> 00:17:34.500
in Python.

00:17:34.500 --> 00:17:36.440
One of the cool projects is FastAPI,

00:17:36.440 --> 00:17:41.120
and that's built on pydantic and pydantic is used by itself for lots of stuff.

00:17:41.360 --> 00:17:42.680
And anyway,

00:17:42.680 --> 00:17:44.060
why am I talking about this?

00:17:44.060 --> 00:17:44.460
Well,

00:17:44.460 --> 00:17:45.080
one at school,

00:17:45.080 --> 00:17:46.300
but we've talked about it before,

00:17:46.300 --> 00:17:47.880
but this topic was,

00:17:47.880 --> 00:17:49.380
we've been following it anyway,

00:17:49.380 --> 00:17:49.940
but it,

00:17:49.940 --> 00:17:51.900
I gotta give a shout out to the,

00:17:51.900 --> 00:17:53.240
the person's name that,

00:17:53.240 --> 00:17:54.780
that mentioned it to us.

00:17:54.780 --> 00:17:57.560
Somebody named angry dwarf said we should cover it.

00:17:57.560 --> 00:17:59.360
And I just love that he had his,

00:17:59.360 --> 00:18:01.420
his name in his email was angry dwarf.

00:18:01.420 --> 00:18:02.140
So cool.

00:18:02.140 --> 00:18:02.920
Thanks angry dwarf.

00:18:02.920 --> 00:18:03.980
Uh,

00:18:03.980 --> 00:18:04.320
anyway,

00:18:04.320 --> 00:18:06.660
it's been a bit of an emotional rollercoaster,

00:18:06.660 --> 00:18:12.140
but the punchline is pydantic FastAPI and typer will work just fine in 310.

00:18:12.140 --> 00:18:15.100
And they'll work in 311 and they'll always work.

00:18:15.100 --> 00:18:16.220
They're going to work forever.

00:18:16.220 --> 00:18:17.540
I mean,

00:18:17.540 --> 00:18:18.600
I don't know that for sure,

00:18:18.760 --> 00:18:19.700
but that's my,

00:18:19.700 --> 00:18:20.500
that's my guess.

00:18:20.500 --> 00:18:24.620
So why am I saying that people should calm down and it's going to be fine?

00:18:24.620 --> 00:18:26.940
Because people were freaking out last week.

00:18:26.940 --> 00:18:27.260
So,

00:18:27.260 --> 00:18:28.000
uh,

00:18:28.000 --> 00:18:30.120
people were freaking out that maybe fast,

00:18:30.120 --> 00:18:32.920
FastAPI and pydantic weren't going to work in 310.

00:18:32.920 --> 00:18:33.880
Um,

00:18:33.880 --> 00:18:35.240
including the creator of pydantic,

00:18:35.240 --> 00:18:37.060
not just random people on the internet,

00:18:37.060 --> 00:18:39.380
like involved in the projects.

00:18:39.380 --> 00:18:39.580
Yeah.

00:18:39.580 --> 00:18:39.800
Yeah.

00:18:39.800 --> 00:18:40.380
They were like,

00:18:40.380 --> 00:18:40.860
this is,

00:18:40.860 --> 00:18:42.420
this is going to be not good.

00:18:42.420 --> 00:18:43.180
Okay.

00:18:43.180 --> 00:18:44.620
So this starts,

00:18:44.620 --> 00:18:45.180
um,

00:18:45.180 --> 00:18:45.840
okay.

00:18:45.840 --> 00:18:46.520
I'll dump,

00:18:46.520 --> 00:18:48.380
jump into a little bit of the details.

00:18:48.380 --> 00:18:49.200
Uh,

00:18:49.200 --> 00:18:49.780
there was a,

00:18:49.780 --> 00:18:55.700
there's a PEP 563 that was titled postponed evaluation of annotations.

00:18:55.700 --> 00:18:56.740
Um,

00:18:56.740 --> 00:18:58.800
and there was a little bit in there and this,

00:18:58.800 --> 00:19:02.000
this went into Python 3.7 and this said,

00:19:02.000 --> 00:19:02.540
uh,

00:19:02.540 --> 00:19:03.820
in Python in,

00:19:03.820 --> 00:19:05.440
it went into three,

00:19:05.440 --> 00:19:05.840
seven,

00:19:05.840 --> 00:19:07.880
but there was a clause in there that said,

00:19:07.880 --> 00:19:08.600
um,

00:19:08.680 --> 00:19:10.120
in Python 3.10,

00:19:10.120 --> 00:19:15.400
the functions and variable annotations will no longer be evaluated at definition time.

00:19:15.400 --> 00:19:17.740
They'll be lazy evaluated later.

00:19:17.740 --> 00:19:18.780
Um,

00:19:18.780 --> 00:19:19.460
and,

00:19:19.460 --> 00:19:20.400
or something like that.

00:19:20.400 --> 00:19:21.880
I didn't read it that closely,

00:19:21.880 --> 00:19:23.560
but that's the bit that,

00:19:23.560 --> 00:19:28.160
that makes people scared about 3.10 and 3.10 is coming out like really pretty soon.

00:19:28.540 --> 00:19:28.980
So,

00:19:28.980 --> 00:19:29.800
um,

00:19:29.800 --> 00:19:31.860
does that mean that Pydantic and,

00:19:31.860 --> 00:19:32.320
uh,

00:19:32.320 --> 00:19:33.800
in FastAPI,

00:19:33.800 --> 00:19:36.060
they kind of rely on this and they're not,

00:19:36.060 --> 00:19:37.580
are they not going to work in 3.10?

00:19:37.580 --> 00:19:38.540
Um,

00:19:38.540 --> 00:19:40.960
and it turns out there was some corner cases.

00:19:40.960 --> 00:19:41.360
There was,

00:19:41.360 --> 00:19:43.560
at least that's my understanding of it.

00:19:43.560 --> 00:19:44.240
Um,

00:19:44.240 --> 00:19:44.780
uh,

00:19:44.780 --> 00:19:47.260
Sebastian Ramirez who did FastAPI,

00:19:47.680 --> 00:19:48.460
he wrote,

00:19:48.460 --> 00:19:49.080
um,

00:19:49.080 --> 00:19:50.520
uh,

00:19:50.520 --> 00:19:55.940
there's been some incorrect conclusions that FastAPI and Pydantic can't be used with 3.10.

00:19:55.940 --> 00:19:57.160
Let's be clear that up.

00:19:57.160 --> 00:19:58.440
The worst case scenario,

00:19:58.440 --> 00:20:05.300
which hasn't been decided is that some corner cases would not work and require small refactors.

00:20:05.300 --> 00:20:06.440
So the,

00:20:06.440 --> 00:20:08.700
and then he goes on to show the refactors.

00:20:08.700 --> 00:20:10.580
So the refactors really are just,

00:20:10.580 --> 00:20:10.920
um,

00:20:10.920 --> 00:20:11.540
there,

00:20:11.540 --> 00:20:12.320
uh,

00:20:12.320 --> 00:20:16.960
that if you define your types within a function,

00:20:16.960 --> 00:20:17.680
they can't,

00:20:17.680 --> 00:20:18.920
you won't be able to do that.

00:20:18.920 --> 00:20:21.680
You got to pull the types out of the function and put it,

00:20:21.680 --> 00:20:22.320
uh,

00:20:22.320 --> 00:20:24.340
at a top level or something like that.

00:20:24.340 --> 00:20:26.640
And even if you're stressed about this,

00:20:26.640 --> 00:20:28.180
you can try it out by saying,

00:20:28.180 --> 00:20:28.820
uh,

00:20:28.820 --> 00:20:29.840
in the code you have,

00:20:29.840 --> 00:20:30.280
you can,

00:20:30.280 --> 00:20:30.840
uh,

00:20:30.840 --> 00:20:31.420
say from,

00:20:31.420 --> 00:20:34.080
from Dunder future import annotations,

00:20:34.080 --> 00:20:37.040
and that will show you what the future implementation is.

00:20:37.040 --> 00:20:39.600
So you can try it out and see if there's any problem.

00:20:39.600 --> 00:20:41.020
But then we got,

00:20:41.020 --> 00:20:41.620
um,

00:20:41.620 --> 00:20:42.980
and I don't have a link to this,

00:20:42.980 --> 00:20:43.840
but we had a,

00:20:43.840 --> 00:20:44.200
uh,

00:20:44.200 --> 00:20:45.260
a notice from,

00:20:45.260 --> 00:20:46.300
uh,

00:20:46.460 --> 00:20:47.200
who is it from?

00:20:47.200 --> 00:20:48.700
I'm missing the name.

00:20:48.700 --> 00:20:49.400
Anyway,

00:20:49.400 --> 00:20:53.960
I've noticed just the other day that basically said they're not going to do it for 310.

00:20:53.960 --> 00:20:57.040
So basically they're putting the brakes on 563,

00:20:57.040 --> 00:20:57.560
the,

00:20:57.560 --> 00:20:57.880
the,

00:20:57.880 --> 00:20:59.540
the switch over in 310,

00:20:59.540 --> 00:21:00.500
uh,

00:21:00.500 --> 00:21:01.220
for 310,

00:21:01.220 --> 00:21:07.580
they're going to push that to 311 so that they all have time to figure out what to do about it and how to figure it out.

00:21:07.640 --> 00:21:08.460
So they got another year,

00:21:08.460 --> 00:21:09.300
um,

00:21:09.300 --> 00:21:10.460
to figure out what's,

00:21:10.460 --> 00:21:12.380
or approximately we,

00:21:12.380 --> 00:21:13.400
as users,

00:21:13.400 --> 00:21:14.500
I have another year to,

00:21:14.500 --> 00:21:15.860
to not worry about it.

00:21:15.860 --> 00:21:16.140
But,

00:21:16.140 --> 00:21:16.700
um,

00:21:16.700 --> 00:21:16.980
I,

00:21:16.980 --> 00:21:18.860
but the steering council,

00:21:18.860 --> 00:21:19.860
they know what they're doing.

00:21:19.860 --> 00:21:21.280
They're aware of this.

00:21:21.280 --> 00:21:22.280
They're aware of this issue.

00:21:22.280 --> 00:21:23.220
Um,

00:21:23.220 --> 00:21:25.040
they're aware of the,

00:21:25.040 --> 00:21:29.940
that everybody loves FastAPI and Pydantic and things that are built on that.

00:21:29.940 --> 00:21:30.620
So,

00:21:30.620 --> 00:21:31.440
um,

00:21:31.760 --> 00:21:36.960
there's going to be a solution and I think people should just trust the people involved that things are going to be okay.

00:21:36.960 --> 00:21:38.460
So anyway.

00:21:38.460 --> 00:21:39.640
Yeah,

00:21:39.640 --> 00:21:40.280
it's,

00:21:40.280 --> 00:21:42.600
there's a really,

00:21:42.600 --> 00:21:43.960
uh,

00:21:43.960 --> 00:21:45.220
what's the right word?

00:21:45.220 --> 00:21:46.080
Energetic,

00:21:46.080 --> 00:21:46.880
energetic,

00:21:46.880 --> 00:21:47.400
uh,

00:21:47.400 --> 00:21:49.860
conversation over on the,

00:21:49.860 --> 00:21:50.080
uh,

00:21:50.080 --> 00:21:51.880
Identic issue tracker.

00:21:51.880 --> 00:21:54.280
And it just closed a little bit.

00:21:54.280 --> 00:21:55.040
Um,

00:21:55.040 --> 00:21:55.580
just a little bit,

00:21:55.580 --> 00:21:56.040
you know,

00:21:56.040 --> 00:21:57.640
last six days just recently closed,

00:21:57.640 --> 00:21:58.300
which is good,

00:21:58.300 --> 00:22:01.020
but it was basically important.

00:22:01.540 --> 00:22:02.360
Pep five,

00:22:02.360 --> 00:22:02.740
six,

00:22:02.740 --> 00:22:03.160
three,

00:22:03.160 --> 00:22:04.100
and six,

00:22:04.100 --> 00:22:04.340
four,

00:22:04.340 --> 00:22:05.960
nine in the future of Pydantic.

00:22:05.960 --> 00:22:08.780
And I just had salmon Samuel Colvin,

00:22:08.780 --> 00:22:12.100
who is the creator and maintainer of Pydantic on talk Python.

00:22:12.100 --> 00:22:13.500
That episode should be out this week,

00:22:13.500 --> 00:22:13.860
actually.

00:22:13.860 --> 00:22:15.080
But on there,

00:22:15.080 --> 00:22:19.020
he talked about how some things looked very bad for how things work,

00:22:19.020 --> 00:22:19.740
but then they've,

00:22:19.740 --> 00:22:23.800
they've talked it through and it looks like some of the changes are not going to be super significant.

00:22:23.800 --> 00:22:29.720
Basically the problem was a lot of the type annotation evaluation is no longer concrete types,

00:22:29.720 --> 00:22:30.960
like a Python type.

00:22:31.100 --> 00:22:31.920
and say,

00:22:31.920 --> 00:22:32.640
give me your type.

00:22:32.640 --> 00:22:33.160
What are you?

00:22:33.160 --> 00:22:37.820
It was converting those to strings so that they could be evaluated more quickly.

00:22:37.820 --> 00:22:39.720
But then in doing so,

00:22:39.720 --> 00:22:41.840
if I have a string called customer,

00:22:41.840 --> 00:22:46.620
that's very different than having the actual customer class that I can then use for type information.

00:22:46.620 --> 00:22:50.180
So then how does Pydantic go back and find the customer class,

00:22:50.180 --> 00:22:51.500
like throughout all the things,

00:22:51.500 --> 00:22:53.160
what if there's two of them and so on.

00:22:53.520 --> 00:22:55.060
So that was the concern.

00:22:55.060 --> 00:22:56.320
And it sounds like it's,

00:22:56.320 --> 00:22:57.120
things are looking better.

00:22:57.120 --> 00:22:57.680
So that's all good.

00:22:57.680 --> 00:22:58.440
So Brian,

00:22:58.440 --> 00:23:01.160
what's kind of the take home message of this?

00:23:01.160 --> 00:23:02.140
Well,

00:23:02.140 --> 00:23:03.000
one of the things,

00:23:03.000 --> 00:23:04.020
I don't know.

00:23:04.020 --> 00:23:07.520
My take home message is the people involved,

00:23:07.520 --> 00:23:11.860
like Samuel and Sebastian and the steering council,

00:23:11.860 --> 00:23:13.300
they're talking with each other.

00:23:13.720 --> 00:23:15.000
They know what's going on.

00:23:15.000 --> 00:23:19.260
And occasionally stress happens as to what's going to,

00:23:19.260 --> 00:23:19.620
you know,

00:23:19.620 --> 00:23:20.900
I don't know how to fix this,

00:23:20.900 --> 00:23:22.100
but they,

00:23:22.100 --> 00:23:22.620
they're,

00:23:22.620 --> 00:23:23.520
they're talking with it.

00:23:23.520 --> 00:23:24.460
I'm going to try as a,

00:23:24.460 --> 00:23:25.480
as a bystander,

00:23:25.580 --> 00:23:29.000
I'm not going to jump on the bandwagon and try to like,

00:23:29.000 --> 00:23:30.100
one of the things that,

00:23:30.100 --> 00:23:31.320
that came out was people,

00:23:31.320 --> 00:23:35.100
some people started sending a bunch of emails and jumping on the threads and

00:23:35.100 --> 00:23:35.800
you have to fix this.

00:23:35.800 --> 00:23:36.580
You have to fix this.

00:23:36.580 --> 00:23:38.380
And that doesn't help.

00:23:38.380 --> 00:23:41.260
It just adds noise and adds work to the steering council.

00:23:41.260 --> 00:23:42.760
So making,

00:23:42.760 --> 00:23:45.600
I think it's fine to make sure that it's addressed,

00:23:45.600 --> 00:23:47.480
but it's going to be addressed.

00:23:47.480 --> 00:23:48.640
And I don't know.

00:23:48.640 --> 00:23:49.140
I,

00:23:49.140 --> 00:23:51.020
I actually was one of the people cause I,

00:23:51.020 --> 00:23:52.160
I use FastAPI.

00:23:52.160 --> 00:23:52.920
I use typer.

00:23:53.120 --> 00:23:54.100
And I was like,

00:23:54.100 --> 00:23:55.040
uh,

00:23:55.040 --> 00:23:56.540
do I need to be worried about this?

00:23:56.540 --> 00:23:57.020
And,

00:23:57.020 --> 00:23:59.860
and especially somebody using it,

00:23:59.860 --> 00:24:04.700
just take a deep breath and realize that something as large as FastAPI or

00:24:04.700 --> 00:24:07.740
pydantic is somebody's going to figure out how to fix it.

00:24:07.740 --> 00:24:08.420
Um,

00:24:08.420 --> 00:24:09.180
hopefully.

00:24:09.180 --> 00:24:09.700
Um,

00:24:09.700 --> 00:24:10.000
I mean,

00:24:10.000 --> 00:24:11.660
it's possible that something might break.

00:24:11.660 --> 00:24:11.940
I mean,

00:24:11.940 --> 00:24:13.620
that is the dynamic language.

00:24:13.620 --> 00:24:14.840
I just don't,

00:24:14.840 --> 00:24:15.180
there's,

00:24:15.180 --> 00:24:16.880
there's enough people paying attention that,

00:24:16.880 --> 00:24:17.420
uh,

00:24:17.420 --> 00:24:17.800
I don't know.

00:24:17.800 --> 00:24:19.800
That's probably a long winded takeaway.

00:24:19.800 --> 00:24:20.220
It's probably,

00:24:20.220 --> 00:24:22.140
it's like a repeat of what I just said,

00:24:22.140 --> 00:24:22.780
but anyway,

00:24:22.780 --> 00:24:26.500
so if you're using FastAPI right now,

00:24:26.500 --> 00:24:28.160
there's not a whole lot to be worried about.

00:24:28.160 --> 00:24:30.060
Nothing to be worried at all.

00:24:30.060 --> 00:24:30.560
Um,

00:24:30.560 --> 00:24:32.540
and if you are worried about it at all,

00:24:32.540 --> 00:24:33.220
um,

00:24:33.220 --> 00:24:34.200
you can use this,

00:24:34.200 --> 00:24:34.540
uh,

00:24:34.540 --> 00:24:37.920
future import thing to try out your code to see what it'll be like in the

00:24:37.920 --> 00:24:38.340
change.

00:24:38.340 --> 00:24:39.480
And even if it,

00:24:39.480 --> 00:24:40.600
even if that breaks,

00:24:40.600 --> 00:24:42.380
they'll probably fix it by three 11.

00:24:42.380 --> 00:24:43.000
Yep.

00:24:43.000 --> 00:24:43.520
And then,

00:24:43.520 --> 00:24:43.760
yeah,

00:24:43.760 --> 00:24:47.360
Nick Harvey threw out that you can test this from future under future right

00:24:47.360 --> 00:24:47.560
now.

00:24:47.560 --> 00:24:48.360
So that's cool.

00:24:48.360 --> 00:24:48.900
Yep.

00:24:48.900 --> 00:24:49.520
Cool.

00:24:49.520 --> 00:24:49.800
All right,

00:24:49.800 --> 00:24:50.020
Brian,

00:24:50.020 --> 00:24:51.080
I tried,

00:24:51.080 --> 00:24:53.380
I tried to keep it down to just a couple of things,

00:24:53.380 --> 00:24:56.720
but then they started piling up in my extra section to where I don't know,

00:24:56.720 --> 00:24:58.840
we wouldn't be getting through it in a reasonable amount of time.

00:24:58.840 --> 00:25:02.120
So welcome to another section of extra,

00:25:02.120 --> 00:25:02.440
extra,

00:25:02.440 --> 00:25:02.820
extra,

00:25:02.820 --> 00:25:04.320
extra here all about it,

00:25:04.320 --> 00:25:05.580
but minus one extra,

00:25:05.580 --> 00:25:09.480
because I already told you about the one with the package list and so on.

00:25:09.480 --> 00:25:10.000
All right.

00:25:10.180 --> 00:25:12.920
So let me take you through a couple of things first,

00:25:12.920 --> 00:25:13.720
uh,

00:25:13.720 --> 00:25:13.940
here.

00:25:13.940 --> 00:25:15.400
Did you know we're live streaming right now,

00:25:15.400 --> 00:25:16.100
by the way,

00:25:16.100 --> 00:25:17.980
on by them bites.

00:25:17.980 --> 00:25:18.260
Dot.

00:25:18.260 --> 00:25:18.580
FM.

00:25:18.580 --> 00:25:19.200
Hello.

00:25:19.200 --> 00:25:20.120
Uh,

00:25:20.120 --> 00:25:20.860
by them bites.

00:25:20.860 --> 00:25:21.220
Dot.

00:25:21.220 --> 00:25:21.460
FM.

00:25:21.460 --> 00:25:23.360
I say that cause there's a huge banner on the site.

00:25:23.360 --> 00:25:23.720
I pulled up.

00:25:23.720 --> 00:25:25.420
We had something,

00:25:25.420 --> 00:25:26.080
um,

00:25:26.080 --> 00:25:28.940
that would let us get some real time analytics and sort of know where people

00:25:28.940 --> 00:25:29.500
coming from,

00:25:29.500 --> 00:25:29.660
you know,

00:25:29.660 --> 00:25:30.060
advertisers,

00:25:30.060 --> 00:25:31.540
some ask sometimes ask for that.

00:25:31.540 --> 00:25:33.920
But what I've noticed is a lot of the new browsers,

00:25:33.920 --> 00:25:35.260
a lot of the good ones anyway,

00:25:35.260 --> 00:25:38.180
are very much blocking those things.

00:25:38.180 --> 00:25:38.640
Right.

00:25:39.020 --> 00:25:40.080
So for example,

00:25:40.080 --> 00:25:42.960
Firefox automatically blocks our analytics.

00:25:42.960 --> 00:25:43.460
Anyway,

00:25:43.460 --> 00:25:45.900
brave automatically blocks our analytics anyway.

00:25:45.900 --> 00:25:49.440
So we're not getting a lot of information back and we're getting,

00:25:49.440 --> 00:25:49.800
I don't know.

00:25:49.800 --> 00:25:52.540
My theory is about 40% of the traffic is being measured,

00:25:52.540 --> 00:25:55.700
which gives you some stuff like what countries people are coming from and

00:25:55.700 --> 00:25:55.920
whatnot.

00:25:55.920 --> 00:25:56.540
But I decided,

00:25:56.540 --> 00:25:56.980
you know what?

00:25:56.980 --> 00:25:58.600
We already have our ads.

00:25:58.600 --> 00:25:59.540
Like in our ads,

00:25:59.540 --> 00:26:00.540
we do no tracking,

00:26:00.540 --> 00:26:01.420
no retargeting,

00:26:01.420 --> 00:26:03.120
no cookie setting and so on.

00:26:03.120 --> 00:26:04.400
So why don't we just do that with our analytics?

00:26:04.400 --> 00:26:05.220
Like we don't,

00:26:05.220 --> 00:26:06.380
how much do we really need that?

00:26:06.380 --> 00:26:06.680
Anyway,

00:26:06.680 --> 00:26:08.300
we got downloads and so on.

00:26:08.560 --> 00:26:11.160
So if you go over here and you click on the little shield,

00:26:11.160 --> 00:26:14.840
we now have a perfect privacy score on Python bytes.

00:26:14.840 --> 00:26:15.400
Oh,

00:26:15.400 --> 00:26:15.940
very cool.

00:26:15.940 --> 00:26:16.740
Check this out.

00:26:16.740 --> 00:26:17.560
Tracking content,

00:26:17.560 --> 00:26:18.280
none detected,

00:26:18.280 --> 00:26:19.520
no social media,

00:26:19.520 --> 00:26:20.440
no cross site,

00:26:20.440 --> 00:26:21.400
no fingerprinters,

00:26:21.400 --> 00:26:22.360
no crypto miners,

00:26:22.360 --> 00:26:22.980
nothing.

00:26:22.980 --> 00:26:24.480
And same by the way,

00:26:24.480 --> 00:26:27.820
for Talk Python Training and talk Python itself.

00:26:27.820 --> 00:26:28.480
And so on,

00:26:28.480 --> 00:26:31.420
no known trackers to Firefox were detected on this page.

00:26:31.420 --> 00:26:31.940
Cool.

00:26:31.940 --> 00:26:32.140
Huh?

00:26:32.480 --> 00:26:32.880
Yeah.

00:26:32.880 --> 00:26:35.000
I didn't know about that little badge thing.

00:26:35.000 --> 00:26:35.620
Yeah.

00:26:35.620 --> 00:26:35.940
You get,

00:26:35.940 --> 00:26:37.080
it's like a security score.

00:26:37.080 --> 00:26:37.920
Like how much is blocked?

00:26:37.920 --> 00:26:38.640
How bad is it?

00:26:38.640 --> 00:26:40.260
And so on.

00:26:40.260 --> 00:26:42.580
But because so many of them are blocking them by default,

00:26:42.580 --> 00:26:42.920
I'm like,

00:26:42.920 --> 00:26:43.160
you know,

00:26:43.160 --> 00:26:43.360
like,

00:26:43.360 --> 00:26:44.420
let's just take this stuff off.

00:26:44.420 --> 00:26:44.740
Right.

00:26:44.740 --> 00:26:45.580
It's somewhat useful,

00:26:45.580 --> 00:26:46.260
but not that useful.

00:26:46.260 --> 00:26:47.280
Related to that.

00:26:47.340 --> 00:26:50.440
Have you heard of this flock federated learning of cohorts?

00:26:50.440 --> 00:26:51.620
Have either of you heard of this?

00:26:51.620 --> 00:26:53.060
No,

00:26:53.060 --> 00:26:54.000
no,

00:26:54.000 --> 00:26:55.960
I'm worried that joke is coming though.

00:26:55.960 --> 00:26:56.300
No,

00:26:56.300 --> 00:26:56.740
this is,

00:26:56.740 --> 00:26:59.580
this is just Orwellian business right here.

00:26:59.580 --> 00:27:00.000
Like it,

00:27:00.000 --> 00:27:01.980
it has this eye looking at you.

00:27:01.980 --> 00:27:04.460
So there's an article on Ars Technica.

00:27:04.460 --> 00:27:06.240
Everybody hates flock.

00:27:06.240 --> 00:27:08.800
Google's tracking plan for Chrome ads.

00:27:08.800 --> 00:27:13.140
The EFF has a beautiful article that you really should read.

00:27:13.140 --> 00:27:15.580
If you at all care about the future of the web,

00:27:15.680 --> 00:27:19.900
the future of tracking the future of privacy called Google's flock is a

00:27:19.900 --> 00:27:21.760
terrible idea from the EFF.

00:27:21.760 --> 00:27:25.620
And they've got some pretty insane quotes in there.

00:27:25.620 --> 00:27:26.240
For example,

00:27:26.240 --> 00:27:30.780
one of them from the EFF is Google's pitch to privacy advocates.

00:27:30.780 --> 00:27:32.220
I'll tell you what flock is in just a second,

00:27:32.220 --> 00:27:36.480
but Google's pitch to privacy advocates is a world with flock.

00:27:36.480 --> 00:27:39.780
Is that the world with flock will be better than a world that we have today

00:27:39.780 --> 00:27:44.820
where data brokers and ad tech giants can track and profile with impunity.

00:27:44.940 --> 00:27:49.160
But that framing is based on a false premise that we have to choose between old

00:27:49.160 --> 00:27:50.260
tracking and new tracking.

00:27:50.260 --> 00:27:50.920
It's not either,

00:27:50.920 --> 00:27:56.360
or we can reinvent the world where we're not being tracked in every way and

00:27:56.360 --> 00:27:57.360
sliced and diced and,

00:27:57.360 --> 00:27:58.000
and so on.

00:27:58.000 --> 00:28:01.320
And I totally concur with that statement.

00:28:01.320 --> 00:28:02.200
So yeah,

00:28:02.200 --> 00:28:03.040
check this thing out.

00:28:03.040 --> 00:28:04.440
This Google's flock is a terrible idea.

00:28:04.440 --> 00:28:07.020
The idea is instead of having third party cookies,

00:28:07.020 --> 00:28:07.280
which,

00:28:07.380 --> 00:28:09.540
so if I go to CNN.com,

00:28:09.540 --> 00:28:10.440
you know,

00:28:10.440 --> 00:28:11.080
we could try that.

00:28:11.080 --> 00:28:13.360
It probably won't show up here because I,

00:28:13.360 --> 00:28:15.480
I have it blocked at like a higher level.

00:28:15.480 --> 00:28:16.560
So now it's not showing up here.

00:28:16.560 --> 00:28:17.500
How many things get blocked.

00:28:17.500 --> 00:28:17.880
But anyway,

00:28:17.880 --> 00:28:18.860
if you would go there,

00:28:18.860 --> 00:28:21.080
very likely they would set a cookie from say,

00:28:21.080 --> 00:28:23.180
double click that you saw this ad,

00:28:23.600 --> 00:28:25.720
not this ad that you saw this article.

00:28:25.720 --> 00:28:27.800
Then you go over to,

00:28:27.800 --> 00:28:28.800
I don't know,

00:28:28.800 --> 00:28:30.020
your dentist or,

00:28:30.020 --> 00:28:32.200
or your psychologist or whatever.

00:28:32.200 --> 00:28:34.200
And then they also can have this thing.

00:28:34.200 --> 00:28:36.760
So they actually were just reading this article basically,

00:28:36.760 --> 00:28:37.020
right?

00:28:37.020 --> 00:28:37.500
Like they can,

00:28:37.500 --> 00:28:39.620
they can profile what type of person you are.

00:28:39.660 --> 00:28:39.840
very,

00:28:39.840 --> 00:28:41.880
very fine grained through these cookies.

00:28:41.880 --> 00:28:42.920
So flock,

00:28:42.920 --> 00:28:43.260
you know,

00:28:43.260 --> 00:28:45.860
basically Google said they're going to get rid of these cookies because as I

00:28:45.860 --> 00:28:46.560
already pointed out,

00:28:46.560 --> 00:28:48.320
everyone's blocking these third party cookies,

00:28:48.320 --> 00:28:48.960
Firefox,

00:28:48.960 --> 00:28:51.140
brave VPNs and so on.

00:28:51.140 --> 00:28:54.400
So what do you do to keep the ad retargeting happy?

00:28:54.400 --> 00:28:54.840
And the,

00:28:54.840 --> 00:28:58.180
like the super analysis of what everyone's doing happy.

00:28:58.180 --> 00:28:59.640
You come up with a new idea.

00:28:59.640 --> 00:29:03.020
The idea is your browser is going to use machine learning to put you into

00:29:03.020 --> 00:29:03.860
these cohorts.

00:29:03.860 --> 00:29:04.340
Like,

00:29:04.340 --> 00:29:07.780
are you a young female lesbian?

00:29:07.780 --> 00:29:09.640
Are you a divorcee?

00:29:09.640 --> 00:29:11.060
woman in her forties?

00:29:11.060 --> 00:29:12.460
Like what group are you in?

00:29:12.460 --> 00:29:16.720
And then every advertiser that you visit can basically receive like,

00:29:16.720 --> 00:29:16.940
Oh,

00:29:16.940 --> 00:29:17.180
what,

00:29:17.180 --> 00:29:17.920
what kind of person?

00:29:17.920 --> 00:29:18.100
Oh,

00:29:18.100 --> 00:29:19.540
this is a divorcee who's coming.

00:29:19.540 --> 00:29:22.300
Even if they've never been to your site or anything,

00:29:22.300 --> 00:29:22.880
right?

00:29:22.880 --> 00:29:23.100
They,

00:29:23.100 --> 00:29:23.340
they,

00:29:23.340 --> 00:29:26.200
you sort of get your flock advertised to you,

00:29:26.200 --> 00:29:26.400
your,

00:29:26.400 --> 00:29:27.860
your group.

00:29:27.860 --> 00:29:29.100
It's not private data,

00:29:29.100 --> 00:29:30.540
but it's pretty private.

00:29:30.540 --> 00:29:31.080
It's,

00:29:31.080 --> 00:29:32.080
it's like this group.

00:29:32.080 --> 00:29:32.920
It means a lot.

00:29:32.920 --> 00:29:33.180
Anyway,

00:29:33.180 --> 00:29:36.520
I thought that this was a pretty big deal on the web and people should check

00:29:36.520 --> 00:29:36.720
it out.

00:29:36.720 --> 00:29:38.820
So I put that out there for,

00:29:38.940 --> 00:29:39.640
for you all to consider.

00:29:39.640 --> 00:29:40.120
What do you all think?

00:29:40.120 --> 00:29:42.780
Like tracking is a terrible idea and it's mean too.

00:29:42.780 --> 00:29:44.280
I don't have the link to it,

00:29:44.280 --> 00:29:47.840
but I was reading an article recently about how somebody had,

00:29:47.840 --> 00:29:48.960
I don't know,

00:29:48.960 --> 00:29:49.200
they,

00:29:49.200 --> 00:29:50.980
they were expecting a baby.

00:29:50.980 --> 00:29:53.200
So they were looking up all sorts of baby stuff.

00:29:53.360 --> 00:29:58.280
And then they lost the baby with the miscarriage and they still got tracked

00:29:58.280 --> 00:29:58.720
for that.

00:29:58.720 --> 00:29:59.500
And so they get,

00:29:59.500 --> 00:30:00.860
they get stuff.

00:30:00.860 --> 00:30:01.720
And then somebody,

00:30:01.720 --> 00:30:06.240
a couple of stores figured out what their address was and figured out when

00:30:06.240 --> 00:30:07.380
the due date probably was.

00:30:07.380 --> 00:30:08.780
And then they get like,

00:30:08.780 --> 00:30:12.040
they keep getting these things like your child's probably about four now.

00:30:12.040 --> 00:30:13.300
Maybe they need a bike.

00:30:14.340 --> 00:30:15.460
And they're just,

00:30:15.460 --> 00:30:16.420
that's terrible.

00:30:16.420 --> 00:30:16.860
Yeah.

00:30:16.860 --> 00:30:18.100
So.

00:30:18.100 --> 00:30:18.580
Yeah.

00:30:18.580 --> 00:30:18.960
Yeah.

00:30:18.960 --> 00:30:19.680
But here's,

00:30:19.680 --> 00:30:20.400
here's part of the thing.

00:30:20.400 --> 00:30:21.700
Like all this is not so good,

00:30:21.700 --> 00:30:21.960
right?

00:30:21.960 --> 00:30:22.120
Like,

00:30:22.120 --> 00:30:22.340
I mean,

00:30:22.340 --> 00:30:23.180
they're both not good,

00:30:23.180 --> 00:30:25.200
but how do you clear your flock?

00:30:25.200 --> 00:30:25.520
Right?

00:30:25.520 --> 00:30:27.160
Like I can hit command shift,

00:30:27.160 --> 00:30:29.120
delete and clear my history,

00:30:29.120 --> 00:30:29.700
my cookies.

00:30:29.700 --> 00:30:31.420
How do you clear out your flock?

00:30:31.420 --> 00:30:32.000
Like you're just,

00:30:32.000 --> 00:30:32.320
no,

00:30:32.320 --> 00:30:34.920
you're just a divorcee and it's recomputed every week.

00:30:34.920 --> 00:30:36.040
So like it goes,

00:30:36.040 --> 00:30:39.040
like you could actually track like the stages of somebody's life,

00:30:39.040 --> 00:30:39.980
the different groups.

00:30:39.980 --> 00:30:40.500
They bet it's,

00:30:40.500 --> 00:30:41.760
it's super bad news.

00:30:41.760 --> 00:30:42.140
So anyway,

00:30:42.140 --> 00:30:42.840
I think this,

00:30:42.840 --> 00:30:43.940
we don't need it at all.

00:30:43.940 --> 00:30:44.320
I mean,

00:30:44.320 --> 00:30:45.120
we don't,

00:30:45.120 --> 00:30:45.320
yeah,

00:30:45.320 --> 00:30:45.960
we don't need it at all.

00:30:45.960 --> 00:30:50.900
People did advertising in magazines and newspapers for a really long time with no

00:30:50.900 --> 00:30:51.260
tracking.

00:30:51.260 --> 00:30:51.880
Yep.

00:30:51.880 --> 00:30:52.400
Yep.

00:30:52.400 --> 00:30:53.760
And as I've already pointed out,

00:30:53.760 --> 00:30:55.260
so do we not in newspapers,

00:30:55.260 --> 00:30:55.940
but nonetheless,

00:30:55.940 --> 00:30:57.740
yeah.

00:30:57.740 --> 00:30:58.320
So anyway,

00:30:58.320 --> 00:30:59.640
people should check this out.

00:30:59.640 --> 00:31:00.580
That's worth pointing out.

00:31:00.580 --> 00:31:02.140
And then also kind of related to that.

00:31:02.140 --> 00:31:05.320
I recently started using Nord VPN and it's not an ad.

00:31:05.320 --> 00:31:07.360
I know they sponsor a lot of podcasts,

00:31:07.360 --> 00:31:09.260
but it's not that I just started using it.

00:31:09.260 --> 00:31:10.000
It's super cool.

00:31:10.000 --> 00:31:11.640
You can set this up to automatically,

00:31:11.640 --> 00:31:12.740
like when you log in,

00:31:12.740 --> 00:31:14.600
just join your VPN.

00:31:14.600 --> 00:31:16.980
Like I go to Seattle right now.

00:31:16.980 --> 00:31:17.960
And it also,

00:31:17.960 --> 00:31:23.020
it does all that cookie blocking and all those different kinds of things,

00:31:23.020 --> 00:31:25.080
like automatically at the network level.

00:31:25.080 --> 00:31:25.880
So now for example,

00:31:25.880 --> 00:31:26.140
I,

00:31:26.140 --> 00:31:27.040
it automatically does that.

00:31:27.040 --> 00:31:27.840
When I turn on my iPhone,

00:31:27.840 --> 00:31:29.140
it's just always on the VPN.

00:31:29.140 --> 00:31:32.240
And if I fire up an app that doesn't allow ad blocking,

00:31:32.240 --> 00:31:35.920
that app is already blocking ads because the ads are blocked at the network level.

00:31:35.920 --> 00:31:36.580
So for example,

00:31:36.580 --> 00:31:38.520
I've used like flipboard or like Apple news,

00:31:38.520 --> 00:31:39.440
like the ads are blocked.

00:31:39.440 --> 00:31:39.940
Beautiful.

00:31:40.380 --> 00:31:40.820
So anyway,

00:31:40.820 --> 00:31:42.800
that's worth throwing out there.

00:31:42.800 --> 00:31:43.320
And yeah,

00:31:43.320 --> 00:31:43.720
that's,

00:31:43.720 --> 00:31:44.460
that's all my extras,

00:31:44.460 --> 00:31:46.800
but kind of a privacy intensive one,

00:31:46.800 --> 00:31:48.300
but I thought they'd all kind of go together.

00:31:48.300 --> 00:31:48.520
Well,

00:31:48.520 --> 00:31:50.680
so I ended up making that a thing.

00:31:50.680 --> 00:31:51.440
And then Alexander,

00:31:51.440 --> 00:31:52.440
uh,

00:31:52.440 --> 00:31:53.720
Simonov says,

00:31:53.800 --> 00:31:57.600
I believe that a human classifier trackers will backfire.

00:31:57.600 --> 00:31:58.180
Yeah.

00:31:58.180 --> 00:31:59.160
I think there's a lot,

00:31:59.160 --> 00:31:59.420
uh,

00:31:59.420 --> 00:32:00.340
I agree with you,

00:32:00.340 --> 00:32:00.720
Alexander.

00:32:00.720 --> 00:32:02.220
And I think there's a lot of negative effects.

00:32:02.220 --> 00:32:02.940
Like for example,

00:32:02.940 --> 00:32:07.360
you can tag target and disadvantage marginalized groups.

00:32:07.360 --> 00:32:12.840
And Google actually talks about like when they detect that enough marginalized groups have been harmed,

00:32:12.840 --> 00:32:14.320
they'll recompute the flock.

00:32:14.320 --> 00:32:16.560
It's like enough.

00:32:16.560 --> 00:32:17.540
Yes.

00:32:17.540 --> 00:32:17.920
Yeah,

00:32:17.920 --> 00:32:18.340
exactly.

00:32:18.340 --> 00:32:18.840
It's,

00:32:18.840 --> 00:32:20.860
it's really Orwellian.

00:32:20.860 --> 00:32:21.400
Uh,

00:32:21.400 --> 00:32:21.900
I'm not,

00:32:21.900 --> 00:32:22.380
you know,

00:32:22.380 --> 00:32:24.580
trying to be hyperbolic when I say that like actually is.

00:32:24.580 --> 00:32:25.240
So,

00:32:25.240 --> 00:32:25.760
um,

00:32:25.760 --> 00:32:27.680
people should check that out and just be aware.

00:32:27.680 --> 00:32:28.560
And,

00:32:28.560 --> 00:32:28.880
uh,

00:32:28.880 --> 00:32:29.100
yeah.

00:32:29.100 --> 00:32:30.080
Peter,

00:32:30.080 --> 00:32:31.700
you want to talk about your last item here?

00:32:31.700 --> 00:32:32.000
Uh,

00:32:32.000 --> 00:32:32.640
Jupyter book.

00:32:32.640 --> 00:32:33.240
Yeah.

00:32:33.240 --> 00:32:35.380
I'd love to talk about Jupyter book.

00:32:35.700 --> 00:32:39.160
So there are a lot of static site generators,

00:32:39.160 --> 00:32:39.800
uh,

00:32:39.800 --> 00:32:42.380
for Python as well as for other languages.

00:32:42.380 --> 00:32:44.860
So this is like a good party game.

00:32:44.860 --> 00:32:47.500
How many static site generators can you list?

00:32:47.500 --> 00:32:48.200
Uh,

00:32:48.200 --> 00:32:49.220
like Sphinx,

00:32:49.220 --> 00:32:49.880
Pelican,

00:32:49.880 --> 00:32:51.080
MK docs.

00:32:51.080 --> 00:32:53.280
Do you have any other ones off the top of your head,

00:32:53.280 --> 00:32:53.540
Michael?

00:32:53.540 --> 00:32:54.240
Oh,

00:32:54.240 --> 00:32:55.760
I think probably is ghost one.

00:32:55.760 --> 00:32:57.120
I think ghost might be one.

00:32:57.120 --> 00:32:57.960
Um,

00:32:57.960 --> 00:32:59.220
like Hugo,

00:32:59.220 --> 00:33:00.200
uh,

00:33:00.200 --> 00:33:00.660
all of,

00:33:00.660 --> 00:33:01.580
all of those.

00:33:01.580 --> 00:33:02.380
Uh,

00:33:02.380 --> 00:33:05.440
but I do a lot of my work in Jupyter notebooks.

00:33:05.440 --> 00:33:06.440
Uh,

00:33:06.440 --> 00:33:06.680
uh,

00:33:06.680 --> 00:33:08.020
when I'm working with students,

00:33:08.020 --> 00:33:10.540
a lot of our notes are in Jupyter notebooks.

00:33:10.540 --> 00:33:11.660
And,

00:33:11.660 --> 00:33:12.040
uh,

00:33:12.040 --> 00:33:12.420
this,

00:33:12.420 --> 00:33:13.120
um,

00:33:13.120 --> 00:33:22.820
package called Jupyter dash book is a Python package that allows you to take Jupyter notebooks and build static sites out of them.

00:33:22.820 --> 00:33:23.800
Um,

00:33:23.800 --> 00:33:26.340
and primarily it's designed so that you can,

00:33:26.340 --> 00:33:27.080
yeah,

00:33:27.080 --> 00:33:30.100
you can build free online books,

00:33:30.100 --> 00:33:30.480
uh,

00:33:30.480 --> 00:33:32.000
based on Jupyter notebooks,

00:33:32.000 --> 00:33:32.760
uh,

00:33:32.760 --> 00:33:33.460
but also,

00:33:33.460 --> 00:33:34.040
uh,

00:33:34.040 --> 00:33:35.040
markdown files.

00:33:35.040 --> 00:33:36.280
Um,

00:33:36.280 --> 00:33:38.500
so I've got like a little book going.

00:33:38.500 --> 00:33:43.700
You could almost put like a little scientific website that has some like analysis and various things.

00:33:43.700 --> 00:33:46.620
You could kind of put that together as a series of notebooks and publish it,

00:33:46.620 --> 00:33:46.820
right?

00:33:46.820 --> 00:33:47.740
Yeah,

00:33:47.740 --> 00:33:48.320
yeah.

00:33:48.520 --> 00:33:51.540
and you can even do it with interactivity too.

00:33:51.540 --> 00:33:55.220
So this is part of the executable books project.

00:33:55.220 --> 00:33:58.980
And kind of the idea is that you'll be able to,

00:33:58.980 --> 00:33:59.560
uh,

00:33:59.560 --> 00:34:02.400
interact with things like plots if you make them with,

00:34:02.400 --> 00:34:02.780
uh,

00:34:02.780 --> 00:34:03.900
bouquet or altar.

00:34:03.900 --> 00:34:05.040
Um,

00:34:05.040 --> 00:34:12.060
and the code output that you see in the Jupyter notebook that actually came from the code that was written in the Jupyter notebook.

00:34:12.540 --> 00:34:12.920
Um,

00:34:12.920 --> 00:34:14.440
and I think that's pretty neat,

00:34:14.440 --> 00:34:15.020
uh,

00:34:15.020 --> 00:34:15.900
like as well.

00:34:15.900 --> 00:34:16.680
Um,

00:34:16.680 --> 00:34:17.700
and on the,

00:34:17.700 --> 00:34:18.440
um,

00:34:18.440 --> 00:34:19.420
docs,

00:34:19.420 --> 00:34:25.700
there's like this way that you can automatically deploy your book to GitHub pages for free,

00:34:25.700 --> 00:34:26.300
uh,

00:34:26.300 --> 00:34:27.620
which I think is really nice.

00:34:27.620 --> 00:34:28.460
And then,

00:34:28.460 --> 00:34:28.880
uh,

00:34:28.880 --> 00:34:30.620
there's also a,

00:34:30.620 --> 00:34:31.340
um,

00:34:31.340 --> 00:34:32.320
uh,

00:34:32.320 --> 00:34:32.660
uh,

00:34:32.660 --> 00:34:34.880
get hook so that you can,

00:34:34.880 --> 00:34:35.240
uh,

00:34:35.240 --> 00:34:36.260
hook into,

00:34:36.260 --> 00:34:37.300
um,

00:34:37.580 --> 00:34:41.400
GitHub and then automatically every time that you push,

00:34:41.400 --> 00:34:41.960
uh,

00:34:41.960 --> 00:34:43.460
your book gets republished.

00:34:43.460 --> 00:34:44.360
Um,

00:34:44.360 --> 00:34:47.740
so every time you change that notebook and you push up to GitHub,

00:34:47.740 --> 00:34:51.540
now your book gets republished with all of your new content.

00:34:51.540 --> 00:34:52.280
Uh,

00:34:52.280 --> 00:34:53.460
and I think that that's really,

00:34:53.460 --> 00:34:54.160
really neat.

00:34:54.160 --> 00:34:56.260
It allows you to make like revisions and publish,

00:34:56.260 --> 00:34:56.720
uh,

00:34:56.720 --> 00:34:57.400
super easily.

00:34:57.400 --> 00:34:58.280
Um,

00:34:58.280 --> 00:34:59.200
so the,

00:34:59.200 --> 00:34:59.440
the,

00:34:59.440 --> 00:34:59.940
that's cool.

00:34:59.940 --> 00:35:00.960
And you could probably,

00:35:00.960 --> 00:35:03.200
you could probably put it on a specific branch,

00:35:03.200 --> 00:35:03.920
right?

00:35:03.920 --> 00:35:04.800
So if you like,

00:35:04.800 --> 00:35:07.500
you make all your changes and then you're like ready to push out the next,

00:35:07.500 --> 00:35:08.420
version of,

00:35:08.420 --> 00:35:09.000
of the book,

00:35:09.000 --> 00:35:12.280
you could like push to the main deploy branch or whatever.

00:35:12.280 --> 00:35:13.120
Yeah.

00:35:13.120 --> 00:35:13.460
Yeah.

00:35:13.460 --> 00:35:13.900
I mean,

00:35:13.900 --> 00:35:14.340
in,

00:35:14.340 --> 00:35:14.800
uh,

00:35:14.800 --> 00:35:15.840
your GitHub action,

00:35:15.840 --> 00:35:19.720
you could set whichever branch you want is the one that kicks off,

00:35:19.720 --> 00:35:20.060
uh,

00:35:20.060 --> 00:35:21.200
the action that builds,

00:35:21.200 --> 00:35:21.560
uh,

00:35:21.560 --> 00:35:22.120
your book.

00:35:22.120 --> 00:35:22.820
Uh,

00:35:22.820 --> 00:35:26.820
one thing I'm kind of interested in is could we make a GitHub action that

00:35:26.820 --> 00:35:29.600
would kick off a build of the PDF of your book.

00:35:29.600 --> 00:35:31.480
And then you could have like a releases,

00:35:31.480 --> 00:35:32.440
uh,

00:35:32.440 --> 00:35:34.100
page where it would be like the,

00:35:34.100 --> 00:35:34.540
uh,

00:35:34.540 --> 00:35:36.640
PDF if people wanted to print it out or,

00:35:36.640 --> 00:35:37.040
you know,

00:35:37.040 --> 00:35:39.800
kind of had more of a hard copy of it.

00:35:39.800 --> 00:35:40.500
Um,

00:35:40.500 --> 00:35:41.720
I think that's pretty cool.

00:35:41.720 --> 00:35:44.260
And like the book gallery,

00:35:44.260 --> 00:35:44.920
uh,

00:35:44.920 --> 00:35:45.760
that they have,

00:35:45.760 --> 00:35:48.720
they've got some awesome titles that they have listed,

00:35:48.720 --> 00:35:49.600
uh,

00:35:49.600 --> 00:35:52.080
like geographic data science with Python.

00:35:52.080 --> 00:35:53.260
That sounds interesting.

00:35:53.260 --> 00:35:55.760
Quantitative economics with Python,

00:35:55.760 --> 00:35:56.560
uh,

00:35:56.560 --> 00:35:57.220
the UW,

00:35:57.220 --> 00:35:57.920
uh,

00:35:57.920 --> 00:36:01.680
data visualization curriculums from the university of Washington,

00:36:01.680 --> 00:36:03.300
how to use a lot of Python,

00:36:03.300 --> 00:36:04.020
uh,

00:36:04.020 --> 00:36:05.020
plotting tools.

00:36:05.020 --> 00:36:05.640
Oh yeah.

00:36:05.640 --> 00:36:07.940
This looks super like it came out of Jupyter,

00:36:07.940 --> 00:36:08.720
but it's a,

00:36:08.720 --> 00:36:09.980
it's a legit website.

00:36:09.980 --> 00:36:11.900
It has a read the docs type of feel.

00:36:11.900 --> 00:36:12.500
Yeah.

00:36:12.500 --> 00:36:13.140
Yeah,

00:36:13.140 --> 00:36:13.580
definitely.

00:36:13.580 --> 00:36:16.420
And up in the right-hand corner of these,

00:36:16.420 --> 00:36:17.360
you've got these,

00:36:17.360 --> 00:36:17.740
uh,

00:36:17.740 --> 00:36:19.460
buttons that you could,

00:36:19.460 --> 00:36:19.820
uh,

00:36:19.820 --> 00:36:22.420
like download a PDF or download the notebook.

00:36:22.640 --> 00:36:26.920
You can launch a bender instance so that you could like run,

00:36:26.920 --> 00:36:27.360
uh,

00:36:27.360 --> 00:36:28.340
that Jupyter notebook.

00:36:28.340 --> 00:36:29.200
Um,

00:36:29.200 --> 00:36:29.660
and,

00:36:29.660 --> 00:36:30.020
uh,

00:36:30.020 --> 00:36:32.900
you can have a default button that'll automatically take you to

00:36:32.900 --> 00:36:34.140
GitHub where that,

00:36:34.140 --> 00:36:34.400
uh,

00:36:34.400 --> 00:36:35.320
notebook is hosted.

00:36:35.320 --> 00:36:36.120
Uh,

00:36:36.120 --> 00:36:36.580
so it's,

00:36:36.580 --> 00:36:37.620
it's pretty slick,

00:36:37.620 --> 00:36:38.040
I think.

00:36:38.040 --> 00:36:38.600
Yeah,

00:36:38.600 --> 00:36:39.560
this is super cool.

00:36:39.560 --> 00:36:40.200
Ryan,

00:36:40.200 --> 00:36:40.800
it's a book author.

00:36:40.800 --> 00:36:41.280
What do you think?

00:36:41.280 --> 00:36:42.560
Well,

00:36:42.560 --> 00:36:45.860
it's one of the things that confused me when I was thinking about

00:36:45.860 --> 00:36:46.900
this is what,

00:36:46.900 --> 00:36:48.920
and it did with Jupyter,

00:36:48.920 --> 00:36:50.640
Jupyter notebook in the first place is,

00:36:50.760 --> 00:36:52.740
what does a book mean if it's not a book?

00:36:52.740 --> 00:36:53.240
Uh,

00:36:53.240 --> 00:36:53.600
there's,

00:36:53.600 --> 00:36:54.140
I mean,

00:36:54.140 --> 00:36:54.300
this,

00:36:54.300 --> 00:36:54.680
this,

00:36:54.680 --> 00:36:55.040
uh,

00:36:55.040 --> 00:36:56.160
idea of a book is,

00:36:56.160 --> 00:36:58.240
is it's not a book anymore.

00:36:58.240 --> 00:36:59.460
It's a something else.

00:36:59.460 --> 00:37:00.180
I never,

00:37:00.180 --> 00:37:01.120
I never really got it.

00:37:01.120 --> 00:37:02.980
Why Jupyter notebooks went to the,

00:37:02.980 --> 00:37:03.360
the,

00:37:03.360 --> 00:37:06.240
I don't get the tie in between book and book,

00:37:06.240 --> 00:37:08.480
but maybe somebody can explain it to me.

00:37:08.480 --> 00:37:10.340
Yeah.

00:37:10.340 --> 00:37:10.660
I mean,

00:37:10.660 --> 00:37:13.420
it's sort of blurring that like release line,

00:37:13.420 --> 00:37:14.340
um,

00:37:14.340 --> 00:37:17.820
that it's officially version one of the book and version two of the

00:37:17.820 --> 00:37:18.020
book.

00:37:18.020 --> 00:37:18.580
If you do it,

00:37:18.580 --> 00:37:20.400
every single push is a new version.

00:37:20.400 --> 00:37:21.240
Um,

00:37:21.240 --> 00:37:25.140
then it's sort of like just rolling like CICD book release,

00:37:25.140 --> 00:37:25.860
uh,

00:37:25.860 --> 00:37:26.160
which,

00:37:26.160 --> 00:37:27.660
which I think is kind of neat.

00:37:27.660 --> 00:37:28.440
Um,

00:37:28.440 --> 00:37:29.600
but in my area,

00:37:29.600 --> 00:37:30.600
teaching engineering,

00:37:30.600 --> 00:37:31.680
um,

00:37:31.680 --> 00:37:33.880
textbook costs are huge.

00:37:33.880 --> 00:37:34.200
Uh,

00:37:34.200 --> 00:37:37.160
textbooks can cost hundreds of dollars for college students.

00:37:37.160 --> 00:37:38.960
So if there's a way that we can,

00:37:38.960 --> 00:37:39.340
uh,

00:37:39.340 --> 00:37:40.260
make a lot of,

00:37:40.260 --> 00:37:40.840
uh,

00:37:40.840 --> 00:37:42.920
open education resources books,

00:37:42.920 --> 00:37:43.660
uh,

00:37:43.660 --> 00:37:45.100
I think that that would be great,

00:37:45.100 --> 00:37:45.460
uh,

00:37:45.460 --> 00:37:46.400
for college students.

00:37:46.400 --> 00:37:49.780
I really liked the design of having like the table of contents on the

00:37:49.780 --> 00:37:51.080
left of the book.

00:37:51.080 --> 00:37:52.360
And then on the right,

00:37:52.360 --> 00:37:53.120
there's the,

00:37:53.120 --> 00:37:55.320
the contents of the individual page.

00:37:55.320 --> 00:37:56.000
Uh,

00:37:56.000 --> 00:37:56.940
so you can jump to it.

00:37:56.940 --> 00:37:58.660
That's a really cool idea.

00:37:58.660 --> 00:37:59.380
I actually,

00:37:59.380 --> 00:38:00.760
I was joking a little bit.

00:38:00.760 --> 00:38:03.620
I really think that would be cool if maybe it already does this,

00:38:03.620 --> 00:38:04.720
but if there was a way to,

00:38:04.720 --> 00:38:05.500
uh,

00:38:05.500 --> 00:38:08.140
turn one of these into a,

00:38:08.140 --> 00:38:08.680
um,

00:38:09.040 --> 00:38:09.860
into an ebook,

00:38:09.860 --> 00:38:10.760
uh,

00:38:10.760 --> 00:38:12.100
or a PDF,

00:38:12.100 --> 00:38:12.780
uh,

00:38:12.780 --> 00:38:13.020
from,

00:38:13.020 --> 00:38:13.700
from this.

00:38:13.700 --> 00:38:15.600
Where's the Kindle version of this?

00:38:15.600 --> 00:38:16.040
Yeah,

00:38:16.040 --> 00:38:16.420
exactly.

00:38:16.420 --> 00:38:16.820
Yeah.

00:38:16.820 --> 00:38:18.020
And I mean,

00:38:18.020 --> 00:38:18.840
I'm not even joking.

00:38:18.840 --> 00:38:19.940
I think a lot of,

00:38:19.940 --> 00:38:23.600
a lot of these sorts of things would be great to be able to throw onto a

00:38:23.600 --> 00:38:25.740
Kindle to be able to walk around and read.

00:38:25.740 --> 00:38:26.160
So.

00:38:26.160 --> 00:38:27.260
Yeah.

00:38:27.260 --> 00:38:27.540
Yeah.

00:38:27.540 --> 00:38:31.700
You can definitely output PDFs and LaTeX documents,

00:38:31.700 --> 00:38:32.360
uh,

00:38:32.360 --> 00:38:32.780
with it,

00:38:32.780 --> 00:38:34.200
but I don't know about,

00:38:34.200 --> 00:38:34.600
uh,

00:38:34.600 --> 00:38:35.860
like Kindle ebook,

00:38:35.860 --> 00:38:36.420
uh,

00:38:36.420 --> 00:38:36.840
format.

00:38:37.340 --> 00:38:37.620
Uh,

00:38:37.620 --> 00:38:40.140
maybe somebody can like write that in and,

00:38:40.140 --> 00:38:40.600
uh,

00:38:40.600 --> 00:38:41.680
give them a contribution.

00:38:41.680 --> 00:38:42.640
That'd be cool.

00:38:42.640 --> 00:38:43.240
Yeah.

00:38:43.240 --> 00:38:43.660
Yeah.

00:38:43.660 --> 00:38:44.180
Yeah,

00:38:44.180 --> 00:38:44.540
for sure.

00:38:44.540 --> 00:38:48.000
Sam Morley says having free interactive coding textbooks would be a real

00:38:48.000 --> 00:38:49.140
game changer for a lot of people,

00:38:49.140 --> 00:38:51.000
particularly somebody find,

00:38:51.000 --> 00:38:51.240
uh,

00:38:51.240 --> 00:38:52.800
figures out how to make this,

00:38:52.800 --> 00:38:53.320
uh,

00:38:53.320 --> 00:38:54.600
portable to mobile devices.

00:38:54.600 --> 00:38:54.960
Yeah,

00:38:54.960 --> 00:38:55.440
for sure.

00:38:55.440 --> 00:38:56.520
All right.

00:38:56.520 --> 00:38:57.840
A couple other comments,

00:38:57.840 --> 00:38:58.160
uh,

00:38:58.160 --> 00:38:59.100
also from Sam.

00:38:59.100 --> 00:38:59.840
Uh,

00:38:59.840 --> 00:39:00.560
he says,

00:39:00.560 --> 00:39:01.000
congrats,

00:39:01.000 --> 00:39:01.320
Brian,

00:39:01.320 --> 00:39:01.820
about your,

00:39:01.820 --> 00:39:02.760
your badge.

00:39:02.760 --> 00:39:05.080
It's nice to know that NASA does test their software.

00:39:05.080 --> 00:39:07.000
I bet they test the heck out of that software.

00:39:07.160 --> 00:39:07.340
Yeah.

00:39:07.340 --> 00:39:11.220
Before you send it up,

00:39:11.220 --> 00:39:12.960
it's got to get tested maybe to a fault.

00:39:12.960 --> 00:39:13.380
I don't know,

00:39:13.380 --> 00:39:14.780
but it's got to get really,

00:39:14.780 --> 00:39:15.340
really tested.

00:39:15.340 --> 00:39:17.060
And then also just,

00:39:17.060 --> 00:39:17.320
uh,

00:39:17.320 --> 00:39:17.560
well,

00:39:17.560 --> 00:39:18.420
I'm in the comments,

00:39:18.420 --> 00:39:19.200
James Abel.

00:39:19.200 --> 00:39:19.420
Hey,

00:39:19.420 --> 00:39:20.380
James says,

00:39:20.380 --> 00:39:20.660
uh,

00:39:20.660 --> 00:39:23.500
and Michael be presenting at the Python meetup tonight.

00:39:23.500 --> 00:39:23.700
Yeah.

00:39:23.700 --> 00:39:26.220
I didn't necessarily think to cover this cause it's so close to,

00:39:26.220 --> 00:39:26.460
you know,

00:39:26.460 --> 00:39:28.360
it's like six hours from when I'll be presenting,

00:39:28.360 --> 00:39:28.760
but,

00:39:28.760 --> 00:39:29.260
uh,

00:39:29.260 --> 00:39:29.400
yeah,

00:39:29.400 --> 00:39:30.140
I will be doing,

00:39:30.140 --> 00:39:30.580
uh,

00:39:30.580 --> 00:39:30.900
uh,

00:39:30.900 --> 00:39:31.700
on memory,

00:39:31.700 --> 00:39:32.540
deep dive,

00:39:32.540 --> 00:39:34.480
sort of live coding type of thing over there,

00:39:34.480 --> 00:39:36.580
the Python meetup in San Francisco,

00:39:36.980 --> 00:39:37.240
you know,

00:39:37.240 --> 00:39:39.140
virtually because that's the world we live in,

00:39:39.140 --> 00:39:39.600
but yeah.

00:39:39.600 --> 00:39:40.240
Nice.

00:39:40.240 --> 00:39:40.500
Uh,

00:39:40.500 --> 00:39:40.820
very cool.

00:39:40.820 --> 00:39:41.140
Yeah.

00:39:41.140 --> 00:39:42.920
And then John Sheehan says,

00:39:42.920 --> 00:39:46.040
it's a short hop from LaTeX to EPUB with Pandoc.

00:39:46.040 --> 00:39:46.740
Oh,

00:39:46.740 --> 00:39:47.740
yeah.

00:39:47.740 --> 00:39:48.180
yeah.

00:39:48.180 --> 00:39:49.000
Yeah.

00:39:49.000 --> 00:39:50.600
You may all be right there,

00:39:50.600 --> 00:39:51.440
right there.

00:39:51.440 --> 00:39:52.040
All right.

00:39:52.040 --> 00:39:52.180
Well,

00:39:52.180 --> 00:39:53.540
I did my extra section already,

00:39:53.540 --> 00:39:53.800
Brian,

00:39:53.800 --> 00:39:55.640
you got anything else you want to do a quick shout out to?

00:39:55.640 --> 00:39:56.340
Yeah.

00:39:56.340 --> 00:39:57.260
Speaking of virtual,

00:39:57.260 --> 00:39:57.860
uh,

00:39:57.860 --> 00:39:58.380
uh,

00:39:58.380 --> 00:39:58.660
uh,

00:39:58.660 --> 00:39:59.320
Python,

00:39:59.320 --> 00:40:01.680
the Pycon ZA,

00:40:01.680 --> 00:40:02.340
uh,

00:40:02.340 --> 00:40:04.540
the South African Pycon is coming up.

00:40:04.540 --> 00:40:04.920
Um,

00:40:04.920 --> 00:40:05.900
shout out to them.

00:40:05.900 --> 00:40:06.260
Um,

00:40:06.260 --> 00:40:06.600
there,

00:40:06.600 --> 00:40:07.440
um,

00:40:07.440 --> 00:40:08.100
I don't,

00:40:08.100 --> 00:40:09.640
I don't have a link to them up here,

00:40:09.640 --> 00:40:09.980
but,

00:40:09.980 --> 00:40:10.320
um,

00:40:10.680 --> 00:40:14.080
it's a conference that's going to be on the 7th and 8th of October.

00:40:14.080 --> 00:40:14.800
Uh,

00:40:14.800 --> 00:40:16.300
it'll be entirely online.

00:40:16.300 --> 00:40:17.140
And,

00:40:17.140 --> 00:40:17.380
uh,

00:40:17.380 --> 00:40:21.400
I was just curious cause it sounds like I was curious about the whole virtual

00:40:21.400 --> 00:40:22.040
ness.

00:40:22.040 --> 00:40:24.120
It's a little bit early in the morning,

00:40:24.120 --> 00:40:24.580
uh,

00:40:24.580 --> 00:40:25.220
for us,

00:40:25.220 --> 00:40:25.940
but,

00:40:25.940 --> 00:40:26.540
um,

00:40:26.540 --> 00:40:27.120
they are,

00:40:27.120 --> 00:40:28.820
so I had a little bit of an exchange,

00:40:28.820 --> 00:40:29.480
email exchange.

00:40:29.480 --> 00:40:31.340
They are going to be able to have,

00:40:31.340 --> 00:40:32.320
uh,

00:40:32.320 --> 00:40:35.460
some prerecorded so you can prerecord your talk if you want to.

00:40:35.460 --> 00:40:38.480
So if you're afraid of doing it live in the middle of the night,

00:40:38.480 --> 00:40:39.260
um,

00:40:39.260 --> 00:40:40.380
don't worry about that,

00:40:40.380 --> 00:40:40.700
but they,

00:40:40.700 --> 00:40:42.400
you can submit anyway.

00:40:42.400 --> 00:40:42.840
And,

00:40:42.840 --> 00:40:43.200
uh,

00:40:43.200 --> 00:40:43.900
and they're,

00:40:43.900 --> 00:40:44.660
they're allowed,

00:40:44.660 --> 00:40:45.840
but they'd like to have the,

00:40:45.840 --> 00:40:50.040
the author be live while it's playing so they can answer questions and stuff.

00:40:50.040 --> 00:40:50.780
And that seems fair.

00:40:50.780 --> 00:40:52.020
Um,

00:40:52.020 --> 00:40:56.640
the second update is last week we covered dead dependency or dead,

00:40:56.640 --> 00:40:57.480
dead dependency.

00:40:57.480 --> 00:40:58.080
I don't,

00:40:58.080 --> 00:40:59.120
I don't know how to say that.

00:40:59.120 --> 00:41:00.500
Dead dependencies.

00:41:00.500 --> 00:41:01.020
I don't,

00:41:01.020 --> 00:41:01.520
I don't know.

00:41:01.520 --> 00:41:03.020
Um,

00:41:03.020 --> 00:41:03.520
and,

00:41:03.520 --> 00:41:04.120
uh,

00:41:04.120 --> 00:41:07.160
so one of the things we said was it's too bad that it doesn't cover,

00:41:07.160 --> 00:41:10.360
it doesn't do pipe project.toml in within a day,

00:41:10.360 --> 00:41:10.940
it was,

00:41:10.940 --> 00:41:11.500
it was,

00:41:11.500 --> 00:41:11.840
uh,

00:41:11.840 --> 00:41:12.500
supporting it.

00:41:12.500 --> 00:41:12.780
So,

00:41:12.780 --> 00:41:13.740
um,

00:41:13.740 --> 00:41:14.380
the,

00:41:14.380 --> 00:41:14.820
the,

00:41:14.820 --> 00:41:17.860
there was an update the next very next day that,

00:41:17.860 --> 00:41:18.380
uh,

00:41:18.380 --> 00:41:19.700
it supports,

00:41:19.700 --> 00:41:19.980
uh,

00:41:19.980 --> 00:41:23.060
both flit and poetry with pipe project.toml.

00:41:23.060 --> 00:41:25.040
and since it's doing pipe project.toml,

00:41:25.040 --> 00:41:25.260
I'm,

00:41:25.260 --> 00:41:26.340
I imagine it'd do,

00:41:26.340 --> 00:41:27.140
uh,

00:41:27.140 --> 00:41:28.300
set up tools as well.

00:41:28.300 --> 00:41:28.700
Uh,

00:41:28.700 --> 00:41:30.980
if you're doing pipe project.toml set up tools.

00:41:30.980 --> 00:41:31.460
So.

00:41:31.460 --> 00:41:32.300
That's so awesome.

00:41:32.300 --> 00:41:34.940
Well done folks about updating that straight away.

00:41:34.940 --> 00:41:35.220
I mean,

00:41:35.220 --> 00:41:36.200
isn't it amazing,

00:41:36.200 --> 00:41:36.500
Brian?

00:41:36.500 --> 00:41:36.820
We'll,

00:41:36.820 --> 00:41:38.720
we'll talk about random things like this is cool,

00:41:38.720 --> 00:41:39.160
but,

00:41:39.160 --> 00:41:41.520
and then like the next day we get,

00:41:41.520 --> 00:41:43.840
so like the dead dependencies folks fixed,

00:41:43.840 --> 00:41:44.120
you know,

00:41:44.120 --> 00:41:46.000
added pipe project.toml support.

00:41:46.220 --> 00:41:47.600
I talked about being is it,

00:41:47.600 --> 00:41:47.660
Oh,

00:41:47.660 --> 00:41:49.400
it needs a way to have indexes next episode.

00:41:49.400 --> 00:41:49.640
Oh,

00:41:49.640 --> 00:41:49.840
here.

00:41:49.840 --> 00:41:50.220
They,

00:41:50.220 --> 00:41:54.100
they heard us and they added indexing features and so on.

00:41:54.100 --> 00:41:55.500
Part of it's the podcast.

00:41:55.500 --> 00:41:56.740
And also part of it is,

00:41:56.740 --> 00:41:57.080
uh,

00:41:57.080 --> 00:41:59.120
since I'm doing research for the podcast,

00:41:59.120 --> 00:42:02.340
I just reach out to people more often and say,

00:42:02.340 --> 00:42:03.060
I'm,

00:42:03.060 --> 00:42:03.360
I'm,

00:42:03.360 --> 00:42:04.260
this is a cool project,

00:42:04.260 --> 00:42:05.180
but it doesn't do this.

00:42:05.180 --> 00:42:06.420
Is there plans to do that?

00:42:06.420 --> 00:42:07.180
And,

00:42:07.180 --> 00:42:08.080
and you'll,

00:42:08.080 --> 00:42:08.600
I mean,

00:42:08.600 --> 00:42:11.340
project owners love to hear back from people.

00:42:11.340 --> 00:42:11.620
And,

00:42:11.620 --> 00:42:12.000
and,

00:42:12.000 --> 00:42:12.380
uh,

00:42:12.380 --> 00:42:13.460
even if I wasn't,

00:42:13.460 --> 00:42:15.180
I think other people should do that more often.

00:42:15.260 --> 00:42:16.420
Don't just complain about something,

00:42:16.420 --> 00:42:19.520
ask somebody if it's going to be supported or if you can help out.

00:42:19.520 --> 00:42:19.840
So.

00:42:19.840 --> 00:42:20.400
Yeah,

00:42:20.400 --> 00:42:21.160
absolutely.

00:42:21.160 --> 00:42:21.840
Peter,

00:42:21.840 --> 00:42:22.780
anything you want to throw out there?

00:42:22.780 --> 00:42:25.260
And then we'll extra as people tell people how they can find your book or

00:42:25.260 --> 00:42:25.820
something like that.

00:42:25.820 --> 00:42:26.780
Yeah.

00:42:26.780 --> 00:42:29.480
If you search for problem solving with Python,

00:42:29.480 --> 00:42:30.620
uh,

00:42:30.620 --> 00:42:31.760
on Amazon,

00:42:31.760 --> 00:42:32.520
uh,

00:42:32.520 --> 00:42:36.020
or there's a free open education resources version online too.

00:42:36.020 --> 00:42:36.780
Um,

00:42:36.780 --> 00:42:42.100
and one little shout out I got is our community college is looking into how to

00:42:42.100 --> 00:42:44.940
integrate artificial intelligence into,

00:42:44.940 --> 00:42:45.700
to curriculum.

00:42:45.700 --> 00:42:49.340
So if anybody's in the Portland area that does AI stuff,

00:42:49.340 --> 00:42:50.220
reach out to me.

00:42:50.220 --> 00:42:51.020
Um,

00:42:51.020 --> 00:42:54.540
and I'd love to talk to you about how we can integrate AI into community

00:42:54.540 --> 00:42:55.020
colleges.

00:42:55.020 --> 00:42:55.820
Oh yeah.

00:42:55.820 --> 00:42:56.580
That'd be really cool.

00:42:56.580 --> 00:42:57.160
Yeah.

00:42:57.160 --> 00:42:58.440
It's a super fun project.

00:42:58.440 --> 00:42:59.640
Awesome.

00:42:59.640 --> 00:43:00.520
It does sound fun.

00:43:00.520 --> 00:43:01.040
You know,

00:43:01.040 --> 00:43:01.740
ready for a joke.

00:43:01.740 --> 00:43:02.920
This is a team effort here.

00:43:02.920 --> 00:43:03.520
Yeah.

00:43:03.520 --> 00:43:04.300
Um,

00:43:04.300 --> 00:43:05.920
I'm going to close the other tabs.

00:43:05.920 --> 00:43:06.440
There we go.

00:43:06.440 --> 00:43:08.160
So that's a little large.

00:43:08.160 --> 00:43:08.980
This is again,

00:43:08.980 --> 00:43:10.880
one of these funny code comments.

00:43:11.380 --> 00:43:11.660
Uh,

00:43:11.660 --> 00:43:11.760
I,

00:43:11.760 --> 00:43:13.020
I guess I'll go last Brian.

00:43:13.020 --> 00:43:13.600
You want to do,

00:43:13.600 --> 00:43:14.000
uh,

00:43:14.000 --> 00:43:14.940
Oh,

00:43:14.940 --> 00:43:16.360
let's have Peter go do the first one.

00:43:16.360 --> 00:43:17.520
So these are,

00:43:17.520 --> 00:43:18.440
these are from,

00:43:18.440 --> 00:43:18.740
uh,

00:43:18.740 --> 00:43:21.560
comments that were found in real codes supposedly.

00:43:21.560 --> 00:43:22.640
Uh,

00:43:22.640 --> 00:43:24.160
and then they're just kind of funny.

00:43:24.160 --> 00:43:24.420
Peter,

00:43:24.420 --> 00:43:25.400
you want to do a first comment?

00:43:25.820 --> 00:43:26.300
All right.

00:43:26.300 --> 00:43:26.840
Our first,

00:43:26.840 --> 00:43:29.820
our first comment is dear future me,

00:43:29.820 --> 00:43:31.320
please forgive me.

00:43:31.320 --> 00:43:34.900
I can't even begin to express how sorry I am.

00:43:34.900 --> 00:43:38.280
And here we go.

00:43:38.280 --> 00:43:39.500
That's great.

00:43:39.500 --> 00:43:40.380
All right,

00:43:40.380 --> 00:43:40.660
Brian,

00:43:40.660 --> 00:43:41.540
this is one that,

00:43:41.540 --> 00:43:41.920
um,

00:43:41.920 --> 00:43:42.540
I don't know.

00:43:42.540 --> 00:43:44.060
It's here to take on the optimist.

00:43:44.060 --> 00:43:44.380
I don't know.

00:43:44.380 --> 00:43:44.760
What would you,

00:43:44.760 --> 00:43:45.780
I'm not sure how you put this,

00:43:45.780 --> 00:43:47.540
but it's a exception handling block.

00:43:47.540 --> 00:43:48.160
What do we got?

00:43:48.160 --> 00:43:49.200
Uh,

00:43:49.200 --> 00:43:49.620
okay.

00:43:49.620 --> 00:43:50.500
So yeah,

00:43:50.500 --> 00:43:51.220
uh,

00:43:51.220 --> 00:43:52.840
a try block with a catch,

00:43:52.840 --> 00:43:53.600
uh,

00:43:53.600 --> 00:43:55.720
sequel exception and a comment.

00:43:55.720 --> 00:43:57.720
That says basically without saying too much,

00:43:57.720 --> 00:43:59.700
you're screwed royally and totally.

00:43:59.700 --> 00:44:01.820
And then,

00:44:01.820 --> 00:44:04.220
and then another catch exception,

00:44:04.220 --> 00:44:05.900
like a raw exception says,

00:44:05.900 --> 00:44:07.080
if I thought you,

00:44:07.080 --> 00:44:08.740
if you thought you were screwed before,

00:44:08.740 --> 00:44:09.640
boy,

00:44:09.640 --> 00:44:11.200
have I got news for you.

00:44:11.200 --> 00:44:14.300
That was my favorite.

00:44:14.300 --> 00:44:15.380
That was so good.

00:44:15.380 --> 00:44:20.880
And I'll just close it out with one of these ones where you just kind of have to

00:44:20.880 --> 00:44:21.420
accept life,

00:44:21.420 --> 00:44:21.760
I guess.

00:44:21.760 --> 00:44:22.260
And it says,

00:44:22.260 --> 00:44:23.660
this code is crap.

00:44:23.660 --> 00:44:24.820
This is crap code,

00:44:24.820 --> 00:44:25.580
but it's 3M.

00:44:25.620 --> 00:44:25.840
And I,

00:44:25.840 --> 00:44:26.840
I need to get it working.

00:44:26.840 --> 00:44:29.880
Yeah.

00:44:29.880 --> 00:44:31.000
Oh boy.

00:44:31.000 --> 00:44:31.720
Okay.

00:44:31.720 --> 00:44:33.340
I wanted to share one more.

00:44:33.340 --> 00:44:34.180
So,

00:44:34.180 --> 00:44:35.100
um,

00:44:35.100 --> 00:44:35.700
cause I was,

00:44:35.700 --> 00:44:38.720
I was talking with my coworkers the other day and we were talking,

00:44:38.720 --> 00:44:39.460
somebody met,

00:44:39.460 --> 00:44:41.020
somebody actually mentioned how,

00:44:41.020 --> 00:44:41.760
how hard,

00:44:41.760 --> 00:44:42.180
uh,

00:44:42.180 --> 00:44:44.120
that we had a problem with cash and validation.

00:44:44.460 --> 00:44:46.620
and it reminded me of that whole joke of,

00:44:46.620 --> 00:44:46.840
uh,

00:44:46.840 --> 00:44:48.800
there's only two hard things in computer science,

00:44:48.800 --> 00:44:50.620
cash and validation and naming things.

00:44:50.620 --> 00:44:51.680
Um,

00:44:51.680 --> 00:44:54.160
and so I went to look it up and then I found this,

00:44:54.160 --> 00:44:54.500
uh,

00:44:54.500 --> 00:44:55.700
this other joke.

00:44:55.700 --> 00:44:56.540
Um,

00:44:56.540 --> 00:44:59.340
there's two hard problems in computer science.

00:44:59.340 --> 00:45:01.840
We only have one joke and it's not funny.

00:45:02.840 --> 00:45:06.780
Oh,

00:45:06.780 --> 00:45:07.340
that's great.

00:45:07.340 --> 00:45:08.320
I love it.

00:45:08.320 --> 00:45:09.000
I love it.

00:45:09.000 --> 00:45:09.740
All right.

00:45:09.740 --> 00:45:09.980
Uh,

00:45:09.980 --> 00:45:10.760
we'll round it out with,

00:45:10.760 --> 00:45:11.140
uh,

00:45:11.140 --> 00:45:14.740
Nick Harvey here says exceptions while handling exceptions are just the best.

00:45:14.740 --> 00:45:15.060
Indeed.

00:45:15.060 --> 00:45:15.600
They are.

00:45:15.600 --> 00:45:16.000
Yes.

00:45:16.000 --> 00:45:16.860
Indeed.

00:45:16.860 --> 00:45:17.280
They are.

00:45:17.960 --> 00:45:18.520
All right.

00:45:18.520 --> 00:45:19.160
Well,

00:45:19.160 --> 00:45:19.760
Brian,

00:45:19.760 --> 00:45:22.680
it's great to chat with you and talk by them things as always.

00:45:22.680 --> 00:45:23.940
Good to talk to you.

00:45:23.940 --> 00:45:24.540
Yeah.

00:45:24.540 --> 00:45:24.880
And Peter,

00:45:24.880 --> 00:45:25.860
thanks for joining us this time.

00:45:25.860 --> 00:45:26.980
Thanks for having me.

00:45:26.980 --> 00:45:27.480
Yeah.

00:45:27.480 --> 00:45:28.220
Great to have you on the show.

00:45:28.220 --> 00:45:28.940
Bye everyone.

