WEBVTT

00:00:00.001 --> 00:00:09.040
Hello and welcome to Python Bytes. It's episode 24 and we are going to deliver Python news and headlines directly to your earbuds.

00:00:09.040 --> 00:00:15.000
This episode is recorded on May 2nd, 2017 and is brought to you by Rollbar.

00:00:15.000 --> 00:00:16.740
I'm Michael Kennedy.

00:00:16.740 --> 00:00:17.640
And I'm Brian Okken.

00:00:17.640 --> 00:00:22.180
And we're here to bring you a bunch of Python news, but this time it's a little different.

00:00:22.180 --> 00:00:29.880
Normally we're broadcasting from two secret locations in Portland, Oregon, but this time, Brian, you're dialing from slightly farther away.

00:00:30.060 --> 00:00:33.360
Yeah, I'm just south, what, southeast of Munich today.

00:00:33.360 --> 00:00:38.700
Right on. Well, welcome to Europe. Let's start with learning Python out of Munich.

00:00:38.700 --> 00:00:47.740
Yeah, so this is one of the, I think a listener of the show contacted us, said he wrote a learning Python series,

00:00:47.740 --> 00:00:52.180
but he wrote it for a group called Robotics and Beyond.

00:00:52.180 --> 00:00:56.400
And it's a STEM educational space, which really looks cool.

00:00:57.060 --> 00:01:04.700
But he's, I think it looks like a nice tutorial and he's publishing it on Dan Bader's site, dbader.org.

00:01:04.700 --> 00:01:11.060
And the first in the series is, let's program with Python statements, variables, and loops.

00:01:11.580 --> 00:01:18.800
And I think he's coming at it from a space of, if you, yeah, just really getting started, haven't done much.

00:01:18.800 --> 00:01:24.700
And I like, he's even talking about, goes through, even what is programming.

00:01:24.700 --> 00:01:27.840
He's assuming people haven't done programming before.

00:01:27.980 --> 00:01:33.200
So talking about how it's telling people how to, how you're telling the computer how to do steps.

00:01:33.200 --> 00:01:39.960
And, and, and, you know, it's, it's hard for me to put my head back in the space of new to programming.

00:01:39.960 --> 00:01:47.900
But I think this is, it looks like a, something that might be good for, I don't know what age group, but it'd be good.

00:01:48.160 --> 00:01:52.080
Yeah. Well, we're going to talk about a lot of different age groups, but way to go, Doug.

00:01:52.080 --> 00:01:52.740
That's awesome.

00:01:52.740 --> 00:01:56.220
It's really hard to, you know, get rid of the curse of knowledge, right?

00:01:56.220 --> 00:02:00.900
Once you've learned a thing, it's really hard to see it with fresh eyes and understand the challenges and stuff.

00:02:00.900 --> 00:02:02.760
So that's really cool.

00:02:02.940 --> 00:02:07.060
And don't you wish something like robotics and beyond existed when you were a kid?

00:02:07.060 --> 00:02:08.100
Yeah, I do.

00:02:08.100 --> 00:02:17.080
And one of the things that I like also about having lots of different people tackle the new to programming space is that everybody learns differently.

00:02:17.080 --> 00:02:20.200
So you might look at one series and go, man, I just don't get it.

00:02:20.200 --> 00:02:23.100
And then look at somebody else's and it just clicks like this.

00:02:23.100 --> 00:02:25.160
This one uses turtle graphics and stuff.

00:02:25.160 --> 00:02:30.540
I haven't seen people use turtle graphics very much recently, but so that's kind of fun.

00:02:30.540 --> 00:02:31.000
Oh yeah.

00:02:31.000 --> 00:02:31.580
Very cool.

00:02:31.580 --> 00:02:32.780
Nice.

00:02:33.180 --> 00:02:33.440
All right.

00:02:33.440 --> 00:02:34.000
That's a great one.

00:02:34.000 --> 00:02:34.800
So check that out.

00:02:34.800 --> 00:02:37.900
If people ask you for how to get started programming, right?

00:02:37.900 --> 00:02:38.560
Maybe kids.

00:02:38.560 --> 00:02:39.860
There's a lot of good options.

00:02:39.860 --> 00:02:40.700
Here's one more.

00:02:40.700 --> 00:02:49.220
So speaking of learning to program, I picked one that is an actual academic paper, but I felt it was pretty interesting.

00:02:49.220 --> 00:02:50.460
This is done by Philip Guau.

00:02:50.460 --> 00:02:52.240
I've had him on Talk Python a few times.

00:02:52.240 --> 00:03:01.880
In this one, he's talking about helping older adults learn to become programmers or become more proficient in programming.

00:03:02.280 --> 00:03:03.680
Like what you were just talking about.

00:03:03.680 --> 00:03:07.980
There's a lot of, hey, you're a young kid.

00:03:07.980 --> 00:03:14.000
You want to get started with robots and programming and here's how you do it and we'll get you going to launch your career and stuff.

00:03:14.500 --> 00:03:26.260
But Philip said like so many of these resources are focused on the young teenage to early 20s group starting their career.

00:03:26.260 --> 00:03:35.580
But, you know, how much do we really know about people who are 60 to 85 years old who are just learning to program?

00:03:35.580 --> 00:03:41.560
So he actually wrote a proper academic paper and did a bunch of research on those guys.

00:03:42.000 --> 00:03:42.200
Wow.

00:03:42.200 --> 00:03:43.220
I think that's cool.

00:03:43.220 --> 00:03:44.120
It is really cool.

00:03:44.120 --> 00:03:52.020
The age group, I guess I wouldn't expect people from in the like, I guess you've listed 60 to 85.

00:03:52.020 --> 00:03:53.880
Was that the age group of the respondents?

00:03:53.880 --> 00:03:55.580
That was the age group of the respondents.

00:03:55.720 --> 00:03:55.800
Yeah.

00:03:55.800 --> 00:04:01.700
If you were outside of that age range, mostly younger, then you were sort of not included.

00:04:01.700 --> 00:04:02.000
Right.

00:04:02.000 --> 00:04:07.320
Like it was really focused on people who were basically either about to retire or who were retired.

00:04:08.120 --> 00:04:10.120
And it looked at a couple of different aspects.

00:04:10.120 --> 00:04:13.060
Like why are they interested in learning a program?

00:04:13.060 --> 00:04:17.440
What challenges do they have that they share with everyone who's learning a program?

00:04:17.440 --> 00:04:18.540
Like what's a variable?

00:04:18.540 --> 00:04:19.880
Ah, what's a pointer, right?

00:04:19.880 --> 00:04:20.880
Like everybody suffers that.

00:04:20.880 --> 00:04:24.620
But there's also specific challenges for that age group.

00:04:24.620 --> 00:04:29.620
And then also, you know, just what are they using to learn?

00:04:29.620 --> 00:04:34.200
And some of the lessons on how maybe we can make the whole environment better for those guys as well.

00:04:34.200 --> 00:04:35.140
I think that's great.

00:04:35.140 --> 00:04:35.780
Yeah, I do too.

00:04:35.780 --> 00:04:42.560
So I think it's interesting to look at what some of the reasons why people in this age group were learning to program.

00:04:42.560 --> 00:04:47.140
Some of them just said like, look, I'm now retiring and I've always wanted to learn to program.

00:04:47.140 --> 00:04:48.940
And maybe I did something technical.

00:04:48.940 --> 00:04:52.520
Like maybe I was a scientist, but I never really got around to really learning to programming.

00:04:52.520 --> 00:04:55.000
So that might be one reason.

00:04:55.000 --> 00:04:56.680
Another was connecting with grandchildren.

00:04:56.680 --> 00:05:03.180
So a lot of these folks have children who are maybe taking this robotics and beyond type course.

00:05:03.180 --> 00:05:05.560
And they're like, hey, I would love to do that with my grandchild.

00:05:05.560 --> 00:05:07.640
But let me, I got to learn Python myself, right?

00:05:07.640 --> 00:05:14.000
Another big opportunity here is there's a pretty big gap between people can do programming and people are teaching kids.

00:05:14.440 --> 00:05:25.000
And so people in this age group also have a lot of time if they're retired to maybe donate, you know, an hour or two a week at some place mentoring or something like that.

00:05:25.000 --> 00:05:34.700
So maybe they could fill in this, like sort of help teachers at high schools and middle schools with actually teaching programming and not just like the coding class teaches HTML, right?

00:05:34.700 --> 00:05:35.600
Something like that.

00:05:35.600 --> 00:05:40.320
As well as like just keeping mentally active and pursuing hobbies, right?

00:05:40.320 --> 00:05:45.300
Like their hobby is airplanes and they are going to create something that works with airplanes somehow.

00:05:45.480 --> 00:05:52.820
Yeah, I think, and then I could see probably the maker space getting into that and people trying to program Raspberry Pis and stuff like that.

00:05:52.820 --> 00:05:53.440
Yeah, absolutely.

00:05:53.440 --> 00:05:53.980
Absolutely.

00:05:53.980 --> 00:05:59.540
There's a lot of cool stuff, a lot of cool times with like the micro Python type of stuff as well.

00:05:59.540 --> 00:06:02.380
So if you're interested in this, check this out.

00:06:02.380 --> 00:06:07.000
I'm also planning on doing a full proper Talk Python episode with Philip in a few weeks.

00:06:07.000 --> 00:06:09.800
So we'll catch up on that and go deeper on that show.

00:06:09.800 --> 00:06:10.540
Okay, great.

00:06:10.540 --> 00:06:16.640
Hey, so next up, I've got something that I've been, we talked about, I can't even remember what episode.

00:06:16.640 --> 00:06:27.740
I was looking for a good way to have a local PyPI server just like so you can sort of not have to go out onto PyPI all the time.

00:06:28.400 --> 00:06:33.040
And especially on the plane trip when I was flying over here, I knew I wouldn't have an internet connection.

00:06:33.040 --> 00:06:40.880
So I wanted to make sure I had a cache of all of the packages I needed for while I was programming on the plane.

00:06:40.880 --> 00:06:49.860
And I don't know when this crept in, but there's, pip has download now and I don't think it used to always have that.

00:06:49.860 --> 00:06:55.860
But you can just, and I've got the, I put just the few lines of code you need in our show notes.

00:06:56.040 --> 00:07:06.900
But it's just, you go to a directory you want and you type pip download and some package and it downloads that package and all of its dependencies and doesn't install it.

00:07:06.900 --> 00:07:09.700
It just stores the wheels in that directory.

00:07:09.700 --> 00:07:10.640
Yeah, that's super cool.

00:07:10.640 --> 00:07:15.340
So you can, you can basically create an offline version of PyPI.

00:07:15.720 --> 00:07:17.460
And it just, it's really quick.

00:07:17.460 --> 00:07:20.400
You can even list multiple packages on the line.

00:07:20.400 --> 00:07:28.300
I just, I knew like the 10 or 12 that I needed and didn't know what their dependencies were and just filled up a directory in like 10 minutes or less.

00:07:28.680 --> 00:07:30.140
And then I was ready to go.

00:07:30.140 --> 00:07:40.020
And then you just have to use the, when you're doing the install, you do the --no index and --find links and point it to your directory.

00:07:40.500 --> 00:07:42.600
And then the rest is the same.

00:07:42.600 --> 00:07:43.880
You just give it a package.

00:07:43.880 --> 00:07:45.960
And this includes like version numbers.

00:07:45.960 --> 00:07:48.900
So you can, you can have multiple versions in there as well.

00:07:48.900 --> 00:07:51.880
So anyway, just wanted to share that with everybody.

00:07:51.880 --> 00:07:52.320
Nice.

00:07:52.320 --> 00:07:59.680
Do you know if I can, can I give it like a requirements TXT and say, download that, you know, download the results that I suspect you can, right?

00:08:00.000 --> 00:08:04.280
Probably pip download -r requirements, you know, dot TXT, I bet.

00:08:04.280 --> 00:08:05.060
Probably.

00:08:05.060 --> 00:08:07.900
I don't usually work with requirements files, so.

00:08:07.900 --> 00:08:08.200
Nice.

00:08:08.200 --> 00:08:08.460
Okay.

00:08:08.460 --> 00:08:09.280
This is a cool thing.

00:08:09.280 --> 00:08:18.760
So if you maybe were going to be stuck on an airplane and trains and other places for like 18 hours straight, you might want to take some packages with you, right?

00:08:18.760 --> 00:08:20.100
Yes.

00:08:20.100 --> 00:08:20.680
That's awesome.

00:08:20.680 --> 00:08:21.000
Okay.

00:08:21.000 --> 00:08:23.320
So that's a really, really cool tip there.

00:08:23.480 --> 00:08:33.060
I know there's the, like the dev pie and the actual local proper pipe AI servers that you can set up and just point at the URL, but I didn't know about this, this local download option.

00:08:33.060 --> 00:08:33.680
So this is great.

00:08:33.680 --> 00:08:41.700
And that the, all those other little pipe AI servers, I know that the setup says that they're really easy, but I haven't been able to get it to work for me.

00:08:41.700 --> 00:08:45.740
So I don't know what I'm doing wrong, but anyway, so this is easy.

00:08:45.740 --> 00:08:46.080
Yeah.

00:08:46.080 --> 00:08:49.820
This definitely like everybody has a directory, so they can do it.

00:08:49.820 --> 00:08:52.620
You don't have to have the right infrastructure around it.

00:08:52.620 --> 00:08:52.920
That's cool.

00:08:52.920 --> 00:08:53.720
All right.

00:08:53.720 --> 00:09:00.680
Before we get onto the next item, which is about adding features to the Python language itself, I want to just say thanks to Rollbar.

00:09:00.680 --> 00:09:02.740
You guys have heard me talk about Rollbar a lot.

00:09:02.740 --> 00:09:06.180
You know that I use Rollbar on my websites and really, really like Rollbar.

00:09:06.180 --> 00:09:20.320
Basically, all you have to do is pip install Rollbar, maybe include a line or two in the config or setup for your Python web app, and it's tracking all these errors and sending you reports and notifications with lots of details anytime it happens.

00:09:21.200 --> 00:09:23.680
So these guys are going to have a booth at PyCon.

00:09:23.680 --> 00:09:25.100
They're going to be just like us, Brian.

00:09:25.100 --> 00:09:26.720
We're all going to have booths at PyCon.

00:09:26.720 --> 00:09:27.880
Yeah.

00:09:27.880 --> 00:09:30.300
I'm going to have to go get a Rollbar sticker for them.

00:09:30.300 --> 00:09:30.800
Yeah.

00:09:30.800 --> 00:09:33.200
Definitely get a Rollbar sticker, maybe a Rollbar shirt.

00:09:33.200 --> 00:09:41.320
I don't know what kind of swag they're bringing to the show, but they want to make sure that you know there's a booth for Rollbar at PyCon.

00:09:41.320 --> 00:09:45.280
And so drop by and they'll give you a demo and give you some kind of swag to go with it.

00:09:45.280 --> 00:09:45.580
Awesome.

00:09:45.580 --> 00:09:46.060
Awesome.

00:09:46.060 --> 00:09:46.480
Yeah.

00:09:46.480 --> 00:09:47.280
So just check them out.

00:09:47.280 --> 00:09:49.320
Rollbar.com slash Python bytes.

00:09:49.320 --> 00:09:54.200
Get the bootstrap plan for free, which is 100,000 events and 180 days of retention.

00:09:54.200 --> 00:09:57.220
And hopefully you don't use up that many errors.

00:09:57.220 --> 00:09:58.440
But if you do, they got you covered.

00:09:58.440 --> 00:09:59.600
All right.

00:09:59.720 --> 00:10:05.820
So you know what would be cool is if we could have increment and decrement operators in Python.

00:10:05.820 --> 00:10:10.300
We can do plus equals one, but think of all the characters we're wasting there.

00:10:10.300 --> 00:10:11.860
What if we could just do plus plus?

00:10:11.860 --> 00:10:12.440
Yeah.

00:10:12.440 --> 00:10:15.380
Do you know why Python doesn't have increment and decrement operators?

00:10:15.380 --> 00:10:17.140
I have a theory, but I don't actually know.

00:10:17.140 --> 00:10:18.120
I don't know why.

00:10:18.120 --> 00:10:18.680
Do you?

00:10:18.680 --> 00:10:21.000
Certainly the language was created after.

00:10:21.000 --> 00:10:24.080
No, I mean, it was created after C and C++, right?

00:10:24.080 --> 00:10:27.240
So it's not like it wasn't known as a possibility.

00:10:27.240 --> 00:10:30.940
I suspect it was to keep it more explicit, right?

00:10:30.940 --> 00:10:36.680
You know, one of the challenges of plus plus and minus minus and those types of things is

00:10:36.680 --> 00:10:41.500
a lot of languages that support them support like two variations, like plus plus variable

00:10:41.500 --> 00:10:42.720
and variable plus plus.

00:10:42.720 --> 00:10:47.360
And it's always like, okay, well, what that increments it and then returns the incremented

00:10:47.360 --> 00:10:51.080
value versus returns original value and then increment is just like, it's kind of confusing.

00:10:51.080 --> 00:10:53.500
Like why is like increment confusing?

00:10:53.780 --> 00:10:57.280
And so I suspect Coeta is just like, all right, just simple.

00:10:57.280 --> 00:11:02.720
It's also like, like in C++, it matters which side of the assignment operator it's on to.

00:11:02.720 --> 00:11:05.000
If it's an L value and R value.

00:11:05.000 --> 00:11:07.880
So yes, all those things.

00:11:07.880 --> 00:11:14.660
And so it doesn't have one, but friend of the show, Anthony Shaw said, let's see what it would

00:11:14.660 --> 00:11:16.420
be like if we tried to add one.

00:11:16.420 --> 00:11:21.100
And I think this is cool because it actually, his article on Medium takes you through step

00:11:21.100 --> 00:11:25.620
by step what it is you need to do to add a new feature to the Python language.

00:11:25.620 --> 00:11:29.960
So basically he writes an article that adds plus plus and minus minus to CPython.

00:11:29.960 --> 00:11:34.060
I like the, where he's going with it and also teaching people how to do this.

00:11:34.060 --> 00:11:35.000
It's kind of neat.

00:11:35.080 --> 00:11:35.220
Yeah.

00:11:35.220 --> 00:11:39.540
It certainly takes some of the mystery of like, well, how would you even start out of

00:11:39.540 --> 00:11:39.680
this?

00:11:39.680 --> 00:11:42.460
So he says, look, there's basically five or six levels.

00:11:42.460 --> 00:11:47.360
So you're going to start by doing a PEP to get agreement on what the language feature is

00:11:47.360 --> 00:11:47.800
going to be.

00:11:47.800 --> 00:11:53.060
Then there's a grammar file that describes what the statements in Python are.

00:11:53.300 --> 00:11:59.080
You don't want to just cram it into CPython, the execution engine, because things like

00:11:59.080 --> 00:12:03.600
PyPy and other implementations, you want those to stay consistent.

00:12:03.600 --> 00:12:05.440
So there's this grammar file they all share.

00:12:05.440 --> 00:12:07.140
It talks about how to add them.

00:12:07.140 --> 00:12:11.360
And it turns out it's like super easy to add these, these new things.

00:12:11.360 --> 00:12:13.560
Then there's the Lexer that parses it.

00:12:13.560 --> 00:12:16.340
Lexer that goes through and sorry, turns it to tokens.

00:12:16.340 --> 00:12:19.060
Then the parser takes the tokens to abstract syntax trees.

00:12:19.060 --> 00:12:22.840
And then there's a compiler actually compiles it to instructions.

00:12:22.840 --> 00:12:25.760
So he goes through all the steps and shows you how it works.

00:12:25.760 --> 00:12:31.840
And even has his attempt to add this feature to Python itself out on GitHub, if you want

00:12:31.840 --> 00:12:32.460
to check it out.

00:12:32.460 --> 00:12:35.900
So he's got a working version with plus plus.

00:12:35.900 --> 00:12:36.720
That's pretty cool.

00:12:36.720 --> 00:12:41.760
Maybe we could get him to add begin and end to blocks.

00:12:41.760 --> 00:12:44.140
Hopefully he's no.

00:12:44.140 --> 00:12:45.880
And curly braces.

00:12:45.880 --> 00:12:47.020
We all love the curly braces.

00:12:47.020 --> 00:12:47.720
No, just kidding.

00:12:47.720 --> 00:12:49.380
Okay, so that's awesome.

00:12:49.380 --> 00:12:54.400
Another thing that you brought up that I like is colorful, right?

00:12:54.400 --> 00:13:00.740
So I think so many of the apps that we create in Python are sort of terminal level or CLI type

00:13:00.740 --> 00:13:01.060
apps.

00:13:01.060 --> 00:13:03.980
So people really could do more to make them pretty, right?

00:13:03.980 --> 00:13:04.500
Yeah.

00:13:04.500 --> 00:13:07.160
So I've been working a lot with pytest lately.

00:13:07.160 --> 00:13:11.700
And one of the great benefits of it is the color in the terminal window.

00:13:11.700 --> 00:13:16.800
And working with terminal colors isn't, this is often not very fun.

00:13:16.800 --> 00:13:22.980
But this colorful project is actually got a syntax that's pretty darn readable.

00:13:22.980 --> 00:13:29.100
And once you've figured out what colors and what syntax, what different parts of your interface,

00:13:29.100 --> 00:13:31.120
your command line interface, you want different colors.

00:13:31.260 --> 00:13:36.840
I don't think you're going to really have to care, like really muck with it too much using colorful.

00:13:36.840 --> 00:13:44.060
And it even has things like piping colors to strings and like different plus and and operators

00:13:44.060 --> 00:13:46.160
that make sense with colors.

00:13:46.600 --> 00:13:48.720
And I like what they're going doing with this.

00:13:48.720 --> 00:13:49.580
Yeah, that's cool.

00:13:49.580 --> 00:13:50.820
I do as well.

00:13:50.820 --> 00:13:53.640
And the couple of things that really stood out is nice to me.

00:13:53.640 --> 00:13:58.680
One is the syntax is pretty straightforward on how you use it.

00:13:58.680 --> 00:14:01.180
The fact that you can use hexadecimal.

00:14:01.180 --> 00:14:06.680
So you can just, you know, hash F-A-F-A-F-A for gray or whatever, right?

00:14:06.680 --> 00:14:11.680
You can take sort of web colors and plug them in, which is really cool.

00:14:11.680 --> 00:14:14.780
And they even have themes, like you can set up general themes.

00:14:14.780 --> 00:14:16.160
You can use context managers.

00:14:16.160 --> 00:14:18.680
So in a width block, you can set a color, things like that.

00:14:18.680 --> 00:14:18.980
Yeah.

00:14:18.980 --> 00:14:19.340
Okay.

00:14:19.340 --> 00:14:20.240
That's neat.

00:14:20.240 --> 00:14:20.560
Yeah.

00:14:20.560 --> 00:14:20.980
Yeah.

00:14:20.980 --> 00:14:21.380
Pretty sweet.

00:14:21.380 --> 00:14:22.520
I might start using it.

00:14:22.520 --> 00:14:28.100
I've looked at Colorama and some of the other ones and they're fine, but it's like, I don't

00:14:28.100 --> 00:14:32.740
know, it's just painful to say like, okay, well, I'm going to take this like enumerated text

00:14:32.740 --> 00:14:35.720
value and concatenate it with my string to make it a color.

00:14:35.720 --> 00:14:37.740
And I think colorful is a little nicer.

00:14:37.740 --> 00:14:38.000
Yeah.

00:14:38.000 --> 00:14:38.680
I wonder if it's built.

00:14:38.680 --> 00:14:39.920
I haven't actually tried it.

00:14:39.920 --> 00:14:41.700
I wonder if it's built on top of Colorama.

00:14:41.700 --> 00:14:42.380
Yeah.

00:14:42.380 --> 00:14:43.180
We'll have to look inside.

00:14:43.180 --> 00:14:43.620
Anyway.

00:14:44.000 --> 00:14:48.400
Speaking of packages, everybody who works on making a Python package, they want to add

00:14:48.400 --> 00:14:51.240
a nice bit of bling, make it fancy looking, right?

00:14:51.240 --> 00:14:51.680
Yeah.

00:14:51.680 --> 00:14:53.820
All the extra little blips and stuff.

00:14:53.820 --> 00:14:54.280
Yeah.

00:14:54.280 --> 00:15:02.760
So there's a lot of things that make a package look professional or not professional, but there's

00:15:02.760 --> 00:15:06.500
this article called five steps to add the bling factor to your Python package.

00:15:06.500 --> 00:15:08.200
And I thought it was pretty cool.

00:15:08.320 --> 00:15:10.220
I mean, it's certainly not exhaustive.

00:15:10.220 --> 00:15:14.660
And it's not, I don't think it's overly prescriptive, but it does talk about a few things that you

00:15:14.660 --> 00:15:16.000
can do that are pretty sweet.

00:15:16.000 --> 00:15:17.840
So I'll just run through the five steps real quick.

00:15:17.840 --> 00:15:21.360
So step one, you can host your documentation on read the docs.

00:15:21.360 --> 00:15:22.680
That's nice, right?

00:15:22.680 --> 00:15:26.180
Proper documentation somewhere with search and all that kind of stuff.

00:15:26.180 --> 00:15:32.880
Set up continuous integration with Travis CI or maybe AppVeer or whatever, right?

00:15:32.940 --> 00:15:35.780
But if you're going to set it up, some kind of continuous integration.

00:15:35.780 --> 00:15:41.220
And if you're going to run unit tests, you probably want to know what your code coverage

00:15:41.220 --> 00:15:41.460
is.

00:15:41.460 --> 00:15:44.580
So you can show your code coverage with code cov.

00:15:44.580 --> 00:15:50.020
Obviously, if you're going to have a package, if it doesn't live on PyPI, it's almost not real,

00:15:50.020 --> 00:15:50.440
right?

00:15:50.440 --> 00:15:56.520
Unless there's some weird requirement about like it really has to be set up in some bizarre

00:15:56.520 --> 00:15:59.760
way that it can't be installed there from there.

00:16:00.200 --> 00:16:02.480
It really should be on PyPI, which is great.

00:16:02.480 --> 00:16:04.140
So add it up there and it talks about how to do it.

00:16:04.140 --> 00:16:06.900
It's surprisingly easy to get your package onto PyPI.

00:16:06.900 --> 00:16:10.460
And finally, if you have all these things, you want to have badges, right?

00:16:10.460 --> 00:16:12.760
This thing supports these versions of Python.

00:16:12.760 --> 00:16:15.220
Its tests are currently passing or not passing.

00:16:15.220 --> 00:16:18.060
It has this level of code coverage, all those things, right?

00:16:18.060 --> 00:16:18.520
Yeah.

00:16:18.520 --> 00:16:23.760
And one of the things that this highlights for that, I guess I always knew, but I don't think

00:16:23.760 --> 00:16:28.400
about it very much is all these different services for open source projects.

00:16:28.400 --> 00:16:29.000
They're free.

00:16:29.000 --> 00:16:29.380
Yeah.

00:16:29.780 --> 00:16:30.380
Every one of those.

00:16:30.380 --> 00:16:30.560
Yeah.

00:16:30.560 --> 00:16:30.880
Yeah.

00:16:30.880 --> 00:16:34.900
But I mean, it's not free for them to run it, but that's cool that all that stuff's just

00:16:34.900 --> 00:16:36.500
there for open source projects.

00:16:36.500 --> 00:16:37.000
Yeah.

00:16:37.000 --> 00:16:37.740
It's really great.

00:16:37.740 --> 00:16:40.020
Like, read the docs is free.

00:16:40.020 --> 00:16:42.660
They do have ads on there.

00:16:42.660 --> 00:16:44.700
I'm not sure how targeted the ads are.

00:16:44.700 --> 00:16:48.400
They're pretty relevant to Python developers, but I do think it's a challenge.

00:16:48.400 --> 00:16:52.940
I know the read the docs guys are doing interesting and creative things to fund it, but it's,

00:16:52.940 --> 00:16:56.400
you know, it's non-trivial to run it for free for the world.

00:16:56.400 --> 00:16:56.800
Yeah.

00:16:56.800 --> 00:16:57.960
How about Travis CI?

00:16:58.360 --> 00:17:02.860
Well, they, I had talked with Josh Calderamis from Travis.

00:17:03.080 --> 00:17:10.440
And since they started out as a, like, open source stuff to start with, and they were

00:17:10.440 --> 00:17:16.280
doing it in their hobby time, and the commercial side is now how they're doing it full time,

00:17:16.280 --> 00:17:17.120
and they have jobs.

00:17:17.360 --> 00:17:23.280
And the reason why they maintain the free for open source is because they got their careers

00:17:23.280 --> 00:17:24.980
from open source and they want to give back.

00:17:24.980 --> 00:17:26.240
Oh, that's really cool.

00:17:26.240 --> 00:17:31.580
So if I had, like, a private GitHub repo, I'd have to pay to get CI on it, but if I have a

00:17:31.580 --> 00:17:32.660
public one, it's free?

00:17:32.660 --> 00:17:33.200
Something like that?

00:17:33.200 --> 00:17:33.420
Yeah.

00:17:33.420 --> 00:17:38.440
They have an enterprise Travis CI so that you, that you can use for closed repos or private,

00:17:38.440 --> 00:17:39.800
not private repos.

00:17:39.800 --> 00:17:40.000
Yeah.

00:17:40.000 --> 00:17:40.460
Private ones.

00:17:40.460 --> 00:17:40.740
Mm-hmm.

00:17:40.740 --> 00:17:43.740
So what I thought was cool about this is none of those things are hard.

00:17:43.740 --> 00:17:47.840
None of those things are major, but they're all make it, it shows that you care about what

00:17:47.840 --> 00:17:48.200
you're building.

00:17:48.200 --> 00:17:49.680
So you're more likely to get contributors.

00:17:49.680 --> 00:17:52.140
People are more likely to adopt your package, things like that.

00:17:52.140 --> 00:17:56.200
Also nice to have all these together because I can imagine if I wanted to do any of these,

00:17:56.200 --> 00:17:59.300
I'd probably spend an hour or so trying to figure out each little bit.

00:17:59.300 --> 00:18:00.140
Yeah.

00:18:00.140 --> 00:18:01.980
There's little tips at each one, which is cool.

00:18:01.980 --> 00:18:02.220
Yeah.

00:18:02.220 --> 00:18:02.560
All right.

00:18:02.560 --> 00:18:04.020
Well, that's our news for the week, Brian.

00:18:04.020 --> 00:18:07.220
Anything besides the fact that you're just tooling around Germany?

00:18:07.220 --> 00:18:12.440
Well, I think they had, they were, I'm doing management training, so maybe I'll finally learn

00:18:12.440 --> 00:18:14.860
how to become a manager after doing it for many years.

00:18:14.860 --> 00:18:21.820
But the, but I was working on the, working furiously on the book on the, on the plane trip over.

00:18:21.820 --> 00:18:28.420
And we're still on, still barely on target for a beta for PyCon.

00:18:28.420 --> 00:18:28.940
So.

00:18:28.940 --> 00:18:30.980
I just looked, PyCon is two weeks away.

00:18:30.980 --> 00:18:32.360
I can't believe it.

00:18:32.360 --> 00:18:33.660
There's not very much time.

00:18:33.660 --> 00:18:34.020
I know.

00:18:34.020 --> 00:18:35.920
Anyway, I still have to order stickers.

00:18:35.920 --> 00:18:37.060
It's going to be so fun though.

00:18:37.060 --> 00:18:37.560
Yeah.

00:18:37.560 --> 00:18:38.040
Yeah.

00:18:38.040 --> 00:18:40.520
You still got time, but not a lot of time.

00:18:40.520 --> 00:18:41.600
Not a lot of time.

00:18:41.600 --> 00:18:43.320
It's going to be tons of fun.

00:18:43.320 --> 00:18:48.340
So I'm looking forward to, to meeting a bunch of the listeners there and hanging out with you

00:18:48.340 --> 00:18:49.200
and everyone else.

00:18:49.200 --> 00:18:50.360
And how about you?

00:18:50.360 --> 00:18:51.100
Anything up with you?

00:18:51.320 --> 00:18:52.180
Not, not too much.

00:18:52.180 --> 00:18:56.940
Just thinking about PyCon makes me think I got to get a bunch of stuff ready for, for

00:18:56.940 --> 00:18:58.940
the conference or a booth and things like that.

00:18:58.940 --> 00:19:00.620
So yeah, it should be a lot of fun.

00:19:00.620 --> 00:19:01.080
Yeah.

00:19:01.080 --> 00:19:02.100
I can't wait.

00:19:02.100 --> 00:19:05.380
Thank you for listening to Python Bytes.

00:19:05.380 --> 00:19:07.940
Follow the show on Twitter via at Python Bytes.

00:19:07.940 --> 00:19:10.820
That's Python Bytes as in B-Y-T-E-S.

00:19:10.820 --> 00:19:14.220
And get the full show notes at Pythonbytes.fm.

00:19:14.220 --> 00:19:18.580
If you have a news item you want featured, just visit Pythonbytes.fm and send it our way.

00:19:18.700 --> 00:19:21.300
We're always on the lookout for sharing something cool.

00:19:21.300 --> 00:19:24.680
On behalf of myself and Brian Okken, this is Michael Kennedy.

00:19:24.680 --> 00:19:28.300
Thank you for listening and sharing this podcast with your friends and colleagues.

