#305: Python community at Python Discord Transcript
00:00 People often ask me how they can find a Python community to be part of, maybe a discussion forum or a Slack channel. This week, we look at one of the most active
00:08 communities, Python Discord. It's Python on a Discord server, but much more than that too.
00:13 You'll meet Leon Sandoi, who along with a team of folks runs Python Discord.
00:18 Join us on this episode of Talk Python to Me, number 305, recorded February 17th, 2021.
00:26 Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries,
00:44 the ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter,
00:48 where I'm @mkennedy, and keep up with the show and listen to past episodes at talkpython.fm,
00:53 and follow the show on Twitter via at talkpython. This episode is brought to you by Linode and us.
01:00 Leon, welcome to Talk Python to Me.
01:02 Thank you. Thanks for having me on.
01:04 Yeah, it's great to have you on. You're doing such interesting work in the community,
01:08 and I'm excited to just give you a chance to share what you're doing with the world. It's
01:13 cool what's going on over at Python Discord, and it's a lot bigger than I think people realize.
01:18 Yeah, especially the last year, it's completely taken off. It's quadrupled in size over the last
01:24 year. Wow.
01:24 And we have 150,000 users now, 100 members of staff, and we're involved in all sorts of conferences and
01:32 helping out in the ecosystem overall, I think. It's starting to become a big deal. I'm really
01:38 excited to be part of it.
01:39 Yeah, I would say that's fantastic. Now, before we get into the main topic,
01:42 let's hear a little bit about you and your background. How did you get into programming in Python?
01:46 It's an interesting story. When I was six, my grandpa bought me my first computer,
01:51 and he was like an autodidact. He was an engineer, like a petroleum engineer, and he learned all sorts
01:59 of stuff on his own time, and he wanted me to get into computers. And I started learning a little bit,
02:03 but I never picked up programming because the consensus in the community where I grew up was
02:09 that programming was this thing that you needed academics to do. You needed that education,
02:15 you needed that university background, whatever. Like, it was mathsy, it was complicated. It's not
02:19 something that a young person could do. And growing up in the 90s, that was a little bit more true then
02:24 than it is now, but it still wasn't true. And I went a different way, and I ended up in music.
02:29 I started studying music when I was a little older, and I kind of gave up on my dreams of, like,
02:34 being a computer engineer. I even dropped out of school, never finished my education, wanted to be a full-time
02:39 musician. That didn't work out. Turns out, it's not very well paid, and you'd really have to kind of get lucky.
02:44 Yeah, it's a tough one, right? It's fantastic if you can make it, but it's not easy.
02:50 I gave it a good try. I learned a lot.
02:51 Yeah.
02:51 But ultimately, I went back to, like, IT. I did, like, customer support. I did, like,
02:56 operations, stuff like that. And my sweetheart, my love, she got me this book. This was, like,
03:03 14 years ago. As almost like a joke for my birthday, she got me a C++ book. Like, I don't know what to
03:09 get you, but you like computers, right? And I sort of, I had this reaction, like, you don't know what
03:14 you've done. Like, this isn't for me. I don't, I can't do anything with this. This is for people who have
03:18 the academics. All these preconceptions flared up, and I just felt like it was stupid. But she insisted
03:23 I give it a try, and I read this book on the plane ride, and it was, like, simultaneously an epiphany
03:30 that, like, holy shit, I can actually do this. I like this. This is logical. And at the same time, I was pissed
03:36 because I felt like my whole life people had been lying to me saying that I couldn't do this, and that I had,
03:40 like, disregarded it. I'm starting, I was 21. I could have started 10 years before that.
03:45 Yeah, I've been wasting my time because I had this misconception, right?
03:48 I think a lot of people labor under that misconception that, like, that programming is something that you
03:52 can't easily, like, that's something that people do after a university degree or whatever. But that's
03:57 just really not the case, especially today.
03:59 Yeah, especially today. There's so many resources. Like, you talk about getting a book in the 90s,
04:04 and I got, I can't remember what my C++ book I got in the 90s, but it was fantastic. But it was just a
04:09 book. And if you got stuck, well, you read the chapter again. You know what I mean? And that was it,
04:13 right? It was like really hard. Now there's YouTube, there's online courses, video courses,
04:19 there's communities like Python Discord. The support that is there is much to all this stuff that you're
04:25 talking about. It's more true now than ever.
04:27 Yes, exactly. In my involvement in Python Discord, I'm trying to be part of letting people understand
04:32 that that's true, like being that support system to help people get into programming, even though
04:37 they're young and inexperienced, that it is possible. You can come hang out with us,
04:42 we can help you get into Python, learn how, you know, take your first steps into development.
04:46 I think that's important. Because I, yeah, I'm a little upset that that wasn't,
04:50 that I didn't take that path earlier.
04:52 I didn't have quite the same experience, but I had a similar experience where I thought,
04:55 oh, this is interesting. I would be cool. But it's, there's no way I can do that.
04:59 Yeah. Well, when did you start?
05:00 I started doing C++ programming my senior year in college for a research project,
05:06 because I had kind of been good with computers, but I didn't really consider myself a programmer.
05:11 So I just, you know, I pursued other things like science and whatnot and math, and I just
05:16 finally got into it. And the thing that really made me realize, like, this is something I really
05:21 like is I remember working on these research projects, and it was a math research project,
05:27 but also required a lot of visualization and programming. And I would be really excited when
05:31 I'm doing the programming part, then I have to get up some programming math, like I have to solve
05:36 some of the math problems in code. I'm like, oh, this part is kind of boring. Okay, back to the
05:40 program. I'm like, oh, wait a minute, the part that I'm supposed to be here for is the part I like
05:44 Lee. So the programming is just super awesome. Yeah, so later as well. But yeah, it's better late than
05:49 never, right?
05:50 Yeah, that's sort of my story as well. Like, when I picked up, I didn't really like C++, I learned C,
05:55 I didn't really like that either. I got a little bit into like game programming, I looked at C#,
05:59 later Unity, and none of it really clicked with me. But when I found Python, it was like, you know,
06:05 angel chorus, like, finally, I found my home, it was like the wool being lifted off my eyes,
06:10 like I found my thing. And I started putting it in every facet, every corner of my life. Like,
06:15 I was working in as I was an ops engineer at the time, working for an ISP. And I just started
06:21 automating all of the boring stuff. I was like, yeah, Excel stuff.
06:25 You get so much joy out of that, because it's those things that just grind on you every day.
06:30 And then you're like, wait a minute, that can happen instantly and automatically go away.
06:35 And then after doing that for a couple years, I realized that I was having way more fun writing
06:39 the code than I wasn't doing anything else in my job. And I needed to just like pivot.
06:42 Yeah.
06:43 But it's hard when you don't have that any education, no real experience to find that first job.
06:48 I applied like 50 places, I think before someone really gave me a chance. And they only gave me a
06:53 chance because they were like, yeah, but we'll give you a tough technical interview. It'll be like
06:57 several stages. You'll have to write a whole project and send it into us. This will take a
07:02 week like to finish. But I got through it and they were impressed and they gave me a chance. And once
07:07 you get that first job, at least here in Norway, where I'm situated, they basically throw jobs at
07:12 you if you have a couple of years experience. I think that's pretty true in general. I think it's
07:16 true in the US as well, where that first step is such a big one. But if you can get into the industry
07:21 and like, oh, you know what you're doing, then all these opportunities open up. So I think anyone
07:26 who's out there listening, who feels frustrated, like, oh, it's so hard to get that first job. Like
07:31 that is the hardest career step you're ever going to make. Right. Because after that, it's just,
07:35 it's so much smoother and easier. I think especially for people who are in other jobs, and they're
07:40 looking to like change into development. It's tough. But once you have that foot in the door,
07:45 it's amazing. Like I could pretty much change jobs today if I wanted to, to any number of other
07:50 things. Yeah, absolutely. But what I want, because I love my job. Yeah. So the other question I'll
07:56 ask at the beginning of the show, it's because it's really interesting to hear the perspective
07:59 that people are coming from. Yeah. You know, are you a DevOps person? Are you a scientist? Are you a
08:04 web developer? So what do you do these days? So I'm working for a company called Dignio. And we're a
08:10 med tech company focused on remote care is the technical term for it. So essentially, we're the pitch is,
08:18 did you know that hospitals and governments in general spend like a significant amount of their budget
08:24 dealing with chronically ill patients who make up a minority of the actual patients who are being
08:30 treated. So we're spending like most of our money on the fewest of the people. It's like the last one
08:35 year of life is so expensive compared to the prior, you know, N minus one. Yeah. And then you have this
08:41 shift going on in certain countries where like, the age groups are shifting. So there are more
08:46 older people, and you need way more elder care. And it's expensive because the elderly often have
08:52 chronic diseases. And again, that takes up an enormous amount of resources. So the main thing is
08:57 they keep having to go to doctors, they have to go to hospitals to get like simple checkups and
09:02 measurements. And so our solution is, well, they should do that from home. They shouldn't have to
09:07 constantly be traveling around to places to like get their blood pressure measured or whatever. We can
09:13 do that via Bluetooth and an app. Yeah. And then you can just deliver all of the metrics to the doctor
09:17 and they can contact them if something changes, if it looks bad, right? Like so that they get the
09:22 treatment when they need it, but they don't have to constantly be wasting their own time and the,
09:26 well, the government's resources essentially on, taking the bus for four hours to get to the
09:32 nearest, whatever stupid. So we're trying to solve that. Yeah. That's fantastic. And right now we're part
09:37 of the COVID-19 thing. I mean, remote care plays a big role there. We want to keep people out of hospitals,
09:42 obviously, and, and prevent, infection from spreading. So having them, you know,
09:48 they're doing their measurements at home, they're reporting their symptoms and taking their own
09:52 temperature measurements and stuff like that. And then the, the COVID-19 teams can just monitor them
09:57 remotely. So we're working with the NHS and the UK, we're working here in Norway with, the capital
10:02 and, with a bunch of hospitals. We're trying to get deeper into China. It's really exciting work.
10:08 And I think that, you know, like ultimately it's, it's important work. It makes me sleep well at night.
10:12 Yeah. But as to legitimately helping people, right? Yeah. Right. I think ultimately we're going to save
10:18 lives. Like at some point you inevitably save a life because you're helping relieve pressure from
10:24 these, like import, these critical systems. And, my husband, maybe that's especially true during a
10:29 pandemic. You have to like keep the capacity open at hospitals and so on. Like, yeah. So anything you can
10:34 do. I often think about what changes are going to stick after the pandemic is over or reduced.
10:41 And what's just going to go back to normal. Right. I think that that kind of remote care stuff is going
10:46 to stick. I think it's going to be one of the things like, why didn't we just do this before?
10:50 Right. You really don't need to come in to say, are you still feeling fine? Yeah, I'm feeling fine.
10:53 Here's my measurements that my wearable has been collecting. Yeah. It looks like you're fine. Right.
10:57 And we've been around for 10 years. Like remote care has been around since the early 2010s,
11:02 but it's like, as soon as the pandemic hit, it exploded. You've seen companies like assume and all of these
11:09 people who specialize in having your doctor check up remotely. They're exploding. They're being
11:15 propelled five, 10 years into the future in terms of like growth and opportunity. And yeah, that's not
11:20 going to go away after the pandemic calms down. We're here to stay now. And I know firsthand that
11:26 municipalities and governments are buying in not just like temporary relief for COVID-19,
11:31 but more permanent solutions for, for remote care and monitoring. So this is definitely one of the
11:36 changes we're going to see, I think, stick around. Yeah. And Python's powering some of that.
11:40 Python's powering most of that. Our whole backend is Python, Flask. Our infrastructure as code is mostly
11:46 in Python and also a lot of Terraform. I've been involved across the whole stack. We also use
11:52 Angular for our front end. We have Swift and Android and Kotlin. So there's a big stack, but Python is at
12:00 its heart running the backend that talks to all of the different platforms that their services use.
12:06 Cool. Yeah. Very neat. Yeah. Sounds like a fun place to work. I was just going to say, before we move on to
12:10 the main topic though, there is one other thing that I think you are quite notable for in the recent days.
12:16 Yeah. I think I know what you're going to say.
12:19 Yeah. Yeah. So you did this beautiful song called the Pep 8 song. And look at that. It's almost got
12:24 30,000 views on YouTube, which is pretty amazing. I'll put the link into the live stream for people
12:29 to check out. But yeah. What was the inspiration behind that? That was really well received.
12:32 Yeah. So it was a team effort, right?
12:34 That was a team effort. One of my admins, Daniel Brown, came to me with an idea. He said,
12:39 you know, wouldn't it be funny if we did a version of Mad World, but instead of singing Mad World,
12:45 you sing Pep 8. And the whole song is just about... So he just gave me the idea. And it was beautiful.
12:50 I was like, yes, we need to do it immediately. I just got started. Yeah.
12:53 I got some people involved in helping out to finish everything up. And my sweetheart filmed it.
12:59 So it was great. We have an outreach team at Python Discord with Sebastian Seth in the lead. And he
13:07 helped sort of like get it out there. And I think we really managed to somehow get it out there. I mean,
13:12 this could have been a thing that nobody ever saw, but somehow it broke through.
13:16 Yeah. Yeah. There's probably a lot of great stuff that got created and posted and like went nowhere,
13:21 right? Yeah, for sure. No, this was fun. I can't really take much credit because it's just a cover
13:25 of an existing song, but I've been making music since I was a teenager. And, you know, like I said,
13:30 I tried to be a musician. So I cherish every occasion I get to actually sit down and make something fun.
13:35 And like, especially when you can share it with a community and they like it. So most of the music
13:40 I write, nobody will ever hear. Yeah. There's very few people. So this is just, yeah, it's been really fun.
13:45 Yeah. Well, if you haven't heard the song, I'll put the link in the show notes. People should
13:48 definitely check it out because it's, it's all about the, you know, don't use try except pass.
13:52 Here's what you do with comments, all the stuff that you learn about in Pep 8 to write good Python
13:57 code, but musical form. Isn't it bizarre how much music like connects with your memory?
14:03 You know, like, like my daughters, when they were younger, they would sing songs. They would know
14:08 every word. There was this biology teacher who wrapped the energy cycle of the cell, like mitochondria and
14:15 all that. And like, she would study for biology by just listening to the rap about mitochondria. And
14:19 you've got Hamilton, the musical, which so many people listened to and learned about like detailed
14:24 American history, which they would think was so boring, but then it's in music form. So then I love it.
14:29 Right. That's weird. Right. Animaniac song with all the states and the periodic table thing that was
14:34 right. All of these are examples of, yeah, it's a, it's a vehicle for learning. I think it actually
14:39 works. I love the Pep 8. It's really dear to my heart. It's one of these documents. I think that
14:44 like, it's so perfectly explained sort of the culture of Python and it's well-written. It's easy to read.
14:50 You should all read it too. Not just like, listen to the song. You should go read the Pep 8. If you
14:53 haven't read it, it's very, very edible. Yeah. It's like the operating instructions for Python code.
14:59 This portion of Talk Python To Me is sponsored by Linode. Simplify your infrastructure and cut
15:05 your cloud bills in half with Linode's Linux virtual machines. Develop, deploy, and scale your
15:09 modern applications faster and easier. Whether you're developing a personal project or managing
15:14 large workloads, you deserve simple, affordable, and accessible cloud computing solutions.
15:19 As listeners of Talk Python To Me, you'll get a $100 free credit. You can find all the details at
15:25 talkpython.fm/Linode. Linode has data centers around the world with the same simple and consistent
15:31 pricing regardless of location. Just choose the data center that's nearest to your users. You'll also
15:37 receive 24-7, 365 human support with no tiers or handoffs regardless of your plan size. You can choose
15:44 shared and dedicated compute instances, or you can use your $100 in credit on S3 compatible object storage,
15:50 managed Kubernetes clusters, and more. If it runs on Linux, it runs on Linode. Visit talkpython.fm
15:57 slash Linode or click the link in your show notes, then click that create free account button to get
16:02 started. The main thing that we're here to talk about today is Python Discord. That's right. So
16:09 Discord is something kind of like Slack, but more focused on the gaming community traditionally.
16:15 Why don't you tell people what Discord is real quick and then Python Discord?
16:18 Yeah. So they started out as sort of a competitor for stuff like TeamSpeak and
16:23 they wanted to be that gaming platform, but then they've sort of pivoted because they've attracted
16:28 communities that are way outside of that core market. And now recently they've rebranded to being
16:34 just like a place for people to have good conversations like that local community feel like
16:38 you have a sewing club or your local swim team, get a Discord. And it really is a solid platform. They
16:46 have very high quality video conversations and every feature that Slack has and then some.
16:51 Yeah. What I really like is you can just go in there and you could be chatting in a room or you
16:55 could just say, click a button and like, let's make this a video call. And then it is, right?
16:59 Right.
16:59 It's really easy to sort of jump through the different mediums of communication there.
17:03 But I think the thing that they nail that Slack isn't, I mean, Slack is really intended for these
17:08 like small corporate teams so that you can have your own space. Whereas Discord is more for like
17:14 open communities, right? So they want more people to join in. So it's got this discoverability aspect.
17:20 You can grow your community as big as you want. On Slack, technically after you have a certain
17:25 amount of messages, they tell you, well, now you have to like pay to unlock the content in this channel.
17:31 And that's not suitable if you have a hundred thousand people in the community and they're
17:35 charging eight bucks a head, like it doesn't work. So Slack's great for your work chat,
17:39 but it's not really suitable for a massive community like Python Discord. So it's a really,
17:44 really great place for that. A lot of tech platforms have moved to Discord as well.
17:49 You have the Reactiflux people. That's a massive server. Pallets projects,
17:53 the people who made the Flask and Click, they're on Discord as well. Many of the game frameworks like
18:00 Piglet and Pygame was there up until recently. I think they may have disbanded that server, but
18:06 yeah, there's a lot of tech there happening. Great communities.
18:08 Yeah. Another thing that you talked about that's really interesting here is there's a whole way to
18:13 program it with Python that allows you to sort of make it better like bots and other things, right?
18:18 That's right. It's quite accessible to Python through this framework called Discord.py. So it's made by this
18:25 guy called Danny. And it's fairly easy to work with. It's fully asynchronous. So in that sense,
18:31 it's a little high level. You have to understand the async await syntax. Not everyone learns that
18:36 their first day of Python. But once you get there, it's very nice. It uses a lot of uses type annotations
18:43 in a clever way to convert the input that you send to the bot to something useful like a user or a channel. It uses lots of decorators. So it's actually quite a beautiful solution to that problem. And you can make very, very scalable bots that can be on thousands of communities at the same time, interacting with like millions of users without it falling apart.
19:07 Yeah, yeah, very cool. Joe Banks out there in the live stream says at Python Discord, we'd hit the slack limit of around 1000, sorry, 10,000 messages in less than 10 hours.
19:18 Yeah.
19:18 Yeah. That's not a great long term solution, is it?
19:21 No, it wouldn't work for us. Joe Banks, of course, being one of the co owners of Python Discord.
19:25 Yeah, fantastic.
19:26 Along with Sebastian Seth.
19:27 Yeah, yeah. Very cool. So how'd this get started? Tell us about the community.
19:30 About four years ago, I met Joe in this community. At that time, it had 200 users. And it was a very different place. It wasn't like nobody there really took it seriously. It was just a small server of people who were into Python.
19:44 But then I guess there were a couple of us who started really seeing the potential that this had to be a great place to learn and to teach. And I've always believed that teaching is a fantastic way for me to cement my skills to improve my own skills. So I've always like tried to spend a lot of time teaching and tutoring, because I thought it made me a better programmer as well. And you know, like, it's a nice, wholesome thing to do.
20:09 I totally agree. I think it does.
20:10 And we kind of sold that to a lot of more experienced users, like you should spend your time here, because it's going to make you a better developer. And because it's a nice thing to do. And we started getting more and more of those people who were into that culture. I think at that time, I felt like I wanted to create something that was in opposition to my experience in the 90s. I spent a lot of time on IRC. And IRC was not a nice place. It was very toxic.
20:32 Yeah, generally, if you ask the question, you were told it was a stupid question, and you shouldn't have asked it. And you were just sort of expected to know everything.
20:40 And I think that people, you know, young people coming into that meeting that kind of toxicity on their first day, they could be discouraged from ever trying it seriously. So I think it's important to have a community where you're welcome with open arms, where like, we encourage stupid questions, and hold your hand through them, right?
20:58 Yeah, and that's one of the things you said you're really trying to curate there at Python Discord is having a welcoming place for beginners, right?
21:05 Yes, we've curated that with, I should say, extreme prejudice. So like, we've been extremely harsh in getting rid of any kind of toxic element, and just like rooting out anything that didn't fit into our idea of the culture.
21:19 So the culture is wholesomeness, like full blast wholesomeness. And we just want to be the nicest little community on the internet, where nobody's allowed to say anything mean or disrespectful, because that's just doesn't have any place in like, your first impressions of learning to code.
21:36 I think that should be a nice and warm experience. It's harder now that we're so big. But like, back then, it was easy, I could read every single message that was posted into the community, I could personally moderate everything that happened. And I did for a long while. But then as we grew bigger, we had to sort of build a set of staff members who agreed with, with our cultural values, our core values.
21:57 And so and we started really growing because we were, it was important to us to reach out to more people, I guess. And we really believed in what we were doing. So we were doing creative stuff, like we looked for partnerships with other types of communities.
22:09 We even found a different Python community that were roughly the same size as us. And then I had a meeting with them and convinced them to merge with us, which isn't really a feature in discord. So what we actually did was we just mothballed the other community, removed every channel left a link to ours, tried to like funnel all of their users into our community.
22:28 All right, right. If you come here and you find it empty. Yeah, where everyone's gone. Yeah.
22:32 And then we took their staff members and invited them into our staff. Some of them are still there. Some of them are fantastic. Actually, the one of the owners, Sebastian came from there. And then yeah, so so we've done that we partnered with the subreddit, our Python quite early, got in touch with Andrew Phoenix over there, who runs the show, and got involved there. And I think we got a lot of traffic via Reddit. We had some pretty good SEO, search engine optimization.
22:56 Reddit is really interesting, right? There's a lot of cool stuff happening with Python on Reddit, but also Reddit can be a little bit harsh, like the people there can be a little bit rough. Yeah, for various reasons. So it's a bit of a mixed bag. You got to be careful, right?
23:07 You do. But I think the thing that happens, though, when we were when people found us through really through just googling us, but they would Google not specifically for us, they would Google Python discord, thinking, hey, what's you know, like, is there a discord for Python? But we decided, hey, you know, what would be good is if we just double down on that.
23:26 And use that as our name, get the domain Python discord.com, put it everywhere. Like if we are Python discord, then that's the thing people Google, they're going to find us. And that really worked, I think was a sort of a creative way to get our names out there. So yeah, we started really attracting people. And then we just kept partnering up with people. We got listed on Python.org slash community.
23:47 There's a couple of people out in the live stream comments on the community thing. So Robert Robinson says the community is the best thing for beginners to advanced developers. Yeah, 3OS says there's no room for toxicity. I think that really is great. Robert also not as harsh as Stack Overflow, which is interesting. But how much do you think that the culture of Python itself matched with the programmer community that you guys are running?
24:09 Say like if it was Java or C++, they have slightly different backgrounds, right?
24:14 Yeah. So I think it makes a difference.
24:15 It does, because these are the people that we attract, right? Like the staff members, they come from, from a place of, of understanding that Python has this kind of culture. And I think that we would have attracted a different set of staff members.
24:28 So by Python establishing, they've been amazing at building a really strong culture for Python, I think. And inclusivity has been like a really strong fighting point for them, I think.
24:42 So that means that when we find these advanced Python users who are already renowned in their own way, they're, you know, like full-time Python developers, they're speakers at conferences, they're library maintainers. They're really nice people, generally. Like most of the people I meet in this community, they're already on board with what we're trying to do.
25:01 So there's this synergy between the Python culture and our culture that's really played in our favor, I think.
25:08 Yeah, I would think so as well. I mean, there's the Brett Cannon quote, like, I came for the language, stayed for the community type of thing.
25:14 Yeah, exactly.
25:14 Yeah. What have you done to try to keep that zen of that community as you've grown to over 100,000 participants?
25:22 So the main thing that, because now that we're getting so big, we have a big staff and running a big staff of 100 people is work. We had to start treating it almost like a startup. So being a staff member at Python Discord is a job. Like, it's real work.
25:38 We have meetings, we have several meetings a week, we have meetings with the admins, with the leads, we have an all hands meeting, we have project meetings for certain projects that we're pursuing, we have a roadmap that we follow very carefully and plan out with the admins.
25:51 Many of the admins have a domain that they look after. So like, this guy is responsible for moderation and one person on maybe events. And that means that there's a bit of ownership. And through the entire staff, we've been like really actively perpetuating this focus on culture, right?
26:09 And they all really agree with it anyway. So it's not like a hard sell. But by motivating our staff to follow that sort of ethos, it bleeds out to the rest of the community naturally in everything that we do there.
26:21 Like, I can't personally follow up all the stuff that we do. But it naturally happens through, I guess, a form of leadership.
26:26 Yeah, yeah, fantastic. So three through us, as I joined Python Discord for a question, I'm still here for almost a year later. Don't regret a single day. That's, that's awesome.
26:35 It's really nice to hear stuff like this.
26:36 Yeah, it sounds like a super cool community. People can go in there and talk about different topics, I imagine, right? Like, we're gonna talk about Flask. There's a Flask section you want to talk about getting started. There's probably something for that.
26:47 Yeah. So we've organized it so that there's a topical channel for a bunch of different topics that are basically domains. So we have like an async channel, we have web development, where you can ask, sure, Flask. Even if you have a JavaScript question, you're welcome to ask it there.
27:02 We've got, you know, a place for game development, frameworks, that kind of stuff. And there's also some general channels where you can talk about just about anything. And then beyond that, for people who just are looking for help, we built a system on top of Discord that's kind of unique to deliver help channels, almost like a ticketing system.
27:19 You come in and you claim a channel of your own, a help channel, and then in that channel, you can ask anything you want. And then you will be assigned sort of as the owner of that channel and people will come and help you.
27:30 Yeah. And you said that with this many people, you have to do like sort of a load balancing type thing to make sure that people can have some help, but that doesn't get overwhelmed and sort of partition it. You want to talk about that a little bit?
27:41 It's been challenging. We used to have just like, oh, they're generic help. That was a channel.
27:46 Now it's just streaming by like tailing a log. Yeah.
27:49 Suddenly it was like three channels because there were so many people at the same time and you couldn't, nobody could ask anything. And then it grew to, I think, eight that it's most. And we were just like, we can't keep scaling like this.
27:59 We need to figure out a better solution. So we came up with this rotating channel claiming system. It's all run on the thing I mentioned earlier, discord.py.
28:07 We wrote all the code for this. Members of the community volunteered, you know, like there are tens of thousands of lines of code in our bot that's directly responsible for running the community,
28:17 running all these systems on top of the vanilla setup that discord gives us.
28:22 It's a really powerful thing. You know, when you run a community full of programmers that uniquely you can then put them to work doing all this stuff that other types of communities would never be able to do because they just don't have that amount.
28:33 Yeah.
28:34 Right. So many creative and wonderful people are willing to invest their free time to make something awesome for that.
28:41 I really, I'm lucky to be surrounded by so many active contributors. I mean, we've got dozens of people help build us.
28:47 Yeah. I do think that having this programming skill, it's, it's almost like being a magician, right? You can think of this idea and you're like, you know, I can make that happen.
28:54 Yeah.
28:55 I just, I got to think about it a little bit more and then it'll exist. And there's not many other things like that.
29:00 No, you're right.
29:00 So much of the creative stuff, actually, you've got to, eventually the rubber meets the road. You've got to create a thing, right? Like if you're a chemist or you're an engineer, like you can create, you can imagine things, but eventually they got to get built.
29:12 But for programmers, it's just sort of more thinking until it exists. And it's, it's a really cool to see like communities putting that to you. So like, Oh, I have this idea. What if the bot could do this? Well, you know, here's the source code.
29:23 Right. You could do that. Yeah. It's like a superpower. I think one person who knows how to code in a community, it can be like a wizard who, who makes stuff happen. And I have a hundred wizards. So like I can do whatever I want. Pretty much. It's amazing. It really makes the difference. I think that makes that's that little extra cherry on top that makes this community really shine.
29:42 Yeah. Well, and the fact that discord has an API and doesn't try to like lock it off and make it impossible to sort of do extra stuff. Right.
29:50 Right. I mean, it's not by any means trivial, but there are good packages out there that abstract all the pain away and most of the pain anyway.
29:57 Yeah, absolutely. Yeah. Super cool. So one of the things that you all have been doing is you've been running different kinds of events.
30:04 Yes.
30:04 You want to tell us about some of the events and things you got, you've done and maybe we'll do in the future.
30:08 Absolutely. So I think a lot of people come to us with a question or to find some help or some guidance, but then we want them to stay.
30:15 And one of the ways that we try to do that is to always have something going on. And the events is our way of like having an activity always happening in the community.
30:24 So we started with we created a second bot that was just for fun. And then we had like monthly events like a Valentine's event or Halloween event where we would invite people to solve these simple problems.
30:37 So for the Halloween event, we would say, OK, I want you to write a spooky movie recommender.
30:42 That's just a function. Right. And so we provide the bot and the infrastructure for the bot to run on.
30:47 You just write a command for the bot. It's really just a function that returns a spooky movie. Right.
30:53 That's fairly easy for people to do. And so we get people willing to take on the task.
30:58 And then we filled up the spot with all of these things. So every month we would have a theme and then we would get more people involved in that.
31:04 But here's the tricky part is we would force them to commit it to GitHub.
31:09 It would go through reviews. We were kind of harsh reviewers.
31:12 Sometimes we will give a proper review, but we do it in a very educational way, I think, where we explain very clearly why something needs to change.
31:21 If it needs to change, we have continuous integration systems and continuous deployment set up on all of these things so that, you know, the code has to lint properly, has to get through, has to match the PEP 8, basically, and run tests and all this stuff.
31:36 So it sounds easy when you start off. Yeah, you're just writing a simple function to return a spooky movie.
31:42 But then actually we're stealth educating these people on how to work on like an open source framework.
31:49 Right. Like inside of a context.
31:51 Right. You're teaching them all the engineering workflow stuff.
31:54 Uh-huh. The soft skills.
31:55 Linting, CI, yeah, GitHub.
31:58 Precisely.
31:58 All that kind of stuff.
31:59 And I think that that stuff is amazing to know if you want to go out there and work in the field.
32:04 You have to know these things, but there aren't that many places online that will try to teach you those places.
32:08 Yeah. Well, it's also all the difference between is this a real programmer or someone who just has like learned a little bit about the language, right?
32:15 Like whenever I was doing interviews, you could always sort of tell, is this person really in the community?
32:20 Do they kind of know the moving part?
32:23 You know what I mean?
32:24 Like, because I would interview people and they would sometimes just make up stuff that they know.
32:27 I'm like, you don't actually know this, do you?
32:29 I could tell that this is not a thing, right?
32:31 And I think having those skills depends how you get into programming.
32:34 But a lot of people come into Python.
32:36 They don't come through the, I went to Carnegie Mellon for four years.
32:39 They come through the, I got inspired.
32:41 I got a book or I got some kind of thing where I started learning programming.
32:45 And I've been mostly on my own, but I'm trying to get into the world of programming.
32:49 And, you know, no one tells you you need to learn about continuous integration.
32:52 Right. Exactly.
32:53 Or unit testing frameworks or what have you.
32:56 Talk Python to Me is partially supported by our training courses.
33:01 Have you tried to learn Python but got stuck or lost focus?
33:04 We know how it feels to try and jam fact after fact, loop construct after turn hair expression into your head.
33:12 At best, it's boring at worst, it can turn you off programming altogether.
33:16 That's why we built our course Python jumpstart by building 10 apps.
33:20 This course guides you through carefully planned applications.
33:23 It starts simple, but progresses to quite real apps.
33:27 Best of all, you won't be learning dry facts.
33:30 You'll be learning like the pros do by building real applications and learning in context.
33:34 If you want to start building with Python, just visit talkpython.fm/course to get started.
33:40 Actually, we do the same thing when we interview for my job.
33:45 We often focus on the soft skills.
33:47 We try to like, you know, if we can determine whether someone writes a good commit message,
33:52 that tells you a lot about them, even though it's not strictly, you know, the thing that we're actually looking for.
33:57 We're looking for like talented programmers, but the two things are slightly linked in a way.
34:03 Often one indicates the other.
34:04 But yeah, so that was our first sort of our first step into events.
34:08 And then it grew from there.
34:09 I had this idea.
34:10 I started a code jam and I wanted it to be a unique thing because again, we're a lot of people do code jams and they're mostly like game jams.
34:18 Give us a quick, what's the elevator pitch?
34:20 What's a code jam?
34:21 So a Python discord code jam or just a code jam in general?
34:23 In general.
34:24 In general, it's you have a week, you have to solve a problem.
34:28 You don't necessarily know what the problem is before you start solving it.
34:31 Maybe you have to solve it within a specific context.
34:34 So like a framework or a language, something like that.
34:37 Like use React to build a game, 2D scroller game in a week, something like that maybe.
34:42 Something like that.
34:43 And so we wanted to do a spin on this to activate our users to do something fun for a week.
34:47 But again, I'm trying to like do something that nobody else is doing.
34:51 So my spin was you have to do it with a team of strangers, not on your own, not with some people, you know, you have to get out of that safety net, out of your comfort zone and solve a problem in a setting that you might see in an open source project or in a job.
35:06 Right.
35:07 Yeah.
35:07 Because one of the challenges can be, there might be these people who've done this before, right?
35:11 Like these groups of people, we all go to college together.
35:13 We were roommates.
35:14 Now we just go do these events because they're fun and we still do them together.
35:17 But if there's like a tight knit group of four people that say, okay, you do the database, I'll do the UI, you do it back in, go, right?
35:23 That's not the same thing as, you know, a couple of people.
35:26 I want to be part of it too.
35:28 Like we'll find some random folks to meet up, right?
35:30 So you're kind of trying to equalize that a little.
35:32 Yeah.
35:32 They would come in and annihilate everyone.
35:34 And I want people to be uncomfortable.
35:37 I want them to do something hard and to come out of it, having learned how to overcome.
35:41 Those challenges, right?
35:42 Yeah.
35:43 So that's the pitch is, is that we team you up with some people you've never met.
35:47 We give you a framework.
35:49 Let's say you have to write a Django app.
35:51 And then on the day you start, we tell you, oh, and by the way, it has to be thematic of climate change.
35:57 Or we had one where we said that the theme was this app hates you.
36:01 And so we asked people to make apps that hated the users.
36:04 I think I've used some of those.
36:05 Super fun.
36:06 My favorite, I remember there was this one team, they made like a paint clone similar to MS Paint,
36:12 but all of the different tools were terrible in their own way.
36:16 So like you would use the paintbrush, but it would like drip paint on top of the canvas.
36:20 And the pencil would, the tip would break and it would like, you'd have to constantly be like, oh, yeah.
36:27 So each, each tool uniquely terrible, really fun.
36:30 Now, recently we had one where the theme was early internet.
36:34 And we had a team that created sort of a Windows 98 or Windows 95 clone in Django.
36:40 And I was like, yeah, this is cool.
36:42 And it looked fairly, you know, nostalgic.
36:45 But then the actual thing inside of that Windows clone was that there was a working browser.
36:50 And when you use the browser, they would intercept the HTML and like modify it to look like early internet.
36:58 They would pixelate the images or, you know, like add filters and stuff to make it look old and kind of broken.
37:04 It's really, really genuinely interesting.
37:07 And you could go to any page on the web.
37:08 So people do these amazing things within the limitations we set for them.
37:13 It's really inspiring to watch some of the stuff.
37:16 We actually, we make some videos on our YouTube.
37:18 There are highlights videos.
37:19 Yeah, here's, that's nostalgic.
37:21 There are highlight videos on our YouTube that show off some of the projects that people come up with.
37:26 We're going to release another one within a month or two for the one, the Code Jam that was last summer.
37:31 So yeah, that's really cool.
37:32 Yeah, we should link to those.
37:33 Yeah, I think back to the early internet.
37:36 Gosh, if you had modern tools in the modern tool chain, you could just blow people's minds.
37:41 I mean, it was so bad.
37:43 It was so incredibly bad, right?
37:45 Yes.
37:47 The Amazon ones are the absolute worst.
37:50 You should all go and like look up what Amazon looked like in its first iteration.
37:54 Hilariously bad.
37:55 Yeah, it's, oh my gosh.
37:57 Yeah, so these are some of the types of things you do, right?
37:59 These events.
38:00 Do you have any coming up?
38:01 Oh, that's another one.
38:02 We've been in, we've invited Pi Week, which is actually a 15 year old Python event.
38:07 One of the oldest, probably the longest running game jam in the entire ecosystem.
38:11 We basically offered to take it into our fold and help them advertise it, market it, and
38:18 to put it together because they were stretched a little thin, maybe.
38:21 And Daniel Pope, who runs it currently, Maeve, Lord Maeve, he's just become a father, I think.
38:28 Busy with things.
38:30 And that changes your perspective on free time.
38:33 Yeah.
38:33 Or changes your free time.
38:34 He's a wonderful guy.
38:36 I really enjoyed working with him on the previous Pi Week we ran last autumn.
38:40 And now we're probably going to help him put one together.
38:43 He's still running the show, but we help out in every way we can.
38:46 So there's a Pi Week coming up sometime this spring.
38:49 I don't know if a date has been announced yet.
38:50 Then we have a code jam this summer.
38:52 And in October, we run the Hacktoberfest events.
38:56 December, we run Advent of Code together with the Advent of Code staff.
38:59 There's basically something happening every couple months.
39:02 What do people do to participate?
39:03 How do they participate?
39:04 If you're a member of the community, if you type exclamation mark, subscribe in the Bot Commands
39:12 channel, you will be subscribed to announcements.
39:15 We will basically will ping you every time something big is happening.
39:19 So we will always let you know.
39:20 There's also an event page on our website.
39:23 You can usually see upcoming major upcoming events on the front page.
39:26 There's an event sub page there that has everything listed.
39:29 So it's fairly hard to miss if you're a member of the community.
39:32 But yeah, the subscribe command for our bot, that will make sure that you will definitely
39:37 be let know.
39:38 Yeah.
39:38 That's how we keep people informed.
39:39 Yeah.
39:40 Very cool.
39:40 Sounds like a lot of fun for people to participate in these things.
39:43 Another thing that you did recently that was noteworthy is you all hosted the core developer
39:50 sprints.
39:51 Yeah.
39:51 That was interesting.
39:52 We, I mean, we obviously, we love the PSF, the Python Software Foundation, and we have
39:57 a core developer on the staff as well.
40:00 Kyle Stanley, he's a core developer who works on AsyncIO.
40:04 He's great.
40:05 He's one of our moderators.
40:06 And so he got in touch with me and told me that, well, because PyCon was canceled and usually
40:11 they have this core dev sprint at PyCon, they sit together for a week and they just work
40:16 on like CPython stuff together.
40:18 I think a lot of people don't realize that when PyCon fell victim to the pandemic, like
40:24 everything has, there's so much of that that happens.
40:27 You know, in open source, you could work for years and never actually face-to-face have a
40:32 conversation with someone you're working with, right?
40:34 So a lot of those sprints, both for core developers and Python, but also for like Flask and Django
40:40 and other groups would have these get togethers where people could come and contribute.
40:44 And yeah, that kind of fell by the wayside, right?
40:46 Yeah.
40:46 I think that was a big, a lot of people took it quite poorly.
40:50 I mean, that's like the highlight of their year.
40:52 Many of them, if you're a core developer, the PSF will pay your ticket to come and hang out
40:56 with them and do the course sprint.
40:58 And it's like this big event.
41:00 I would love to do that myself, sit down with some of these like the smartest people.
41:03 I know.
41:04 It'd be amazing.
41:05 I always consider PyCon my geek holiday.
41:07 It's like my chance to get away and just enjoy time with my friends who I only see at conferences,
41:12 go to God, have dinner and beer with them afterwards.
41:14 And yeah, I've never been because, you know, I had to cross the Atlantic to get there.
41:18 So, but hopefully one day.
41:20 Yeah.
41:20 Someday soon.
41:21 Hopefully.
41:22 Right.
41:22 So they canceled that.
41:23 And so they were looking for an alternative way because they needed to do the core dev sprint,
41:27 but obviously they had to do it remotely.
41:28 They were looking into how they would host that.
41:31 And I just suggested to Kyle that like, if you guys are interested, Europython did it on
41:37 discord recently and we could host you.
41:40 We could set up everything you need, all the channels, take care of like moderation.
41:45 If you want to reach out to the community or something, we could put together a call or
41:49 something like that.
41:50 And they were interested.
41:51 And eventually they voted in favor of doing that.
41:54 So we had all the core developers, 40 of them at least, hanging out with us.
41:58 We left them.
41:58 I mean, they had their own sort of gated off area of the community where they did this.
42:04 And we've done that for some of the other events, like Fostem mostly recently, we hosted
42:08 their organizers and their talk, their speakers so that they have an area to be in without
42:13 having to go through the hassle of like setting up their own community and managing and administrating
42:18 all of that.
42:18 So what's that look like in practice?
42:20 They have their own channel.
42:22 Yeah.
42:22 Then they do like screen share for the presentations.
42:25 Yeah.
42:25 We just set it up so that all they got to do is just join.
42:28 And then right at the top of the channel list is just all the stuff that's relevant to
42:32 them.
42:33 Nobody else can see it.
42:34 Just the organizers and the members of that event.
42:37 So for them, it almost looks like we've just set up a whole server just for them.
42:40 And then at the bottom, if they want to, they can go and explore our public channels and talk
42:44 to the community.
42:45 And some of them did.
42:46 And there was a lot of really good interaction with the other members of the community.
42:49 But if they want to, and if they want privacy, which many of them did, they can just stay
42:55 in their own like gated off area.
42:56 So that's been one way that we've been able to sort of give back to the ecosystem a little
43:01 bit and help out.
43:02 And of course, they also chose to have a Q&A that they collected the questions from the
43:08 community and they wanted to do a stream.
43:10 And we put together the stream on YouTube for them.
43:12 It's available both on the PSF's own YouTube and on ours.
43:17 A full length, hour long, I think, core developer Q&A from questions from the community.
43:22 Really, really interesting.
43:23 I highly recommend it.
43:24 That's fantastic.
43:25 Yeah, it was really fun.
43:26 We really love the PSF.
43:27 We work with them on other stuff.
43:28 Like they're looking for, you know, help get their announcements out there.
43:33 We have quite a bit of reach by now.
43:35 In part due to like our announcement channel.
43:37 Sure, it reaches our 150,000 members.
43:40 But there's also a feature where you can subscribe to, you can put our announcements into your community.
43:46 And there's 2000 communities right now that sort of relay all of the announcements we make.
43:51 So then that reaches an additional, I don't even know how many people.
43:55 And then we've got Twitter and we've got this and that.
43:57 Does that push notifications out to other Discord communities or some other types of communities?
44:03 Is it like Discord to Discord?
44:05 Oh, right.
44:06 No, it's only Discord.
44:07 Yeah.
44:07 So there's 2000 Discord communities.
44:09 Probably most of them are small, you know, 10 people who are friends or whatever kind of communities.
44:14 But there are some that are rather big.
44:16 Yeah.
44:17 Yeah, yeah.
44:17 That's very cool.
44:18 So.
44:18 Yeah, it seems like the community, like the core devs and the advanced channel.
44:22 Yeah.
44:23 Very nice.
44:23 Yeah.
44:23 Awesome.
44:24 Quite cool.
44:25 I guess one other thing that we could talk about that you guys are doing is you have some open source stuff.
44:29 Like your bot, for example, is open source and so on.
44:33 You want to talk a little bit about some of the code?
44:35 Yeah.
44:35 I mean, we have a lot of open source repositories and we try.
44:40 So this is about Python Discord has to be a great place for beginners to discover programming and to get help and so on.
44:46 But it also needs to be a place that's engaging for more advanced users.
44:49 And one of the ways that we're doing that is to try to provide learning opportunities, even for people who have years of experience with Python.
44:56 And one of the ways that you can improve your hone your skills and get better is to work on exciting projects that help the community.
45:03 So we've open sourced everything.
45:05 We're very transparent about how everything works.
45:07 And there's a whole bunch of projects from the bots.
45:10 There are three, four bots by now, I think.
45:12 No, three.
45:13 We've got the website, of course, and some microservices that interact with the website.
45:19 Snackbox is an interesting one.
45:21 That's a completely sandboxed Python evaluation tool.
45:25 That's right.
45:25 Yeah.
45:26 So that we can have a command on the server where people can run actual raw Python code without them being able to like destroy all our servers.
45:35 Because there's, of course, a risk associated with people running arbitrary code.
45:39 Yeah.
45:39 That's the danger of, hey, you want to test this code out?
45:42 Click here.
45:42 Oh, wait.
45:43 The code I'm trying to test is, you know, sub process, launch, such and such.
45:47 Yeah.
45:48 Or whatever.
45:49 Yeah.
45:49 So we have like several layers of sandboxing.
45:52 Like if it takes too long or if it uses specific parts of the standard library that might be used in a malicious way, then it just doesn't do it at all.
46:01 But even if it does do it, it's inside of one sandbox that's inside another sandbox.
46:05 And it's very, very safe.
46:06 And this is open source.
46:07 You can take this tool, Snackbox, and you can use it in your bot or in your website or whatever service you want if you want to be able to like safely evaluate Python code.
46:17 So what are some examples like how this gets used in Discord?
46:21 The Snackbox?
46:21 We actually only use it for the bot so that people can evaluate code.
46:26 But that function is very valuable because in help sessions, sometimes our helpers or people who are trying to explain something, they want to execute some code and show what the result is to sort of explain a concept.
46:37 So someone's stuck on like, how does this work?
46:40 Well, then they can just show them with a code example and it evaluates it right there.
46:44 It's a very nice teaching aid, essentially.
46:46 Yeah, that's quite cool.
46:48 Yeah.
46:48 Nice.
46:49 Any other projects you want to highlight?
46:50 Yeah, for sure.
46:51 We try to do projects that aren't strictly just code as well.
46:55 For instance, in our staff, we have some people who are involved in the DevOps side of Python Discord.
47:01 We have a very modern DevOps architecture using Kubernetes cluster.
47:05 Everything's its own containerized service.
47:08 And some of us are like really learning how to do advanced, I think, industry standard DevOps by doing it here at Python Discord.
47:17 We have media projects and branding projects of people who have graphic design skills.
47:22 They come in and help us.
47:23 They like say, say we have a Halloween event.
47:26 Oh, you can come in and make like a spooky banner or something that we might put somewhere, right?
47:30 Try to get people involved like that.
47:32 Now we're making a lot of YouTube content like the Pep 8 song.
47:34 That means we need editors.
47:36 We need people who are good at animation, maybe people who can do sound music, all of these kinds of skill sets.
47:42 We try to provide an avenue for them to involve themselves.
47:45 And if you've got a unique skill set that I didn't mention or I couldn't even think of, then, you know, if you come and advertise to us, maybe we'll be able to find some creative way where we can put that to use.
47:55 Yeah.
47:56 Oh, that's a really interesting way to leverage the community.
47:58 Not just the core programming skills, but the other stuff as well.
48:01 Yeah.
48:02 And I think it's really essential that we have this kind of approach because I think the thing that's difficult about running a community of volunteers is that if you run a business, well, I can like buy productivity.
48:15 I pay you, you make me something, right?
48:17 But when I have a community of volunteers, I can't pay you.
48:20 I don't have any money to pay you with.
48:22 So the only way I can get you to do something is to motivate you.
48:25 And there's some intrinsic motivation in being part of something good and wholesome like this.
48:32 I think the culture helps bring people in and like from an altruistic point of view, like they just want to help out.
48:38 They want to be a good force in the universe.
48:41 But ultimately, if you really want strong, directed initiative and motivation, I think you have to find like a synergy, a sort of a thing where your personal goals align with the goals of the community, right?
48:55 So you want to do something for us that's good for you, but it's also good for us.
49:00 That's the perfect way to motivate people.
49:02 So by providing as many ways as possible for people to get involved like that, it means that people can come in and actually like build their skill set.
49:10 Maybe they make something impressive and they can put it on their resume.
49:13 They can go out and get a job.
49:14 And we're very good at like trying to give people credit and help people out.
49:19 I've personally been like a job reference for many of the staff members.
49:23 I've written letters of recommendation, you know, stuff like that, because we really want people to come in.
49:28 And if they invest themselves into our community and invest hours of work, I want them to get something out of it, like personally, because that's the best way that I can motivate them to keep working.
49:38 Yeah.
49:38 Does it cost money?
49:39 Is it expensive to run the community?
49:42 Like servers and bandwidth and all that?
49:44 We've been lucky enough to be sponsored by everyone we needed to be sponsored by.
49:48 So we have Linode as a sponsor.
49:50 We've got Notion providing free documentation stuff for us.
49:55 So with a bunch of different partners we've worked with and sponsors for prizes for the events like Adafruit, we've worked with DigitalOcean.
50:05 JetBrains has been giving us licenses we can give away for a long time.
50:08 Sentry is another sponsor that give us Sentry monitoring.
50:12 So that covers our essentials.
50:14 We don't pay for hosting because Linode is providing all the hosting for free.
50:19 But we do have some expenses associated with the events.
50:22 T-shirts that's sent out as prizes, this sort of thing.
50:25 And some of that comes in via our Patreon.
50:30 I'm really happy with this animated explainer video that we send to everyone who joins the community called Welcome to Python Discord.
50:37 In that one, we went out and found some voice talent to do a voiceover for us so that we could get like that Kursgesagt style voiceover.
50:45 I specifically asked the guy, can you do a Kursgesagt voice?
50:49 And he was like, yeah, I can do that.
50:50 Oh, nice.
50:52 And I was so happy with the results.
50:53 But that's an example of where we might have put in a little bit of money.
50:57 Not that it was super expensive.
50:59 He was very generous.
51:00 Right.
51:00 Yeah, that's cool.
51:01 But it's not like super expensive to say like PyPI is really expensive to run if it weren't for the sponsors and the donations, right?
51:08 Like $40,000 a month with bandwidth and stuff like that.
51:11 Yeah, no, because like the majority of that bandwidth is, I guess, Discord is paying that.
51:15 Right.
51:16 And we're not paying, you know, like it's free to run a community on Discord no matter how big it gets.
51:20 Yeah, that's cool.
51:21 So essentially, no, it's fairly cheap to make ends meet here.
51:25 And we try to put all the money that we get in straight back out to the community as prices or in giveaways or whatever we can.
51:32 Because we're not trying to like make money.
51:35 We're just trying to provide the best possible experience that we can for our users.
51:39 Yeah, super cool.
51:40 One thing that we talked about a little bit before we hit record that I think is interesting is you'd mentioned how some of the infrastructure and some of the ideas you get to apply and experiment with.
51:50 Here are things that you can actually bring back to your day job, right?
51:55 Where you wouldn't get a chance to say, oh, let's, you know, try this thing with Kubernetes or whatever it is you're doing.
51:59 But you can try it here.
52:00 And then if it works, like, oh, yeah, we tried this.
52:02 Here's how it's working.
52:03 I think there's this interesting interplay between like work, work, your main professional experience.
52:09 And then these kind of more freeform places where you have more control to do whatever you want.
52:13 Yeah, we try to encourage that kind of thing.
52:15 Like we were now we're thinking about doing a rewriter for our API into FastAPI.
52:19 It's currently a Django RESTful API.
52:22 And the primary motivation for that is because one of the owners needs to learn FastAPI for work.
52:27 Yeah, sure.
52:28 That's a really good reason to do it.
52:30 And of course, it gives us an extra benefit because it could use a rewrite.
52:34 But probably we wouldn't have done it unless we had someone who was sort of personally motivated.
52:39 So yeah, in a way, I think especially at the top of like the executive leadership, we try to use Python Discord as sort of a sandbox to experiment with stuff and learn skills that we can take with us to work.
52:52 Yeah, it gives a lot of people experience with things that they otherwise might not get to touch because that API that they work on at work, it's been Django REST framework for five years.
53:01 And there's no reason to change it.
53:02 And they're not changing it because it works.
53:04 Don't touch it.
53:04 Yeah, exactly.
53:05 I learned Kubernetes from Python Discord myself.
53:08 And now I'm bringing it to work with me because we don't have that kind of sophistication there quite yet.
53:13 And that's just one example.
53:14 I've learned half of everything I know, I think, at Python Discord because, of course, I'm in a unique position of being able to do pretty much whatever I want there.
53:20 Yeah, exactly.
53:21 I think that's the secret to being on the cutting edge is you find these places where you can try things out.
53:28 And then you have that experience maybe to bring back to more conservative type of environments.
53:33 I think that this kind of way of using the community has been mostly available to the owners until we grew to this size.
53:40 And now I'm trying to sort of expand that to the rest of the staff and anyone who wants to get involved.
53:44 Like, please come and use us as a way for you to learn that next thing that you're thinking about learning.
53:50 Like, maybe we can provide you an opportunity to, and you're really looking to get into making a great sounding audio.
53:57 Maybe we have an opportunity for you to, like, hone your craft and practice.
54:01 Yeah.
54:01 Yeah.
54:02 Very cool.
54:02 All right.
54:03 Well, I think that's about it for time that we have to talk about Python Discord.
54:06 But congratulations on such a cool community, you and everyone else.
54:09 I know it isn't just you.
54:10 You're the figurehead for the community, right?
54:13 Maybe in a way because I have a freakishly large beard and there's a small cult of personality around my lemon nickname.
54:22 We have a whole set of emojis with lemons.
54:25 Oh, nice.
54:27 So it's sort of, but yeah, I don't know.
54:29 We have a lot of really notable members of the community once you get to know them.
54:33 There's so many great people involved.
54:34 So it's just a wonderful place to be.
54:37 Yeah.
54:37 Fantastic.
54:38 All right.
54:39 Final two questions before I let you out of here.
54:41 Yes.
54:41 You're going to write some Python code.
54:42 What editor are you using these days?
54:44 So I use PyCharm and I use a little bit of VS Code on the side when I need to do something really simple or whenever I want to do this code collab thing.
54:54 So PyCharm has code with me and there's the live sync thing on VS Code where you can actually like live collaborate on files.
55:01 I've been getting into that.
55:02 It's really cool to work like two people live editing some code together.
55:07 And PyCharm's been really good to me from day one.
55:10 I just really fell in love with it since I started using it.
55:13 It has so many features that I need, especially as a full stack developer who is into a lot of web stuff.
55:18 And I work on JavaScript and HTML and I interact with databases a lot.
55:23 So once you're thinking about writing, PyCharm has native support for Django and Flask and can really make sense of a lot of these files in ways that the other editors would need plugins and stuff to do.
55:36 You just get so much out of the box.
55:37 Yeah.
55:38 It's 100% agree with you.
55:39 Absolutely.
55:40 Yeah.
55:40 Very, very cool one.
55:41 All right.
55:41 And then notable PyPI packages.
55:43 What do you want to give a shout out to there?
55:45 We've mentioned a couple of the stuff that we've made here at Python Discord.
55:50 I want to also mention that.
55:52 So maybe that's a little narcissistic of me to talk about my own packages when you ask me this.
55:57 There's a lot of packages I really love out there.
55:59 But you may not have heard of stuff like we have async Redis cache, which is this.
56:04 We found out that working with Redis from an asynchronous context can be a little complicated sometimes.
56:10 So we made this PyPI package that makes it extremely trivial to work with Redis from, for instance, a Discord bot.
56:16 That's where we use it so that if all you need to do is just cache some data in Redis so that you can access it later and, you know, like use it as a cache the way most people do.
56:26 This is a godsend for working with it in an asynchronous way.
56:29 Then I also have a personal project that I've been working on a lot lately called Blackbox.
56:35 And it's in reference to the black box inside of a plane.
56:39 Okay.
56:39 So like the idea is if there's a disaster, you get the black box and has the stuff that you need to like figure out what happened and get back on track.
56:47 And so black box is a backup system.
56:49 It's designed to be extremely easy to work with, like abstract away all the painful stuff.
56:54 And it's also designed to be really easy to contribute to.
56:57 I've been like working on trying to make the most contributor friendly thing I can do.
57:03 Big fat read me.
57:04 Everything's like abstract classes.
57:06 So if you want to contribute, you usually only have to touch a single file to write like a single interface basically for the thing.
57:13 So what it does is you make a config file.
57:15 You put connection strings into that config file.
57:18 So say you want to do a backup of Postgres.
57:20 Well, you write a single string that's like Postgres colon slash slash the username, the password.
57:25 And then you put that in there.
57:27 And now it knows how to talk to Postgres.
57:29 It does all of that stuff for you.
57:30 So now you've told it a couple of databases, say Postgres, Redis, MongoDB, whatever you've got.
57:36 Then you tell it, where do you want to store that backup?
57:38 Maybe you want to store it in an S3.
57:40 Maybe you want to store it on Dropbox or something free like that.
57:43 Well, then you just put in another connection string that describes how to talk to that service.
57:47 And then lastly, maybe you want to be let know when that backup has been done.
57:52 So then you can put in a Slack or a Discord connection string.
57:56 And it'll send you a message and say, oh, I'm done with my backup.
57:59 So the goal is for people to just install it off of PyPI and they can put it in a cron job or run it manually.
58:05 And it'll just do the backup, store it somewhere in the cloud and let you know when it's done.
58:09 I love it.
58:10 That's really cool.
58:10 And it looks like something maybe I could even make use of.
58:13 I mean, I got MongoDB and I have backups for it.
58:15 But this sort of fully automatic stuff would be cool.
58:18 I've already got a Slack channel where I get notifications for like deploys and whatnot.
58:23 It could just throw in like, hey, we did a backup next to that, you know?
58:25 Well, it's really easy to get started with.
58:27 So if, you know, like some people have like expensive paid backup services,
58:31 and they'll obviously be much better.
58:33 Like saving a complete snapshot of the entire database server is going to be better than this.
58:39 But if you're just looking for something quick and easy, maybe you just want to store it in Dropbox or something.
58:44 This is a great way to have like offsite backups for free.
58:47 And you can set it up in 10 minutes.
58:49 Very cool.
58:49 All right.
58:50 Well, that's quite neat now.
58:51 Thanks for letting us know about that one.
58:53 Yeah.
58:53 Yeah.
58:53 All right.
58:54 Well, the live chat is blowing up with lemons and bot commands about your beard and things like that.
59:01 So thanks everyone.
59:04 But mostly just appreciation from the community, I think.
59:07 So very cool.
59:08 So final call to action.
59:09 People are interested in being part of your community.
59:11 What do they do?
59:12 Right.
59:12 So they can go to python discord.com or .org.
59:15 And from there, you get all the information you need in order to join us.
59:19 If there's also just discord.gg slash Python, that's us.
59:23 Or you can even find it in the Python subreddit.
59:27 So once you get into the community, you just ask around and we'll help you get started with whatever
59:31 it is you want.
59:32 You need help.
59:33 There's help channels to ask.
59:34 You join an event.
59:35 There's lots of cool stuff going to happen in the next couple months.
59:39 Get involved in Pi Week.
59:40 It's really fun.
59:41 You write a game.
59:42 Get involved in the Code Jam.
59:43 It's a unique experience.
59:45 Yeah.
59:45 And yeah, just come hang out with us.
59:47 It's really, it's a lovely place.
59:49 That's cool.
59:49 It sounds like some of these programming examples and opportunities might be like more low key,
59:55 more silly and fun rather than, you know, forms over data.
59:58 Yeah.
59:58 Yeah, exactly.
59:59 Yeah.
59:59 Cool.
01:00:00 All right.
01:00:00 Well, thanks for coming on and sharing what you guys are up to over there and it's been
01:00:03 great to chat with you.
01:00:04 Oh, it's been my pleasure.
01:00:05 Yeah.
01:00:05 See you later.
01:00:06 All right.
01:00:06 Bye, Michael.
01:00:07 This has been another episode of Talk Python to Me.
01:00:10 Our guest on this episode was Leon Sandoy and it's been brought to you by Linode and us
01:00:15 over at Talk Python Training.
01:00:17 Simplify your infrastructure and cut your cloud bills in half with Linode's Linux virtual machines.
01:00:21 Develop, deploy, and scale your modern applications faster and easier.
01:00:25 Visit talkpython.fm/Linode and click the create free account button to get started.
01:00:30 Want to level up your Python?
01:00:31 We have one of the largest catalogs of Python video courses over at Talk Python.
01:00:35 Our content ranges from true beginners to deeply advanced topics like memory and async.
01:00:41 And best of all, there's not a subscription in sight.
01:00:43 Check it out for yourself at training.talkpython.fm.
01:00:46 Be sure to subscribe to the show, open your favorite podcast app, and search for Python.
01:00:51 We should be right at the top.
01:00:52 You can also find the iTunes feed at /itunes, the Google Play feed at /play,
01:00:58 and the direct RSS feed at /rss on talkpython.fm.
01:01:02 We're live streaming most of our recordings these days.
01:01:05 If you want to be part of the show and have your comments featured on the air,
01:01:09 be sure to subscribe to our YouTube channel at talkpython.fm/youtube.
01:01:13 This is your host, Michael Kennedy.
01:01:15 Thanks so much for listening.
01:01:16 I really appreciate it.
01:01:17 Now get out there and write some Python code.
01:01:19 I really appreciate it.