Hey, all Michael here. Thank you so much for listening to this episode. Before we jump right
into it, I just want to make a quick announcement. I'm sure you've noticed that we've talked about
certain people being on the live stream or the live chat. And I want to make sure you know how
to get to that if you're interested in being part of the show. So if you just go to pythonbytes.fm
up in the menu, there's a live stream link, click on that, it'll take you over to our YouTube
channel where you can subscribe and get notified about upcoming live streams. Most people just
listen to the audio and that's fantastic, but it's really cool to be able to interact with
some of the audience to get that broader perspective. So hopefully we can see you on
the live stream recording sometime. Either way, so happy to have you here. Enjoy the show.
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 230 recorded April 21st, one day before Earth Day, I guess Earth Day Eve, Brian,
2021. I'm Michael Kennedy. I'm Brian Okken. Hi, and I'm Peter Kazarnoff.
Hey, Peter. Welcome to the show. So good to have you here.
Yeah, thanks so much for having me. So I work as an instructor at Portland Comini College and I teach
engineering. And I also blog at Python for undergrad engineers. And I'm a book author too. So if you're
interested in like that NumPy, Jupyter, kind of Matplotlib sort of stuff, that's the kind of stuff that I'm
into.
Yeah, fantastic. You do like engineering work at the local university, right?
Yeah, at the local community college. And that includes teaching Python in our engineering
programming class.
Yeah, awesome. Well, you've spoken at the Python, Portland Python meetup. You've been on Talk Python
to me. Now you're on Python Bytes. You're making the rounds.
Awesome. I'm excited to be here. Thanks for having me.
Yeah, you bet. Well, Brian, are you feeling calm today?
Yes.
Feeling a little chill?
Keep calm and program in Python, right?
Right.
Yeah. So this was suggested by Renz Demondahl, something like that. Cool name. This is a site,
but we've covered some of Vincent's stuff before. This is a site by Vincent Wormerdam called
comcode.io. And what he's got is he's got a whole bunch of, basically a whole bunch of tutorial
videos on software topics. But what I, and there are little tutorials to go with them. I checked
out the, there's a whole bunch of stuff. There's a pie test, there's rich data set and others.
I was checking out data set this morning and I got kind of hooked and I watched like the entire
series because it took like 20 minutes or something like that to like watch all of them. It was pretty
quick. And, and I kind of like the minimalist, it's kind of the minimalist style. It's a, it seems
to be a balance of like, not just overview and not a deep dive, but somewhere in between.
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
data set just really quickly. So the data set one, I started with a CSV file with a bunch of data in it,
turned that into a SQLite database with a tool that he pip installed, use data set to open that. And that
opens a server on your own computer. And then you use that to explore the data and then used a plugin to
visualize the data with plots and charts and stuff. And then showed us how to like, actually just use
raw, see, see what the exploration is in raw SQL and see what that looks like. And then, and then
take that, take it. But one of the things is it's a, it's like a little service. So you could share that
on your, in your internal network with somebody else, to look at it. But, the question of
it's raw SQL should really let raw SQL be run. And he said, yeah, it's fine because, what data set
does is open up the, SQL database in a read only mode. So you can't write anything. So you're safe
there. You can't delete anything or anything. Yeah. And this is interesting in that it's like really
intended to be a hundred percent shared data. And like you said, it's read only. So little bobby tables
won't be a problem. Exactly. But, and then, then there's a couple of buttons that are like Jason or CSV,
but they actually open up, they just open up queries and you can use those, as a, an API,
into the data and you essentially have just with the data set have had, have a API that you can use
directly for some, something else then. And then he's like, okay, well, with this is good enough.
Could you stick it out on the cloud? And apparently data set has a tool to do that. And you can just go
ahead and create a Docker around it with a couple of commands and stick it on a, stick it on a cloud
service. I was just blown away at how much you can do with data set and just watching somebody play
with it is good. And like I said, it's not a complete data set tutorial. It's just a
scratch in the surface a little bit more than scratch in the surface, seeing what kicking the
tires sort of video. So it's neat. Yeah. Cool. Yeah. It seems really neat. And there's a ton of
small little tools and things you can go explore there. So yeah, nice, nice, nice. All right.
Peter, what do you think about this? Well, I loved it. I think this is a great resource, for
students too, cause they're all free. And the one I really liked was the one on SimPy,
which is doing symbolic math, with Python. And that's kind of a confusing topic because there's
like a difference between using the regular square root function that'll give you a float as an output
compared to like the SimPy function, that is a symbolic math representation of, a square root.
And, I was, I was hoping maybe it would be so like the ASMR videos that there would be very calming
music, while you were doing it. but, there wasn't, the instruction though is really
calming and really, really good. So I'd love to share this with students.
Yeah. Very cool. Very cool. Nice. All right. On to the next one. This one comes to us from
Brian's skin pointed out that here's a cool thing that I don't believe we've spoken about yet. So
Brian, thank you for telling us about natural sort or Nat sort. Have you guys heard of this one?
No, I've never seen this before. So one of the things that can be frustrating is if you sort with
something that is really strings, but it has some other meaning like version numbers. Like if I have a,
a bunch of strings and they'll have version numbers. And I say, sort that of course it's going to go,
you know, like two dot zero, then 12, then 100, you know, or maybe 100, then 12. Like it's the way
it sorts will just be, I guess, lexographically. It would be nice if I could just go to certain
things and say, sort it. And it automatically kind of understood, oh, there's, there's separators and
there's like meaning between these. And if they're numbers, you know, look at the number part and then
sort based on the size of the number, not the, whether it starts with a one or a two,
but if it's a two or a 10, right? And so that's what this simple little library does is it's simple,
natural sorting in Python. So one cool example, this one actually might be interesting for you,
Peter, for your students is if I had this, a list of strings, like quote, two feet, seven inches,
one foot, five inches, five feet, two inches, and so on. If I sort it is just going to go one foot,
10 feet, two feet, two feet, seven feet, right? You know, the lexographical version, but if you natural
sort, it does exactly what humans would do. One foot, five inches, two foot, seven inches, two foot,
11 inches, seven feet, six inches, and so on. So that's pretty cool, right? You can just go and
basically use NAT sorted instead of sorted, right? The sorted built in, just NAT sorted. And you could
also import NAT sorted as sorted if you wanted to go off the hook and just, you know, kind of globally
replace that on a file there. So there's different things that you can do, you know, not just that one.
You can sort versions, you can sort file paths, real numbers, like scientific numbers, you know,
1.72 times 10 to the 20th or whatever, that kind of stuff. You do locale aware sorting, like
basically case incentive sorting. You can customize it, you can sort custom types, but then if you select
a key out of the, like say a class or an object, a bunch of the instances of that class, then that key
would then be naturally sorted as if, as this thing does. So here's an example with versions,
like version dash one dot nine, version dash two, version dash one 11. And of course it sorts the way
humans would sort it, right? One nine, one 10, one 11, then two O and so on. That's pretty cool.
You can get a sorted directories. Now, some of these come from not the same NAT sorted, but like,
for example, there's an OS sorted and there's for the real numbers, there's an real sorted and so on.
Um, there's ways to customize it. There's ways to build like custom sorters. Like I create an
algorithm, which is like real or and locale and ignoring case and all of these things, right?
Like throw them all together with like the, or bitwise or operator and so on. Yeah. And I think
that pretty much covers it, but it's, it's pretty neat. it has like some cool debugging stuff.
Z docs is asking if it, NAT sort handles non ASCII Unicode. I think so. there is,
talk about that actually working with bytes directly, but I think it's works on strings
itself. So I don't know why it would necessarily be different. I mean, unless you try to treat the
Unicode as binary, then that might be something else, but yeah, thanks for that. One other thing
that's interesting, just looking through here, I'm like, okay, this is neat. kind of cool.
Here's how you customize it. Oh, wait, there's this thing called fast numbers. Most efficient,
the most efficient sorting can be done if you install the fast numbers package, which apparently,
you know, it has nothing to do with this, right? But it's something that it uses. And what fast numbers
does is it allows you to have different behaviors for like float and end and stuff parsing strings into
floats and integers. And apparently it does it faster as well. So for example, instead of saying
float of a string, that is a floating point number, you can say fast float of that. And of course you
could go crazy and import as wipe that out. Right. but you can do things kind of like the dictionary
that get, so you can say fast float, try to parse this, but instead of throwing a value error, whatever
type of exception it is, you can say the default that I'm going to get, if I can't parse it as zero
for bad input or, you know, what number will I treat as not a number and all sorts of interesting stuff.
So if you're doing parsing of numbers, fast numbers is kind of cool.
Yeah. I got to check this out. I do that all the time.
Yeah. Yeah. That's, that's cool. So I think this is just, you know, that's not the main topic,
but I do think it's a neat one there. So anyway, yeah, people who do sorting of strings and stuff,
they should check it out. And Zdocs is talking about like sorting, like a umlaut over a,
I don't know the name of the little circle above a vowel, but there's the locale aware sorting.
And so you can give it, you can give it like the Swedish locale. and I, I bet it does sort
it. Okay. But I don't know for sure. I haven't, I haven't actually tested the Swedish locale,
but you know, that's, it does seem to have like something that addresses that.
Nice. Nice. Yeah. For me, the use case, is always the one versus zero one. So if I've got
something that's 10 and something that's one, the way that that automatically gets sorted. And then,
uh, I don't always like putting the zeros in front. so this seems really useful.
Right. You don't have to left pad it type of thing.
Yeah, absolutely. Well, how about Mars Peter?
So how about Mars? So this is something I'm super excited about, the Mars perseverance rover
uh, the rover, landed on Mars in February, but just a couple of days, before
this recording on March 19th, the Mars helicopter, which is called Ingenuity,
lifted off for the first time. And so this was the first power controlled flight on another planet,
uh, which is so cool. and you can go to the NASA website and take a look at the Mars helicopter,
uh, like lifting off for the first time. It's kind of got two counter rotating rotors and a little
solar panel, up at the top and a little antenna up at the top. and the cool thing about this
is that, some of the software, that's running the Mars helicopter, is, built with Python.
Uh, it's also totally open source. so, on GitHub,
there's, this package for something called F prime and NASA writes it F, apostrophe and,
uh, F prime is the flight control software, that the Mars helicopter uses. and if you look at
the GitHub repo, you'll notice in the installation instructions, that, you have to make sure
that you have Python three and pip installed, in order to, install F prime, the Mars helicopter
software. so I just think that that's super, super neat, that, Python's being used as part of the,
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?
Um, 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.
Um, 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.
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.
Yeah. And, apparently I, 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.
No kidding. You have one of these badges.
Yeah. Let me pull it up.
Oh my gosh.
Oh, that is so awesome.
Uh, 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.
Oh, where is it?
There it is.
Oh my gosh, you have the badge.
Dude, I am so jealous.
It's pretty cool.
Yeah, that's really cool. So one of the things I was going to, talk about is some extra, extra, extra stuff, but,
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.
So,
I rem mentions on Twitter that,
um,
uh,
points out for us.
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,
but now it sucks on multiple planets,
which is pretty awesome.
And then it goes off on this long,
like this,
he goes for a long thread of like how it's being used,
what it's being used with.
And I linked to this in the show notes.
There's like a ton of stuff you can follow along there.
And then also,
um,
a lot work points to an article over here that talks about this badge that you were referring to,
Brian,
and the various people were getting it and the repositories that qualified for it.
So Linux F prime CPython,
Voto three,
Voto core,
see what else jumps out at me.
That's Python,
a map plot,
lib,
numpy,
open CV,
Python,
um,
Python date util requests.
Yeah.
So Kenneth writes saying how humble he was to see that S three transfer,
which I use.
I mean,
the list is like,
this is a list on GitHub,
but this is actually like a list of many of the big hitters of Python.
And it talks just about,
I mean,
it hints at how important Python is for this whole mission is awesome.
Yeah,
that's great.
Cool.
Yeah.
Yeah,
absolutely.
Absolutely.
Super cool.
All right.
Um,
I guess real quick before we move on to the next thing,
just point out that this episode is brought to you by us.
So if you want to support us,
check out the things that we're doing,
like check out the Talk Python Training courses,
check out Python,
uh,
Brian's high test book and things like that.
And,
uh,
yeah,
Anthony Lister gives you a little shout out there.
Well done,
Brian.
You're basically,
you're basically,
basically an astronaut.
You know what I mean?
Uh,
well,
it's,
and it's,
I got,
I'm almost embarrassed though,
because I,
I like,
I contributed one test to a defect report,
a defect report,
and then wrote the test to,
to show the,
the defect.
That was my contribution to py test,
but yeah.
All right.
That's okay.
It's all good.
Cool.
All right.
Take us back to earth.
Uh,
well,
let's,
uh,
um,
so we,
there's a lot of cool projects,
uh,
in Python.
One of the cool projects is FastAPI,
and that's built on pydantic and pydantic is used by itself for lots of stuff.
And anyway,
why am I talking about this?
Well,
one at school,
but we've talked about it before,
but this topic was,
we've been following it anyway,
but it,
I gotta give a shout out to the,
the person's name that,
that mentioned it to us.
Somebody named angry dwarf said we should cover it.
And I just love that he had his,
his name in his email was angry dwarf.
So cool.
Thanks angry dwarf.
Uh,
anyway,
it's been a bit of an emotional rollercoaster,
but the punchline is pydantic FastAPI and typer will work just fine in 310.
And they'll work in 311 and they'll always work.
They're going to work forever.
I mean,
I don't know that for sure,
but that's my,
that's my guess.
So why am I saying that people should calm down and it's going to be fine?
Because people were freaking out last week.
So,
uh,
people were freaking out that maybe fast,
FastAPI and pydantic weren't going to work in 310.
Um,
including the creator of pydantic,
not just random people on the internet,
like involved in the projects.
Yeah.
They were like,
this is,
this is going to be not good.
Okay.
So this starts,
um,
okay.
I'll dump,
jump into a little bit of the details.
Uh,
there was a,
there's a PEP 563 that was titled postponed evaluation of annotations.
Um,
and there was a little bit in there and this,
this went into Python 3.7 and this said,
uh,
in Python in,
it went into three,
seven,
but there was a clause in there that said,
um,
in Python 3.10,
the functions and variable annotations will no longer be evaluated at definition time.
They'll be lazy evaluated later.
Um,
and,
or something like that.
I didn't read it that closely,
but that's the bit that,
that makes people scared about 3.10 and 3.10 is coming out like really pretty soon.
So,
um,
does that mean that Pydantic and,
uh,
in FastAPI,
they kind of rely on this and they're not,
are they not going to work in 3.10?
Um,
and it turns out there was some corner cases.
There was,
at least that's my understanding of it.
Um,
uh,
Sebastian Ramirez who did FastAPI,
he wrote,
um,
uh,
there's been some incorrect conclusions that FastAPI and Pydantic can't be used with 3.10.
Let's be clear that up.
The worst case scenario,
which hasn't been decided is that some corner cases would not work and require small refactors.
So the,
and then he goes on to show the refactors.
So the refactors really are just,
um,
there,
uh,
that if you define your types within a function,
they can't,
you won't be able to do that.
You got to pull the types out of the function and put it,
uh,
at a top level or something like that.
And even if you're stressed about this,
you can try it out by saying,
uh,
in the code you have,
you can,
uh,
say from,
from Dunder future import annotations,
and that will show you what the future implementation is.
So you can try it out and see if there's any problem.
But then we got,
um,
and I don't have a link to this,
but we had a,
uh,
a notice from,
uh,
who is it from?
I'm missing the name.
Anyway,
I've noticed just the other day that basically said they're not going to do it for 310.
So basically they're putting the brakes on 563,
the,
the switch over in 310,
uh,
for 310,
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.
So they got another year,
um,
to figure out what's,
or approximately we,
as users,
I have another year to,
to not worry about it.
But,
um,
I,
but the steering council,
they know what they're doing.
They're aware of this.
They're aware of this issue.
Um,
they're aware of the,
that everybody loves FastAPI and Pydantic and things that are built on that.
So,
um,
there's going to be a solution and I think people should just trust the people involved that things are going to be okay.
So anyway.
Yeah,
it's,
there's a really,
uh,
what's the right word?
Energetic,
energetic,
uh,
conversation over on the,
uh,
Identic issue tracker.
And it just closed a little bit.
Um,
just a little bit,
you know,
last six days just recently closed,
which is good,
but it was basically important.
Pep five,
six,
three,
and six,
four,
nine in the future of Pydantic.
And I just had salmon Samuel Colvin,
who is the creator and maintainer of Pydantic on talk Python.
That episode should be out this week,
actually.
But on there,
he talked about how some things looked very bad for how things work,
but then they've,
they've talked it through and it looks like some of the changes are not going to be super significant.
Basically the problem was a lot of the type annotation evaluation is no longer concrete types,
like a Python type.
and say,
give me your type.
What are you?
It was converting those to strings so that they could be evaluated more quickly.
But then in doing so,
if I have a string called customer,
that's very different than having the actual customer class that I can then use for type information.
So then how does Pydantic go back and find the customer class,
like throughout all the things,
what if there's two of them and so on.
So that was the concern.
And it sounds like it's,
things are looking better.
So that's all good.
So Brian,
what's kind of the take home message of this?
Well,
one of the things,
I don't know.
My take home message is the people involved,
like Samuel and Sebastian and the steering council,
they're talking with each other.
They know what's going on.
And occasionally stress happens as to what's going to,
you know,
I don't know how to fix this,
but they,
they're,
they're talking with it.
I'm going to try as a,
as a bystander,
I'm not going to jump on the bandwagon and try to like,
one of the things that,
that came out was people,
some people started sending a bunch of emails and jumping on the threads and
you have to fix this.
You have to fix this.
And that doesn't help.
It just adds noise and adds work to the steering council.
So making,
I think it's fine to make sure that it's addressed,
but it's going to be addressed.
And I don't know.
I,
I actually was one of the people cause I,
I use FastAPI.
I use typer.
And I was like,
uh,
do I need to be worried about this?
And,
and especially somebody using it,
just take a deep breath and realize that something as large as FastAPI or
pydantic is somebody's going to figure out how to fix it.
Um,
hopefully.
Um,
I mean,
it's possible that something might break.
I mean,
that is the dynamic language.
I just don't,
there's,
there's enough people paying attention that,
uh,
I don't know.
That's probably a long winded takeaway.
It's probably,
it's like a repeat of what I just said,
but anyway,
so if you're using FastAPI right now,
there's not a whole lot to be worried about.
Nothing to be worried at all.
Um,
and if you are worried about it at all,
um,
you can use this,
uh,
future import thing to try out your code to see what it'll be like in the
change.
And even if it,
even if that breaks,
they'll probably fix it by three 11.
Yep.
And then,
yeah,
Nick Harvey threw out that you can test this from future under future right
now.
So that's cool.
Yep.
Cool.
All right,
Brian,
I tried,
I tried to keep it down to just a couple of things,
but then they started piling up in my extra section to where I don't know,
we wouldn't be getting through it in a reasonable amount of time.
So welcome to another section of extra,
extra,
extra here all about it,
but minus one extra,
because I already told you about the one with the package list and so on.
All right.
So let me take you through a couple of things first,
uh,
here.
Did you know we're live streaming right now,
by the way,
on by them bites.
Dot.
FM.
Hello.
Uh,
by them bites.
Dot.
FM.
I say that cause there's a huge banner on the site.
I pulled up.
We had something,
um,
that would let us get some real time analytics and sort of know where people
coming from,
you know,
advertisers,
some ask sometimes ask for that.
But what I've noticed is a lot of the new browsers,
a lot of the good ones anyway,
are very much blocking those things.
Right.
So for example,
Firefox automatically blocks our analytics.
Anyway,
brave automatically blocks our analytics anyway.
So we're not getting a lot of information back and we're getting,
I don't know.
My theory is about 40% of the traffic is being measured,
which gives you some stuff like what countries people are coming from and
whatnot.
But I decided,
you know what?
We already have our ads.
Like in our ads,
we do no tracking,
no retargeting,
no cookie setting and so on.
So why don't we just do that with our analytics?
Like we don't,
how much do we really need that?
Anyway,
we got downloads and so on.
So if you go over here and you click on the little shield,
we now have a perfect privacy score on Python bytes.
Oh,
very cool.
Check this out.
Tracking content,
none detected,
no social media,
no cross site,
no fingerprinters,
no crypto miners,
nothing.
And same by the way,
for Talk Python Training and talk Python itself.
And so on,
no known trackers to Firefox were detected on this page.
Cool.
Huh?
Yeah.
I didn't know about that little badge thing.
Yeah.
You get,
it's like a security score.
Like how much is blocked?
How bad is it?
And so on.
But because so many of them are blocking them by default,
I'm like,
you know,
like,
let's just take this stuff off.
Right.
It's somewhat useful,
but not that useful.
Related to that.
Have you heard of this flock federated learning of cohorts?
Have either of you heard of this?
No,
no,
I'm worried that joke is coming though.
No,
this is,
this is just Orwellian business right here.
Like it,
it has this eye looking at you.
So there's an article on Ars Technica.
Everybody hates flock.
Google's tracking plan for Chrome ads.
The EFF has a beautiful article that you really should read.
If you at all care about the future of the web,
the future of tracking the future of privacy called Google's flock is a
terrible idea from the EFF.
And they've got some pretty insane quotes in there.
For example,
one of them from the EFF is Google's pitch to privacy advocates.
I'll tell you what flock is in just a second,
but Google's pitch to privacy advocates is a world with flock.
Is that the world with flock will be better than a world that we have today
where data brokers and ad tech giants can track and profile with impunity.
But that framing is based on a false premise that we have to choose between old
tracking and new tracking.
It's not either,
or we can reinvent the world where we're not being tracked in every way and
sliced and diced and,
and so on.
And I totally concur with that statement.
So yeah,
check this thing out.
This Google's flock is a terrible idea.
The idea is instead of having third party cookies,
which,
so if I go to CNN.com,
you know,
we could try that.
It probably won't show up here because I,
I have it blocked at like a higher level.
So now it's not showing up here.
How many things get blocked.
But anyway,
if you would go there,
very likely they would set a cookie from say,
double click that you saw this ad,
not this ad that you saw this article.
Then you go over to,
I don't know,
your dentist or,
or your psychologist or whatever.
And then they also can have this thing.
So they actually were just reading this article basically,
right?
Like they can,
they can profile what type of person you are.
very,
very fine grained through these cookies.
So flock,
you know,
basically Google said they're going to get rid of these cookies because as I
already pointed out,
everyone's blocking these third party cookies,
Firefox,
brave VPNs and so on.
So what do you do to keep the ad retargeting happy?
And the,
like the super analysis of what everyone's doing happy.
You come up with a new idea.
The idea is your browser is going to use machine learning to put you into
these cohorts.
Like,
are you a young female lesbian?
Are you a divorcee?
woman in her forties?
Like what group are you in?
And then every advertiser that you visit can basically receive like,
Oh,
what,
what kind of person?
Oh,
this is a divorcee who's coming.
Even if they've never been to your site or anything,
right?
They,
they,
you sort of get your flock advertised to you,
your,
your group.
It's not private data,
but it's pretty private.
It's,
it's like this group.
It means a lot.
Anyway,
I thought that this was a pretty big deal on the web and people should check
it out.
So I put that out there for,
for you all to consider.
What do you all think?
Like tracking is a terrible idea and it's mean too.
I don't have the link to it,
but I was reading an article recently about how somebody had,
I don't know,
they,
they were expecting a baby.
So they were looking up all sorts of baby stuff.
And then they lost the baby with the miscarriage and they still got tracked
for that.
And so they get,
they get stuff.
And then somebody,
a couple of stores figured out what their address was and figured out when
the due date probably was.
And then they get like,
they keep getting these things like your child's probably about four now.
Maybe they need a bike.
And they're just,
that's terrible.
Yeah.
So.
Yeah.
But here's,
here's part of the thing.
Like all this is not so good,
right?
Like,
I mean,
they're both not good,
but how do you clear your flock?
Right?
Like I can hit command shift,
delete and clear my history,
my cookies.
How do you clear out your flock?
Like you're just,
no,
you're just a divorcee and it's recomputed every week.
So like it goes,
like you could actually track like the stages of somebody's life,
the different groups.
They bet it's,
it's super bad news.
So anyway,
I think this,
we don't need it at all.
I mean,
we don't,
yeah,
we don't need it at all.
People did advertising in magazines and newspapers for a really long time with no
tracking.
Yep.
And as I've already pointed out,
so do we not in newspapers,
but nonetheless,
yeah.
So anyway,
people should check this out.
That's worth pointing out.
And then also kind of related to that.
I recently started using Nord VPN and it's not an ad.
I know they sponsor a lot of podcasts,
but it's not that I just started using it.
It's super cool.
You can set this up to automatically,
like when you log in,
just join your VPN.
Like I go to Seattle right now.
And it also,
it does all that cookie blocking and all those different kinds of things,
like automatically at the network level.
So now for example,
I,
it automatically does that.
When I turn on my iPhone,
it's just always on the VPN.
And if I fire up an app that doesn't allow ad blocking,
that app is already blocking ads because the ads are blocked at the network level.
So for example,
I've used like flipboard or like Apple news,
like the ads are blocked.
Beautiful.
So anyway,
that's worth throwing out there.
And yeah,
that's,
that's all my extras,
but kind of a privacy intensive one,
but I thought they'd all kind of go together.
Well,
so I ended up making that a thing.
And then Alexander,
uh,
Simonov says,
I believe that a human classifier trackers will backfire.
Yeah.
I think there's a lot,
uh,
I agree with you,
Alexander.
And I think there's a lot of negative effects.
Like for example,
you can tag target and disadvantage marginalized groups.
And Google actually talks about like when they detect that enough marginalized groups have been harmed,
they'll recompute the flock.
It's like enough.
Yes.
Yeah,
exactly.
It's,
it's really Orwellian.
Uh,
I'm not,
you know,
trying to be hyperbolic when I say that like actually is.
So,
um,
people should check that out and just be aware.
And,
uh,
yeah.
Peter,
you want to talk about your last item here?
Uh,
Jupyter book.
Yeah.
I'd love to talk about Jupyter book.
So there are a lot of static site generators,
uh,
for Python as well as for other languages.
So this is like a good party game.
How many static site generators can you list?
Uh,
like Sphinx,
Pelican,
MK docs.
Do you have any other ones off the top of your head,
Michael?
Oh,
I think probably is ghost one.
I think ghost might be one.
Um,
like Hugo,
uh,
all of,
all of those.
Uh,
but I do a lot of my work in Jupyter notebooks.
Uh,
uh,
when I'm working with students,
a lot of our notes are in Jupyter notebooks.
And,
uh,
this,
um,
package called Jupyter dash book is a Python package that allows you to take Jupyter notebooks and build static sites out of them.
Um,
and primarily it's designed so that you can,
yeah,
you can build free online books,
uh,
based on Jupyter notebooks,
uh,
but also,
uh,
markdown files.
Um,
so I've got like a little book going.
You could almost put like a little scientific website that has some like analysis and various things.
You could kind of put that together as a series of notebooks and publish it,
right?
Yeah,
yeah.
and you can even do it with interactivity too.
So this is part of the executable books project.
And kind of the idea is that you'll be able to,
uh,
interact with things like plots if you make them with,
uh,
bouquet or altar.
Um,
and the code output that you see in the Jupyter notebook that actually came from the code that was written in the Jupyter notebook.
Um,
and I think that's pretty neat,
uh,
like as well.
Um,
and on the,
um,
docs,
there's like this way that you can automatically deploy your book to GitHub pages for free,
uh,
which I think is really nice.
And then,
uh,
there's also a,
um,
uh,
get hook so that you can,
uh,
hook into,
um,
GitHub and then automatically every time that you push,
uh,
your book gets republished.
Um,
so every time you change that notebook and you push up to GitHub,
now your book gets republished with all of your new content.
Uh,
and I think that that's really,
really neat.
It allows you to make like revisions and publish,
uh,
super easily.
Um,
so the,
the,
that's cool.
And you could probably,
you could probably put it on a specific branch,
right?
So if you like,
you make all your changes and then you're like ready to push out the next,
version of,
of the book,
you could like push to the main deploy branch or whatever.
Yeah.
I mean,
in,
uh,
your GitHub action,
you could set whichever branch you want is the one that kicks off,
uh,
the action that builds,
uh,
your book.
Uh,
one thing I'm kind of interested in is could we make a GitHub action that
would kick off a build of the PDF of your book.
And then you could have like a releases,
uh,
page where it would be like the,
uh,
PDF if people wanted to print it out or,
you know,
kind of had more of a hard copy of it.
Um,
I think that's pretty cool.
And like the book gallery,
uh,
that they have,
they've got some awesome titles that they have listed,
uh,
like geographic data science with Python.
That sounds interesting.
Quantitative economics with Python,
uh,
the UW,
uh,
data visualization curriculums from the university of Washington,
how to use a lot of Python,
uh,
plotting tools.
Oh yeah.
This looks super like it came out of Jupyter,
but it's a,
it's a legit website.
It has a read the docs type of feel.
Yeah.
Yeah,
definitely.
And up in the right-hand corner of these,
you've got these,
uh,
buttons that you could,
uh,
like download a PDF or download the notebook.
You can launch a bender instance so that you could like run,
uh,
that Jupyter notebook.
Um,
and,
uh,
you can have a default button that'll automatically take you to
GitHub where that,
uh,
notebook is hosted.
Uh,
so it's,
it's pretty slick,
I think.
Yeah,
this is super cool.
Ryan,
it's a book author.
What do you think?
Well,
it's one of the things that confused me when I was thinking about
this is what,
and it did with Jupyter,
Jupyter notebook in the first place is,
what does a book mean if it's not a book?
Uh,
there's,
I mean,
this,
uh,
idea of a book is,
is it's not a book anymore.
It's a something else.
I never,
I never really got it.
Why Jupyter notebooks went to the,
the,
I don't get the tie in between book and book,
but maybe somebody can explain it to me.
Yeah.
I mean,
it's sort of blurring that like release line,
um,
that it's officially version one of the book and version two of the
book.
If you do it,
every single push is a new version.
Um,
then it's sort of like just rolling like CICD book release,
uh,
which,
which I think is kind of neat.
Um,
but in my area,
teaching engineering,
um,
textbook costs are huge.
Uh,
textbooks can cost hundreds of dollars for college students.
So if there's a way that we can,
uh,
make a lot of,
uh,
open education resources books,
uh,
I think that that would be great,
uh,
for college students.
I really liked the design of having like the table of contents on the
left of the book.
And then on the right,
there's the,
the contents of the individual page.
Uh,
so you can jump to it.
That's a really cool idea.
I actually,
I was joking a little bit.
I really think that would be cool if maybe it already does this,
but if there was a way to,
uh,
turn one of these into a,
um,
into an ebook,
uh,
or a PDF,
uh,
from,
from this.
Where's the Kindle version of this?
Yeah,
exactly.
Yeah.
And I mean,
I'm not even joking.
I think a lot of,
a lot of these sorts of things would be great to be able to throw onto a
Kindle to be able to walk around and read.
So.
Yeah.
You can definitely output PDFs and LaTeX documents,
uh,
with it,
but I don't know about,
uh,
like Kindle ebook,
uh,
format.
Uh,
maybe somebody can like write that in and,
uh,
give them a contribution.
That'd be cool.
Yeah.
Yeah,
for sure.
Sam Morley says having free interactive coding textbooks would be a real
game changer for a lot of people,
particularly somebody find,
uh,
figures out how to make this,
uh,
portable to mobile devices.
Yeah,
for sure.
All right.
A couple other comments,
uh,
also from Sam.
Uh,
he says,
congrats,
Brian,
about your,
your badge.
It's nice to know that NASA does test their software.
I bet they test the heck out of that software.
Yeah.
Before you send it up,
it's got to get tested maybe to a fault.
I don't know,
but it's got to get really,
really tested.
And then also just,
uh,
well,
I'm in the comments,
James Abel.
Hey,
James says,
uh,
and Michael be presenting at the Python meetup tonight.
Yeah.
I didn't necessarily think to cover this cause it's so close to,
you know,
it's like six hours from when I'll be presenting,
but,
uh,
yeah,
I will be doing,
uh,
on memory,
deep dive,
sort of live coding type of thing over there,
the Python meetup in San Francisco,
you know,
virtually because that's the world we live in,
but yeah.
Nice.
Uh,
very cool.
Yeah.
And then John Sheehan says,
it's a short hop from LaTeX to EPUB with Pandoc.
Oh,
yeah.
Yeah.
You may all be right there,
right there.
All right.
Well,
I did my extra section already,
Brian,
you got anything else you want to do a quick shout out to?
Yeah.
Speaking of virtual,
uh,
Python,
the Pycon ZA,
uh,
the South African Pycon is coming up.
Um,
shout out to them.
Um,
there,
um,
I don't,
I don't have a link to them up here,
but,
um,
it's a conference that's going to be on the 7th and 8th of October.
Uh,
it'll be entirely online.
And,
uh,
I was just curious cause it sounds like I was curious about the whole virtual
ness.
It's a little bit early in the morning,
uh,
for us,
but,
um,
they are,
so I had a little bit of an exchange,
email exchange.
They are going to be able to have,
uh,
some prerecorded so you can prerecord your talk if you want to.
So if you're afraid of doing it live in the middle of the night,
um,
don't worry about that,
but they,
you can submit anyway.
And,
uh,
and they're,
they're allowed,
but they'd like to have the,
the author be live while it's playing so they can answer questions and stuff.
And that seems fair.
Um,
the second update is last week we covered dead dependency or dead,
dead dependency.
I don't,
I don't know how to say that.
Dead dependencies.
I don't,
I don't know.
Um,
and,
uh,
so one of the things we said was it's too bad that it doesn't cover,
it doesn't do pipe project.toml in within a day,
it was,
uh,
supporting it.
So,
um,
the,
there was an update the next very next day that,
uh,
it supports,
uh,
both flit and poetry with pipe project.toml.
and since it's doing pipe project.toml,
I'm,
I imagine it'd do,
uh,
set up tools as well.
Uh,
if you're doing pipe project.toml set up tools.
So.
That's so awesome.
Well done folks about updating that straight away.
I mean,
isn't it amazing,
Brian?
We'll,
we'll talk about random things like this is cool,
but,
and then like the next day we get,
so like the dead dependencies folks fixed,
you know,
added pipe project.toml support.
I talked about being is it,
Oh,
it needs a way to have indexes next episode.
Oh,
here.
They,
they heard us and they added indexing features and so on.
Part of it's the podcast.
And also part of it is,
uh,
since I'm doing research for the podcast,
I just reach out to people more often and say,
I'm,
this is a cool project,
but it doesn't do this.
Is there plans to do that?
And,
and you'll,
I mean,
project owners love to hear back from people.
And,
and,
uh,
even if I wasn't,
I think other people should do that more often.
Don't just complain about something,
ask somebody if it's going to be supported or if you can help out.
So.
Yeah,
absolutely.
Peter,
anything you want to throw out there?
And then we'll extra as people tell people how they can find your book or
something like that.
Yeah.
If you search for problem solving with Python,
uh,
on Amazon,
uh,
or there's a free open education resources version online too.
Um,
and one little shout out I got is our community college is looking into how to
integrate artificial intelligence into,
to curriculum.
So if anybody's in the Portland area that does AI stuff,
reach out to me.
Um,
and I'd love to talk to you about how we can integrate AI into community
colleges.
Oh yeah.
That'd be really cool.
Yeah.
It's a super fun project.
Awesome.
It does sound fun.
You know,
ready for a joke.
This is a team effort here.
Yeah.
Um,
I'm going to close the other tabs.
There we go.
So that's a little large.
This is again,
one of these funny code comments.
Uh,
I,
I guess I'll go last Brian.
You want to do,
uh,
Oh,
let's have Peter go do the first one.
So these are,
these are from,
uh,
comments that were found in real codes supposedly.
Uh,
and then they're just kind of funny.
Peter,
you want to do a first comment?
All right.
Our first,
our first comment is dear future me,
please forgive me.
I can't even begin to express how sorry I am.
And here we go.
That's great.
All right,
Brian,
this is one that,
um,
I don't know.
It's here to take on the optimist.
I don't know.
What would you,
I'm not sure how you put this,
but it's a exception handling block.
What do we got?
Uh,
okay.
So yeah,
uh,
a try block with a catch,
uh,
sequel exception and a comment.
That says basically without saying too much,
you're screwed royally and totally.
And then,
and then another catch exception,
like a raw exception says,
if I thought you,
if you thought you were screwed before,
boy,
have I got news for you.
That was my favorite.
That was so good.
And I'll just close it out with one of these ones where you just kind of have to
accept life,
I guess.
And it says,
this code is crap.
This is crap code,
but it's 3M.
And I,
I need to get it working.
Yeah.
Oh boy.
Okay.
I wanted to share one more.
So,
um,
cause I was,
I was talking with my coworkers the other day and we were talking,
somebody met,
somebody actually mentioned how,
how hard,
uh,
that we had a problem with cash and validation.
and it reminded me of that whole joke of,
uh,
there's only two hard things in computer science,
cash and validation and naming things.
Um,
and so I went to look it up and then I found this,
uh,
this other joke.
Um,
there's two hard problems in computer science.
We only have one joke and it's not funny.
Oh,
that's great.
I love it.
All right.
Uh,
we'll round it out with,
uh,
Nick Harvey here says exceptions while handling exceptions are just the best.
Indeed.
They are.
Yes.
Indeed.
They are.
All right.
Well,
Brian,
it's great to chat with you and talk by them things as always.
Good to talk to you.
Yeah.
And Peter,
thanks for joining us this time.
Thanks for having me.
Yeah.
Great to have you on the show.
Bye everyone.