Monica Oyugi - DjangoCon US 2024 Perspectives
Published September 28, 2024
This video features Kudzayi Bamhare at DjangoCon US 2025 in Chicago, Illinois, USA.
This talk was presented at: https://2025.djangocon.us/talks/the-xs-and-os-of-open-source-with-shotgeek/
LINKS:
Follow Kudzayi Bamhare 👇
Website: https://www.kudzayibamhare.com/
Follow DjangoCon US 👇
https://fosstodon.org/@djangocon
https://x.com/djangocon
Follow DEFNA 👇
https://www.defna.org/
Video production by the presenter and DjangoCon US 2025 volunteers.
Kudzai Bamhare uses ShotGeek, a Django application for exploring NBA data, as a playbook for turning personal interests into open-source projects. He explains how passion and joy led him to the idea, how sharing an unfinished project generated feedback and contributors, and why open-source projects need clear setup, beginner-friendly issues, community support, governance, and funding. He also argues that relying on one founder is unsustainable and that maintaining joy—including taking breaks—is essential to avoiding burnout and building an inclusive project community.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: Alright, hello guys, my name is Kazai and welcome to my talk. The title of my presentation today is The X 's and O's of Open Source with ShotKeek Everyone in this room probably has something that they are passionate about. But not everyone is comfortable sharing their passions with other people, which is understandable because you know people can be weird. But what if I told you that there are people out there that also care about the things that you care about? In 2024, I transformed my passion project, ShotGeek, into an open source initiative and community. It's still an ongoing project, and I've learned so much along the way that so much so that I decided to create a basketball-style coach's playbook on building passion projects and going open source.
Speaker 1: So, for the next 20 minutes or so, I'm gonna walk you through this playbook, which is, like I said, about going open source and building passion projects through the lens of ShotGeek. So let's start from the beginning. You can't build a passion project without passion. Otherwise, it's just a project. And there's a very clear distinction between the two. A regular project just checks off a box, but a passion project is motivated by something internal and it carries your curiosity. If you're a coder, chances are someone has come up to you and said, hey, you should build a passion project. But no one really ever talks about how to go about doing this. I believe finding your passion takes a bit of introspection.
Speaker 1: You need to ask yourself the question: where does my joy lie? And I know this sounds cliche, but I've learned that a little bit of joy and fun can really sustain you throughout this journey So in 2023, I found myself having fun learning the Django web framework. Django began to feel like something that was going to be an essential part of my developer toolkit moving forward. So I decided I wanted to build a showcase project with Django. I didn't want my project to just be technically impressive, but I wanted it to be something that I could talk endlessly about. And even stand up in front of a room full of people and give a presentation on. So I went searching for my joy.
Speaker 1: Now, a good place to start searching for joy is actually your childhood. I don't remember how old I was. I know I was really young, and it's one of my earliest memories. But one fatal day in Harare, Zimbabwe. I walked into the living room and I found my older brother and his friends playing a video game. The game was called NBA Jam. I saw this and I was just like, my mind was blown. The colors, the sounds, the technology, everything was just so intriguing to me. And I believe many seeds were planted that day. One of them, some of them being my love for basketball and particularly the product of the NBA. Now going back to 2023, I'm a big fan of the NBA and I engage with the product in different ways.
Speaker 1: I watch games online and I participate in discussions with fans, other fans on social media and along with my friends as well. And I began to notice that it was very hard to have good NBA debates with other NBA fans. See, the thing with NBA fans is they're very passionate about their favorite players. And they tend to make up stats when you have a very heated debate. This is a true story I was having a debate with someone, who's the better player, LeBron James or Michael Jordan? Downs is LeBron James, by the way. No And this guy says to me, well, you know, Michael Jordan averaged 90 points per uh 40 points per game in the 90s, and LeBron has never done that. So Michael's a better player.
Speaker 1: Now I want to assure you guys, for anyone that doesn't know, Michael Jordan did not average 40 points per game in the 90s. That was a made-up stat. And it's a moment that made me realize that, hey, we needed we need better NBA debates. Also during this time, I was getting into open source for the first time. And I was searching for projects particularly that were built-in python and I was also curious if there were any built-in python and centered around the NBA. My search led me to NBA API. NBA API is a Python package that works as an API client for NBA. com. This package, which is installed using PIP, allows you access to every bit of data on the NBA that you can imagine.
Speaker 1: So if you're a fan of the NBA, it's pretty much a gold mine of information. So naturally I started experimenting with it, see what I could build with it. I also started like reading the documentation and I even found a Reddit forum that was discussing the API itself, which is really interesting. After getting comfortable with the API, I realized that I had all the ingredients I needed to build my passion project. I combined my love for Django and the NBA and began work on a web application that I could pull out whenever someone decided they were going to lie to me about Michael Jordan's NBA stats. The app was called Nosebeat Section and later became ShotGeek, but I'll get to that. It was a project that was born out of my joy, my passion, and my desire to create a useful tool.
Speaker 1: Uh that my friends and other people could use on the internet. Now I said this would be a coaches-style playbook, so everything I discussed was actually part of the first play. It's called Passion and Joy Passion gives you purpose and joy gives you endurance. Passion is what made me want better NBA debates, but the joy is what kept me tweaking my code and working on weekends until I had something I was really proud of. The intersection of what you care about deeply and what brings you joy is where your passion project should begin. Now if you follow this play well, you probably get to a point where you have a working prototype of your passion project. But to quote the late great Kobe Bryant, job's not done.
Speaker 1: We're just getting started. So we're gonna go straight into the second play, which is called full court press. So in basketball, a full court press means applying relentless pressure across the entire court. You're not waiting for the opponent to come to you, you're taking it to them. And this is what I did with Nose Beat Section. This is about taking your project out into the world. Now was nosebleed section finished? No, it wasn't. It wasn't even deployed yet. Truth is, it was a little janky and uh it lacked polish. But was I excited about it? Absolutely. The full code press for me looked like going to conferences. I went to conferences all over the world and I would do lightning talks.
Speaker 1: I also blogged and tweeted about it. And anyone that even hinted to being having an interest in basketball or code, I would pull my laptop on and say, hey, let me show you something really cool that I worked on. I learned during this time that people respond well to energy. They may not remember every technical detail about your project, but they'll remember how excited you were about it. So this full court press stage isn't about perfection, but it's about creating momentum and pushing hard and showing up with your work. Now opening up the project during this stage was also one of the best things that I could have done. Suddenly my ideas didn't just exist in a vacuum anymore. I was getting thoughtful feedback from people that cared about the project and cared about me, I guess.
Speaker 1: Some of the feedback was technical, some of it was about usability, and some of it was just like, hey, Kozai, this name, nosebleed section, it's a little confusing. What does that mean? And they were right. So I iterated, I refined some features, and I even changed the name. And Shard Geek was born. And then something even better started happening. People started asking me if they could contribute to the project. They asked me, hey, do you need help with documentation, with testing? Is this project open source? Now, earlier I mentioned that I was searching for a Python-based NBA open source project during my time looking for open source work. And that led me to NBA API.
Speaker 1: Sometimes you need to create the change that you want to see. I ended up building the exact type of open source project that I was looking for. And I thought, hey, maybe other people want a project like this as well. At their best, open source projects give people an opportunity to say, I helped build that project and I grew because of this project. And I started thinking about people from communities that sit outside the world of opportunity and access to collaborative workspaces. I relate to that and I said, you know what, I'm gonna make ShotGeek an open source project. Going open source also made a lot of sense for ShotGeek. I wanted to lighten the load for myself and because of the open source nature, end
Speaker 1: users could become contributors and eventually could become maintainers. And that was really exciting to me. But there's still some work before you can get to that point of getting people to contribute to your project. It brings us to our next play, which is called Look the Pot. As the name suggests, this is all about dressing up your open source project with all the right features that will help it blend in with all the other big boys and girls of open source. This is an important play because you're going to be really excited to get started and you're going to forget that there's fundamental building blocks that need to be laid. This is what I learned about looking the part. I learned that open source projects follow a similar pattern when it comes to their setup.
Speaker 1: You can think about this as like an open source checklist. So this is not an exhaustive list, but you need a GitHub organization page so that your project looks and feels like a real community effort. You need an open source license to protect your work and define how other people can use it, how the people can use it. A code of conduct sets the tone for how your community engages with one another. And you also need contributing guidelines so that people know how to actually get involved with your project and also to spotlight their efforts. These core blocks, like I said, are essential for your project, but you can also build upon them as your project grows and gets its own personality and you know becomes its own person.
Speaker 1: So after setting up what I believed were the core essentials of open source, ShellGeek was officially open for business. In my mind, because some people came up to me and asked me about contributing, this next phase phase is going to be a piece of cake. I was going to get a bunch of people just hopping onto the repository and just like working on issues, creating issues, merging PRs. It's going to be awesome. But the thing is, even people who want to help need help knowing where to start. So the next play is called give and go. Open source is the greatest team sport. And now that you are working with other team members, you need to help them become successful by giving them all the tools they need to move forward. For Give and
Speaker 1: Go, I decided to create a detailed beginner-friendly list of good first issues on the repository. If you are familiar with open source, you know exactly what I'm talking about. These tasks were specific, easy to solve, issues, sometimes literally telling people what lines of code to change so that they can make their first contributions. And I'm happy to say that this worked. We got our first contributions and then we got a few more. And people start sharing this on LinkedIn and telling other people about ShotGeek. And this made our community grow. It started growing so much that we said, hey, let's do some communicals, which we call shoot arounds. This was the time for people to just come on and talk about the project and also talk about a bunch of other things not related to ShotGeek.
Speaker 1: Everything felt amazing, and I was really excited about the future of ShotGeek. But then we hit a wall. Contributions slowed down and issues started getting stale. And worst of all, I got tired. I was tired because honestly, every decision still needed my input. I was still wearing all the hats. I was the tech lead, the community manager, product owner, even customer support. Plus, I started to deal with trying to survive and make money in my real life. And I was just getting worn out by the whole process. And to be honest, things stopped being fun. The open secret about open source is that
Speaker 1: for the most part, no one is getting paid to be here. Everyone's giving their time and their effort and their skills for free. So if your project depends on just you for it to be successful, then it's probably not going to be very sustainable. I realized that if ShotGeek is going to survive, it needed more than just contributors. I had to think about open source ecosystems and think about how I can continue doing this without burning out. So I did a funny thing. I thought about basketball offensive systems Okay, bear with me guys. I'm gonna go full shot geek right now. Okay. So in basketball, one of the most famous offensive systems is called the triangle offense.
Speaker 1: The triangle was perfected and popularized by a guy by the name of Phil Jackson, who used it to build championship teams with the local Chicago Bulls and the Los Angeles Lakers. The triangle involves three players sharing the basketball and playing in a triangle format. The magic of this system is that it isn't a rigid set of plays. It's a system that allows for movement, synergy, and adaptation by the three players within that formation. Every player knows their role and they trust each other to create opportunities for success. That's how I began to think about sustaining an open source project. You can't just rely on one person or one system. You need a structure and you want a system with freedom as well.
Speaker 1: Whoever knows how to move, how to contribute, and how to work together. So the next play is called the open source triangle. Three sides all equally important. If any one of these is missing or weak, the whole project begins to wobble. These are elements I'm still actively working on and building with ShotGeek, but I want to talk about them a little bit. The first one, which has been spoken today in some talks, is governance. It answers questions like who makes decisions and how do we resolve disagreements. Right now, Shark Geek is still a bit founder -driven. But I believe it would be good to work toward building a more decentralized model. Good governance creates a culture of inclusive road mapping, planning, as well as expectation setting.
Speaker 1: The next piece of the triangle is community. Just because something is open source doesn't guarantee that people are going to engage with it. For people to actually contribute, we need to remove friction. That means creating good documentation, videos, blog posts that explain concepts and that talk about the projects. spaces for interaction as well, and like a Slack channel, and visibility at conferences like JagoCon US. And then the last part of the triangle is the part of open source that often goes unspoken, which is funding. The code, the documentation, merging of pull requests, it all takes time. And time is a
Speaker 1: resource that not everyone can utilize and give away freely Show Geek, like many projects, currently runs on personal time and personal funds. I pay for a lot of things: web hosting, database. I even got some stickers that I brought to the conference that I had to pay for. Funding could ease a lot of pressure for small projects like ShotGeek. It also can unlock a lot of creativity. One of my long-term dreams is to create something called the ShotGeek Shot Creator Program. This would work kind of like Juggernaut Space if you've heard of it. But a mentorship and contribution program for mostly early career developers, technical writers, and designers Who come from
Speaker 1: backgrounds that also lack opportunities to internships and ways to get started in tech. Participants will join a small team to work on Shock Geek features. And get guidance from mentors, but most importantly, they would get a stipend for their work. This program isn't just about giving back, it's about creating opportunity and roadmaps for career growth. It also is about creating a more inclusive future for open source. If you or your organization feel like this is something you'd love to be a part of, please come see me. I'm around. I'd love to talk about it some more. So, so far I've taken you through five plays, but I do have one more that I want to talk about.
Speaker 1: So let's go back to where we first started. You can't build a passion project without passion. And passion starts with joy. The last play is called Let Joy Be the Point. I mentioned earlier that over time the open source grind took away some spark and joy from me. I have a friend who once ran his own open source project and he ended it after burning out. And he asked me, what do you think we can do when we get to that stage of burnout? I didn't have an answer for him at the time, but I think I've landed on something now. When you get burnt out, take breaks and then come back to the project. No, work on the project again No, don't work on the project.
Speaker 1: Work on finding your joy again. I have this picture on screen. This was taken from the first ever Shot Geek meetup. It's just two people sitting there, not 10, not 20, just two people. But look how happy you are. Look how happy I am. When I look at that picture, I think about the little kid that walked into the living room and saw his little brother, his older brother and his friends playing NBA jam. I'm beaming from ear to ear at this project that I've started and this community that I'm trying to build with it. So I implore everyone to find their joy. Take breaks and work on finding your joy again when you need it. Shark Geek will be at Sprints.
Speaker 1: So if you are interested in this project, please come through and shoot around with us. And uh yeah, thank you.
Speaker 2: Thanks very much, Gujan. And uh yeah, we have five minutes for questions. Any uh questions?
Speaker 3: So you mentioned uh looking for your joy and and following that. Was Shock Geek your first attempt at this or do you feel like there were some failures that you had to work through before you really landed in the right place?
Speaker 1: That's a great question. I've worked on and tried to start a lot of things. Shock Geek was not the first thing. I've yeah, I've had many projects that I've started and just haven't worked out. But the interesting thing about ShotGeek is I have a notebook from probably like 10 years ago that I wrote down the name Nosebeat section, which is the original name for ShotGeek. I just wrote the name down. I didn't know what it was gonna be, but I was like, I knew that something to do with the NBA. And I told myself, when the time comes, I'll know what to do with this name. So in a way, Shock Geek kind of existed in the back of my mind, but I had to go through those failures to get to the point where I knew how
Speaker 1: Shot Geek would look and how it can be more successful. So yeah, I think failing uh failing forward and learning is a great way to get to that point of finding the right thing. Yeah.
Speaker 4: Uh would you ever envision for Shock Geek having something even like a Like a uh an experience, like a fantasy league of sorts in in Shock Heag. Is that like a a vision or or something you task out? And is that something you would want to be the one steering the ship on or do you feel like that's an issue ticket? I've been scrolling through your repo. So
Speaker 1: I mean if so good question. If someone can like make an issue ticket for that, that would be amazing and like work on it. But yeah, I have thought about that. That's something I literally was thinking about probably a month ago You know, I've thought about ways for the project to become self-sustaining and generate its own income. And things like, you know, um esports or fantasy leagues and stuff is a great way to is a great segue into you know income generation especially because we already have a foundation of like stats and you can kind of merge it really well. But I just feel like at this stage, I'm not gonna do that by myself because it will burn me out. Because there's a lot of work that needs to be done.
Speaker 1: It's probably restructuring the entire project. on top of figuring out regulations on doing things like fantasy leagues and you know this gambling involved, yeah, how that would work. But yeah, I mean, yeah, I can see you've got your minds working. We can talk more. Thanks.
Speaker 2: Um I was gonna ask you, yeah, you touched a little bit on this, but could you talk more on um how yeah yeah, if and how Shot Geek has been an an avenue for uh people who may not be familiar with web development yet to but they may be passionate about the NBA as a way to kind of get into web development.
Speaker 1: Yeah, that's a great question. That's been probably the number one thing where someone says You know, um I'm not a Django developer, but I really like the NBA and this project has made me curious about, you know Getting to work on Django, you know. Um, I had at Djangcon Africa I did the same talk and had a lot of people, especially there, because there's a lot of students and people that are still very early into their careers. um coming up to me and asking, you know, how can they get started on Shot Geek? What can they do? Like it's really interesting to them and you know it motivates them to learn more about Django. So but it comes back to one of the things I mentioned about having documentation and being able to ease people into the project because it is
Speaker 1: relatively big project and this the documentation is not great So someone that's still learning would probably like cry and not at like, oh, they don't know where to start. So that's something I really want to do. Get people an easier experience into the project. Yeah.
Speaker 2: Awesome. Thanks very much. That is all of the time that we have for questions. Kudzai, I'm sure you'll be happy to take more questions in the in the hallway. Thank you very much for the talk. I really enjoyed it.
Start with introspection by asking where your joy lies, including looking back at childhood interests. A strong passion project combines something you care deeply about with something that gives you enough joy to keep working on it.
Discussed at 1:55Share it before it is perfect through conference talks, blog posts, social media, and personal demonstrations. People often remember your energy and excitement more than every technical detail, and their feedback can help you improve the project.
Discussed at 6:41The basic setup includes a GitHub organization, an open source license, a code of conduct, and contributing guidelines. These clarify how the project is used, how the community behaves, and how people can participate.
Discussed at 10:31Give potential contributors specific, beginner-friendly good-first issues, sometimes with clear directions about what code to change. This lowers the barrier to entry and helped ShotGeek receive its first contributions and grow its community.
Discussed at 12:03Do not make the project depend entirely on its founder. Build an open source triangle consisting of governance, community, and funding, so decisions are shared, contributors have support, and the work is not financed and managed by one person alone.
Discussed at 15:11Good documentation, videos, blog posts, interaction spaces such as Slack, and visibility at conferences help remove friction for contributors. Funding also matters because development, documentation, hosting, and project administration all require time and money.
Discussed at 16:03Take a break instead of immediately forcing yourself back into the project, then spend time finding your joy again. Returning to the original source of enthusiasm can restore the motivation that the open source grind took away.
Discussed at 18:22No. He had started many projects that did not work out, and he viewed those failures as part of learning what would make ShotGeek successful. The original ShotGeek name had existed in his notebook for about ten years before the project took shape.
Discussed at 20:26It is a possibility because ShotGeek already has a foundation of basketball statistics, and such features could potentially generate income. However, they would require major restructuring and attention to regulations, so he does not want to build them alone at this stage.
Discussed at 21:52Interest in the NBA can be an entry point into learning Django and web development, and beginners have already approached the project for that reason. They need clearer documentation and an easier onboarding experience because the existing project is relatively large.
Discussed at 23:15Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 14, 2026