Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
Hello and welcome to Python Bites
0:02
where we deliver Python news and
0:04
headlines directly to your earbuds. This
0:06
is episode 425 recorded March 24th
0:08
2025. I am Brian Ockin. And
0:10
I'm Michael Kennedy. We are excited
0:12
to announce that this episode is
0:14
brought to you by posit connect.
0:16
Listen to their segment later in
0:18
the show. You can also connect
0:20
with us and if you go
0:22
to our show notes and... Visit
0:24
all the links we're on, Blue
0:27
Sky and Mastida, mostly lately. And
0:29
if you'd like to actually thank
0:31
you for listening, but also if
0:33
you'd like to watch us live,
0:35
you can check us out at
0:37
PythonBites.fm. slash live, usually Mondays at
0:40
10am, but it's spring break this
0:42
week, so we're doing a little
0:44
early. And then finally, if you'd
0:46
like to have all the links
0:49
that we talk about, delivered plus
0:51
extra information delivered right to your
0:53
inbox. and sign up for the
0:55
newsletter. We don't spam you, we
0:57
just send you the newsletter. What
1:00
do you got for us
1:02
today, Michael? I want to
1:04
kick off with a Twitter
1:06
thread of all things. And
1:08
this one's pretty interesting. So
1:10
Armin Ronaker, original creator of
1:12
Flask, put out a question.
1:14
And it got a lot
1:16
more. attract a lot more
1:18
attention than I would imagine
1:20
it justified. And I just
1:22
I found it it's so
1:24
simple and I just found
1:26
it pretty interesting. Okay. The
1:28
question is, if you use Python, but
1:30
you don't use UV, why? You don't
1:33
use it yet, why? So I got
1:35
like 215 responses, almost a thousand likes,
1:37
things like that. So I want to
1:39
just call out some of, I'm not
1:41
going to go read all 215, top
1:43
level. He says, well, I'm going to
1:45
call it some of the ones that
1:47
I thought were interesting. And just get
1:49
your thoughts, Brian, as well. So for
1:52
example, someone said, I'm not going to
1:54
also give attributes because there's a bunch,
1:56
it'll take forever. So someone said, I
1:58
get it replaces PIP and PIP. and
2:00
V, but should I use it instead
2:02
of the built-in Python dash M, V
2:05
and V, V and V, right? Yes,
2:07
yes, you should. Yes, yes, you should
2:09
also do that. The reason I'm calling
2:12
this out, the reason I'm calling this
2:14
out, the reason I'm making this a
2:16
topic is there were a lot of,
2:19
I think a lot of misconceptions or
2:21
a lot of people are like what's
2:23
UV? VE&V is, well, what if you
2:26
don't have Python? Python, V and V,
2:28
we'll just say error, no Python, right?
2:30
UV says, oh, well, why don't we
2:33
just get you the latest version of
2:35
Python? Or you can say, 312, or
2:37
311, or whatever version you want, or
2:40
specific minor version, right? Or build version,
2:42
you write, 131, instead of 3132, whatever,
2:44
right? So it frees you from even
2:46
having to worry to worry about having
2:49
Python, Two new computers, I got a
2:51
new laptop and a new Mac Mini.
2:53
And I have not installed Python on
2:56
it. And I'm actually, was a little
2:58
bit bugged when something I had to
3:00
brew installed, installed Python. I'm like, darn
3:03
it, you're messing up my flow, right?
3:05
I don't want any Python in here,
3:07
other than virtual environments. And I want
3:10
those to be managed by UV. And
3:12
the thing is, it's two seconds. Like
3:14
with Pi, E and V. What it
3:17
does is it downloads and it builds
3:19
and it builds and it, which if
3:21
you don't have it can take. 10
3:24
minutes or more. With UV, it takes
3:26
two seconds, right? It's a thing of
3:28
beauty. Well, it's just ran into the,
3:31
the build, a problem with the build
3:33
recently because if the, there's, there's, there's
3:35
issues, especially on Windows, when if you've
3:38
got your dependencies mucked up somehow, it
3:40
can cause you to have to recompile
3:42
some stuff, and, and then you have
3:45
to make sure they have the right
3:47
like compiler libraries on your computer and
3:49
stuff like that. So that's a mess.
3:52
Someone says, but I need Python installed
3:54
to make. Python programs? I don't know,
3:56
yes, but see previous comment. But I
3:59
mean it is installing it, using UV
4:01
to install, like it isn't installing it
4:03
like you normally think, but behind the
4:06
scenes UV is putting it on your
4:08
computer. This is an interesting one. I
4:10
want to hear your thoughts on this.
4:13
I'm anti this only because my workflow,
4:15
not against the person who made the
4:17
comment, because I don't use it because
4:20
it places the VENV folder inside of
4:22
your project. And I can't run executables
4:24
from there due to corporate policy, many
4:27
such use cases. No idea why Estril
4:29
doesn't address this with more urgency. And
4:31
someone responded, that sounds like a bad
4:34
corporate policy. Also it does, you can
4:36
configure it to do that. Yeah, exactly.
4:38
There's an environment variable. You can set,
4:41
have it, put it in somewhere else.
4:43
Now, one of the things that made
4:45
me never ever adopt Conda, is if
4:48
you would go and create a Conda
4:50
environment for a data science project, it
4:52
puts it into some hidden folder. inside
4:55
of your profile instead of inside your
4:57
project. So I would go to a
4:59
project. I'm like, did I, you know,
5:02
a couple months later, I'd be like,
5:04
did I ever make a virtual environment
5:06
for this? Maybe. But then you got
5:09
to say, conda activate and name the
5:11
virtual environment. I'm like, what did I
5:13
call it? You know what I mean?
5:16
They're like, it drives me crazy. And
5:18
with it being inside the project folder,
5:20
you can look, yep, there's a virtual
5:23
environment there, I'm good to go. or
5:25
a regular LS or whatever, that, hey
5:27
look, it does have a virtual environment.
5:29
All right, I'm too lazy to switch
5:32
from high E&V and PIP. I mean,
5:34
it seems like a you problem. There's
5:36
lazy, like, I'm not going to walk
5:39
two miles to the store, and then
5:41
there's, I can't be bothered to put
5:43
the word UV, instead of PIP in
5:46
my command. Well, and like, I'm lazy,
5:48
that's why I am using UV, because
5:50
it's it's. speeds up everything and I
5:53
can get on with my day faster.
5:55
Yeah. Matthew Rockland of desk and coiled
5:57
had a really interesting comment once on
6:00
talk by thought that basically like so
6:02
much in programming happens because we're leveraging
6:04
the natural inclination for programmers to be
6:07
lazy. Let's set it up so they
6:09
could do this so they have to
6:11
do less work and do it. All
6:14
right, I'll keep going quicker now. Trust
6:16
issues, what if they do a bait
6:18
and switch, right? It's VC backed, what
6:21
if they go, oh, all of a
6:23
sudden, two comments there. One, it's open
6:25
source, and I'm sure a lot of
6:28
people have forked it. Although there are
6:30
still some potential issues, somebody's got to
6:32
run the Python Bill standalone for some
6:35
of the features. But there's that. And
6:37
they've already said that they won't, right?
6:39
Charlie Marsh said, like, our business model
6:42
does not hinge upon charging for UV.
6:44
It's kind of an open core model.
6:46
Okay, but Google used to say, don't
6:49
be evil. So, yeah, just saying. Brian,
6:51
I totally hear you. But did you
6:53
look, when they said it, like around
6:56
their back, they had their fingers crossed.
6:58
You gotta double check these things. And
7:00
no, I'm just kidding. I know they
7:03
did. Actually, yeah, and when VCs get
7:05
involved, and it's all well and good
7:07
when there's lots of money, things get
7:10
tight, then it could potentially. Well, and
7:12
also, we'll switch to something else then.
7:14
We'll switch to UV fairly quickly if
7:17
it becomes bad. Yeah, we'll switch to
7:19
VU. I don't know. So I have
7:21
a reason, but when you run out
7:24
of good reasons. All right, masochism. Another
7:26
one. Many times I've tried similar tools
7:28
and always come back to PIP and
7:31
PIP tools, aka PIP Compile. Those they
7:33
just work. I don't want something cool.
7:35
I know, but adding the word UV
7:38
in front of each of these commands,
7:40
like UV, PIP Compile, UV, PIP, install,
7:42
it's not a huge risk to roll
7:45
that back. Delie care. And we've tried
7:47
the other ones also, and they were
7:49
not as fun. Exactly. I tried this
7:52
week and was expecting UV install requests
7:54
instead of UV ad. And I brought
7:56
this one up. I switched back to
7:59
PIP Envy. I thought that was interesting
8:01
because there's sort of two. workflows with
8:03
UV. One says treat it like poetry
8:06
or hatch and let it manage a
8:08
project and that's the UV ad style
8:10
right it manages the lock file and
8:12
so on. They were expecting UV install
8:15
requests if they typed UV pip install
8:17
requests they would have been carrying on
8:19
with the regular workflow and I do
8:22
think it's worth shouting out that there's
8:24
like two unrelated workflows for for projects
8:26
and one is sort of the project
8:29
manager poetry hatch style. and one is
8:31
the more low-level PIP style. Yeah, yeah,
8:33
the, okay, but the, the UV is,
8:36
like, you can kind of flow between
8:38
the styles and it all just works,
8:40
whereas in, uh, in the other one,
8:43
you, like, you kind of had to
8:45
buy into it or not, but, yeah,
8:47
it's all or nothing, yeah. Another one,
8:50
really quick, we partially use it, we
8:52
will transition when pin-the-the-bot support is available.
8:54
and use the requirements.xt file compiled by
8:57
UV, you've got dependable support. For me,
8:59
dependable support is a net negative. I
9:01
hate dependable so much. I've tried to
9:04
turn it off on some of my
9:06
projects and I can't get it turned
9:08
off without turning off all the security
9:11
features at GitHub. So I've just had
9:13
to set up mail rules that say
9:15
delete anything from dependable. It says bump,
9:18
bump this thing. Because I would wake
9:20
up on Monday and I'd have probably...
9:22
2530 separate messages from dependable about saying,
9:25
hey, guess what? You got to update
9:27
for this. You got an update for
9:29
that. Oh, dependable. Please stop doing this.
9:32
And if they would just go, your
9:34
project has 17 updates. Okay, that would
9:36
be kind of helpful. 17 times your
9:39
project has an update is not helpful.
9:41
That said, if you use UV space,
9:43
pip compile and requires not TXC, you
9:46
have dependable support. All right, I'll leave
9:48
it with this one from Jared. seeing
9:50
a whole lot of Stockholm syndrome and
9:53
the replies to this question. Okay, interesting.
9:55
A lot of people were sort of,
9:57
you know, they were tied to the
10:00
things that were not working well or
10:02
they were tied to the... things like
10:04
well this is how we do it
10:07
and I know it sucks it's not
10:09
better but this is how we do
10:11
it yeah yeah the one thing that
10:14
I would like to okay there's there's
10:16
a reason that you really get a
10:18
lot of the benefit of UV if
10:21
you globally install it you do the
10:23
curl install or something right that that
10:25
is and also using having letting it
10:28
install Python for you with all the
10:30
other Python dependencies dependencies you can use
10:32
your own custom like a custom IPI,
10:35
like your own in-house IPI. With that
10:37
part, the curl install and the installing
10:39
the binaries, Python binaries, I don't know
10:42
if you can do that. So I
10:44
think that that still might be a
10:46
decent reason is because you're using a
10:49
firewall in the company. And that part
10:51
isn't working right. But you can still
10:53
pip install UV and I have done
10:55
time tests and it's still faster to
10:58
use the use UV even if you
11:00
pip install it So you just don't
11:02
get all the benefits. Yeah, absolutely awesome
11:05
Yeah, anyway, you got it already have
11:07
a project You can't start you got
11:09
a python you got a V and
11:12
V and then then you go from
11:14
there. Yeah, anyway, which is fine because
11:16
mostly that's what you're doing with life
11:19
You're not like constantly creating a new
11:21
project. I love our audience and Henry
11:23
Shrin Just shout it out depend about
11:26
just added support last week for UV
11:28
lock How about that? Do you know
11:30
how out of date that Twitter threat
11:33
is so last week? So last week?
11:35
Well, it also the lot of the
11:37
knowledgeable people probably didn't respond because it's
11:40
on X Yeah, yeah, it's true. I
11:42
mean, there's it's a surprisingly amount of
11:44
surprise and amount of interaction over there
11:47
for for what it is. Yeah. Okay
11:49
over to you. Okay, let's talk about
11:51
UV a little bit Okay, we haven't
11:54
even run that yet. So I want
11:56
to talk about this cool project from
11:58
Tim Hopper. Love Tim. Kind of miss
12:01
seeing him. He's one of the fellows
12:03
that he used to run into at
12:05
conferences all the time. and haven't been
12:08
to conferences lately. So, hi Tim. Anyway,
12:10
he put out the Python developer tooling
12:12
handbook, and it's a in progress thing,
12:15
but he's been working on it for
12:17
a while. Yeah, Tim Hopper, great guy.
12:19
Anyway, the Python developer tooling handbook, and
12:22
it's walking through a lot of the,
12:24
basically the new models for doing things.
12:26
There's, I don't know. says that I
12:29
guess he does comment on a lot
12:31
of these things, UV poetry, flit, sub
12:33
tools hatch. But I was noticing right
12:36
away he's doing tutorials and how-to's and
12:38
explanations and kind of a cool and
12:40
then some references and kind of a
12:43
cool way to set up some documentation.
12:45
But like let's say, publish your first
12:47
Python package or let's do a create
12:50
your first... Python project. And instead of
12:52
doing a lot of the history, he's
12:54
just popping to you to the right
12:57
answer. It's a UV and it. And
12:59
I mean, actually a lot of the
13:01
other in it, like initializing projects, I
13:04
haven't liked before, even like the flit
13:06
in it, I didn't like, but UV
13:08
in it is pretty darn good. They're
13:11
doing a good job. And anyway, so
13:13
using. and then adding dependencies and I
13:15
love this like let's skip the all
13:18
the well you could do it nine
13:20
different ways just tell me the way
13:22
to do it or at least a
13:25
way it's opinionated but it's a good
13:27
opinion and publishing your first package talking
13:29
about setting it up anyway cool resource
13:32
I hope to see it grow a
13:34
lot so anyway like it encourages people
13:36
to test it encourages people to use
13:38
test pipi i first before they go
13:41
somewhere else although be careful because a
13:43
there's a lot of projects that don't
13:45
use test pipi so and and they
13:48
clean that one out every once in
13:50
a while so even if a package
13:52
is available on the test pipei-i-i, it
13:55
might not be available on the big
13:57
pipei-i-i, so. Yeah, yeah. So you're like,
13:59
oh, it uploaded, so that means there's
14:02
no name conflict, like, no, no, no,
14:04
no, search, search pipei. Yeah, but one
14:06
of the things I wanted to bring
14:09
up also is, let's see, right at
14:11
the top. It says, this is not
14:13
a book about programming Python. Instead, the
14:16
goal of this book is to help
14:18
you understand the ecosystem of tools used
14:20
to make Python development easier and more
14:23
productive. So it's going to grow. I
14:25
commented about some of the testing and
14:27
he said he's going to add some
14:30
stuff about testing as well. He said
14:32
the handbook is structured according to the
14:34
DIA taxes framework, which... Okay, didn't know
14:37
anything about this, tutorial, how to explanation
14:39
and reference. So I'm not going to
14:41
link to it, but there's a link
14:44
here on the on his project about
14:46
it. And I'm going to have to
14:48
read more about this. This is interesting.
14:51
I've never heard about this. So I
14:53
had not heard of it either, but
14:55
it does look interesting. Anyway, and some
14:58
great information about setting up. setting a
15:00
rough to check your code and things
15:02
like that. So I've been so excited
15:05
about UVV and V and UVP and
15:07
stuff like that that I kind of
15:09
forget that I'm using UV rough all
15:12
that are using rough all the time
15:14
also and it's kind of bundled into
15:16
there. So I'm curious while we're talking
15:19
like kind of transition to rough for
15:21
a second. I was listening to that
15:23
interview you did recently. We were you
15:26
talking about I think you interviewed Charlie
15:28
recently. And I there's I like I
15:30
like how detailed rough can be but
15:33
this is one of the things that
15:35
I think I'm I'm rough can you
15:37
can go in the pie project tomal
15:40
or there's rough tomal also now and
15:42
I kind of like I think I'm
15:44
in my transition to using the rough
15:47
tomal or try to because I end
15:49
up having like a decent amount of
15:51
little tweaking the rules a little bit
15:54
and I'm not really tweaking the project
15:56
I'm just just tweaking the the the
15:58
the linting rules so are you using
16:01
do you use rough and where do
16:03
you put your rules? I love rough
16:05
and I'm all about the rough dot
16:08
tomal yeah it's yeah it definitely takes
16:10
more than a page of small font
16:12
on my screen okay I don't want
16:15
to you know you could reasonably have
16:17
a pie project that tomal that's smaller
16:19
than the rough tomal so you know
16:21
I don't want to put those together
16:24
yeah and I loved his the the
16:26
Charlie comment about the rules of the
16:28
Even he doesn't turn them all on,
16:31
that would be silly. So I tried
16:33
it. I tried turning all the rules
16:35
on. And there's some rules that are
16:38
inconsistent. There's like two or three rules
16:40
that are conflict with other rules. So
16:42
you have to decide, you know, if
16:45
you turn them all on, there's actually
16:47
a built-in conflict because a couple of
16:49
the rules conflict. But it gives you
16:52
really great detailed information about how, anyway,
16:54
how to fix it. Okay. Yeah, another
16:56
benefit from using a rough tumult over
16:59
pie project. is if you're using Docker
17:01
or any, basically any continuous integration style
17:03
thing where it looks at, well, if
17:06
any of the source files change, I
17:08
need to rebuild or redeploy, restart your
17:10
web apps, your APIs, or whatever, you
17:13
can make changes to your rough tumult,
17:15
like real code changes, like real code
17:17
changes, so, like real code changes, so...
17:20
I know it's not a huge deal,
17:22
but that's like a plus one in
17:24
the column of separating those things. Yeah,
17:27
so if you're just doing a handful
17:29
of rules, it might be fine in
17:31
your project. Toml, but if you're experimenting
17:34
with turning on more and more rules,
17:36
then yeah, getting it separate. I do
17:38
look, it's it's both surprising and cool
17:41
that that by default not all of
17:43
them are on, because a lot of
17:45
linters in the past they defaulted to
17:48
all on. and you'd try to use
17:50
the tool and it would just like
17:52
blow up with errors. But rough does
17:55
not. It's got some good standard ones
17:57
and then you have to go. turn
17:59
them on. So anyway. Yep. One more
18:02
piece I saw in the toolbook here
18:04
that it was being added as with
18:06
a UV ad. I put rough into
18:09
my system using UV tool install rough
18:11
because just globally and then have a
18:13
rough tumult for each project to configure
18:16
it. So that way you don't have
18:18
to have updates to your project or
18:20
make sure you remember an install. It's
18:23
just like a globally available tool. Yeah.
18:25
Yeah. I should do that. I don't
18:27
know why I don't. Anyway,
18:29
well, should we talk about the
18:31
wonderful people at Pozt that are
18:33
helping us today? Absolutely. Okay, do
18:36
it. This episode of Python Bites
18:38
is brought to you by the
18:40
folks at Pozt. Pozt has made
18:42
a huge investment in the Python
18:44
community lately, known originally for our
18:46
studio. They have been building out
18:48
a suite of tools and services
18:50
for Team Python. Today, I want
18:52
to focus on hosting your Python-based
18:54
data science workloads. This includes dashboards,
18:56
reports, interactive web apps, all the
18:58
way to custom flask and Jango
19:00
apps. Their service is positive connect.
19:02
Positive Connect makes it easy for
19:04
data scientists to share work built
19:06
with Python code. If you have
19:08
a streamlet app, dashboard, plotly interactive
19:10
plots, a fast API service, a
19:12
fast API service, or even a
19:14
quarto report. Just give positive connect.
19:16
The code it needs to maintain
19:18
the asset and Connect automatically does
19:20
the rest. Connect will manage your
19:22
APIs and serve your interactive apps.
19:24
And if desired, update your ports
19:26
and dashboards on a scheduled basis.
19:28
That's right. No more need to
19:30
explain to the stakeholders why the
19:32
dashboard or plot stopped updating last
19:34
week. You get to focus on
19:36
your data science and leveraging your
19:39
skill set while Connect makes you
19:41
look good, keeping your code running
19:43
in private. With Connect, you get
19:45
a private URL on your Connect
19:47
server. ensuring that your asset is
19:49
continuously available to your shareholders. You
19:51
can also control which users have
19:53
access to the asset. Let positive
19:55
connect handle... the delivery and Devops,
19:57
including your, involved in sharing your
19:59
work. You focus on what you
20:01
do best. So if you work
20:03
on a data science team, you
20:05
owe it to you and your
20:07
org to check out posit Connect.
20:09
Visit PythonBites.f.f.com/Connect today and get a
20:11
three-month free trial to see if
20:13
it's a good fit. That's Python
20:15
bytes.fm.com/Connect. The link is in your
20:17
podcast players show notes. Thank you
20:19
to Posit for supporting Python Python
20:21
Python. Absolutely, thank you posit. That's
20:23
sort of a data science theme,
20:25
right, Brian? Let's go and talk
20:27
about something from Adam Chains. And
20:29
I know we talked about Ruff,
20:31
but what about Black? So Black
20:33
is still a super important, super
20:35
influential thing. I imagine with Black.
20:37
Without Black, maybe Ruff doesn't exist.
20:39
So I want to come up,
20:42
I want to point out a
20:44
tool called Blackin Docs. So if
20:46
you have documentation, in that documentation,
20:48
maybe... you've got some code blocks,
20:50
some Python code blocks, and you
20:52
would like to format them. I
20:54
don't know how well your Markdown
20:56
editor formats code, but I'll tell
20:58
you what, I love my Markdown
21:00
editor, which is Typora. It does
21:02
not, it does not have a
21:04
reformat according to rough style feature
21:06
whenever I say tick tick tick,
21:08
Python, types and stuff, right? This
21:10
does. And so you can, you
21:12
can run this against all sorts
21:14
of different things. So it says
21:16
documentation, documentation. What it will do
21:18
is it works on restructured text
21:20
or it works on markdown files.
21:22
Okay. For example, I'm working on
21:24
that Python and production book from
21:26
Talk Python, which is like 250
21:28
pages of Markdown. There's a crap
21:30
ton of tick tick, tick, tick,
21:32
Python, something or other in there.
21:34
Oh, yeah. I could run it
21:36
against that. It doesn't have to
21:38
be documentation. Anything that's restructured text
21:40
or markdown that has Python, you
21:42
know, full-sized code block sections, you
21:44
can just hit it with that.
21:47
Oh cool, that's cool, right? Yeah.
21:49
You can also install a pre-commit
21:51
hook. It comes with one. And
21:53
then when anybody commits, it'll automatically
21:55
format that. And I think, does
21:57
it do doc strings as well?
21:59
Let's see. I believe, yeah, you
22:01
can run it on Python files
22:03
to reformat doc strings. Yeah. So
22:05
doc strings and basically mark down
22:07
and restructure text. That's pretty awesome,
22:09
right? Yeah. So there you go.
22:11
You can even turn it off
22:13
with some comments, like, no. Please
22:15
don't do it here. And so
22:17
on. So just to be clear,
22:19
I mean, it's probably obvious, but
22:21
it's not, it's not, it's, it's
22:23
formatting the code blocks within your
22:25
Markdown files to black style. There
22:27
aren't black styles for Markdown. Yes,
22:29
exactly. Okay. Although, that's an interesting
22:31
idea as well. I actually wouldn't
22:33
mind a, something like black for
22:35
Markdown because it tries to mean,
22:37
I do headings with the. pound
22:39
and pound pound and and but
22:41
mark down allows the underscore the
22:43
like the the dash line line
22:45
underneath it wouldn't and I hate
22:47
that. Yeah I do. So it's
22:50
like somebody came from a structured
22:52
text and stuck it in there.
22:54
Let's make it easier to convert
22:56
our restructured text. No. No please
22:58
don't do that. We're here because
23:00
we don't like structured text. Don't
23:02
you understand what's happening? All right
23:04
well anyway. Thanks Adam for that.
23:06
That's a cool looking project. Yeah.
23:08
I'm going to stick with some
23:10
data science themes for a little
23:12
bit longer. So I want to
23:14
talk about reinventing notebooks as reusable
23:16
Python programs. Have you heard of
23:18
this, Muramo, Murimo thing? Merimo, yes.
23:20
I just had the founder of
23:22
Merimo on Talk Python. Okay. Yeah.
23:24
Yeah, it's not out yet, but
23:26
it's been, you know, been recorded
23:28
and available on YouTube. Okay, this
23:30
is sort of interesting. I'm like,
23:32
oh, okay, somebody else is reinventing
23:34
notebooks or something. But this is
23:36
pretty cool. So this is, what
23:38
are we looking at here? What
23:40
we're looking at is, I'm gonna.
23:42
down to some code examples is
23:44
that a notebook doesn't have to
23:46
look like a notebook anymore in
23:48
like Jason form or something it
23:50
can look like Python or at
23:53
least with with the Merrimo environment
23:55
and I'm not quite sure you
23:57
probably know more than I do
23:59
then it's can you just open
24:01
these up into into notebooks or
24:03
do you have to do something
24:05
special to get them open so
24:07
it's a different execution environment than
24:09
saying Jupiter Space Lab or Jupiter
24:11
Space Notebook. It's a different runtime.
24:13
Okay. But they're the real server.
24:15
Okay, got it. But I really
24:17
like that. It's just, it's just,
24:19
it's just, well, it's not just
24:21
Python code. It's extra stuff also.
24:23
Looks like they add some decorators
24:25
to make their, their environment understand
24:27
what it is. Like there's app
24:29
dot cell and at app dot
24:31
function. And. probably other stuff too.
24:33
But some of the benefits of
24:35
this are like incredible. So the
24:37
some of the benefits are that
24:39
you can version with get easier.
24:41
Well you can do that with
24:43
Jason too, but the diffs don't
24:45
really make a lot of sense
24:47
often. The diffs are all over
24:49
the place. You can test with
24:51
pie test and that one. I'm
24:53
like really that's what that's been
24:55
one of the problems because in
24:58
the past that testing is a
25:00
kind of an issue or at
25:02
least it has been long time
25:04
ago when I tried it. Maybe
25:06
they've solved it other ways but
25:08
testing even with doc test and
25:10
some of the other other stuff
25:12
in there embedding sequel and mark
25:14
down like all the sort of
25:16
stuff that you could normally do
25:18
with Python you can now still
25:20
do with these and and that's
25:22
it's just kind of cool. I
25:24
wanted to check this out and
25:26
try it out. This is available
25:28
for everybody to run right. Yeah,
25:30
yeah, it's a goal for people
25:32
to run. You can download it,
25:34
run it locally. They also have
25:36
some some cloud options and it's
25:38
really neat. There's super nice ways
25:40
to host it. You know, you
25:42
just say. run it as service.
25:44
One of the things that's pretty
25:46
interesting here, let me steal the
25:48
stage for a moment, is this
25:50
all runs inside of, in your
25:52
browser, client side, so that's one
25:54
of the big differences with, say,
25:56
Jupiter versus this, is it's powered
25:58
by web assembly and pie oxide.
26:01
Okay. Pieodide, rather, sorry. And so,
26:03
for example, this one that I
26:05
pulled up, I'll put it in
26:07
the show notes, is the F1
26:09
driver career explorer. And look how
26:11
nice this looks Brian. Like in
26:13
terms of relative to compare that
26:15
to Jupiter, for example, I think
26:17
it's got like a really beautiful
26:19
style, you know, you can check
26:21
out. This is old, I got
26:23
to put Ferrari in here for
26:25
Hamilton. I only got Mercedes and
26:27
McLaren, but it was powered by
26:29
say DuckDB Web Assembly, for example,
26:31
and Efron Data. And yeah, it's,
26:33
you know, it's got little explorer
26:35
sort of things and. It just
26:37
feels really polished. It also has
26:39
a collaborative edit sort of thing
26:41
like Jupiter notebooks. I'm sorry like
26:43
Google Dogs rather. So you can
26:45
like pair up on them. There's
26:47
a lot of neat stuff about
26:49
this. Okay, but this is okay.
26:51
It's still cool. I was but
26:53
I'm misunderstood. I thought maybe it
26:55
was just a new way to
26:57
run Jupiter notebooks. But yes, but
26:59
with a decent amount of new
27:01
features. I mean, yeah. Yeah. Well
27:04
I guess the thing I'm missing
27:06
then or not understanding is is
27:08
there a relation between this and
27:10
Jupiter notebooks is can can you
27:12
use any of the the rest
27:14
of the Jupiter environment or is
27:16
it? I believe so. I'm trying
27:18
to remember now like how much
27:20
integration there is between those but
27:22
yeah I think so. Okay cool
27:24
I'm I'll investigate more so anyway
27:26
I'm still pretty excited about it
27:28
looks pretty neat. I'll have to
27:30
play with it a bit so.
27:32
Yep, absolutely. And it's also another
27:34
thing that it really tries to
27:36
solve is they are trying to
27:38
solve the, oh you know what
27:40
I said it had a Google
27:42
Docs integration, not exactly, but what
27:44
they're trying to solve is the
27:46
real challenges of integrating notebooks with
27:48
get. So for example, with notebooks,
27:50
there's, they're really Jason files, and
27:52
then they've got the input blocks
27:54
and the output blocks. So if
27:56
you've run some code and it's
27:58
dependent on anything that might change,
28:00
you'll get like huge, instead of
28:02
getting a nice merge, you'll get
28:04
two conflicts of like giant embedded
28:07
blobs and so on. Yeah. The
28:09
other thing that this really addresses
28:11
around notebooks is notebooks allow you
28:13
to run them in any order,
28:15
which is kind of insane. Like
28:17
I could run cell one, cell
28:19
two, cell three, cell three, cell
28:21
three, cell four. change cell two
28:23
run cell four again to see
28:25
what the output is but maybe
28:27
that the changes would have made
28:29
cell two be different or cell
28:31
three be different you know and
28:33
you can like skip over you'll
28:35
have like using I have little
28:37
numbers on the side of which
28:39
order it was running to be
28:41
like one seven eight nineteen fourteen
28:43
or something you know as you
28:45
go down you're like oh this
28:47
so this is reactive in the
28:49
sense that every variable you create
28:51
is like wrapped, it's not technically
28:53
wrapped in a reactive behavior thing,
28:55
it's they use, they parse the
28:57
dom every time you run anything.
28:59
And they create relationships between cells,
29:01
say like, okay, cell 10 uses
29:03
something from cell 1 and cell
29:05
3. So if you run cell
29:07
3, it knows that cell 10
29:09
is out of date, or potential
29:12
will just rerun it for you.
29:14
So it keeps track of the
29:16
relationships, even. depending on the order
29:18
so that you don't end up
29:20
with like stale data and then
29:22
run another cell that pulls in
29:24
that stale data and so on.
29:26
So it's trying to really address
29:28
that as well. That's cool. Yeah,
29:30
that's one of the things that
29:32
threw me off when I first
29:34
started using notebooks or a little
29:36
bit. Yeah. That's a little weird
29:38
like why is it allowed to
29:40
just run this piece in in
29:42
from an exploratory perspective that that
29:44
makes sense like well that was
29:46
all expensive and I just want
29:48
to ask questions down here and
29:50
over here but from a reproducibility
29:52
perspective and debugging it's bad yeah
29:54
yeah so anyway I need some
29:56
something fun new to play with
29:58
with indeed yes it's pretty cool
30:00
so that's that's our item Do
30:02
you have any extras for us?
30:04
I do have some extras. Let's
30:06
see a couple real quick. Pike
30:08
on Taiwan 2025 is doing a
30:10
call for proposals. It's going to
30:12
be in the fall. And so
30:15
you've got until April 5th, anywhere
30:17
in the world. So if you
30:19
want to go to Taiwan and
30:21
present stuff there, they have a
30:23
decent number of English tracks and
30:25
talks and stuff and they're looking
30:27
for more. So check that out.
30:29
Also, a follow-up on the Hacker
30:31
News thing. Remember, Brian, I was
30:33
reading the Hacker News thing saying,
30:35
who's looking for a job? Who's
30:37
hiring? Well, Shinjitsu sent a semester
30:39
and said, I'm sure some other
30:41
Hacker News readers have already told
30:43
you this. No, they haven't. So
30:45
thank you, Shinjitsu. But if you
30:47
haven't, you kind of got this
30:49
exactly wrong. Like, oh, sorry. Ask
30:51
Hacker News, who is hiring is
30:53
a monthly post that asks employers,
30:55
what jobs they're posting. not people
30:57
asking which one and who wants
30:59
to be hired is a monthly
31:01
topic that has people who are
31:03
looking for jobs about themselves so
31:05
did we have that backwards there
31:07
was actually bad news yeah I
31:09
think that's what it's saying let
31:11
me see yes I think I
31:13
said who wants to be hired
31:15
was asked by the employers and
31:18
who is hiring was asked by
31:20
the people looking for a job
31:22
but it sounds like it's the
31:24
other way around so that would
31:26
make it less rosy so sorry
31:28
about that folks if that was
31:30
a little bit backwards oh okay
31:32
see Arata. Arata, yes, we have
31:34
to have an Arata. How about
31:36
you? I got a couple things.
31:38
First off, Picon U.S. announced that
31:40
there's a refund policy for international
31:42
attendees if you qualify for certain
31:44
things. And actually, I'm just embarrassed
31:46
as American that we have to
31:48
do stuff like this. But international
31:50
travel to the United States has
31:52
become more complex for many of
31:54
our community. Picon U.S. welcomes all
31:56
community members to Pittsburgh. But if
31:58
for some reason you can't come
32:00
because of very... problems. Read the
32:02
post for details, but they're a
32:04
fairly, I think a fairly cool
32:06
refund policy details. So anyway, if
32:08
you can't come for some reason,
32:10
check this out and maybe... I'm
32:12
thinking a lot about this. There's
32:14
been a lot of badness and
32:16
I'm not happy about it, Brian.
32:18
I'm not happy that our country
32:20
is treating people that way. It's
32:23
one thing... if you catch somebody
32:25
trying to sneak over the border
32:27
and I mean it's a political
32:29
debate on how lenient or aggressive
32:31
you want to enforce them but
32:33
when people especially from fellow ally
32:35
countries just try to come over
32:37
and they get put in jail
32:39
because they didn't have the right
32:41
kind of visa or something that
32:43
is that is some bad stuff
32:45
it's well you would just never
32:47
think that that was that was
32:49
the way the US treat people.
32:51
I know they've been a little
32:53
bit tough on immigration, but you
32:55
know Australia has, Canada as I
32:57
was detained at the Canadian border
32:59
for a long time and finally
33:01
was let in the Canada. And
33:03
it's, okay, it's a hassle. But
33:05
this is another level of jerkery
33:07
and yeah, I am glad to
33:09
see that Picon is doing this.
33:11
I apologize to the world. I
33:13
guarantee you, Brian and I are
33:15
not supporters of this policy. Of
33:17
the reef, we were supporters of
33:19
the refund policy. Yes, not the
33:21
cause of the refund policy. Yeah.
33:23
Right. Okay. Oh, on a slightly
33:26
more positive note, I finally finished
33:28
up restructuring the Complete Pie Test
33:30
Course Series. So, originally it was,
33:32
so this is over at Python
33:34
test.com. This originally was I had
33:36
a remaking the the pie test
33:38
book I wrote as a course
33:40
and it was one course but
33:42
that really the book was into
33:44
three parts and intended to be
33:46
read at different times during your
33:48
development process when you're first starting
33:50
out at pie test then when
33:52
you're trying to apply it to
33:54
projects and then when you're like
33:56
really good at it. and you
33:58
really want to like take off
34:00
and get great at it, there's
34:02
another there's another section. And I
34:04
had it in one course and
34:06
it doesn't write quite, I don't
34:08
think it really quote quite fit
34:10
how people use pie test and
34:12
learn pie test. So now it's
34:14
split up. So you can still
34:16
get the complete bundle and it
34:18
gets the three parts, but the
34:20
three parts learning the basics of
34:22
pie test is a separate course
34:24
now, you can just buy it
34:26
separate. And then you can grab
34:29
part two. and then part three,
34:31
but also part two is working
34:33
with projects, part three, the booster
34:35
rockets, like building, really building plugins
34:37
is why you'd probably grab this
34:39
and advanced parameterization techniques. However, even
34:41
if you didn't buy the other
34:43
ones, I like having them separate
34:45
now because if somebody's like, I
34:47
really want to build my own
34:49
plugin, you can just go check
34:51
out this one course instead of
34:53
taking all three of them. So
34:55
that's my big news there. The
34:57
other reason why the other structuring
34:59
restructuring that I did is I...
35:01
All the chapters are now a
35:03
single video per chapter, for the
35:05
most part. Chapters two and three
35:07
are a bit long, so I
35:09
split them up so they're about
35:11
20 minutes each. But the thing
35:13
that I really like about this
35:15
now is that in each video,
35:17
you can pop in and you
35:19
can change the speed. So you
35:21
can watch like... the whole like
35:23
I mean I'm usually a 1.25
35:25
or 1.5 speed kind of person
35:27
and it was bugging me that
35:29
you had to reset that setting
35:32
every three minutes like for a
35:34
three or five minute video now
35:36
now it's only like you can
35:38
only set it once for a
35:40
20 minute video so anyway works
35:42
better for me hopefully it works
35:44
better for everybody else too so
35:46
that's my that's my big extra
35:48
so yeah awesome congrats on getting
35:50
that all on redone that's great
35:52
yeah so how about a joke
35:54
boldly go And no one was
35:56
gone before. Yeah, so last week's
35:58
joke was around was a Star
36:00
Trek cling on theme. And we
36:02
had who was it? We had
36:04
somebody from Holgi on Mastodon said
36:06
you again, you probably already know
36:08
this but. There's this thing called
36:10
the Klingon programmers. So this is
36:12
over at Cornell.adieu. Top 12 things
36:14
likely to be heard if you
36:16
are a Klingon programmer. And I
36:18
kind of love this. So we
36:20
should probably zoom in a little
36:22
bit. Okay. We're not going to
36:24
read all 12, but number 12
36:26
is actually pretty good. Specifications are
36:28
for the week of, for the
36:30
week in timid. Do you want
36:32
to read any of these? Let's
36:34
see. This machine is a piece
36:37
of God. I need a dual
36:39
Pentium processor if I am to
36:41
do battle with this code. Yeah,
36:43
number four, a true Klingon warrior
36:45
does not comment his code. debugging.
36:47
Klingons do not debug. Our software
36:49
does not coddle the week. I
36:51
think the perfect... Oh, no, go
36:53
ahead. Klingon functions do not have
36:55
parameters. They have arguments and they
36:57
always win them. I love it.
36:59
All right, let's round out the
37:01
tie back to last week, which
37:03
was we will test in production.
37:05
Okay, yeah, so this is, what,
37:07
number one? Number one, do it.
37:09
Our users will know fear and
37:11
cower before our software. Ship it,
37:13
ship it and let them flee
37:15
like the dogs they are. Exactly.
37:17
This is good. This is a
37:19
reminder also to everybody that if
37:21
you think we probably have already
37:23
heard it, there's a decent chance
37:25
we haven't. So send it to
37:27
us anyway. We don't mind repeats.
37:29
So if you find something funny
37:31
or something like this. A lot
37:33
of credit, Ryan. Maybe too much
37:35
more than we deserve sometimes. Yeah.
37:37
Anyway. Well, thanks again for jumping
37:40
on the call with us and
37:42
enjoy doing another episode. And thank
37:44
you everybody in the... Everybody that
37:46
listens and everybody who shares this
37:48
with other people, we like to
37:50
grow our, grow our community. Yeah,
37:52
very much appreciate everyone. See y'all
37:54
later. Bye. Bye.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More