WEBVTT

00:00:00.001 --> 00:00:05.140
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:00:05.140 --> 00:00:10.540
This is episode 101, recorded October 22nd, 2018. I'm Michael Kennedy.

00:00:10.540 --> 00:00:11.480
And I'm Brian Okken.

00:00:11.480 --> 00:00:12.820
Hey, Brian. It's good to be back together.

00:00:12.820 --> 00:00:16.400
Yeah, Python Bytes 101. It's like an introductory course or something.

00:00:16.400 --> 00:00:19.400
I know. It's beginning Python news for everybody.

00:00:19.400 --> 00:00:24.660
In fact, we have some very advanced academic stuff that we're going to be covering and some very, very cool frameworks.

00:00:24.660 --> 00:00:27.840
Before we get to those, though, let's say thank you to DigitalOcean.

00:00:28.280 --> 00:00:32.340
They're sponsoring Python Bytes for the entire rest of the year.

00:00:32.340 --> 00:00:35.820
So that's a huge support from them, and we really appreciate it. Thank you.

00:00:35.820 --> 00:00:39.560
Check them out at pythonbytes.fm/DigitalOcean. More about that later.

00:00:39.560 --> 00:00:43.960
You seem to be picking a fight with asterisks. What's going on here? There's a lot of asterisks in your notes.

00:00:43.960 --> 00:00:47.280
I just asterisks love asterisks.

00:00:47.280 --> 00:00:49.080
Asterisks, asterisks, asterisks.

00:00:49.080 --> 00:00:52.340
Yeah. What do you get in Python if you have four asterisks? Come on.

00:00:52.340 --> 00:00:55.700
Seg fault? I don't know. Anyway, sorry. I'm derailing you. Keep going.

00:00:56.560 --> 00:01:01.180
No, I just had – it's one of those things that, like, they're all over the place.

00:01:01.180 --> 00:01:04.880
But I thought we covered something like this, but I couldn't find it in our show.

00:01:04.880 --> 00:01:06.380
We covered underscore. We covered underscore.

00:01:06.380 --> 00:01:10.920
Right. Underscore has so many meanings. Parentheses have many, many meanings.

00:01:10.920 --> 00:01:15.140
And asterisks as well, which I think is really interesting.

00:01:15.140 --> 00:01:18.560
Like, Python's pretty light on the syntax in the sort of symbol form.

00:01:18.940 --> 00:01:21.340
But those three things, they do a lot.

00:01:21.340 --> 00:01:22.140
They do a lot.

00:01:22.140 --> 00:01:24.060
They mean different things, right? So take a serious one.

00:01:24.060 --> 00:01:27.260
Yeah. So this is an article from Trey Hunter.

00:01:27.260 --> 00:01:28.960
Asterisks in Python.

00:01:28.960 --> 00:01:31.780
What they are and how to use them.

00:01:32.360 --> 00:01:38.460
And it covers, at the beginning, say, yes, of course you can do, like, two asterisks five.

00:01:38.460 --> 00:01:39.520
And that's multiplication.

00:01:39.520 --> 00:01:46.080
And if you do two asterisks together, like, two asterisks, asterisks five, that's, like, two.

00:01:46.080 --> 00:01:47.120
It's exponents.

00:01:47.120 --> 00:01:48.160
That's how you do exponents.

00:01:48.160 --> 00:01:51.220
But that's just, like, covered in the first few lines.

00:01:51.640 --> 00:01:54.860
And that's what he's really talking about is all the other uses.

00:01:54.860 --> 00:01:59.040
And I'm starting to use these more, a lot of these different ones more now.

00:01:59.040 --> 00:02:06.560
But, for instance, you can use them if you've got a list, one of the first one he starts with, you might use this.

00:02:06.560 --> 00:02:15.140
If you've got a list and you want to pass it to a function, but the function doesn't take a list, it takes a whole bunch of arguments,

00:02:15.140 --> 00:02:19.400
you can put an asterisk in front of the list and it'll get unpacked for you.

00:02:19.720 --> 00:02:21.280
It's parameter unpacking.

00:02:21.280 --> 00:02:25.260
I don't think you can unpack not as a parameter.

00:02:25.260 --> 00:02:30.260
You can unpack to repack, but I don't think you can just pass it to a value or something.

00:02:30.260 --> 00:02:37.660
Yeah, it's really interesting how you can do that, you know, also when you're unpacking tuples and all sorts of interesting stuff there, right?

00:02:37.660 --> 00:02:39.760
Yeah, you can unpack tuples and lists.

00:02:39.760 --> 00:02:43.440
And then the two asterisks is to unpack keyword arguments.

00:02:43.440 --> 00:02:47.880
So if you've got a dictionary that holds your keyword arguments and you're going to pass them to a function,

00:02:48.240 --> 00:02:51.600
you can unpack them first and send them on their way.

00:02:51.600 --> 00:02:54.500
And Python 3.6, you can use them to build dictionaries as well.

00:02:54.500 --> 00:02:59.880
So you say curly, star, star, dictionary one, comma, star, star, dictionary two, close curly,

00:02:59.880 --> 00:03:03.020
and that creates a dictionary that's basically the union of those two.

00:03:03.020 --> 00:03:03.580
Wow.

00:03:03.580 --> 00:03:04.140
Okay.

00:03:04.280 --> 00:03:04.460
Yeah.

00:03:04.460 --> 00:03:07.840
The star, the asterisks, they go crazy just like the underscore.

00:03:07.840 --> 00:03:08.360
Yeah.

00:03:08.360 --> 00:03:14.580
So this is actually kind of a hard topic to talk about, but I think it's a good article to review

00:03:14.580 --> 00:03:20.620
and to make sure you understand where things are going or just bookmark it.

00:03:20.620 --> 00:03:24.080
So next time you're confused by somebody else's code, you can go look at what they're doing.

00:03:24.180 --> 00:03:24.360
Yeah.

00:03:24.360 --> 00:03:25.640
That's a good article by Jay Hunter.

00:03:25.640 --> 00:03:26.120
I like it.

00:03:26.120 --> 00:03:26.340
Yeah.

00:03:26.340 --> 00:03:32.020
One of the things that I've actually learned from him, I think, is the way to, this is,

00:03:32.020 --> 00:03:37.720
I think it's a three, six thing where it came in, where you can, in your parameter list,

00:03:37.720 --> 00:03:45.900
a function of a function, when you're defining it, you can, at some point, put an asterisk on one of your items.

00:03:46.160 --> 00:03:51.020
And from there on, those items are, they have to be keyword.

00:03:51.020 --> 00:03:52.840
You can't pass them in positionally.

00:03:52.840 --> 00:03:54.460
They have to be keyword arguments.

00:03:54.460 --> 00:03:55.100
Yeah.

00:03:55.100 --> 00:04:00.700
That's really nice because if you, you can name the arguments or you could use positional one,

00:04:00.700 --> 00:04:03.540
or you could add the star, star, could have the args thing.

00:04:03.540 --> 00:04:09.940
But this means, you know, basically you can say, you can take a regular argument list and turn it

00:04:09.940 --> 00:04:14.220
into required only keyword arguments by putting the star as one of the parameters, which is

00:04:14.220 --> 00:04:16.000
non-obvious, but very cool.

00:04:16.000 --> 00:04:16.320
Yeah.

00:04:16.320 --> 00:04:16.880
Yeah.

00:04:16.880 --> 00:04:21.880
You want to know what framework is really awesome that uses that as a core feature in it?

00:04:21.880 --> 00:04:22.380
No.

00:04:22.380 --> 00:04:23.040
What?

00:04:23.040 --> 00:04:23.580
Responder.

00:04:23.580 --> 00:04:27.740
The Responder web framework from Kenneth Wright, which is a brand new web framework.

00:04:27.740 --> 00:04:35.080
It's a little bit like Flask, but you know, he has requests and then what responds to requests?

00:04:35.080 --> 00:04:37.000
Well, Responder responds to requests, right?

00:04:37.000 --> 00:04:37.600
Yeah.

00:04:37.600 --> 00:04:42.680
So I think if people haven't heard of it, I'm sure some folks have because it's been out for a week or so.

00:04:42.680 --> 00:04:43.680
A week or so.

00:04:43.680 --> 00:04:43.920
Yeah.

00:04:43.920 --> 00:04:49.360
So what that means is it already has like 1,300, 1,400 GitHub stars because it's kind of

00:04:49.360 --> 00:04:51.300
work and it's been out for like a week and a half.

00:04:51.300 --> 00:04:52.000
Yeah.

00:04:52.000 --> 00:04:53.180
Which is pretty cool.

00:04:53.180 --> 00:04:54.900
So very popular.

00:04:54.900 --> 00:05:00.320
And it's sort of the web side, the server side equivalent of his request API.

00:05:00.320 --> 00:05:05.460
And he's trying to make something a little like Flask, but more friendly, easier to work with,

00:05:05.460 --> 00:05:06.920
easier to test, things like that.

00:05:08.200 --> 00:05:08.600
Okay.

00:05:08.600 --> 00:05:12.600
So let me run through some of the things that it does as its core features.

00:05:12.600 --> 00:05:16.520
It has a pleasant API, which is cool with a single import statement.

00:05:16.740 --> 00:05:20.240
So, you know, you would expect Kenneth to put together a suite API.

00:05:20.240 --> 00:05:22.680
It has class-based views without inheritance.

00:05:22.680 --> 00:05:27.120
It's naturally first an asynchronous web framework.

00:05:27.120 --> 00:05:32.860
So it supports async and await and it comes with an ASGI web server.

00:05:33.060 --> 00:05:38.280
So you can just run it and it will start processing asynchronous requests, whereas, you know, Flask

00:05:38.280 --> 00:05:39.520
and those things don't have that yet.

00:05:39.520 --> 00:05:43.700
So that's pretty, that's a pretty big thing because it's good, easy to support web sockets.

00:05:44.460 --> 00:05:50.920
You can take an existing WSGI app, like Flask or Pyramid, and mount it as a sub route.

00:05:50.920 --> 00:05:56.080
So what that means is if I have some, let's say I have a blog or, you know, an ordering system,

00:05:56.080 --> 00:06:00.540
and then I want to like plug that in as a sub part of this, I don't have to rewrite that.

00:06:00.540 --> 00:06:07.360
I can just like mount that as a URL and anything in, say, under slash store goes to that implementation.

00:06:07.360 --> 00:06:08.980
And the rest is this new app.

00:06:08.980 --> 00:06:10.000
So that's a pretty cool feature, right?

00:06:10.000 --> 00:06:10.320
Yeah.

00:06:10.320 --> 00:06:14.400
It also makes it so you can split up the responsibility of maintenance and stuff.

00:06:14.760 --> 00:06:14.900
Yeah.

00:06:14.900 --> 00:06:16.240
It's very, yeah, yeah.

00:06:16.240 --> 00:06:19.680
You could break it up like one team manages this part, another team manages that.

00:06:19.680 --> 00:06:22.780
But on the server side, it looks like all one thing.

00:06:22.780 --> 00:06:26.900
I suspect you could probably pull it off with like Nginx and stuff, but this way you don't

00:06:26.900 --> 00:06:29.040
have to, you know, do it in infrastructure.

00:06:29.040 --> 00:06:31.800
You can, you can do it in your Python code.

00:06:31.800 --> 00:06:37.940
It has a background task support, GraphQL, OpenAPI, schema generation, which is cool.

00:06:37.940 --> 00:06:40.200
SPA, single page app support.

00:06:40.200 --> 00:06:41.860
Let's see.

00:06:42.060 --> 00:06:47.620
It's built on top of uvicorn, which is one of the faster asyncio loops, like uvloop

00:06:47.620 --> 00:06:48.160
and so on.

00:06:48.160 --> 00:06:54.060
And yeah, it's even got a nice ASGI support, like I said, for async stuff.

00:06:54.060 --> 00:06:56.900
So I don't know if the world needs more web frameworks.

00:06:56.900 --> 00:07:00.820
It feels like we have a lot of these, but I also feel like this is going to be a massive

00:07:00.820 --> 00:07:03.260
success just the way you look at it.

00:07:03.260 --> 00:07:03.440
Yeah.

00:07:03.440 --> 00:07:06.020
And a lot of them are building on top of what other people have learned.

00:07:06.240 --> 00:07:09.600
And so it's okay to keep rolling out new ones.

00:07:09.600 --> 00:07:10.240
Yeah.

00:07:10.240 --> 00:07:13.080
So one of the things, you know, maybe you'd like this a little better, Brian.

00:07:13.080 --> 00:07:19.260
One of the things with Flask is it has this sort of ambient request that doesn't get passed

00:07:19.260 --> 00:07:19.740
to the method.

00:07:19.740 --> 00:07:24.060
It's just, you know, there like a global variable, but it's thread local or something like this,

00:07:24.060 --> 00:07:26.420
which means it's a little harder to test.

00:07:26.420 --> 00:07:26.900
Right.

00:07:26.900 --> 00:07:29.620
Because how do you mock out that thing properly all the time?

00:07:29.620 --> 00:07:34.900
And this one takes the request and the response so you can modify the response real easily.

00:07:34.900 --> 00:07:40.020
And then it says star comma, and then all the values that go into the route, like slash curly

00:07:40.020 --> 00:07:45.400
variable name, those just become keyword arguments using exactly that thing you were talking about.

00:07:45.400 --> 00:07:46.540
Oh, nice.

00:07:46.540 --> 00:07:46.980
Okay.

00:07:46.980 --> 00:07:47.400
That's cool, right?

00:07:47.400 --> 00:07:47.780
Yeah.

00:07:47.780 --> 00:07:52.180
Anyway, so if people want to see what can it's up to with this web framework, it seems like

00:07:52.180 --> 00:07:52.960
it's getting some traction.

00:07:52.960 --> 00:07:54.160
That's pretty cool.

00:07:54.620 --> 00:07:59.140
And even though it's just started, they've already, he's got a built-in test client for

00:07:59.140 --> 00:07:59.360
it.

00:07:59.360 --> 00:08:00.380
So that's cool.

00:08:00.380 --> 00:08:01.240
Yeah.

00:08:01.240 --> 00:08:02.340
Check that out.

00:08:02.340 --> 00:08:02.960
Yeah, absolutely.

00:08:02.960 --> 00:08:03.800
All right.

00:08:03.800 --> 00:08:04.800
What's your next one you got?

00:08:04.800 --> 00:08:06.120
Let me see.

00:08:06.120 --> 00:08:07.140
It's down the line.

00:08:07.140 --> 00:08:07.600
Just a sec.

00:08:07.600 --> 00:08:08.080
It's hiding.

00:08:08.080 --> 00:08:08.880
It's hiding.

00:08:08.880 --> 00:08:09.360
Yeah.

00:08:09.360 --> 00:08:17.700
So I ran across, I actually saw somebody reference this website because the website is pythonprogramming.in.

00:08:17.700 --> 00:08:19.720
I'm not sure what the IN is.

00:08:19.720 --> 00:08:21.880
Anyway, pythonprogramming.in.

00:08:22.480 --> 00:08:27.520
And it was, they were reference, looking at the, referencing the pandas examples, but

00:08:27.520 --> 00:08:29.000
it's, it's got a lot more.

00:08:29.000 --> 00:08:32.260
It looks like kind of a tutorial on Python.

00:08:32.800 --> 00:08:38.960
And then, so it has just short descriptions and actually short or no descriptions.

00:08:38.960 --> 00:08:40.700
I'm just really short.

00:08:40.700 --> 00:08:41.480
Titles, basically.

00:08:41.480 --> 00:08:42.460
Yeah.

00:08:42.460 --> 00:08:47.080
Titles with, well, a little paragraph of what's going on and then a little code snippet.

00:08:47.080 --> 00:08:50.700
And then the example, the output of the examples.

00:08:50.900 --> 00:08:53.760
So it's teaching just through code and examples for the most part.

00:08:53.760 --> 00:08:58.000
But it goes through, like, starts out with Python basics and then date times and strings

00:08:58.000 --> 00:08:58.640
and dictionaries.

00:08:58.640 --> 00:09:04.160
But then quickly jumps into pandas, matplodlib, and then even TensorFlow.

00:09:04.160 --> 00:09:08.880
There are many, many topics on, say, pandas, for example.

00:09:08.880 --> 00:09:11.300
There's probably four to five pages.

00:09:11.540 --> 00:09:15.060
And each one of those is like an article and a bunch of sample code and stuff, right?

00:09:15.060 --> 00:09:16.540
Or at least some sample code.

00:09:16.540 --> 00:09:16.940
Yeah.

00:09:17.160 --> 00:09:24.260
And also, the way they're doing a lot of these examples, titles are kind of not how it's

00:09:24.260 --> 00:09:26.120
implemented, but what you want to get done.

00:09:26.120 --> 00:09:28.020
So that's kind of neat.

00:09:28.020 --> 00:09:28.800
Yeah, that's a good point.

00:09:28.800 --> 00:09:31.820
Yeah, that's nice because you maybe don't know when you're new.

00:09:31.820 --> 00:09:32.220
Yeah.

00:09:32.220 --> 00:09:33.380
How do I Google this?

00:09:33.380 --> 00:09:34.540
I want to do this thing.

00:09:34.540 --> 00:09:35.960
I just know I have this problem.

00:09:35.960 --> 00:09:37.240
How the heck do I solve this?

00:09:37.240 --> 00:09:37.540
Yeah.

00:09:37.540 --> 00:09:38.360
Yeah, that's pretty cool.

00:09:38.360 --> 00:09:43.520
So it looks like it's probably a really good resource if I'm somewhat new to Python,

00:09:43.520 --> 00:09:46.980
maybe entirely new, and I want to do data science.

00:09:46.980 --> 00:09:50.520
Because it goes through all the basics of the language and then pandas, math, plotlib,

00:09:50.520 --> 00:09:51.360
and TensorFlow.

00:09:51.360 --> 00:09:52.180
Yeah.

00:09:52.180 --> 00:09:56.700
It's like a total deep end crash course, but pretty nice looking.

00:09:56.700 --> 00:09:57.540
And it's cool.

00:09:57.540 --> 00:09:57.840
Awesome.

00:09:57.840 --> 00:10:01.260
Well, it looks like a great resource, especially for people learning data science.

00:10:01.260 --> 00:10:04.800
I know that's one of the hot areas, and a lot of people are getting jobs there.

00:10:04.800 --> 00:10:05.820
And so that's awesome.

00:10:05.820 --> 00:10:06.840
Well, what do you got for us?

00:10:06.840 --> 00:10:11.660
Well, before I tell you about the next thing, which I am quite excited about, maybe if I were

00:10:11.660 --> 00:10:14.960
super lucky, I could make this into a full episode somehow on Talk Python.

00:10:14.960 --> 00:10:15.440
We will see.

00:10:15.960 --> 00:10:19.280
But first, I want to tell you about Kubernetes over at DigitalOcean.

00:10:19.280 --> 00:10:25.380
So DigitalOcean has now announced their Kubernetes cluster and support.

00:10:25.380 --> 00:10:30.920
So for as little as $5, you can spin up a droplet, their terminology for a virtual machine.

00:10:31.580 --> 00:10:35.540
And it comes pre-configured to be a Kubernetes cluster.

00:10:35.540 --> 00:10:41.800
So if you want to work with Docker and group this stuff with Kubernetes and just get rolling

00:10:41.800 --> 00:10:48.620
with things like zero downtime, upgrades, downgrades, all that kind of stuff, scaling, Kubernetes is

00:10:48.620 --> 00:10:49.380
really great to do that.

00:10:49.380 --> 00:10:51.520
And you can do it cheap and easy on DigitalOcean.

00:10:51.720 --> 00:10:55.560
So check them out at pythonbytes.fm/DigitalOcean and get started.

00:10:55.560 --> 00:11:00.080
And if you're a new user there, you get $100 credit to play with Kubernetes and other things

00:11:00.080 --> 00:11:00.400
as well.

00:11:00.400 --> 00:11:01.120
Yeah.

00:11:01.120 --> 00:11:06.780
They also have GPU based systems and high compute stuff if you want to do data science over there.

00:11:06.840 --> 00:11:08.000
So that's pretty awesome.

00:11:08.000 --> 00:11:12.420
The next thing that I have has to do with Sweden, actually.

00:11:12.420 --> 00:11:13.200
With Sweden?

00:11:13.200 --> 00:11:14.220
Yeah, with Sweden.

00:11:14.220 --> 00:11:15.100
Sweden's pretty awesome.

00:11:15.100 --> 00:11:18.600
I haven't got to spend much time in Sweden, but I definitely like the place.

00:11:19.160 --> 00:11:27.540
And the news is there's these two American economists who have won the Nobel Prize in economics, hence

00:11:27.540 --> 00:11:27.980
Sweden.

00:11:27.980 --> 00:11:29.020
Oh, okay.

00:11:29.020 --> 00:11:30.700
Right, because that's who hands out the Nobel Prize.

00:11:30.700 --> 00:11:32.360
And interesting.

00:11:32.360 --> 00:11:33.420
Okay, so they're economists.

00:11:33.420 --> 00:11:34.780
They won the Nobel Prize.

00:11:34.780 --> 00:11:37.560
It was Nordhaus and Romer.

00:11:37.560 --> 00:11:46.200
They basically designed some ways to model and analyze how to sustain economic growth in

00:11:46.200 --> 00:11:49.600
a global economy like it is, and also what destroys it.

00:11:49.600 --> 00:11:54.000
So it's basically like a theory of the welfare of the world's population and economy, which

00:11:54.000 --> 00:11:54.460
is pretty cool.

00:11:54.460 --> 00:11:56.220
But why am I talking about it?

00:11:56.220 --> 00:12:01.260
Because one of the guys, I think Romer, pretty sure it's Romer.

00:12:01.260 --> 00:12:08.020
Yeah, Romer, has become a Python and Jupyter convert and doing his work and his publishing

00:12:08.020 --> 00:12:11.200
for his Nobel Prize with Jupyter and Python.

00:12:11.200 --> 00:12:12.240
Oh, that's so cool.

00:12:12.240 --> 00:12:12.800
Isn't that sweet?

00:12:12.800 --> 00:12:13.400
Yeah.

00:12:13.400 --> 00:12:19.080
So first of all, the guy is 62 years old, and he's just switched to Python, which is awesome.

00:12:19.080 --> 00:12:20.360
Yeah, that's great.

00:12:20.360 --> 00:12:26.000
So he said he believes that research should be transparent, and he really thinks it's important

00:12:26.000 --> 00:12:28.160
that it's open and reproducible.

00:12:28.540 --> 00:12:33.180
And like most academics, he worked in some other closed, ultra-expensive thing.

00:12:33.180 --> 00:12:35.140
So he worked in Mathematica, right?

00:12:35.140 --> 00:12:36.600
Mathematics, when he's paid things.

00:12:36.600 --> 00:12:40.040
And he said he tried to share his work, right?

00:12:40.040 --> 00:12:43.780
This Nobel Prize-winning work, he tried to share it, and he said he couldn't do it.

00:12:43.780 --> 00:12:49.900
Wolfram Research, who makes Mathematica, basically made it impossible to share his research without

00:12:49.900 --> 00:12:53.320
the people receiving it also having Mathematica, the paid version.

00:12:53.320 --> 00:12:54.120
Oh, yeah.

00:12:54.120 --> 00:12:54.940
That's lame.

00:12:54.940 --> 00:12:55.680
Yeah, it's totally lame.

00:12:55.680 --> 00:12:56.980
So he has some pretty interesting comments.

00:12:56.980 --> 00:13:03.200
He says he believes the open-source notebooks are the way forward for shared research, and

00:13:03.200 --> 00:13:09.220
he believes they support integrity while proprietary software encourages secrecy.

00:13:09.220 --> 00:13:15.580
And he went to say, quote, the more I learn about proprietary software, the more I worry that

00:13:15.580 --> 00:13:18.000
objective truth might perish from the earth.

00:13:18.000 --> 00:13:18.620
He wrote.

00:13:18.620 --> 00:13:21.140
So how's that for a statement?

00:13:21.140 --> 00:13:21.580
Yeah.

00:13:21.580 --> 00:13:22.280
That's pretty wild.

00:13:22.360 --> 00:13:23.780
So anyway, there's a short article.

00:13:23.780 --> 00:13:24.560
You can check it out.

00:13:24.560 --> 00:13:28.500
It actually links to a bunch of his blog posts and his writings from Dr. Romer.

00:13:28.500 --> 00:13:28.960
That's cool.

00:13:28.960 --> 00:13:35.640
I actually also interviewed the folks that won the Nobel Prize in physics at CERN, not Higgs,

00:13:35.640 --> 00:13:39.760
but the people on the team that did the research, like the leaders of some of the teams there,

00:13:39.760 --> 00:13:42.740
on Talk Python way, way back.

00:13:42.740 --> 00:13:43.860
And I'm going to link to that.

00:13:43.960 --> 00:13:45.940
I think it was episode 29 about CERN.

00:13:45.940 --> 00:13:46.540
That was pretty awesome.

00:13:46.540 --> 00:13:47.000
Yeah.

00:13:47.000 --> 00:13:48.880
That was a great episode.

00:13:48.880 --> 00:13:49.400
Yeah, thanks.

00:13:49.400 --> 00:13:50.100
It's one of my favorites.

00:13:50.100 --> 00:13:52.780
And I'd like to actually hear more about people.

00:13:52.780 --> 00:13:54.800
It's neat seeing this in economics.

00:13:54.800 --> 00:13:57.940
I'd like to hear more about people using Python in economics.

00:13:57.940 --> 00:13:58.540
Yeah, yeah.

00:13:58.580 --> 00:14:02.320
I mean, I might send them a message and say, hey, if you got the time, I'm sure you're busy,

00:14:02.320 --> 00:14:03.740
but, you know, come on the show.

00:14:03.740 --> 00:14:04.220
That'd be awesome.

00:14:04.220 --> 00:14:04.700
All right.

00:14:04.700 --> 00:14:05.440
What's your next one?

00:14:05.440 --> 00:14:10.080
Speaking of science, so that last link we had had some basics of TensorFlow.

00:14:10.080 --> 00:14:17.120
But if you really want to jump into it, we've got, there's a GitHub repo that has simple

00:14:17.120 --> 00:14:22.640
and ready to use tutorials for TensorFlow in a whole bunch of different, in the repo.

00:14:22.640 --> 00:14:28.660
So you can kind of get started and get kind of deep into it with some open source examples.

00:14:28.660 --> 00:14:31.580
So that's what I have to share, really.

00:14:31.580 --> 00:14:31.980
Nice.

00:14:31.980 --> 00:14:37.060
You know, I feel like I really just need to take some time and learn some of the AI machine

00:14:37.060 --> 00:14:37.780
learning stuff.

00:14:37.780 --> 00:14:39.600
It's really interesting.

00:14:39.600 --> 00:14:41.120
It seems super approachable.

00:14:41.120 --> 00:14:43.740
It's just, I don't know how you feel, Brian.

00:14:43.740 --> 00:14:48.000
But for me, it's like I need to have a problem to solve to really learn something.

00:14:48.000 --> 00:14:49.900
Yeah, I definitely agree.

00:14:50.000 --> 00:14:55.340
I'm trying to figure out how to, and since with, I work with communication systems and

00:14:55.340 --> 00:14:56.460
measurement of those.

00:14:56.460 --> 00:15:01.680
And I think that there's some room there that I could possibly use some machine learning or

00:15:01.680 --> 00:15:02.980
something in that realm.

00:15:02.980 --> 00:15:03.780
Yeah, you probably can.

00:15:03.780 --> 00:15:04.100
Yeah.

00:15:04.100 --> 00:15:08.860
You know, the folks over at Netflix, they use machine learning to analyze and watch all their

00:15:08.860 --> 00:15:11.460
servers because they have too many for humans to understand.

00:15:11.460 --> 00:15:15.480
And basically the system knows when it's broken before they do.

00:15:15.480 --> 00:15:17.580
Yeah.

00:15:17.580 --> 00:15:17.860
Yeah.

00:15:17.860 --> 00:15:18.560
So that's pretty awesome.

00:15:18.560 --> 00:15:20.760
So maybe it works for radios as well as servers.

00:15:20.760 --> 00:15:21.580
Yeah, maybe.

00:15:21.580 --> 00:15:22.220
That'd be cool.

00:15:22.220 --> 00:15:22.580
Possibly.

00:15:22.580 --> 00:15:28.420
So the final thing is something that people might actually be super interested in being

00:15:28.420 --> 00:15:28.960
part of.

00:15:28.960 --> 00:15:35.200
And it's going to be available at the time of this recording for 31 more days, but probably

00:15:35.200 --> 00:15:37.200
the time it ships, maybe 28 days.

00:15:37.200 --> 00:15:37.600
Who knows?

00:15:37.600 --> 00:15:38.200
Something like this.

00:15:38.200 --> 00:15:41.240
Is this thing called Makerphone.

00:15:41.240 --> 00:15:42.360
Have you heard of this?

00:15:42.360 --> 00:15:43.040
I have.

00:15:43.040 --> 00:15:44.260
It's pretty darn cool.

00:15:44.260 --> 00:15:50.240
So Makerphone is from this guy named Albert in Croatia, and he had made something previously.

00:15:50.240 --> 00:15:52.100
And what was it called?

00:15:52.100 --> 00:15:52.900
I can't remember.

00:15:52.900 --> 00:15:59.460
It was like a little handheld, almost like a Nintendo NES that you could program with super

00:15:59.460 --> 00:16:00.280
basic graphics.

00:16:00.280 --> 00:16:01.060
It was pretty interesting.

00:16:01.060 --> 00:16:01.460
Yeah.

00:16:01.600 --> 00:16:03.380
The problem was that you programmed in C.

00:16:03.380 --> 00:16:10.900
What this is, Makerphone is a smartphone with a screen that you program in Python.

00:16:10.900 --> 00:16:12.620
Well, yes.

00:16:12.620 --> 00:16:13.300
It's super cool.

00:16:13.300 --> 00:16:15.280
Smartphone is a little bit of a stretch.

00:16:15.280 --> 00:16:15.500
Yeah.

00:16:15.500 --> 00:16:16.640
Smartphone in quotes.

00:16:16.640 --> 00:16:16.860
Yeah.

00:16:16.900 --> 00:16:19.180
It's not super smart, but it does have a screen.

00:16:19.180 --> 00:16:19.880
It does.

00:16:19.880 --> 00:16:23.540
I don't think it has a touchscreen, but it has a screen and a little keypad.

00:16:23.540 --> 00:16:23.900
Yeah.

00:16:23.900 --> 00:16:28.720
And also, I like this one because you can basically choose your level of commitment to the DIY

00:16:28.720 --> 00:16:30.680
do-it-yourself aspect.

00:16:30.680 --> 00:16:36.760
You can back the Kickstarter at a level that will get you just the true experience.

00:16:36.760 --> 00:16:37.640
Here's the boards.

00:16:37.640 --> 00:16:40.060
Here's the wires and the soldering.

00:16:40.060 --> 00:16:41.700
Go to town on these instructions.

00:16:42.120 --> 00:16:47.940
Or for like a little tiny bit more, you can get it assembled so you could just write the

00:16:47.940 --> 00:16:48.240
software.

00:16:48.240 --> 00:16:48.900
Yeah.

00:16:48.900 --> 00:16:49.940
That's pretty cool.

00:16:49.940 --> 00:16:50.240
Yeah.

00:16:50.240 --> 00:16:53.380
So, I actually backed this at the software level because I'm busy.

00:16:53.380 --> 00:16:55.600
I can't be soldering stuff.

00:16:55.600 --> 00:16:58.020
I would like to, but I'm afraid I'll just not do it.

00:16:58.020 --> 00:16:59.460
So, I'd rather just try the software side.

00:16:59.460 --> 00:17:00.680
That's pretty cool that you backed it.

00:17:00.680 --> 00:17:01.520
I can't wait to see it.

00:17:01.520 --> 00:17:02.880
I was thinking about it.

00:17:02.880 --> 00:17:05.820
One of the neat things about the-we've watched the video.

00:17:05.820 --> 00:17:11.260
Some of the belief of the-it's a small company around this-is that it isn't to try to

00:17:11.260 --> 00:17:12.720
get you a cheap phone.

00:17:12.720 --> 00:17:15.720
It's to help teach people.

00:17:15.720 --> 00:17:20.180
So, it's trying to get people excited about, yeah, learning how to solder parts together,

00:17:20.180 --> 00:17:25.860
learning how to program stuff, getting all this working, and with like a webpage that'll

00:17:25.860 --> 00:17:29.140
walk everybody through whatever they need to do with it.

00:17:29.140 --> 00:17:33.340
And that sort of thing is neat because it's missing out of a lot of places.

00:17:33.340 --> 00:17:35.000
I mean, we don't have Radio Shacks anymore.

00:17:35.280 --> 00:17:39.320
So, people have to do this maker things to figure out some of this stuff.

00:17:39.320 --> 00:17:39.880
Yeah.

00:17:39.880 --> 00:17:42.800
It looks really, really fun, and I'm excited to do it.

00:17:42.800 --> 00:17:46.020
You can program it in Scratch or Python.

00:17:46.020 --> 00:17:48.160
It's also Arduino-based.

00:17:48.160 --> 00:17:50.420
So, you probably can program it in C++ as well.

00:17:50.420 --> 00:17:51.460
I'm excited.

00:17:51.640 --> 00:17:57.920
The reason I got it is my daughter is really into making websites with Python, like simple,

00:17:57.920 --> 00:18:04.260
super, super simple ones with, say, Anvil, where she can kind of drag you, drop you some

00:18:04.260 --> 00:18:07.300
stuff together and put like a silly dropdown in a picture or something.

00:18:07.300 --> 00:18:08.360
You know, something really simple.

00:18:08.360 --> 00:18:12.020
But I feel like we could sit down and make some little simple games, like, you know,

00:18:12.020 --> 00:18:16.300
a little Pong Banks game or something on this phone, and I bet you'll love it.

00:18:16.300 --> 00:18:16.600
We'll see.

00:18:16.600 --> 00:18:17.600
That's the goal anyway.

00:18:17.600 --> 00:18:18.100
Yeah.

00:18:18.100 --> 00:18:22.000
And even if you already have it pre-built, I'm sure you could take it apart and look out

00:18:22.000 --> 00:18:23.180
what's inside and everything.

00:18:23.180 --> 00:18:24.180
Yeah, absolutely.

00:18:24.180 --> 00:18:26.860
So, this, and it'll be for sale afterwards.

00:18:26.860 --> 00:18:30.700
They made that NES-like thing previously, which I talked about.

00:18:30.700 --> 00:18:33.040
That's still for sale, not too expensive.

00:18:33.400 --> 00:18:38.520
So, one of the things about Kickstarter is, will the thing actually become a reality, right?

00:18:38.520 --> 00:18:43.380
They put it, you know, this one, it was, the goal has to be $15,000 in order for them

00:18:43.380 --> 00:18:43.980
to do it.

00:18:43.980 --> 00:18:46.180
Yeah, they hit that right away.

00:18:46.180 --> 00:18:53.200
Yeah, I don't know how many days it's been out for, but it's at $186,000 pledged and 31

00:18:53.200 --> 00:18:53.820
days to go.

00:18:53.820 --> 00:18:55.540
So, I bet this thing hits half a million.

00:18:55.540 --> 00:18:57.120
Yeah.

00:18:57.120 --> 00:18:58.500
Especially now that we covered it on the show.

00:18:58.500 --> 00:19:00.020
I mean, they didn't pay us anything.

00:19:00.020 --> 00:19:01.340
I just think this is super interesting.

00:19:01.340 --> 00:19:02.480
The Python angle's awesome.

00:19:02.720 --> 00:19:04.360
But, I bet it hits half a million.

00:19:04.360 --> 00:19:05.800
Yeah, it's pretty neat.

00:19:05.800 --> 00:19:09.460
What's crazy, Brian, is this guy did the first project when he was, as a Kickstarter, when

00:19:09.460 --> 00:19:10.080
he was 18.

00:19:10.080 --> 00:19:13.560
I didn't bother to look, actually, what that brought in.

00:19:13.560 --> 00:19:15.020
Now, he's much more mature.

00:19:15.020 --> 00:19:16.460
He's been working this for a while.

00:19:16.460 --> 00:19:17.140
He's now 20.

00:19:17.140 --> 00:19:19.260
Isn't this cool for a guy who's 20 to be doing this?

00:19:19.260 --> 00:19:19.720
Well, it is.

00:19:19.720 --> 00:19:24.480
And that's one of the neat things about this project, also, is that it's not his first

00:19:24.480 --> 00:19:24.860
project.

00:19:24.860 --> 00:19:27.380
So, now that you've done it, you've got to actually build it.

00:19:27.380 --> 00:19:28.660
He's already done that.

00:19:28.660 --> 00:19:29.280
Yeah.

00:19:29.280 --> 00:19:32.540
There's a good chance it won't be Vaporware, because he's selling the previous Kickstarter

00:19:32.540 --> 00:19:32.800
thing.

00:19:32.800 --> 00:19:33.200
Yeah.

00:19:33.200 --> 00:19:33.580
Yep.

00:19:33.580 --> 00:19:34.180
Pretty awesome.

00:19:34.180 --> 00:19:37.280
Well, I'm excited to get mine and build Pong with my daughter.

00:19:37.280 --> 00:19:38.460
All right.

00:19:38.460 --> 00:19:38.880
Cool.

00:19:38.880 --> 00:19:40.080
Awesome.

00:19:40.080 --> 00:19:43.420
I did want to throw out one more thing really quick.

00:19:43.760 --> 00:19:48.660
So, there's been all this talk about Python 2 versus Python 3, you know, legacy Python,

00:19:48.660 --> 00:19:50.720
modern Python, what's going to happen.

00:19:50.720 --> 00:19:53.800
Well, you know, PHP has something not terribly different going on.

00:19:53.800 --> 00:19:54.020
Really?

00:19:54.020 --> 00:19:54.920
There's this article.

00:19:55.620 --> 00:19:56.900
I'm just going to read you the title.

00:19:56.900 --> 00:19:58.800
I think it's overgeneralizing.

00:19:58.800 --> 00:20:05.120
Anyway, the title is, around 62% of all internet sites will run an unsupported PHP version in

00:20:05.120 --> 00:20:05.560
10 weeks.

00:20:05.560 --> 00:20:11.740
I don't know if it's actually 62% of all sites are all PHP-based sites, but WordPress is so

00:20:11.740 --> 00:20:16.020
prevalent on the internet that, you know, that's probably not a super big difference.

00:20:16.020 --> 00:20:16.420
I don't know.

00:20:16.420 --> 00:20:22.320
But it's pretty interesting to see the conversations and some people are saying, I think it's sort

00:20:22.320 --> 00:20:28.240
of a shadow of what's to come in 2020 for Python 2 when it goes out of date as well.

00:20:28.240 --> 00:20:30.440
So, it's just an interesting article.

00:20:30.440 --> 00:20:31.320
I'll throw it out there.

00:20:31.320 --> 00:20:37.300
Basically, the summary is the highly popular PHP 5 branch will stop receiving security updates

00:20:37.300 --> 00:20:40.760
at the end of the year, just like Python 2 will next year.

00:20:40.760 --> 00:20:41.140
Yeah.

00:20:41.140 --> 00:20:41.680
Okay.

00:20:41.680 --> 00:20:41.940
Yeah.

00:20:41.940 --> 00:20:42.820
Anyway, parallels.

00:20:42.820 --> 00:20:44.060
Well, that's a show, man.

00:20:44.060 --> 00:20:45.220
It's definitely a show.

00:20:45.460 --> 00:20:49.420
And we are into triple digits properly now with 101.

00:20:49.420 --> 00:20:50.800
So, what's the next one?

00:20:50.800 --> 00:20:51.020
201?

00:20:51.020 --> 00:20:51.700
I guess.

00:20:51.700 --> 00:20:53.660
Was this a prerequisite for the next one?

00:20:53.660 --> 00:20:56.200
You know, what's the...

00:20:56.200 --> 00:20:56.880
Nah, it'll be fun.

00:20:56.880 --> 00:20:59.740
It's been great to do it and we're going to keep cranking out.

00:20:59.740 --> 00:21:00.900
It'll be 102, I suppose.

00:21:00.900 --> 00:21:01.400
Probably.

00:21:01.400 --> 00:21:01.840
Yeah.

00:21:01.840 --> 00:21:02.800
That makes sense.

00:21:02.800 --> 00:21:03.540
It does.

00:21:03.540 --> 00:21:04.480
All right.

00:21:04.480 --> 00:21:05.760
With, you know, counting and all that.

00:21:05.760 --> 00:21:08.080
Talk to you next week.

00:21:08.080 --> 00:21:08.460
See ya.

00:21:08.460 --> 00:21:08.740
Bye.

00:21:08.740 --> 00:21:11.260
Thank you for listening to Python Bytes.

00:21:11.260 --> 00:21:13.840
Follow the show on Twitter via at Python Bytes.

00:21:13.840 --> 00:21:16.720
That's Python Bytes as in B-Y-T-E-S.

00:21:16.720 --> 00:21:20.140
And get the full show notes at pythonbytes.fm.

00:21:20.140 --> 00:21:24.500
If you have a news item you want featured, just visit pythonbytes.fm and send it our way.

00:21:24.500 --> 00:21:27.200
We're always on the lookout for sharing something cool.

00:21:27.200 --> 00:21:30.580
On behalf of myself and Brian Okken, this is Michael Kennedy.

00:21:30.580 --> 00:21:34.200
Thank you for listening and sharing this podcast with your friends and colleagues.