#425: If You Were a Klingon Programmer

#425: If You Were a Klingon Programmer

Released Monday, 24th March 2025
Good episode? Give it some love!
#425: If You Were a Klingon Programmer

#425: If You Were a Klingon Programmer

#425: If You Were a Klingon Programmer

#425: If You Were a Klingon Programmer

Monday, 24th March 2025
Good episode? Give it some love!
Rate Episode

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.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features