WEBVTT

00:00:00.001 --> 00:00:04.440
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to

00:00:04.440 --> 00:00:12.720
your earbuds. This is episode 298, just too short of 300 coming in fast, recorded August 23rd,

00:00:12.720 --> 00:00:17.840
2022. I'm Michael Kennedy. And I'm Brian Okken. Wow, close to 300. That's amazing.

00:00:17.840 --> 00:00:23.420
Yeah. Yeah. That's, what is that, coming up on six years here pretty soon? That's insane.

00:00:23.420 --> 00:00:29.180
That's amazing. Well, 52 times. Yeah, I don't know. Yeah. So pretty awesome.

00:00:29.180 --> 00:00:35.280
And got some fun folks we see in the audience who are out here frequently. Will McGugan is here.

00:00:35.280 --> 00:00:39.300
Will is going to be a guest on the next episode. So if you want to hear from Will, be sure to

00:00:39.300 --> 00:00:42.880
at least listen to the next episode if you don't come to the live one.

00:00:42.880 --> 00:00:47.960
Yeah. Also, before we, yeah, it'd be fantastic. Also, before we get going on the topics,

00:00:47.960 --> 00:00:52.920
I just want to say thank you to Microsoft for Startups Founders Hub for sponsoring this and so

00:00:52.920 --> 00:00:58.360
many of the episodes this year. Super great to have their support. Very cool. It's uncommon, Brian, to

00:00:58.360 --> 00:01:06.200
have such great supporters, wouldn't you say? It is uncommon. Nice segue. I like it. So I'd like to

00:01:06.200 --> 00:01:12.400
talk about uncommon uses of Python in commonly used libraries. Actually, this is just a pretty cool

00:01:12.400 --> 00:01:18.200
article. It's by Eugene Yan. And he goes through a handful of things. I'm just going to pull out one,

00:01:18.300 --> 00:01:24.120
but it goes through using super classes and a whole bunch of things. The idea was to learn how to build

00:01:24.120 --> 00:01:29.640
more maintainable and usable Python libraries. He's been reading some of the most widely used Python packages

00:01:29.640 --> 00:01:35.680
and learning some things along the way, which is an awesome way to learn is to read other code.

00:01:35.680 --> 00:01:37.020
I agree. I think it's fantastic.

00:01:37.140 --> 00:01:43.040
Yeah. So he's good. He goes through super and a handful of other things. When do you use a mix in?

00:01:43.040 --> 00:01:50.320
I don't know if I'd use that. Anyway, the thing I want to pull out is using relative imports all the

00:01:50.320 --> 00:01:56.520
time. And this is something I picked up not too long ago, but it really isn't talked about much.

00:01:56.520 --> 00:02:05.280
So the idea is that if you do an import, like import something or from some library import,

00:02:05.280 --> 00:02:11.480
if you don't, if you put a dot in front of at the beginning is the first dot, then it looks in your,

00:02:11.480 --> 00:02:18.980
in your path, your current search, the directory of the file that it's in. So in the example,

00:02:18.980 --> 00:02:28.120
he has a base by a base dot pie from scikit learn and it, it uses, it says from dot utils dot validation

00:02:28.120 --> 00:02:35.060
import something. And, and these are, because it says dot utils, it'll look for utils in the

00:02:35.060 --> 00:02:40.300
current directory and not somewhere else because there's probably a utils like somewhere else also,

00:02:40.300 --> 00:02:45.600
uh, looking for the search path. so this is neat. You can do multiple, you can move, do multiple

00:02:45.600 --> 00:02:50.300
dots also. I don't ever, I don't think I ever do that. I do the current directory and down

00:02:50.300 --> 00:02:56.180
or the current project and down. So, this is, we'll get you up, up one and then down a different

00:02:56.180 --> 00:03:00.780
path or something like that, right? It will. So if you do dot dot something and you don't do slashes,

00:03:00.780 --> 00:03:06.560
you don't, it's not a direct, a pat, it's kind of like a path, but it's not, like dot is the

00:03:06.560 --> 00:03:12.340
current directory. Dot dot is like one up and you can do three, but wow. I think there's something

00:03:12.340 --> 00:03:17.860
wrong with your project if you're doing that. but, maybe not, maybe not. There's,

00:03:17.860 --> 00:03:22.340
a couple of links in there for further reading. There's a Guido's decision on relative imports,

00:03:22.340 --> 00:03:29.740
which is part of the, part of the PEP 328 writeup. And actually the, this PEP 328 writeup

00:03:29.740 --> 00:03:36.200
is this little bit about Guido's decision where he's talked about the leading dot or leading two dots.

00:03:36.320 --> 00:03:42.100
there's a really good, easy way to get a handle on how to use this. And, I use this a lot

00:03:42.100 --> 00:03:47.040
now and try to put it in, projects, you know, projects at work and project personal projects

00:03:47.040 --> 00:03:51.760
as well. So, the dot thing is cool and yeah, it doesn't talk about much. So I like it.

00:03:51.760 --> 00:03:58.020
Yeah. It's fantastic. It only works in packages and not just a pile of module files, right?

00:03:58.020 --> 00:04:03.500
Oh yeah. Yeah. So you have to have Dunder and net files within the directory. And that's,

00:04:03.500 --> 00:04:07.920
I guess one of the things that I wish we had another name for, because in Python,

00:04:07.920 --> 00:04:14.200
we talk about a package or a sub package. These are, this could be just a directory with Python

00:04:14.200 --> 00:04:20.400
files in it that has Dunder in it and the, and that, that makes it a package in Python,

00:04:20.400 --> 00:04:26.920
but we also definitely, yeah. Yeah. We also talk about the package repository and PyPI. It's the Python

00:04:26.920 --> 00:04:32.460
package index. Those are not just directories with Dunder and nets. They're packaged up with a whole

00:04:32.460 --> 00:04:36.320
bunch of other meditated and stuff like that. So there's two things that we call packages, but

00:04:36.320 --> 00:04:40.120
yeah, they have to have Dunder and nets in them for this to work. So anyway.

00:04:40.120 --> 00:04:44.700
Yeah. Brent, Brandon on the audience asked, so are we arguing for relative imports?

00:04:44.700 --> 00:04:51.440
I, for the current, for the current directory, I am, I think that, within a project, if you're,

00:04:51.440 --> 00:04:57.180
uh, like internal stuff, you're not, I mean, if it's a, if it's part of the external API of the project,

00:04:57.180 --> 00:05:02.840
I, I will always go through the external API to get at something, but there's a whole,

00:05:02.840 --> 00:05:09.280
there's a lot of times where you're just developing a bunch of Python modules together. and they're

00:05:09.280 --> 00:05:14.480
internally, they're going to talk to other sub components and that isn't necessarily part of

00:05:14.480 --> 00:05:19.540
the external API. And this is the best way to get at it. So yeah. Yeah. All right. Sounds good.

00:05:19.920 --> 00:05:27.900
Next up, let's go to the sky plane. So this one comes to us, from, let me make sure I give the

00:05:27.900 --> 00:05:34.880
proper credit. This one comes to us from RMRF, the Sudur. Thank you for sending this in. Really

00:05:34.880 --> 00:05:41.680
appreciate it. The project is called sky plane, 114 times faster cloud transfers. At first I was like,

00:05:41.680 --> 00:05:47.860
uh, what does that mean exactly? Like what's the baseline for this? I'll say. So, probably what

00:05:47.860 --> 00:05:52.660
they're basing that on in a minute. This is interesting for two reasons. It's interesting

00:05:52.660 --> 00:05:59.200
because it's a tool that I think many Python developers would find useful, especially those

00:05:59.200 --> 00:06:05.900
folks doing a lot of work in the cloud. It is also useful or interesting because it is itself a Python

00:06:05.900 --> 00:06:12.720
project. Okay. So if you want to contribute to it or understand it or extend it or work it and do other

00:06:12.720 --> 00:06:17.840
things, that's totally possible. It's worked on by a pretty big group of folks. The idea is

00:06:17.840 --> 00:06:24.900
it gives you blazing fast bulk transfers, file transfers between any cloud, any, it needs a

00:06:24.900 --> 00:06:31.700
little like star or an asterisk by it that says any means any of the big three cloud providers. Okay.

00:06:31.700 --> 00:06:40.620
Whereas, you know, this is like AWS, it's Azure and it's Google, GCP. Okay. So those three,

00:06:40.620 --> 00:06:47.820
however, what I'm not clear on is whether you can point it at the S3 compatible places like

00:06:47.820 --> 00:06:55.020
Linode and digital ocean also have cloud storage that are S3 like, but I'm pretty sure it won't work

00:06:55.020 --> 00:06:59.780
based on the way I'm about to tell you what's going to happen next. Okay. Okay. So if you go over,

00:06:59.780 --> 00:07:04.980
there's an architecture section. And if you look in there, they've got this sky retreat 2022,

00:07:04.980 --> 00:07:10.880
where Paris Jane introduces sky plane. And to the folks, there's about a 15 minute video,

00:07:10.880 --> 00:07:16.880
but you really got to watch just two minutes of it to get the Zen. So they laid on a scenario. This is,

00:07:16.880 --> 00:07:21.560
I believe in their world, they're doing data science. And so what they need is they need the

00:07:21.560 --> 00:07:28.880
data very near to them. And there's a woman in the middle East, using some AWS, S3 and point

00:07:28.880 --> 00:07:36.160
there. And she has 30, 80 gigs of data. And Paris is on the East coast of the U S and wants closer

00:07:36.160 --> 00:07:42.080
access to that data for their other work that they're doing. So there's a way with the AWS CLI

00:07:42.080 --> 00:07:48.600
to just copy from Bahrain or wherever it is over to Virginia. And they run that. And it says the,

00:07:48.600 --> 00:07:53.900
after running for a while, it says estimated time to completion one hour, right? I don't know. Is that

00:07:53.900 --> 00:07:59.080
good or bad? Like it's, it's a lot of data, right? 80 gigs halfway around the world. It's miraculous that

00:07:59.080 --> 00:08:02.980
this is possible, but is that good or not? So then they say, well, let's try it with sky plane.

00:08:03.160 --> 00:08:07.060
They were getting like 20 megabit. I think they run it with sky plane. They're getting

00:08:07.060 --> 00:08:13.020
30 gigabit transfers from the middle East. And it took 30 seconds instead of an hour.

00:08:13.480 --> 00:08:14.480
That's quite a bit faster.

00:08:14.480 --> 00:08:16.760
That is pretty awesome.

00:08:16.760 --> 00:08:23.140
Yeah, exactly. And so instead of going across the open internet, it's, it was transferring basically

00:08:23.140 --> 00:08:28.940
over like dedicated fiber for just AWS data center connects or something like that. Right. But what

00:08:28.940 --> 00:08:35.700
it does is it will spin up a virtual machine or many virtual machines in the different data centers.

00:08:35.860 --> 00:08:41.600
So I think what happens here, not a hundred percent sure, but I think it fired up some VMs in

00:08:41.600 --> 00:08:50.320
Virginia, copied it from S3 in Bahrain directly through the internal data system data center transfer,

00:08:50.320 --> 00:08:56.860
and then pushed it into like nearly local S3 storage. And you can do the same thing from like AWS

00:08:56.860 --> 00:09:02.340
East coast to Azure West coast, right? You would fire up a VM. I think in that scenario,

00:09:02.340 --> 00:09:06.700
in both of the data centers and those VMs would talk directly over the high speed data center

00:09:06.700 --> 00:09:10.800
network instead of like the S3 one, we'll copy it down to your machine and then you push it back

00:09:10.800 --> 00:09:13.320
out of your machine to the new destination. Yeah.

00:09:13.320 --> 00:09:16.840
So it basically manages data center to data center traffic.

00:09:16.840 --> 00:09:18.540
That's pretty cool. Makes sense.

00:09:18.540 --> 00:09:23.380
It's pretty cool. It has, yeah, yeah, yeah. And it's like all the CLI, it's like one CLI command

00:09:23.380 --> 00:09:28.200
and that's creating the various virtual machines, provisioning them, setting up the encryption,

00:09:28.200 --> 00:09:30.820
doing all the stuff, and then it shuts back down.

00:09:31.180 --> 00:09:37.300
So, and as far as security goes, what you do is you basically install the AWS CLI or the,

00:09:37.300 --> 00:09:44.320
the Azure CLI, and you just log into those local CIs and CLIs, and it uses those behind the scenes

00:09:44.320 --> 00:09:49.460
to do the setup of like create the VM and then SSH over to it, do the work or something like that.

00:09:49.460 --> 00:09:55.740
So it has a lot of integrity checking. So it does like checksums and verifies the files are there.

00:09:56.120 --> 00:10:02.300
The file sizes are the same and all that kind of stuff. It does end-to-end encryption sort of.

00:10:02.540 --> 00:10:07.420
So the VM, as it gets it out of cloud storage, encrypts it and then sends it over to the network.

00:10:07.420 --> 00:10:13.100
And then when it has to decrypt it to drop it back into the other place, but it also on top of that goes over TLS.

00:10:13.100 --> 00:10:19.200
However, some people might be storing encrypted data in the cloud because they don't trust that it couldn't,

00:10:19.200 --> 00:10:20.600
you know, it's not going to get looked at.

00:10:20.660 --> 00:10:27.080
So even the stuff in S3 or wherever Azure Blob Storage could be encrypted, in which case you can turn all this off

00:10:27.080 --> 00:10:30.020
and it'll go a lot faster because it's already encrypted end-to-end.

00:10:30.020 --> 00:10:34.620
It'll set up like virtual private networks with, if it's within a data center.

00:10:34.620 --> 00:10:38.140
And there's a bunch of cool things that are kind of nice that you don't have to worry about.

00:10:38.140 --> 00:10:40.140
Anyway, this is the sky plane.

00:10:40.220 --> 00:10:46.020
So if you're transferring data between different clouds or even different data centers within a single cloud,

00:10:46.020 --> 00:10:47.640
it looks like it'll do a lot of nice work for you.

00:10:47.640 --> 00:10:50.860
Now, it's believable that it's faster.

00:10:50.860 --> 00:10:53.220
I'm curious if it's cheaper also.

00:10:53.220 --> 00:10:54.600
Any comment?

00:10:54.600 --> 00:10:56.360
Oh, that's a really good point, actually.

00:10:56.360 --> 00:11:01.520
If you go and say AWS to Azure or vice versa, I think it's the same price.

00:11:01.520 --> 00:11:08.640
But if you're going Azure to Azure, it probably is cheaper because I don't know what they really charge you for the S3 CLI

00:11:08.640 --> 00:11:09.640
if you say do a transfer.

00:11:10.060 --> 00:11:11.700
You're still like flowing through.

00:11:11.700 --> 00:11:15.780
But, you know, the within data center transfer is cheaper than outside.

00:11:15.780 --> 00:11:16.680
Taking it out.

00:11:16.680 --> 00:11:17.980
Out of the, yeah, exactly.

00:11:17.980 --> 00:11:18.920
Oh, cool.

00:11:18.920 --> 00:11:20.160
So maybe, I don't know.

00:11:20.160 --> 00:11:22.340
They didn't talk about it, but possibly.

00:11:22.340 --> 00:11:22.900
Yeah.

00:11:22.900 --> 00:11:23.940
Wow, that's awesome.

00:11:23.940 --> 00:11:24.680
Anyway, that's what I got for you.

00:11:24.680 --> 00:11:25.460
Yeah, sky plane.

00:11:25.460 --> 00:11:25.680
Nice.

00:11:25.680 --> 00:11:27.080
You know what else is awesome?

00:11:27.080 --> 00:11:28.340
Speaking of Azure.

00:11:28.340 --> 00:11:30.580
Microsoft for startups, yeah.

00:11:30.580 --> 00:11:31.780
Yeah, absolutely.

00:11:31.780 --> 00:11:35.900
They are, like I said, big supporters of the show, big fans of the show.

00:11:35.900 --> 00:11:39.580
And this episode, like many of them, is brought to you by Microsoft for startups,

00:11:39.720 --> 00:11:40.200
Founders Hub.

00:11:40.200 --> 00:11:46.340
If you have a startup and you intend to have some kind of cloud computing resources,

00:11:46.340 --> 00:11:51.000
or you've dreamed of going to something like a Y Combinator type of accelerator,

00:11:51.000 --> 00:11:55.300
this is a really great way to get some of the benefits of that.

00:11:55.500 --> 00:12:02.000
So with Microsoft for startup, Founders Hub, they give you a bunch of resources for running

00:12:02.000 --> 00:12:08.060
your startup in the cloud in Azure, but also many other cloud resources, like a bunch of

00:12:08.060 --> 00:12:14.160
GitHub credits for automation and actions, as well as access to places like OpenAI.

00:12:14.160 --> 00:12:19.980
But another thing I think is really important is having access to mentors and people who have

00:12:19.980 --> 00:12:22.040
been there and have the right connections.

00:12:22.180 --> 00:12:22.660
Right?

00:12:22.660 --> 00:12:27.080
Like, I think honestly, that might be the hardest thing about doing a startup because as developers,

00:12:27.080 --> 00:12:28.380
we can build it.

00:12:28.380 --> 00:12:29.720
Often we can build it.

00:12:29.720 --> 00:12:32.520
But then it's, well, how do you build the right thing?

00:12:32.520 --> 00:12:37.680
How do you, you know, in terms of customer fit, how do you get access to the right networks?

00:12:37.740 --> 00:12:45.100
So you can find people for investing or get better, maybe coaching for like sales and marketing.

00:12:45.100 --> 00:12:49.140
All those things are incredibly hard, especially if your, your expertise is in software.

00:12:49.140 --> 00:12:54.200
So through Microsoft for startup, Founders Hub, you get access to their entire mentorship network,

00:12:54.200 --> 00:12:58.720
access a pool of hundreds of mentors across a bunch of disciplines like idea validation,

00:12:58.720 --> 00:13:04.520
fundraising, management, coaching, sales and marketing, and a bunch of technical areas as well.

00:13:04.520 --> 00:13:09.000
So you'll be able to book a one-on-one meetings with these mentors, many of whom are founders

00:13:09.000 --> 00:13:09.680
themselves.

00:13:09.680 --> 00:13:14.180
You'll make your idea a reality today with the critical support you'll get from Microsoft for

00:13:14.180 --> 00:13:14.940
startups, Founders Hub.

00:13:14.940 --> 00:13:17.940
To join the program, there are very few restrictions.

00:13:17.940 --> 00:13:20.000
You don't have to be third-party validated.

00:13:20.000 --> 00:13:22.360
You don't have to necessarily have funding.

00:13:22.360 --> 00:13:25.860
You just visit pythonbytes.fm/foundershub 2022.

00:13:25.860 --> 00:13:27.080
Link in your show notes.

00:13:27.080 --> 00:13:28.160
You apply for free.

00:13:28.160 --> 00:13:28.960
You get accepted.

00:13:28.960 --> 00:13:30.300
You get all these benefits.

00:13:30.300 --> 00:13:32.280
And it seems like a great program.

00:13:32.340 --> 00:13:32.780
Yeah.

00:13:32.780 --> 00:13:34.700
I'm excited to see what comes out of this.

00:13:34.700 --> 00:13:35.600
Yeah, absolutely.

00:13:35.600 --> 00:13:36.680
All right.

00:13:36.680 --> 00:13:38.820
What's, what do you got for us here, Brian?

00:13:38.820 --> 00:13:47.280
Well, it wouldn't be complete if we didn't talk about Will McGoogan a little bit.

00:13:47.280 --> 00:13:49.400
Absolutely.

00:13:49.400 --> 00:13:50.100
Hey, Will.

00:13:50.820 --> 00:13:56.080
So there's an article that is from the textualize.io blog.

00:13:56.080 --> 00:14:01.060
And it's seven things I've learned about building a modern TUI framework.

00:14:01.060 --> 00:14:06.440
And this is pretty interesting because I think that, I mean, Will, more than anybody else has

00:14:06.440 --> 00:14:11.560
went, has really thought about like, okay, I want to, I want to have something be really

00:14:11.560 --> 00:14:15.780
responsive and really good to work with on the command line, which is, it's been there for

00:14:15.780 --> 00:14:16.400
a long time.

00:14:16.640 --> 00:14:17.920
We just haven't developed it much.

00:14:17.920 --> 00:14:21.240
So there's a whole bunch of cool learnings that he talks about.

00:14:21.240 --> 00:14:26.580
Like terminals are fast and, and they're faster than we realize, but there's a whole bunch of

00:14:26.580 --> 00:14:31.640
like things that you can, that are different about terminals and other places like flicker

00:14:31.640 --> 00:14:34.180
and tearing and stuff and how to deal with that.

00:14:34.180 --> 00:14:35.880
There's a whole bunch of learnings in here.

00:14:35.880 --> 00:14:41.780
The thing that like popped out as something that everybody can use that I wanted to talk

00:14:41.780 --> 00:14:46.320
about was a little blip that he talked about that is dicta views are amazing.

00:14:46.320 --> 00:14:53.160
So the thing he talks about here is that so maybe, I don't know if everybody knows

00:14:53.160 --> 00:14:59.040
the term dicta views or views into a dictionary, but things like if you ask for, if you have a

00:14:59.040 --> 00:15:03.120
dictionary and you ask for the keys or you ask for items, that is a view.

00:15:03.120 --> 00:15:07.760
It's called a view into, into a dictionary and they are super fast.

00:15:07.760 --> 00:15:14.260
And one of the things he points out is that they act like they act like sets also.

00:15:14.260 --> 00:15:17.300
And you can use the, you can use set operators.

00:15:17.300 --> 00:15:20.900
Like here's the little carrot symbol and was, I can't remember.

00:15:20.900 --> 00:15:21.500
I'll have to look it up.

00:15:21.500 --> 00:15:24.220
The carrot symbol is a symmetric difference.

00:15:24.220 --> 00:15:28.900
Basically what's, what's just give me a set of the stuff that's different about the two

00:15:28.900 --> 00:15:30.740
different sets or two dictionaries.

00:15:30.900 --> 00:15:37.760
And the, you can do this in code, but he's doing it using, using views because those,

00:15:37.760 --> 00:15:41.360
those operators are happening with, with C code.

00:15:41.360 --> 00:15:43.540
Python has optimized those.

00:15:43.540 --> 00:15:48.800
So they, they work super fast and they're way faster than anything you could write in

00:15:48.800 --> 00:15:49.180
Python.

00:15:49.180 --> 00:15:55.660
So this just taking the items of two dictionaries and using a set operations on them.

00:15:55.660 --> 00:15:59.220
And then you can go back to dictionaries if you want, you don't have to use that, but

00:15:59.220 --> 00:16:00.060
super cool.

00:16:00.060 --> 00:16:04.100
I, I hadn't had, I didn't know that about dictionaries and views.

00:16:04.100 --> 00:16:05.260
So yeah, nice.

00:16:05.260 --> 00:16:09.720
Obviously use dot items and dot keys all the time.

00:16:09.720 --> 00:16:14.440
Didn't know they had this name and I didn't know you could do set operations on them.

00:16:14.440 --> 00:16:14.920
Quite cool.

00:16:14.920 --> 00:16:15.480
Right.

00:16:15.480 --> 00:16:15.900
Yeah.

00:16:15.900 --> 00:16:16.700
Super neat.

00:16:17.220 --> 00:16:22.500
Then he, he, he goes, covers a whole bunch of other stuff like LRU caching and the, how

00:16:22.500 --> 00:16:23.340
fast that is.

00:16:23.340 --> 00:16:30.060
One of the things that I thought was great where he talks about Unicode in art, Unicode art in

00:16:30.060 --> 00:16:35.680
doc strings of just like a picture says, says, you know, a picture gives you a thousand words

00:16:35.680 --> 00:16:36.080
or whatever.

00:16:36.080 --> 00:16:42.560
But, he, he, he gives an example here for talking about splitting, the screen

00:16:42.560 --> 00:16:43.500
into sub regions.

00:16:43.500 --> 00:16:49.180
And yeah, there's no way to, I mean, describing it in text is good, but this little picture

00:16:49.180 --> 00:16:51.600
goes, you can just mentally go, Oh yeah, I get it.

00:16:51.600 --> 00:16:56.720
If you give it a cut X and a cut Y, you end up with four regions, obviously, but it isn't

00:16:56.720 --> 00:16:58.360
obvious just looking at the API.

00:16:58.540 --> 00:17:02.160
but with, with a little picture, you're like, Oh yeah, that's cool.

00:17:02.160 --> 00:17:07.540
So he's got a little, for people listening, he's got a picture showing, just a spatially

00:17:07.540 --> 00:17:10.520
what, what it would look like using ASCII characters.

00:17:10.520 --> 00:17:11.420
So neat.

00:17:11.420 --> 00:17:11.940
Yeah.

00:17:11.940 --> 00:17:12.620
I love it.

00:17:12.620 --> 00:17:15.020
I love when people put art like that in there.

00:17:15.020 --> 00:17:17.180
I'm looking for where it is.

00:17:17.180 --> 00:17:22.240
I'd have to, I guess I'm going to have to look this up, but in CPython, there's actually

00:17:22.240 --> 00:17:28.340
this huge diagram in the malloc in the minute of the memory management section.

00:17:28.340 --> 00:17:33.560
that shows you it's like this, it shows you all the different, data structures

00:17:33.560 --> 00:17:39.740
and concepts that are used to manage memory, like the pools, the blocks and the arenas

00:17:39.740 --> 00:17:43.100
and all that stuff in like a huge diagram in code comments.

00:17:43.100 --> 00:17:43.620
It's perfect.

00:17:43.620 --> 00:17:44.120
Nice.

00:17:44.120 --> 00:17:48.920
And he gives a, shout out to just one, tool that's around.

00:17:48.920 --> 00:17:50.860
He must use it called Monodraw.

00:17:50.860 --> 00:17:55.380
It's a Mac tool, but so there are drawing tools that you can use to generate, ASCII

00:17:55.380 --> 00:17:55.580
art.

00:17:55.920 --> 00:17:58.420
So, or our Unicode art, as it were.

00:17:58.420 --> 00:17:58.900
Yeah.

00:17:58.900 --> 00:17:59.460
Yeah.

00:17:59.460 --> 00:17:59.660
Yeah.

00:17:59.660 --> 00:18:00.220
Nice.

00:18:00.220 --> 00:18:02.560
Oh, maybe, maybe I'll, I'll be able to find it here.

00:18:02.560 --> 00:18:03.340
Let's see.

00:18:03.340 --> 00:18:06.060
I'd love to share it with everyone if I can find it.

00:18:06.060 --> 00:18:06.600
Oh yes.

00:18:06.600 --> 00:18:07.360
Here we go.

00:18:07.360 --> 00:18:09.080
I'll put the link in here.

00:18:09.080 --> 00:18:09.940
You ready for this, Brian?

00:18:09.940 --> 00:18:10.520
Yeah.

00:18:10.520 --> 00:18:11.360
You can show it.

00:18:11.360 --> 00:18:11.760
Yeah.

00:18:11.760 --> 00:18:11.960
Yeah.

00:18:11.960 --> 00:18:13.100
I just got to, I had to find it.

00:18:13.100 --> 00:18:13.380
Hold on.

00:18:13.380 --> 00:18:13.920
There we go.

00:18:13.920 --> 00:18:14.560
Look at this.

00:18:14.560 --> 00:18:15.300
Oh yeah.

00:18:15.300 --> 00:18:18.660
Here's the, here's the object allocator in Python.

00:18:18.660 --> 00:18:21.600
And it shows here's the object specific ones, the ant dick.

00:18:21.600 --> 00:18:23.020
And then there's like object specific.

00:18:23.020 --> 00:18:24.040
And then you can see these tiers.

00:18:24.040 --> 00:18:26.860
Then there's the object, the Python object allocator, the raw memory.

00:18:26.860 --> 00:18:30.000
And it even goes down to like, here's the OS and the physical memory.

00:18:30.000 --> 00:18:34.000
And then, I think maybe further down, we might be able to find like some of the stuff

00:18:34.000 --> 00:18:35.760
about arenas or whatever, but isn't that nuts?

00:18:35.760 --> 00:18:36.280
Yeah.

00:18:36.320 --> 00:18:40.980
But also it's awesome because you, I mean, you can visually, now you can read the text

00:18:40.980 --> 00:18:42.860
and it makes more sense instead of just having.

00:18:42.860 --> 00:18:47.300
It has a short description and then a proper picture of here's what's happening.

00:18:47.300 --> 00:18:47.540
Yeah.

00:18:47.540 --> 00:18:47.980
Yeah.

00:18:47.980 --> 00:18:48.520
Absolutely.

00:18:48.520 --> 00:18:49.220
Very good.

00:18:49.220 --> 00:18:49.480
Cool.

00:18:49.480 --> 00:18:50.600
So yeah, yeah.

00:18:50.600 --> 00:18:52.760
That's a great, great example and great recommendation.

00:18:52.760 --> 00:18:57.100
Sometimes a little bit of ASCII art like this, it really does help.

00:18:57.100 --> 00:18:58.100
It goes a long ways.

00:18:58.100 --> 00:18:58.480
Yeah.

00:18:58.480 --> 00:18:58.920
Yeah.

00:18:58.920 --> 00:18:59.560
It sure does.

00:18:59.560 --> 00:19:02.060
A whole bunch of other great tips in Will's article.

00:19:02.060 --> 00:19:04.540
So, encourage people to check it out.

00:19:04.540 --> 00:19:04.880
Right on.

00:19:05.480 --> 00:19:07.460
Another thing that goes a long way is Python.

00:19:07.460 --> 00:19:12.840
There's an InfoWorld article that refers to Python as unstoppable.

00:19:12.840 --> 00:19:18.240
The title is Python popularity is still soaring, but the subtitle is unstoppable Python.

00:19:18.240 --> 00:19:24.660
Once again, ranked number one in the August updates for both the TOB and PYPL indexes.

00:19:24.660 --> 00:19:30.180
I don't know if that's PYPL or I don't know how to say this, but, another secondary programming

00:19:30.180 --> 00:19:31.000
language index.

00:19:31.000 --> 00:19:32.240
And, yeah.

00:19:32.240 --> 00:19:33.100
How cool is that?

00:19:33.100 --> 00:19:33.760
Very cool.

00:19:33.760 --> 00:19:35.360
Also a really nice rocket image.

00:19:35.360 --> 00:19:40.620
I was going to say, this is, it, it, it characterizes the other programming languages,

00:19:40.620 --> 00:19:42.820
hot air pollutants in Python as a rocket.

00:19:42.820 --> 00:19:43.440
Yeah.

00:19:43.440 --> 00:19:44.940
So, yeah.

00:19:44.940 --> 00:19:47.980
some interesting things to take away from here.

00:19:47.980 --> 00:19:54.260
Let's see that, Python first took the top spot just, last October.

00:19:54.260 --> 00:19:55.940
So that was actually big news, right?

00:19:55.940 --> 00:19:56.380
Yeah.

00:19:56.700 --> 00:20:02.020
Now it, that makes it the only language besides C and Java to ever hold the number one position

00:20:02.020 --> 00:20:03.080
from the TOB index.

00:20:03.080 --> 00:20:07.560
And not only is it still number one, but it's actually gained a couple of percentage points

00:20:07.560 --> 00:20:10.340
on the current rankings, year over year.

00:20:10.340 --> 00:20:16.580
So, for example, come down here, you can see it's actually up, you know, 3.56%.

00:20:16.580 --> 00:20:17.820
I think that's year over.

00:20:17.820 --> 00:20:18.000
Yeah.

00:20:18.000 --> 00:20:18.760
That's year over year.

00:20:18.760 --> 00:20:19.380
Nice.

00:20:19.380 --> 00:20:20.740
which, which is pretty awesome.

00:20:21.120 --> 00:20:24.420
also, but C and Java have gained also.

00:20:24.420 --> 00:20:28.100
So other, I guess we're whittling down, taking away from.

00:20:28.100 --> 00:20:31.180
I think it's taking from the lower languages down here, right?

00:20:31.180 --> 00:20:33.120
Like objective C or here we go.

00:20:33.120 --> 00:20:36.140
What a surprise you that Pearl and, Fortran have lost.

00:20:36.140 --> 00:20:40.080
by the way, also the, it has the ratings.

00:20:40.080 --> 00:20:44.560
I don't know if that's quite what you would consider market share, but Python is at 15%, you

00:20:44.560 --> 00:20:46.040
know, C is at 14%.

00:20:46.040 --> 00:20:50.240
things that, sometimes get compared like R is less than 1%.

00:20:50.240 --> 00:20:52.260
Ruby is less than 1%.

00:20:52.260 --> 00:20:55.220
Those are, pretty interesting, comparisons.

00:20:55.220 --> 00:20:55.760
Yeah.

00:20:55.760 --> 00:20:58.380
They're also not really general purpose languages.

00:20:58.380 --> 00:21:00.160
I mean, R isn't at least.

00:21:00.160 --> 00:21:02.020
So yeah, yeah, yeah, that's for sure.

00:21:02.020 --> 00:21:02.780
Let's see.

00:21:02.780 --> 00:21:03.100
Yeah.

00:21:03.100 --> 00:21:07.880
The, the TOB commentary accompanying the index was Python seems to be unstoppable.

00:21:07.880 --> 00:21:12.680
It's hard to find a field of programming in which Python is not used extensively, extensively

00:21:12.680 --> 00:21:15.880
nowadays, except for safety critical embedded systems.

00:21:15.880 --> 00:21:17.820
So that's, that's pretty cool.

00:21:17.820 --> 00:21:18.580
let's see.

00:21:18.800 --> 00:21:22.620
Rust is now number 22, closing in on the top 20 and carbon.

00:21:22.620 --> 00:21:23.880
Have you been tracking carbon?

00:21:23.880 --> 00:21:24.520
No.

00:21:24.520 --> 00:21:27.300
This is, I believe it's Google who is behind carbon.

00:21:27.300 --> 00:21:28.580
yeah.

00:21:28.580 --> 00:21:34.460
It's a language that's intended to be, to supplant C++, but be very C++ like.

00:21:34.460 --> 00:21:39.320
An experimental successor to C++ strives for the C++ performance and compatibility while

00:21:39.320 --> 00:21:43.300
avoiding its technical debt and extreme difficulty to improve.

00:21:43.300 --> 00:21:47.360
Ouch.

00:21:47.360 --> 00:21:48.180
Uh.

00:21:48.180 --> 00:21:48.520
Yeah.

00:21:48.520 --> 00:21:49.080
Yeah.

00:21:49.080 --> 00:21:53.360
Not saying extreme difficulty to use, but like, it's just, it's where it is.

00:21:53.360 --> 00:21:53.900
You know what I mean?

00:21:53.900 --> 00:21:54.420
Yeah.

00:21:54.420 --> 00:21:54.980
Yeah.

00:21:54.980 --> 00:21:59.100
It's like a language on top of a language on top of 50 years.

00:21:59.200 --> 00:21:59.640
Anyway.

00:21:59.640 --> 00:22:06.020
but so carbon has entered the index at a number, a position 192.

00:22:06.020 --> 00:22:07.000
They've got some work to do.

00:22:07.000 --> 00:22:07.380
Yeah.

00:22:07.380 --> 00:22:08.280
But it's still interesting.

00:22:08.280 --> 00:22:09.000
Something to watch.

00:22:09.000 --> 00:22:09.700
Yeah.

00:22:09.700 --> 00:22:12.100
And you look at the other programming index.

00:22:12.100 --> 00:22:14.140
Again, no idea how to say it.

00:22:14.360 --> 00:22:19.120
P Y P L the popularity of programming language is what the acronym stands for.

00:22:19.120 --> 00:22:25.160
It's an index creating, it's created by analyzing how often tutorials are, language

00:22:25.160 --> 00:22:26.720
tutorials are searched on Google.

00:22:26.720 --> 00:22:28.040
So that's one metric.

00:22:28.040 --> 00:22:33.760
Python is like massively ahead of second place, Java, third place JavaScript.

00:22:33.760 --> 00:22:36.720
And then it drops quick, quick, quick down from there.

00:22:36.720 --> 00:22:42.400
Like for example, Ruby, 1% people are interested in tutorials, how to do it versus almost 30% for

00:22:42.400 --> 00:22:42.700
Python.

00:22:42.700 --> 00:22:43.140
Hmm.

00:22:43.140 --> 00:22:43.520
Yeah.

00:22:43.660 --> 00:22:48.820
Anyway, that's just another, another, factor that was part of this info world

00:22:48.820 --> 00:22:49.140
article.

00:22:49.140 --> 00:22:53.580
So, you know, I, on one of the live streams, not too long ago, somebody said, Oh, I heard

00:22:53.580 --> 00:22:56.220
that there's not a whole lot of jobs or interest in Python.

00:22:56.220 --> 00:22:57.380
Maybe what else should I learn?

00:22:57.380 --> 00:22:57.980
But you know what?

00:22:57.980 --> 00:23:03.220
I'm not so sure you're getting great advice if, if that's, where, what you're thinking.

00:23:03.220 --> 00:23:03.920
Okay.

00:23:03.920 --> 00:23:08.100
I mean, popular is popular is not everything, but it's an important part of like, can I have

00:23:08.100 --> 00:23:08.460
a job?

00:23:08.460 --> 00:23:09.840
Can I find developers doing this?

00:23:09.840 --> 00:23:11.980
Will there be a library for my thing X?

00:23:11.980 --> 00:23:12.920
I want to talk to you with it.

00:23:12.960 --> 00:23:13.420
And so on.

00:23:13.420 --> 00:23:15.580
I, I love Python obviously.

00:23:15.580 --> 00:23:22.200
but I, it's hard to answer those like for a job, which languages should I, whether languages

00:23:22.200 --> 00:23:23.020
should I learn?

00:23:23.380 --> 00:23:25.600
I, I don't want to answer that.

00:23:25.600 --> 00:23:27.240
depends on what you're trying to get into.

00:23:27.240 --> 00:23:33.320
but, just as a roundabout developer, I think it is important to learn more than one

00:23:33.320 --> 00:23:33.640
language.

00:23:33.640 --> 00:23:37.380
I, I don't think that it would, I wouldn't want somebody to just stop with Python and say,

00:23:37.380 --> 00:23:37.920
Oh, I'm good.

00:23:37.920 --> 00:23:38.400
No, no, no.

00:23:38.400 --> 00:23:38.900
Yeah.

00:23:38.900 --> 00:23:39.120
Yeah.

00:23:39.380 --> 00:23:42.520
Well, and you also, if you want to build mobile apps, you might want to look elsewhere.

00:23:42.520 --> 00:23:43.040
I will.

00:23:43.040 --> 00:23:47.260
Except I might have a, I might have something in an extra section for you on that.

00:23:47.260 --> 00:23:47.720
Okay.

00:23:47.720 --> 00:23:48.100
Cool.

00:23:48.420 --> 00:23:49.900
But did I, did I switch the order?

00:23:49.900 --> 00:23:51.000
Did I jump in front of you?

00:23:51.000 --> 00:23:52.060
I think I may have.

00:23:52.060 --> 00:23:52.860
I don't think so.

00:23:52.860 --> 00:23:53.860
You've got one more thing to go.

00:23:53.860 --> 00:23:54.280
No.

00:23:54.280 --> 00:23:55.940
Tell us about some magic.

00:23:55.940 --> 00:23:57.880
Oh, no, this is part of one of my extras.

00:23:57.880 --> 00:23:58.540
So.

00:23:58.780 --> 00:23:59.480
Oh, this is when you're extras.

00:23:59.480 --> 00:23:59.740
Okay.

00:23:59.740 --> 00:24:00.840
Well, let's, that's it then.

00:24:00.840 --> 00:24:01.100
Yeah.

00:24:01.100 --> 00:24:01.380
Okay.

00:24:01.380 --> 00:24:01.860
Jump into your extras.

00:24:01.860 --> 00:24:02.460
Then let's jump into your extras.

00:24:02.460 --> 00:24:02.920
All right.

00:24:02.920 --> 00:24:03.080
Oh.

00:24:03.080 --> 00:24:04.260
I didn't want to cover this.

00:24:04.260 --> 00:24:08.220
Really quick, really quick comment just from, I think this is kind of amusing from SE Steve

00:24:08.220 --> 00:24:08.800
in the audience.

00:24:08.800 --> 00:24:12.160
Extreme difficulty to use is just a side benefit of C++.

00:24:12.160 --> 00:24:13.420
Yeah.

00:24:13.420 --> 00:24:14.760
I mean, yeah.

00:24:14.760 --> 00:24:15.640
Yeah.

00:24:15.640 --> 00:24:19.700
Think about all the jobs people get to keep without much effort over time.

00:24:19.700 --> 00:24:20.160
Like.

00:24:20.160 --> 00:24:20.880
Exactly.

00:24:20.880 --> 00:24:28.120
I mean, if there was a lot of competition for C++ developers, I don't know what I would

00:24:28.120 --> 00:24:28.840
I would do.

00:24:28.840 --> 00:24:30.940
I'm, I'm enjoying the competition.

00:24:30.940 --> 00:24:31.540
Yeah.

00:24:31.540 --> 00:24:32.820
so.

00:24:32.820 --> 00:24:33.220
Exactly.

00:24:33.220 --> 00:24:38.300
I just ran across this, the magic of my matplotlib style sheets, article, and

00:24:38.300 --> 00:24:42.880
I just wanted to bring it up for people that might, might want to, to try it out.

00:24:42.880 --> 00:24:48.760
So I've, I've used matplotlib, matplotlib style sheets before, and they're just

00:24:48.760 --> 00:24:49.060
great.

00:24:49.060 --> 00:24:54.120
So you could just say like, so let's say you've got a, a current plot and by default,

00:24:54.120 --> 00:24:55.900
it's just, it's not bad.

00:24:55.900 --> 00:24:57.840
It just, it, it is what it is.

00:24:57.920 --> 00:25:04.120
and then if you just drop in one line of code, use styles plot style use, and then

00:25:04.120 --> 00:25:07.220
you drop a style sheet name, there's a whole bunch of built-in ones you can use.

00:25:07.220 --> 00:25:08.560
It just looks nicer.

00:25:08.560 --> 00:25:10.180
It's got like, I love it.

00:25:10.180 --> 00:25:12.040
It's so unsettled, but it looks so much better.

00:25:12.040 --> 00:25:12.500
Yeah.

00:25:12.500 --> 00:25:16.640
but I didn't know that it's pretty easy to write your own.

00:25:16.640 --> 00:25:19.960
I didn't, I mean, I figured maybe style sheets were complicated.

00:25:19.960 --> 00:25:25.060
So the rest of this article just talks about, really how to, how to write your own

00:25:25.060 --> 00:25:25.620
style sheet.

00:25:25.620 --> 00:25:31.200
So, if anybody's interested in, in customizing the style sheet for their, for their group

00:25:31.200 --> 00:25:36.240
or something, might be a good thing to just have, you know, be able to roll your own

00:25:36.240 --> 00:25:36.860
style sheet.

00:25:36.860 --> 00:25:37.840
So here you go.

00:25:37.840 --> 00:25:37.840
Yeah.

00:25:37.840 --> 00:25:38.280
Fantastic.

00:25:38.280 --> 00:25:44.340
one of the things, that the 10 year old in me enjoyed that, the, if you

00:25:44.340 --> 00:25:50.980
want the lines to end in a square instead of a rounded line, you give it a solid cap style

00:25:50.980 --> 00:25:55.940
of, but, it makes it chop off the end.

00:25:55.940 --> 00:25:56.680
So that's funny.

00:25:56.680 --> 00:25:58.940
That is funny.

00:25:58.940 --> 00:26:00.940
all right.

00:26:00.940 --> 00:26:01.600
Yeah.

00:26:01.600 --> 00:26:05.640
This is not, this is not one of my extras, but I might as well add it as a follow on here

00:26:05.640 --> 00:26:08.940
is, XKCD plots have landed.

00:26:08.940 --> 00:26:09.500
Yeah.

00:26:09.500 --> 00:26:10.880
And Matt plot live, right?

00:26:10.880 --> 00:26:15.160
Like this, I'm sure this is probably accomplished the same way, but look at that.

00:26:15.160 --> 00:26:16.880
Isn't this, aren't these fantastic?

00:26:16.880 --> 00:26:22.820
I use these at work because they're just, it, especially, I especially like it.

00:26:22.820 --> 00:26:28.360
If, if I've just made up, like made up the data or my sample size is small, I don't want

00:26:28.360 --> 00:26:31.620
anybody to take it as like a research project.

00:26:31.620 --> 00:26:35.400
It's a, it's just, I'm, I'm showing something in informally.

00:26:35.400 --> 00:26:35.840
So.

00:26:35.840 --> 00:26:36.320
Right.

00:26:36.320 --> 00:26:36.580
Right.

00:26:36.580 --> 00:26:40.020
sometimes there's a whole ton of value to present it.

00:26:40.020 --> 00:26:41.140
Not quite polished.

00:26:41.140 --> 00:26:41.680
Yeah.

00:26:41.680 --> 00:26:46.260
There's an app I use called, let's see, what does it not want to make a new vault

00:26:46.260 --> 00:26:46.740
comic?

00:26:46.740 --> 00:26:48.400
Oh, it doesn't let me type in.

00:26:48.400 --> 00:26:54.640
Oh, well, it's called balsamic and it, it will generate wireframes of like web browsers

00:26:54.640 --> 00:26:57.280
and buttons or to do mobile apps or whatever.

00:26:57.280 --> 00:26:59.440
And it intentionally has this shape.

00:26:59.440 --> 00:27:03.420
Like it looks very XKCD like, like, okay, don't, this is not the answer.

00:27:03.420 --> 00:27:04.480
This is not the final thing.

00:27:04.480 --> 00:27:07.260
It's just to give you an idea of like, here's the layout and so on.

00:27:07.260 --> 00:27:07.660
Yeah.

00:27:07.660 --> 00:27:11.060
And it's, I think it's balsamic with a Q, if people are looking for it.

00:27:11.060 --> 00:27:11.320
Yes.

00:27:11.320 --> 00:27:13.120
It's, it's funky, small, it's spelled funky.

00:27:13.120 --> 00:27:13.560
Yeah.

00:27:13.640 --> 00:27:16.980
I think what happened is the, the, my keyboard's battery died.

00:27:16.980 --> 00:27:18.520
So anyway, that's why I can't type anymore.

00:27:18.520 --> 00:27:19.600
I'm not on a laptop.

00:27:19.600 --> 00:27:22.360
So when the battery dies, that's it, but that's fine.

00:27:22.360 --> 00:27:23.820
Cause I already got all the stuff I want to talk about.

00:27:23.820 --> 00:27:24.080
Anyway.

00:27:24.080 --> 00:27:29.580
we talked about, I wouldn't try to learn Python to write mobile apps and I still stand

00:27:29.580 --> 00:27:29.980
by that.

00:27:29.980 --> 00:27:36.600
But we discussed way back on episode, which one was it on 295 a couple of weeks ago, we

00:27:36.600 --> 00:27:40.600
talked about flit and flit lets you write flutter apps in Python.

00:27:40.600 --> 00:27:42.500
It is super neat.

00:27:42.500 --> 00:27:43.080
Yeah.

00:27:43.080 --> 00:27:48.820
Where, just look at an example or whatever, pull up the tutorial, but like the code that

00:27:48.820 --> 00:27:49.240
you write.

00:27:49.320 --> 00:27:53.140
I mean, if you ever done flutter, it feels very much like that.

00:27:53.140 --> 00:27:56.040
But what you write is Python and it's glorious.

00:27:56.040 --> 00:28:02.900
Anyway, the extra that I want to talk about is I had, theodore Fitzner, who is

00:28:02.900 --> 00:28:05.980
the creator of flit on talk Python last week.

00:28:05.980 --> 00:28:09.980
And if people want to hear what he had to say about it in our conversation, they should check

00:28:09.980 --> 00:28:10.260
that out.

00:28:10.260 --> 00:28:10.760
Nice.

00:28:10.760 --> 00:28:11.220
Yeah.

00:28:11.420 --> 00:28:11.720
All right.

00:28:11.720 --> 00:28:12.860
That's it for my extras.

00:28:12.860 --> 00:28:15.460
I believe it's you, you ready for a joke?

00:28:15.460 --> 00:28:16.100
I am.

00:28:16.100 --> 00:28:20.180
But I just, I want to like pause and just say, well, I think that's one of the cool things

00:28:20.180 --> 00:28:27.600
about how we've done, Python bytes and talk Python and testing code of, if

00:28:27.600 --> 00:28:33.040
we do these small segments within Python bytes, but if we can, if we want to just also do like

00:28:33.040 --> 00:28:36.420
a deep dive, we've got the other podcasts to do a deep dive into something.

00:28:36.420 --> 00:28:37.360
It's good.

00:28:37.360 --> 00:28:38.240
So absolutely.

00:28:38.240 --> 00:28:40.840
It's super nice and kind of on purpose, right?

00:28:40.860 --> 00:28:44.000
We kind of designed this one so we could just quick talk about to fun stuff.

00:28:44.000 --> 00:28:47.080
And then the other one, if you really want to spend an hour on something like that's what

00:28:47.080 --> 00:28:47.460
it's for.

00:28:47.460 --> 00:28:47.880
Yeah.

00:28:47.880 --> 00:28:51.020
So hopefully people listen to both or all three, I rather three.

00:28:51.020 --> 00:28:52.540
Yeah, exactly.

00:28:52.540 --> 00:28:53.120
Yeah.

00:28:53.120 --> 00:28:53.320
Yeah.

00:28:53.320 --> 00:28:53.500
Yeah.

00:28:53.500 --> 00:28:53.720
Yeah.

00:28:53.720 --> 00:28:54.460
All right.

00:28:54.460 --> 00:28:55.340
Now something funny.

00:28:55.340 --> 00:29:00.300
Now, you know, we talked about the cloud stuff and you, you specifically ask about price.

00:29:00.300 --> 00:29:01.200
So here's the joke.

00:29:01.200 --> 00:29:03.880
This one has two pictures.

00:29:03.880 --> 00:29:08.760
One, somebody who is new to AWS and somebody who has experienced at AWS.

00:29:09.680 --> 00:29:15.260
The new person, it shows this like cartoon character walking one step steps on a rake.

00:29:15.260 --> 00:29:17.620
The rake wax up and smashes them in the faces.

00:29:17.620 --> 00:29:18.480
New to AWS.

00:29:18.480 --> 00:29:22.060
Accidental $50,252 monthly bill.

00:29:22.060 --> 00:29:26.760
The experienced one with the rake is like, you know, sometimes skateboarders will jump up

00:29:26.760 --> 00:29:29.700
and they'll like grind down like a stair railing.

00:29:29.700 --> 00:29:30.860
It'll do something amazing.

00:29:31.140 --> 00:29:32.460
Well, it's a kickflip they're showing.

00:29:32.460 --> 00:29:33.200
Yeah.

00:29:33.200 --> 00:29:33.660
Yeah.

00:29:33.660 --> 00:29:33.840
That's right.

00:29:33.840 --> 00:29:34.480
Off the stairs.

00:29:34.480 --> 00:29:35.620
The kickflip off the stairs.

00:29:35.620 --> 00:29:37.780
And like that often goes good, but not always.

00:29:37.780 --> 00:29:40.520
So here they're doing like an amazing kickflip with the rake.

00:29:40.520 --> 00:29:41.240
Off the rake.

00:29:41.240 --> 00:29:45.140
And then they land at the bottom, smacks them in the faces.

00:29:45.140 --> 00:29:49.040
Accidental $50,252 bill.

00:29:49.040 --> 00:29:50.020
Yeah.

00:29:50.020 --> 00:29:50.960
Yeah.

00:29:51.600 --> 00:29:56.780
And then down here, there's a funny comment from somebody who, how they forgot to turn

00:29:56.780 --> 00:29:57.260
off something.

00:29:57.260 --> 00:29:59.220
So they just, but luckily their card expired.

00:29:59.220 --> 00:30:02.620
So they just let their EC2 account expire.

00:30:02.620 --> 00:30:05.780
And, you know, Amazon was talking about doing like healthcare stuff and whatnot.

00:30:05.780 --> 00:30:11.680
So this, this person here, Jess, Jess, the unstill says, just wait soon enough.

00:30:11.680 --> 00:30:15.520
If you don't pay your EC2 AWS bill, they won't even let you visit your doctor.

00:30:15.520 --> 00:30:19.580
Sometimes things are funny.

00:30:19.580 --> 00:30:25.500
Interesting idea though, to, to attach your AWS account to a credit card with a low balance.

00:30:25.500 --> 00:30:28.100
So that's, that's one of the interesting.

00:30:28.100 --> 00:30:29.000
Yes, exactly.

00:30:29.000 --> 00:30:30.100
It might be a benefit.

00:30:30.100 --> 00:30:30.860
Yeah.

00:30:30.860 --> 00:30:33.520
It just might be a benefit actually.

00:30:33.520 --> 00:30:34.100
Yeah.

00:30:34.100 --> 00:30:34.700
Quite cool.

00:30:34.980 --> 00:30:39.560
Anyway, I thought this was kind of funny, but you also have heard of real stories of

00:30:39.560 --> 00:30:44.100
startups shutting down because they accidentally did get like a $60,000 bill and they're like,

00:30:44.100 --> 00:30:44.820
we can't pay this.

00:30:44.820 --> 00:30:46.720
Well, also just, yeah.

00:30:46.720 --> 00:30:52.960
Or, or somebody just misconfigured it and suddenly they're, they're making like the transfers are

00:30:52.960 --> 00:30:56.320
like, you know, three times larger than they're supposed to be or something like that.

00:30:56.320 --> 00:30:57.080
Yeah, absolutely.

00:30:57.080 --> 00:31:02.360
So every time I run this command, it spins up a cool VM to do the test in the cloud.

00:31:02.360 --> 00:31:03.640
I forgot to shut it down.

00:31:04.180 --> 00:31:05.860
Now I have a hundred VMs running.

00:31:05.860 --> 00:31:07.800
Yeah.

00:31:07.800 --> 00:31:08.260
Yeah.

00:31:08.260 --> 00:31:13.140
So concrete advice, you can set up billing alerts at different tiers.

00:31:13.140 --> 00:31:15.840
Like once it crosses a hundred dollars, send me a message.

00:31:15.840 --> 00:31:18.020
Once it crosses $200, send me a message.

00:31:18.020 --> 00:31:22.800
Those numbers will differ for people, but I would strongly recommend that you set that up at your

00:31:22.800 --> 00:31:23.360
cloud provider.

00:31:23.360 --> 00:31:28.340
Like if it goes beyond a reasonable amount of what I normally would like to pay or expect

00:31:28.340 --> 00:31:28.720
to pay.

00:31:28.720 --> 00:31:29.200
Yeah.

00:31:29.400 --> 00:31:30.640
Let me know soon.

00:31:30.640 --> 00:31:31.720
Yeah.

00:31:31.720 --> 00:31:32.800
Not like tomorrow.

00:31:32.800 --> 00:31:34.140
Let me know right away.

00:31:34.140 --> 00:31:35.780
Exactly.

00:31:35.780 --> 00:31:38.520
In fact, can you make my smoke alarm go off?

00:31:38.520 --> 00:31:40.440
Because I really need to get up and get going.

00:31:40.440 --> 00:31:42.020
Yeah.

00:31:43.240 --> 00:31:44.320
So anyway.

00:31:44.320 --> 00:31:44.680
All right.

00:31:44.680 --> 00:31:46.500
Well, fantastic to be here with you, Brian.

00:31:46.500 --> 00:31:47.660
Good to be with you too.

00:31:47.660 --> 00:31:48.580
Talk to you next week.

00:31:48.580 --> 00:31:48.900
Yep.

00:31:48.900 --> 00:31:49.300
Yep.

00:31:49.300 --> 00:31:49.700
See you later.

00:31:49.700 --> 00:31:50.980
Thanks everyone for listening.

00:31:50.980 --> 00:31:51.760
Oh, really quick.

00:31:51.760 --> 00:31:54.400
One piece of follow up out here from Kim and the audience.

00:31:54.400 --> 00:32:00.820
If a huge AWS bill accidentally happens, I'd rather I can speak to the AWS directly before

00:32:00.820 --> 00:32:01.920
giving in in despair.

00:32:01.920 --> 00:32:02.200
Yeah.

00:32:02.200 --> 00:32:02.540
Indeed.

00:32:02.540 --> 00:32:02.960
Yeah.

00:32:02.960 --> 00:32:07.980
I've heard of success stories where people just talk and they work with them.

00:32:07.980 --> 00:32:09.140
On the other top.

00:32:09.140 --> 00:32:09.680
It's worth a try.

00:32:09.680 --> 00:32:14.380
On the drawing topic, Will recommends that, where'd it go?

00:32:14.380 --> 00:32:17.040
AccelerDraw has a similar look.

00:32:17.040 --> 00:32:18.160
So I'll have to check that out too.

00:32:18.160 --> 00:32:18.620
Yeah.

00:32:18.620 --> 00:32:19.360
I haven't heard of that one.

00:32:19.360 --> 00:32:19.680
That's cool.

00:32:19.680 --> 00:32:20.280
All right.

00:32:20.280 --> 00:32:20.560
All right.

00:32:20.560 --> 00:32:21.220
Talk to you later.

00:32:21.220 --> 00:32:21.680
See you all later.