Have you ever searched for a Python educational video?
Maybe how to get started with Pyramid or running queries with SQLAlchemy's ORM layer?
There's a good chance you've run across pyvideo.org.
This amazing site catalogs over 5,000 Python videos from most of the recent Python conferences,
among other places.
Browse by speaker, by topic, by event, and much more.
This week, you'll meet Paul Logsdon, who's taken over the leadership of the project when
it was in danger of going dormant.
This is Talk Python to Me, episode 83, recorded October 26, 2016.
I have many interests.
Sometimes you can play some of the things you've done.
Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the
ecosystem, and the personalities.
This is your host, Michael Kennedy.
Follow me on Twitter, where I'm @mkennedy.
Keep up with the show and listen to past episodes at talkpython.fm.
And follow the show on Twitter via at Talk Python.
This episode has been sponsored by GoCD and Hired.
Thank them both for supporting the show by checking out what they have to offer during their segments.
Paul, welcome to Talk Python.
Hey, how's it going?
It's going very, very well.
Thanks for being on the show.
I'm super excited to talk about what may be the largest collection of Python videos ever.
And that PyVideo, this is going to be great.
Yeah.
I'm excited.
Yeah, yeah.
Cool.
So before we get to that, though, let's start at the beginning.
What's your story?
How do you get into programming in Python?
Sure, sure.
So I guess it all kind of starts way, way back when, you know, you first, like, get a computer.
You know, your parents are like, oh, we should probably get the kid a computer so they'll be up on, like, the upcoming trends.
Or maybe just the family needs a computer or there's a computer at high school.
And that was what it was for me.
I had a friend at high school that was into software stuff.
And basically I just wanted to spend time with him.
And he started to teach me HTML.
And I ran with that for the rest of high school, building projects for teachers.
Ended up in college, unsatisfied with the real static nature of HTML.
So I started to learn PHP and was just like, oh, this is the best.
I'm going to rule the world with PHP.
You know, that's not that far off.
I mean, Facebook.
Absolutely.
Yeah, you're absolutely right.
It was actually about the same time, too.
Facebook and WordPress.
Zach and Zuckerberg, yeah, we're running off.
Of course, I didn't have those ideas of Facebook.
I was more than just like, yeah, I think there'd be a better grading system that I could build.
Yeah, let me go do that.
Fair grading for everyone.
Fair grading.
And people can access their grades online.
No, that's awesome.
That's awesome.
So did you build that?
Something like this?
No.
I jumped through a few iterations of building my own homepage and building a link holder.
So I used sites that I regularly visited for news or for school or for whatever, and I wanted those links readily available.
And this was before browsers kind of had the notion of bookmarks, or at least I knew how to use bookmarks.
So I was like, all right, we're going to build my own homepage that I know I can open up my browser to, and bam, I'll have my links.
And I gave that to a few friends, and it was great.
And then I had other things to do.
It wasn't my major.
It was just kind of something for fun.
So life went the other way.
Yeah, that's really cool.
Yeah.
Things were different back then.
I mean, we take so much for granted on the web and things, you know, like Google, for example.
The ability to just go and type and search for a thing, that didn't really exist in some of the time frames you're talking about.
But, like, Yahoo was really there to, like, actually manually collect the links and stuff like that, right?
It was a different world.
Yeah.
No, it was, I remember Dogpile and maybe it was AltaVista as, like, search engines.
And really these were, like, you'd ask for something, and it would go off, and you might get back what you're looking for,
or you might get back just an endless array of just garbage pages.
I really like pages that people had left behind must have been months to years ago.
How many GeoCities do you think?
Oh, oh, my goodness.
All GeoCities.
99% were GeoCities.
And a good 30% of them were, like, mine that I, like, tried to create and was just like, no, got to start a new GeoCities or Tripod page.
This isn't working out.
All right.
So how did you go from PHP to Python?
Yeah.
After I, you know, got through college, had PHP fairly well under my belt, I was like, but I really want to know how to create GUI apps.
I want to be able to create something that people can, you know, start up as a regular application like Word.
But I really didn't like the idea of investing myself into a language that boxed me into either GUI or web development.
Because, you know, I already knew PHP for web development.
I wanted something that kind of did both.
And so I knew Python was object-oriented.
And in my newbie mind, I was like, object-oriented?
Well, GUIs are objects.
So, you know, not really understanding at all what an object meant.
I just knew it's like, I don't know.
It's like, yeah, cars are objects.
GUIs are object-oriented.
Object-oriented programming.
That must be what controls Word.
So I jumped into Python.
And it was great.
I think what really attracted me was the tutorials that were available at the time.
I remember going through, like, Google's Python class, which was, like, only, like, eight exercises.
But it allowed you to do really, like, powerful stuff in a very short amount of time.
And it was like, oh, okay.
Now, you know, I'm getting better at this fast.
This is fun.
So I kept on going.
Yeah, yeah.
Excellent.
And, yeah, and you've been doing a lot of Python since, huh?
So what do you do day-to-day?
Yeah, yeah.
What do you do day-to-day?
Like, what's your programming job?
Yeah, so I work at a company called 15.5.
We are, like, a tool for employees and managers to stay in sync.
So, like, you check in weekly on 15.5, answer some questions about, you know, how you're feeling and where you're stuck.
And then that will hopefully allow managers to do a better job of supporting you.
And so I write back.
Yeah, that's one of the challenges that you can have at any time of your work, especially if you're remote.
It's just, like, even, you know, knowing, like, who's not really happy, who's excited, like, that kind of stuff, right?
Yeah, exactly.
Okay.
And ultimately, I'm, yeah, I think you hit it on the head.
I think maybe a little bit more of what drives me for it is sometimes there's just not a place where you feel comfortable to say what you want to say.
And unfortunately, that's the case in too many places in the work environment.
I myself have been in that situation.
And this allows you to kind of be by yourself.
You know how there's a disconnect when you're on the web?
You're not in front of the person you're talking to.
And some people run with that and are called trolls, right?
And they just abuse their ability to be disconnected from the person they're talking to.
But also, that space can give you almost freedom to really think about what you want to say and collectively build what you want to say.
Not collectively, but individually build the collections of things that you want to say and be more truthful to yourself.
And so I think that's another big thing that it provides.
Yeah, I agree.
You know, obviously, in that environment, trolls can be a problem.
But I think much more often, it reduces the barriers and the anxiety and the confrontation avoidance and all that kind of stuff that you would get in the way of just having a straightforward conversation, right?
Right, exactly.
Yeah.
But I also have kind of hesitation on that.
I'm like, well, maybe are we just giving Tylenol to a problem?
Maybe we should be focusing on this issue in a different way.
Should we be allowed?
Should we be putting more education and research into why aren't people feeling uncomfortable to talk to people when they're right in front of them?
You know, why can't we have these more intimate one-on-one conversations in person?
And so I definitely could see it being a Band-Aid rather than a cure.
But maybe, again, I don't have the answer, but maybe by Band-Aiding it for a bit, we can heal enough to figure out the cure.
I'm not quite sure.
Yeah, sure.
I don't know either.
And I'm not sure if the environment that we're creating with all the devices and asynchronous communication are making it worse or better.
I don't know.
But a Band-Aid is better than nothing, I would say for sure.
That's cool.
Yeah.
One of the things that you're really passionate about is education and providing education to everyone, right?
Yeah.
Yeah, absolutely.
So I don't know if you watch the Netflix and you watch the media.
Personally, I don't really watch the news too much, but I watch a fair amount of documentaries, and I talk with friends who are also pretty socially conscious-minded.
I'd like to think they are.
Maybe I'm just in a bubble of people that are not really worried about the real-world things.
But I've had several relationships with teachers, and they're just – so, yeah, there's tons of just junk going on in the world, and I really don't know how to fix.
I don't know how to fix any of it at all.
But I do know what's helped me be a better person, and that's been education.
And I don't really feel prepared to educate in the things that I don't know myself.
So I'd like to be able to educate on how to be like a better social worker or be a better English teacher or, you know, know more about mental health.
I just don't know those things.
I do know how to program.
And also, along with knowing what I can teach to a certain degree, I also feel like just education in general, along with specific skill sets, has made me a better person.
And especially handing off those skill sets has made me a better person.
Being able to communicate to teach someone, it takes a certain amount of skill in teaching, and that's a skill that is really about listening to your fellow human being.
I think being a good teacher is probably more listening and understanding the question that the student has rather than throwing out the information that you have.
Sure.
And when you're teaching anything, understanding where that person is, where their mindset is, where they're trying to go, like that is super important into actually getting what you're trying to teach to say, whether that's trying to teach how to access the database or something else, right?
Exactly.
Yeah.
So, like, knowing, you know, whenever you're solving a problem, like high school chemistry teacher said, whenever you're solving a problem, it's where are you at and where do you want to be?
And then figuring out the in-between.
And so that's the same thing you're doing for a student is you're figuring out where they're at, you know, sort of where they need to be.
Your job is to kind of create that bridge.
You said something like kind of like to the effect of, well, I'm just a developer, but I think developers have a certain superpower in today's society, right?
We're kind of like the magicians.
Sure.
Absolutely.
We don't always know what to do with our magic, but we can, like, wave our hands for a little bit and out pops a thing that can have a huge impact on the world in all sorts of ways, Uber or Pi Video or YouTube or whatever.
Well, you really elevated Pi Video there.
Yeah, among the likes of YouTube and Uber.
If only we had that kind of cash flow, the things we could do.
It was more of a good for the world rather than a financial.
Sure, sure.
Yeah.
But I would love to see that.
I absolutely agree.
So maybe I, a little being a developer, a little too much, but it was more just to say, like, this is the subsection of knowledge that, you know, I know that this is my domain knowledge and this is what I can confidently give out.
And even when I say confidently, it's more just kind of like a little less scaredly than giving other bits of knowledge, right?
Because even developing for I don't know how many years now, I'm still like, did I say that right?
Maybe I did.
I don't know.
They'll figure it out.
If I said it wrong, eventually somebody will correct them and really correcting me down the line.
At least I hope.
So not only do developers have like an extreme magician capability, but right now that extreme magician capability, like magicians are in demand.
And so that's the other thing that you can do for somebody and is give them a skill set that will could potentially totally transform their livelihood.
I say this out of my own experience.
I got a degree, but I really didn't have, I didn't have a good job.
I didn't necessarily come from a super well-off family.
And this is not to be like a boo-hoo story.
It's just like being a programmer totally transformed my opportunities in life.
And being able to give that out is, I mean, that's the best thing you could do with this knowledge right now is give this out.
Yeah.
It's super rewarding.
Like I'm thrilled to be able to do this podcast because I hear, you know, weekly from people like how it's made a real difference in their life.
You know, I've got a new job.
I've got a new career.
Thank you so much.
Like, wow.
You know, it's, I'm just sitting here chatting with people and it makes a difference.
I mean, it's, it's amazing to be able to share this kind of knowledge.
It really can make a difference.
Yeah.
That's the thing.
Yeah.
All right.
So let's talk about PyVideo.
Why don't you tell everybody what PyVideo is and sort of give them a background.
I'm sure if you've done a search on Google for some kind of teach me this video Python, you'll find PyVideo.
I did a quick test a minute ago and I pulled up an incognito window and I type P-Y-V into Google.
And it suggested PyVideo as like the second thing.
So it's definitely, yeah, it's definitely out there and well known.
So tell us what it is.
Right.
It's just an index of Python videos.
So maybe I'll take out the just.
It's an index of Python videos.
Its goal is to make finding Python video content easier.
Where quickly you can get to the video that you want.
So if it's all just thrown up on YouTube or if, say, an event where there's Python videos captured doesn't really have a space to live and people don't want to put it on YouTube.
Well, maybe they can send us those videos.
We'll put it on archive.org and then post links to that in Python or PyVideo.
The goal is simply to make finding Python content easier.
It's like a really centralized catalog of Python presentations.
Exactly.
And with lots of ways to explore that data.
Exactly.
Yeah.
So, yeah, maybe.
Yeah.
There's definitely a better way I could have explained that.
So here's what else.
No, no, it's all right.
Yeah.
It's, like I said, an index of a collection of Python videos.
But it's not just the web page that you see.
The bigger project that's going on is the data collection.
We got done with a lot of help from a lot of volunteers at the PyCon sprints, PyCon 2016 sprints.
We got pretty much a fully functional index site built, right?
It's a statically generated website.
Every time somebody pulls new content into the PyVideo repo, it's automatically redeployed with all the latest content.
So it's super easy to manage and just real simple front end to the data.
But the data is the real, the holy grail of this or the real content.
And that data is constantly being built out.
And what is the data?
It's just a bunch of JSON files with JSON blobs that contain, you know, the title, the description that you see, and links to the videos.
And anybody can add to this content.
Anybody can.
It's as simple as creating a PR from you fork the repo.
You create a PR.
And with your event's content.
And so long as you follow the pretty detailed guidelines for how to contribute, you're almost guaranteed to get that pull request in.
Yeah, that's great.
So first of all, how many videos do you have currently indexed?
5,481.
Wow.
That is a serious amount.
Yeah.
Half of them are just me waving and saying, Python, Python, Python.
Yeah, they're all great.
That's almost, a lot of these are conference presentations and stuff.
Maybe an hour, half an hour maybe.
That is a serious bunch of stuff to go learn.
I think one of the really interesting things, one of the good things, a well-done thing of the Python community is about publicizing and sharing all the conferences.
And there seems to be a really solid, concerted effort to record and share what is done.
Like, I was really impressed at PyCon US this year that basically the same day, maybe the next day, the videos from the conference were going up on YouTube.
You can go to youtube.com slash PyCon 2016 and pull those up, right?
But there's many, many events that go on around the whole world, and we can't go to all of them.
Exactly.
Right.
I saw some really great ones from KiwiPyCon.
I'm sure I'm messing up the name a little bit, but the New Zealand one.
There's no way I could go to New Zealand for a Python conference.
Well, maybe someday if I'm lucky, but I can watch it, right?
And I can enjoy it.
And I think that's really great.
And so your project, now that you're maintaining it, I'll call it yours.
I know it didn't start with you.
We'll talk about that, the world.
But this project, let's say, does a real good job of bringing those together.
Because I can't, like, cruise YouTube and go, well, is there a PyCon AU 2016?
Right.
I don't know, maybe.
Right?
So having this all brought together is super valuable.
Yeah, exactly.
And I think you hit on a really great point is that you wanted to see what the rest of the world has to offer.
The rest of, at least New Zealand has to offer for Python videos, Python education.
And you could go do that quickly.
Maybe New Zealand's okay.
But say in other parts of the world, say Africa.
I know my brother is in Cameroon right now.
And if he tries to go to YouTube to search up a video, it's going to take him a long time.
But we're not even talking about downloading the video to watch or buffering the video to watch.
We're talking about just getting to the content that he wants.
It can take quite a long time.
And that's even with, you know, Google aiding his search.
So if he wanted to get to a particular Python video, this site helps him get there faster.
It's less hops to the end goal that he wants to get a real long or a real complete list of what's available.
And that means that people who are searching for educational content can get to what they need faster and don't need to waste time when they could be learning.
Right.
Yeah.
And you, so all the data is stored in a Git repo, right, on GitHub.
Yeah.
And you can just clone that.
And like you said, if you want to contribute to it, you just fork the repo, make some changes.
Basically, you create like a JSON document in the right place, in the right format, you'll pull request, and back it goes.
So one thing I wanted to ask you about is what type of videos are you looking for in PyVideo?
So when I look at PyVideo, I look through it, and I see that there are a bunch of conference presentations, like I kind of hinted at there.
And that's awesome.
They should be there.
But are there possibilities to put other ones?
Like if I did just like a random tutorial and I put it up on YouTube, could I link that in there, or would that be inappropriate?
No, that'd be totally.
Are you looking for just conference presentations?
No, absolutely not.
I mean, as long as it's not like a video on snakes, just the actual Python, I think you're in the right category to create a PR.
I think when it comes to teaching, which is one of the major goals of this project, at least for me, I know other parts of the PyVideo team, they might have different motivations, and I think that's great.
But for me, a lot of it's the education focus and getting the word out there.
Having several different teachers tell you the same thing is quite powerful.
It can shed light on how different people interpret different problems.
And so if you have a tutorial that goes over the exact same thing as another tutorial and it goes over the same thing as a talk that was given at a conference, absolutely it's still welcome.
If it is a tutorial, if you're thinking like, I created this in my basement, does it belong on PyVideo?
Ask yourself, is it about Python?
Is it trying to teach people Python stuff?
Yeah.
Yeah, so people, I think there's probably a room for people out there to add a bunch of stuff.
Like Kevin over at Data School is doing like a Python tutorial a week sort of thing, but none of those are in there, right?
Like it would be cool if he put his in there and I have a number I could put in there.
And, you know, there's a bunch of people out there that I think are not necessarily contributing.
So maybe this could be a little bit of a nudge.
Right, right.
That'd be great if they contributed or they created a PR.
I think all requirements that we have is keep it open, keep it simple, and keep it free.
And that's really our building philosophy.
So not even our, you know, not like a restriction.
Like if it's a complex video, don't withhold it from PyVideo just because our motto is keeping it simple, right?
But as long as it's free, like you can't link to something that's going to happen.
Yeah.
If it's something that is more or less self-contained and it's like a lesson on Python.
Yeah.
Okay.
I think I understand what kind of videos you're looking for.
This portion of Talk Python to me is brought to you by GoCD from ThoughtWorks.
GoCD is the on-premise, open-source, continuous delivery server.
With GoCD's comprehensive pipeline and model, you can model complex workflows for multiple teams with ease.
And GoCD's value stream map lets you track changes from commit to deployment at a glance.
GoCD's real power is in the visibility it provides over your end-to-end workflow.
You get complete control of and visibility into your deployments across multiple teams.
Say goodbye to release day panic and hello to consistent, predictable deliveries.
Commercial support and enterprise add-ons, including disaster recovery, are available.
To learn more about GoCD, visit talkpython.fm/gocd for a free download.
That's talkpython.fm/gocd.
Check them out.
It helps support the show.
Tell us the story.
This was started, when was it started?
It was started by Will and Sheila, but I don't know when.
Why don't you tell us the history real quick, as much as you know it.
I wish I could tell you in greater detail.
I don't have it off the top of my head, all the bits and pieces.
But I think there was something of a collection of videos prior to Will getting started on it in 2012 or 2011.
And I think he wanted to create a web front for it.
And he had an idea and decided to build it out in Django.
I think Sheila joined him shortly thereafter, helping him build that out and bring in videos.
And they were just going at it, building out this site for, I guess, four years, five years.
By the time they decided they wanted to do other things.
And they did an amazing job.
We had, probably, when we got started, 3,000-some videos, maybe more.
Forgive me if it's more, and I'm incorrectly quoting Will and Sheila.
But they did the bulk of this data collection and categorization.
And when early 2016 rolled around, I think it was January, I woke up one morning and pulled up by video.
I watched by video while I do other things.
And I saw the banner up at the top, and I said, oh, crap.
This is going down.
We need to do something about this.
And I read Will's blog.
I really, I just didn't want to not have this tool there for me to watch videos while I did other things.
Right?
You're taking away part of my entertainment.
This is my routine you're talking about tinkering with.
Yeah, you're getting so much out of it.
You're like, well, I can't let this happen.
Maybe I have to, maybe you have to solve the problem.
Yeah, exactly.
Yeah.
And so I sent out a few emails.
Didn't hear anything back.
I just assumed it was like, all right, yeah, they're probably getting pummeled by other people doing this.
Trying to help them out with this.
So, you know, I won't think into it too much and just let me start building out a small thing just in case that it's not nobody else is doing anything.
And sent a link to Will and Sheila saying, hey, this is what I got so far.
Got some words back from Will and Sheila.
And I forget exactly what the conclusion there was.
But I think it was like, well, we're still working on figuring out, you know, what the long-term solution for this is.
And then came May.
So PyCon 2016.
It was basically we, I think somebody else went up to do a lightning talk.
Yeah, it was definitely, his name's Cameron.
But I'm trying to think of his Twitter handle.
And so he got up and gave a lightning talk about, hey, we need to do something about this.
And I was like, oh, great, awesome.
He's also in the same boat.
And that must mean that somebody, maybe I can help with them.
You know, somebody else has got something going.
And I showed Cameron the site that I had built out, which was a statically generated site.
And basically the website went that way because it was already pretty much built.
The skeleton was.
And all that really needed to be done was styling.
And when I say all that needs to be done, a lot of styling needed to happen.
It looks totally different than what it did when I was building it, thanks to, like, the big team of people that were helping out at the PyCon sprints.
Sounds cool.
Yeah, it looks nice these days.
Yeah.
Oh, my goodness.
I wish I could say that was because of me.
No, this is because of a large team of people.
And not only did we have this web team that was working on, you know, making my site more user-friendly and more viable, more robust and prettier.
But we also had another two sections that were working on, like, archiving the data in a better way and also refiguring out how we're going to hold on to data over the long term.
And I think once Will and Sheila saw that it had a good foothold and a new pathway, they were happy to let it go that way.
I think they wanted, you know, they spent a lot of time.
They spent four years working on this project.
You know, they want to make sure it's in good hands.
And I was flattered to hear that they were okay with it going into our team's hands.
Unfortunately, I didn't pay enough attention on how to contribute and how the flow went before.
So maybe I just don't know.
But it feels like the way you guys have it set up now is it's very open and it's very much a community project, like contributing data all through pull requests.
And there's a bunch of people that work that aren't in the sprints.
And it feels like it's sort of spread out to be maintained by more people.
Is that true?
That's absolutely right.
Yeah.
I'm certainly not the most active maintainer right now.
Like I think maybe in the first couple of weeks after PyCon 2016, I was doing a lot of work.
I definitely don't even think then it was necessarily that I was doing the most work.
It since has become that my job is to help introduce other people into how to help with the project.
And then they tend to jump on and, you know, just blow me out of the water in terms of, you know, making pull requests, making sure things are clean and making sure that the site keeps keeps growing.
Yeah.
So you're kind of like the catalyst or the initial moving force or whatever to get it revived.
I feel almost that that's too much to say.
I am simply I'm a good sign.
Like, you know, when you're driving down a dirt road and then there's, you know, two paths.
I'm a really good sign at the fork in the road saying, all right, well, you just go that way.
And you'll eventually get to three miles down the road that way.
Yeah, exactly.
Yeah.
42 pull requests and three contributors and then we'll be there.
Exactly.
Pretty much.
Nice.
Okay.
So what do you guys need from the community to like take this to the next level or at least keep it thriving?
Great question.
We need more contributions from conference organizers.
So usually who has the money to pay for video cameras to record talks and stuff like that is conferences.
A lot of meetups that are happening around the world don't have AV equipment to capture this stuff.
So even those individuals that do, we're asking them to create these PRs.
That's probably the biggest thing.
So we can go out and scrape, but that's never going to be, it's going to be very hard to get us to the quality that could be achieved by just getting that data directly from a conference organizer.
So when a conference organizer puts on a conference, we're looking for them to serialize that data into a JSON form.
The specs are very, I think, very clear.
But, you know, of course, if you have improvements on that, let me know and we'll make it clearer.
But pretty clear specs on how the JSON blob should look.
And all it is just, you know, post the PR.
If that's difficult to do or, you know, just too time consuming, because I totally understand that I've run a few conferences with a team of people here in New York.
And they are, your time's gone for basically the three months before a conference, right?
So if that's not a possibility, then maybe just a CSV file and send it to us via a GitHub issue, and we can work it from there.
At the very least, try and create YouTube videos that are titled and have descriptions that conform to a certain specification that allow us to scrape the information a little bit easier.
Those are the few areas where conference organizers could really help us out.
If you're not a conference organizer, or you are, or it doesn't matter who you are, but you want to help out, we're always looking for people to help us scrape the web for these videos, whether they're on YouTube or Vimeo, and clean up the data to get it in a ready state to be part of the collection.
Oh, yeah, that sounds great.
So one thought that came to mind, you know, to sort of build on all what you just said was there are many, many, many meetups going on all the time, right?
There's one going on in Portland tomorrow, and I'm hoping I can make it.
There's probably some really cool presentation going on at all these that for every conference, there's 30 meetups, right?
What about some sort of call to action to, if you're going to go to a meetup, and you have solid HD camera and like a lapel mic or something like that, like offer to like do a recording of it.
If the speaker is up for it, and the leader of the meetup is up for it, that seems like that would generate a lot of new content as well.
Absolutely, yeah.
If you, yeah, so I will use your words verbatim.
If you have solid AV equipment, you know, and you have the time, you have the resources to hand back to the community in that way, that's a huge way that you could help out the PyVideo effort, the education effort around Python.
We would greatly appreciate it.
Okay.
Yeah, yeah, that would be awesome, right?
There's got to be a lot of people with like a 4K camera and a tripod and a microphone, right?
Yeah.
That can't be that rare.
All my friends have, yeah, like 4K, you know, MacBook Pros.
No, I don't know.
So you don't necessarily, I don't know if that was a lead into explaining the quality requirements.
There's not really a whole lot of quality requirements when it comes to the videos that can be posted.
So long as you have something that can record in a way that you can watch it and understand clearly what the video is trying to be said or trying to be said in the video, you're set.
That's all you need.
You don't need the fancy dancy-ness or that to record.
Yeah.
Okay.
Is there like, when I'm looking at the site, there's a couple of interesting things about the site.
I want to talk about the technology.
But you can go there and just sort of like when you show up at PyVideo.org, you get just the latest talks.
Right now I see some from PyBrazil.
And you can sort by events.
You can say, I would like to see all the presentations from DjangoCon 2014.
You can also go by Tags and say, like, I want to see all the stuff that has to do with like ARGPARs.
Right.
And there's like two videos on your site about ARGPARs, for example.
Right.
And you can see by speakers.
Is there a way to say, like, show me the really popular or highly rated ones?
No.
Is there like some sort of this is what the community has really liked feeling?
No.
That is in the site?
No, there's not.
And I understand, like, the luster around that idea.
I myself have kind of, like, tinkered with the idea.
But I don't know that that's necessarily needed.
One.
So and our kind of one of our parts of our motto is let's keep it simple.
So if it's not really needed to help people find what they're looking for, we're not going to really include it.
And sure, there might be people that are looking for, like, what's the most popular video.
But I don't I haven't heard a whole lot of requests for that, I guess, is what I'm saying.
Yeah.
And if I flip through if I flip through the tags, I find that, like, for the most part, for the most part, there's not a tremendous number.
Right.
Like for any particular thing.
So if I look at just flipping through on suds, there's one talk.
So it doesn't matter how highly or lowly rated that is.
There's one, you know.
Right.
And, you know, like setup.py, there's three whole talks.
Like you could probably just watch those if you're trying to learn about setup.py.
Right.
There's some like SQLAlchemy has a number of them and things like that.
But the web has like 90, 89.
Okay.
Yeah.
Very interesting.
Yeah.
And also, I didn't want to.
I think I vetoed that idea also because I didn't want to kind of direct people in their search for whatever knowledge that they were searching for.
It was I didn't want to become like a popularity kind of a contest.
Sure.
So that was maybe another motivation.
Yeah.
And I would certainly never want to see like a downvote.
Exactly.
You know, like certainly not a downvote, but maybe an upvote someday.
If there's 100,000 and you're really trying to find of all the thousand things on, you know, the pyramid web framework, maybe someday you guys could revisit that.
But I don't I guess it's not really needed yet.
That's cool.
So if somebody wants to like work on the project, become a core contributor, how do they go about that?
What's your philosophy for making someone a core contributor?
I'm pretty loose, I think, compared to other projects.
I like to plug by video as an easy way to get in your like open source credits or open source experience.
I'm very readily try and merge things in.
If you've if you've got a PR, it's got to meet, you know, the certain minimum requirements.
But other than that, try to merge stuff in ASAP.
One, because, you know, that's content that other people are waiting for.
I know I've sat waiting for like stuff to be updated on Pi Video for conferences that have happened like a month ago or something like that.
And that's not any statement on Will and Sheila.
That was while I was running the site and I just didn't have time to get around.
But the idea, I think, the philosophy for me is this site doesn't have to just be a learning experience for those who view, but a learning experience for those who contribute.
So if you haven't given back to any open source project before, I think this one's a super easy one to get started with.
And I want you to make a stab at it and work you into the fold quicker so that you can gain these skills.
This is an opportunity for people to try out their open source contribution skills.
Yeah.
And it really is pretty easy.
You know, like I said, you put together some data, title, video, tags, things like that.
You work on this JSON document.
You do a pull request.
It's not like you're looking at like a tight loop in the CPython runtime or interpreter and going, you know, I need to understand the performance tradeoffs and implications of writing this slightly differently.
It's not anything like that.
It's like, hey, I'm going to sort of add to the data catalog.
The other half, though, is the website.
And the website is really interesting.
Like you said, it's statically generated.
And one thing I found interesting is I turned on the dev tools while I was cruising around it in the browser.
And after the first request to a page, the site renders like 100% from cache, local cache, which is a pretty cool effect.
Yeah.
So what's behind the site?
How does that work?
GitHub actually does that beautiful work for us.
Again, to keep it simple, the idea is that we run on minimal infrastructure.
So when somebody creates a new PR to the data repo, we'll merge that in.
And then the data repo is updated.
From there, maybe a few PRs will get merged in to the data repo.
And then from there, we will create a new PR in the PyVideo repo, which is the repo that contains all the static site logic.
It's built on Pelican, which is a static site generator built in Python.
And we update simply the SHA of the submodule for the data repo.
So the data repo is a submodule of the PyVideo repo.
And all that's in the PR is just that SHA changing.
We merge that in.
And Travis CI handles the deployment.
Everything is automatic.
You just sit back and wait for three minutes and it's done.
And that was done for a few reasons.
One, it's very easy to maintain.
There's no servers I need to worry about.
There's no keys I need to hand out, anything like that.
It's simply just Travis CI handling everything in the background.
And then it's fast.
That's the other reason.
It's when you're trying to download something from somewhere else on the planet, I don't want you to be slowed down because all of our servers are here in northern Virginia.
GitHub does the job of spreading the site around the world.
And hopefully, I haven't traveled.
I actually will be traveling to India in the later part of December.
And I'll be making sure we're fast down there.
Nice.
Yeah, test it on your phone or something.
Exactly.
Yeah.
That would be cool.
It's super zippy.
It probably does make a few things like, for example, my voting idea.
It's much harder with a purely static site.
It would add more complications, certainly, than it's worth, I would think.
But it's a really impressive way to do it.
Is that GitHub Pages, basically, with a custom domain map to it?
Yes, exactly.
And that's another thing.
Yeah, it would make it more complicated.
And that's another reason we go with or I'm pushing for us to stay with something this simple is eventually people want to move on from our project.
This is actually another point I wanted to make about contributors.
This should not consume anybody's life.
We should be able to give back to the community, but do so with an extra hour that we have a month.
This shouldn't be taking 15 hours of extra time a week.
So keeping it simple and keeping it to a point where people can come in and out easily will hopefully lessen the stress burden that comes along with becoming part of an open source project and ultimately allow it to live on longer.
I think that's a really interesting point.
You know, you could have thought of like, well, we're going to have like the Python's universe of like YouTube with like fancy uploading tools and voting and all the various things.
Right.
And that maybe that thing never gets built or if it gets built, like it consumes too much of your time and you've got to drop it.
I think there's a really cool lesson from saying you've put together something that is good and good enough, but so crazy simple.
Like anybody can review a pull request and hit merge and then wait a few moments.
You know, like the other thing that's cool about that, I think is it's instant.
Well, it's three minutes, but it's a relatively instant, right?
It's not like somebody submits something to you, some data, they email you like a CSV and then you've got to enter it to a backend.
And like eventually you'll get around, like you said, you're waiting for a month to get some of the data in, right?
If people can just enter that as a JSON document and do a pull request, like it's, there's almost no effort on your part other than to like see that it's not bad data to put that in the system.
Exactly.
And that means more time for other open source projects, more time for my family and friends, more time for just enjoying what's on PyVideo, right?
Right.
Well, and more sustainability for PyVideo.
Exactly.
Yeah.
I think, I guess I'm viewing it from like the sustainability is how much life can I live beyond PyVideo?
And, but when I say how much can I, I really mean like all of the maintainers, how much life can we live beyond PyVideo?
And with PyVideo, the more it is, the more maintainable I think it is.
Yeah, absolutely.
Yeah.
As well as how much, how easy it is to bring someone onto the project.
I think that way, like if somebody steps down, some new person can step in and it's not like, well, there's actually, you know, an interesting problem going on with PyPI right now.
Right, yeah.
And I'm going to do a whole episode on it.
But the old PyPI, the reason that Donald's stuff was basically the only guy maintaining it was it was such a rat's nest to understand.
I think it, like the entire, like what's running PyPI now, not the new PyPI.io version, but the older one, the primary one, was like two files.
And they were like, two Python files are like 20,000 lines long or something insane like this.
Right.
You know, and he's, Donald said people would come and look at it.
They all want to contribute and make PyPI better.
And they would come and look and go, yeah, but no, not actually this.
I'm sorry.
So they rewrote it in Pyramid and Bootstrap and it's on a good, it's on a better path.
Yeah, I'm excited.
But I think that's a lesson for open source, right, is like if it's such a mess to contribute and it's so hard to get started, like people won't do it.
Yeah.
So you have like the anti-PyPI problem here, which is great.
Yeah, I hope it's, well, yeah, we'll leave it there.
I mean, PyPI is solving a different kind of problem, right, but still it's like it's an open source project that's crazy easy to get started in instead of something that's like really, really hard to do your first steps.
Right.
Yeah.
That's the goal.
This portion of Talk Python is brought to you by Hired.
Hired is the platform for top Python developer jobs.
Create your profile and instantly get access to 3,500 companies who will work to compete with you.
Take it from one of Hired's users who recently got a job and said,
I had my first offer on Thursday after going live on Monday and I ended up getting eight offers in total.
I've worked with recruiters in the past, but they've always been pretty hit and miss.
I tried LinkedIn, but I found Hired to be the best.
I really like knowing the salary up front.
Privacy was also a huge seller for me.
Sounds awesome, doesn't it?
Well, wait until you hear about the signing bonus.
Everyone who accepts a job from Hired gets $1,000 signing bonus.
And as Talk Python listeners, it gets way sweeter.
Use the link Hired.com slash Talk Python to me and Hired will double the signing bonus to $2,000.
Opportunity's knocking.
Visit Hired.com slash Talk Python to me and answer the door.
So you talked a little bit at the beginning about what you're doing with your job, but what other projects are you working on?
What else you got going on?
I got pretty excited about this one.
I wanted to know more about the CPython internals.
And so I set out to create a comparator operator, which would compare two objects, kind of like the greater than or less than symbols.
But I wanted mine to be two carat symbols.
So on my keyboard, shift 6, right?
Shift 6 will give you that little carat.
If you put two of them together, it kind of looks like cat ears.
So I wanted to make a cat comparator that you could override with the dunder cat thing, just like you can do with, you know, the matmul operator, which is the yak symbol.
And I figured it out.
It took me probably a month worth of extra time on the side getting around to it.
And I'm not super proficient at sea, but I got it, and it prints meow, or it can print whatever you want it to print.
So I'm pretty excited about that.
I'm confident now that I can go into something a little bit more adventurous and maybe actually make a PR against the CPython core.
That's a bucket list thing to do is contribute back to the CPython in some way.
Yeah, that's a great bucket list.
Yeah.
Okay, cool.
Thanks for the validation on that.
I was explaining my cat operator to – so I work in a collective workspace, and one of the people in the collective workspace, you know, is this multimillionaire dollar CEO type of guy.
And I was there late Saturday night.
He was there late Saturday night.
It was just the two of us in the office.
I get done with my cat comparator operator.
He gets done with I don't know what.
We're both going down on the elevator.
And, yeah, I'm explaining my cat operator to him.
And he's like, oh, cool, cool, yeah, uh-huh.
And then I'm like, yeah, so what did you do?
And he's like, oh, yeah, I opened up a new hotel.
And I'm like, oh, wow.
So I guess, yeah, we both have accomplishments.
That's fantastic.
Yeah, no kidding.
And then he went home to his wife and said, you know, I met this guy in the elevator, and he's trying to teach computers about cat ears.
I don't really understand.
It's a weird place.
I met this really creepy guy in the elevator talking about cats.
So glad to be home.
No, I think that's great.
You know, in episode 22, I did a whole show with Philip Glau about the CPython internals.
He did a really cool thing, and I don't know if it's on PyVideo.
If it's not, it should be, called the CPython Walk.
And it's 10 sets of one-hour videos of his graduate course studying the CPython internals.
If people want to check that out, that's definitely, if you're looking to dig in, that's really cool.
Yeah.
All right, so I think we're getting close to the end of the show, so let me put the two questions I always ask my guests at the end.
First of all, over 90,000 PyPI packages these days, speaking of PyPI.
And, Shirley, you've come across some cool ones.
Which one would you like to recommend to people that maybe they don't know about?
This was really hard for me because I use so many different ones for different things.
You know, a project is usually not super cool to me just because there's one thing that I use from the open source community,
but because of a bunch of things that I can pull together from the open source community.
So, but I think I'll probably do Unicode or Unidecode, I'm sorry.
It has a special place in my heart because it was the first kind of attempt I made to port it to CPython or a C module in Python.
So I took Unidecode and tried to make just a C version of it to see if it would go any faster.
But it's pretty cool.
It takes Unicode characters and decodes them into, at this point, I'm not really even sure what exact encoding it decodes them into,
but it tries to come up with some ASCII version of it.
So it basically is somewhat offensive in a way.
It tries to take all the languages that are and symbols around the world and compress them down into ASCII text or American.
Yeah, the ASCII text.
Yeah.
It says you shouldn't be whatever native language you are.
Compress it down into America.
And so, yeah, unfortunately, we have to deal with that.
Yeah, but there are systems that only display ASCII.
And so either you get boxes or you get something that actually could be useful.
So it's, while offensive on an answer, it's also, it can be powerful in others, right?
Powerful and somewhat necessary sometimes, yeah.
Yes, exactly.
Cool.
All right.
And so when you write some Python code, what editor do you use?
50-50.
50% of the time, it's in Vim.
50% of the time, it's in PyCharm.
Okay.
A perfect split.
Cool.
All right.
So, Paul, it's been great to talk to you.
You got any final call to actions for people?
What do people need to do to make PyVideo better?
Go out, learn, and share.
That's all.
Awesome.
Okay.
That's a great call to action.
Well, thanks for sharing the story of PyVideo.
And thank you for working on this project.
It's been very helpful to me, and I'm sure it's been helpful to many, many people.
So thanks for that.
Yeah.
Thank you.
Very flattered to be here.
It's great to have you here.
Talk to you later.
This has been another episode of Talk Python to Me.
Today's guest has been Paul Logsdon, and this episode has been sponsored by GoCD and Hired.
Thank you both for supporting the show.
GoCD is the on-premise, open-source, continuous delivery server.
Want to improve your deployment workflow but keep your code and builds in-house?
Check out GoCD at talkpython.fm/gocd and take control over your process.
Hired wants to help you find your next big thing.
Visit hired.com slash talkpython to me to get five or more offers with salary and equity presented
right up front and a special listener signing bonus of $2,000.
Are you or a colleague trying to learn Python?
Have you tried books and videos that just left you bored by covering topics point by point?
Well, check out my online course, Python Jumpstart by building 10 apps at talkpython.fm/course
to experience a more engaging way to learn Python.
And if you're looking for something a little more advanced, try my Write Pythonic Code course at talkpython.fm/pythonic.
You can find the links from this episode at talkpython.fm/episodes slash show slash 83.
Be sure to subscribe to the show.
Open your favorite podcatcher and search for Python.
We should be right at the top.
You can also find the iTunes feed at /itunes, Google Play feed at /play, and direct RSS feed at /rss on talkpython.fm.
Our theme music is Developers, Developers, Developers by Corey Smith, who goes by Smix.
Corey just recently started selling his tracks on iTunes, so I recommend you check it out at talkpython.fm/music.
You can browse his tracks he has for sale on iTunes and listen to the full-length version of the theme song.
This is your host, Michael Kennedy.
Thanks so much for listening.
I really appreciate it.
Smix, let's get out of here.
Stating with my voice, there's no norm that I can fill it in.
Haven't been sleeping, I've been using lots of rest.
I'll pass the mic back to who rocked it best.
you