React Podcast

113: Rick Casey on Building DIM (Destiny Item Manager)

Episode Summary

Rick Casey shares what he's learned building, managing, funding an open source project over 8 million users. The app is Destiny Item Manager — a companion to Bungie's wildly popular looter-shooter Destiny. If you play Destiny, you've surely used this or scene it on stream. But even if you're not a gamer you'll learn a lot about what it takes to manage and succeed with open source at this scale.

Episode Notes

News!

We have a YouTube channel for React Podcast 🥳
Watch the livestream of this chat with Rick and Subscribe for future chats!

Featuring

Rick Casey — Twitter, GitHub, Website
chantastic — Twitter, GitHub, Website

Links

Sponsors

AWS Amplify

AWS Amplify is the fastest, easiest way to develop web and mobile apps that scale.
Get started building a React app today, check out the tutorial on AWS Amplify today, visit awsamplify.info/react.

Infinite Red

In over your head with a React or React Native app?
Infinite Red can help.
They are React Native core contributors who've been designing, building and shipping apps for over 10 years.
Learn more at reactpodcast.infinite.red.

Get involved

Black Lives Matter

Please join us in donating to the Equal Justice Initiative

Episode Transcription

[0:00] [intro]

Michael Chan: [3:09] Rick Casey, welcome to React podcast.

Rick Casey: [3:12] Thank you. Glad to be here.

Michael: [3:15] I am super-excited to have you on. Honestly, my son doesn't give a crap about React podcast. He's 10 and he has no idea what the show is about or why anyone should ever care about a programming language.

[3:30] I told him yesterday. I was like, "Dude, you're not going to believe who I am I'm talking with. I'm talking with the guy who made DIM." He was like, "What? I going to have to listen. That's so awesome."

Rick: [3:41] Cool.

Michael: [3:42] Totally this will be a fun experience for me. For our audience who's more accustomed to strictly programming or technology. I was hoping that you could give us a high-level overview of what DIM is. What value that it provides to the Destiny game playing community.

Rick: [4:07] DIM is a Web app that interfaces with an API provided by BUNGiE, who makes a video game called Destiny. Destiny is a shooter. You explore the world taking on bosses to collect loot. You want to quit that loot.

[4:28] You want to move that between characters. You also want to understand how good that loot you earned is. DIM fills that space by allowing you to create loadouts, which are collections of loot for specific activities, to understand the quality of it.

[4:49] Actually, you can leave notes about it, to share with other people in the community. To let them know whether this is very desirable, this particular role is desirable.

[4:59] To sum it all up, we try to make the player more productive with their time playing Destiny. We all come in, end of our work days, kids are put to bed. I got like an hour, maybe two to play video games.

[5:15] I don't want to spend time picking out what to wear or finding a gun that's another character and changing characters. All that would take about 15 minutes. We could do it in 30 seconds by drag and drop on a computer or just on a on a phone.

[5:30] We're going to get you in the game playing. We're going to keep you in the game until it's time to go to bed. That's what it is. That's what [inaudible] player productivity device.

Michael: [5:39] I love that. It's so funny because I'd never really played video games a lot. Growing up, my brother would destroy me on all video games. I gave up. I was like, "Video games are not my thing. Obviously."

[5:56] When this quarantine hit, I think like a lot of people. I was like, "You know what? I need some kind of level of interaction with somebody." I can't go out and actually spend some time with people. I'm like, "What can we do?" Destiny felt like a natural fit because it's online, it's collaborative. You can go and have that experience, where you're just battling a boss with your friends and whatnot.

[6:22] Immediately, you feel that need of having to manage gear. Once you have more than nine pieces of anything, it's like, "Now, it's a huge hassle to do anything." I just [inaudible] on stream. I'd watch videos of people and it just seems everybody was using DIM to manage their gear.

[6:43] I'm curious. Tell me about the inspiration and the original phase of Destiny Item Manager. How you had the audacity to start building this thing to help people in their in-game experience?

Rick: [6:57] I play with it, a clan of players. We have about 100 friends who all meet up to play games and we've been playing together for about 15 years. Long 10-year friendship. We'd say, "OK, hey, 9 o'clock. Let's get together. We need six of us to do a particular raid. [inaudible] glass."

[7:20] This is early in Destiny's career. What inevitably would happen is people would show up 9:05 and say, "Oh, I got to find some stuff." They would have to...

Michael: [7:29] [laughs]

Rick: [7:30] put all their loot in the character in the vault, change characters., grab all that stuff. That workflow would take 10, 15 minutes for just one character. We would not get started until 9:15, 9:20.

Michael: [7:45] [laughs]

Rick: [7:46] Raids are serious business. These are long events that take skill and it could be hours. We don't have that much time. We felt that pain, that start-up cost of getting a large group together for a difficult activity.

[8:04] About March, BUNGiE released an API. BUNGiE has done some really great things to enable third-party developers to create experiences for players. They've taken it through every generation of every game and made it better and better. Destiny is the best now that we've ever had it. They released the first version of their API.

[8:38] A developer named [inaudible] Kyle, he created the very first version of Destiny Item Manager and released it open-source, without license on GitHub. The day I saw it on Reddit, like the day he released it, I reached out to him and said, "Hey, I want to work with you on this very much so. This is something that I've been looking forward to. You've cracked the nut and figured it out. Let's make something beautiful."

[9:08] He was like, "Yeah. Let's do it." That started the process. That's where we got between Kyle's inception, my interest in creating something that would encourage people to contribute. He did a PLC that was just [inaudible] . He had four nights to make this and get it out and be the first.

[9:34] This was his own personal raid and he did it. I jumped in and said, "Let me help make this something so that we could [inaudible] development. Get people inside working with us. Start building this contribution model with GitHub." That's five years ago.

Michael: [9:54] Five years ago. This was in the Destiny 1 time?

Rick: [9:57] Yeah.

Michael: [9:59] Wild. The game has actually changed quite a bit since then. Is there still support in DIM for Destiny 1 or is it all Destiny 2 at this point?

Rick: [10:08] There is. In fact, DIM supports Destiny 1 and Destiny 2.

Michael: [10:13] Wow.

Rick: [10:15] If you have your Destiny 1 characters added to your bungie.net profile, we see that, and we bring it up in the UI. It's one of your options in the lower left-hand corner of the menu.

Michael: [10:27] That's awesome. That's awesome.

Rick: [10:28] Every now and then, I open it up, and look back at my old gear, and think about all the fun I had collecting it.

Michael: [10:34] Oh, for sure.

Rick: [10:34] Nostalgia is beautiful.

[10:35] [laughter]

Michael: [10:38] It is. I feel like that's probably a really good way to experience that as opposed to trying to find an old Xbox or whatever and load up the game, like seeing that it's still there tucked away. That's all I need. [laughs]

Rick: [10:50] The memories are better than ever going back into the game I find.

Michael: [10:59] Yeah.

Rick: [10:59] I can remember a couple of Crucible games that were just amazing and a couple of raids that were amazing. Yeah, the endless hours of patrolling with friends in the early game, just collecting mats and chatting about life, right? The game was just sitting on a barstool for me.

Michael: [11:15] [laughs] I want to talk about all of the community stuff. Before that, I'd like to dive into the evolution of the actual product itself. You have Destiny Item Manager.

[11:30] Did you suspect that it would blow up to the degree that it has, or did you think it was just like a niche thing that you'd be able to enjoy with your friends and a handful of people that you know well, or did you always suspect that this is something that the community at large needed?

Rick: [11:50] I think people needed it. Being first helps. We didn't have vision towards, like it would be significant as it is. We would trend as well as Destiny would trend. Destiny has done very well. That helps us grow. We depend on streamers and word of mouth to get our name out.

[12:18] BUNGiE does put us in there...This week at BUNGiE. They have a newsletter that goes out every Thursday. Every now and then, they'll have like a community focus or some special event. We could be highlighted there. We're also...This is really new, very recently.

[12:36] If you sign up for a profile on bungie.net, they have a third-party developer section at the mid-page, after you get down over the fold. It talks about DIM and other third-party apps to let new players know that they can have this additional experience beyond the game.

[13:00] We've been getting some support. It's been interesting. Every now and then, I open up analytics. I see the history of the app. It starts off real tiny. You can see the sign curve of growth. Ever since last year, business is good. For some reason, everybody knows about us now.

[13:25] Everybody likes using our app. It makes us really excited. We're very happy to be able to provide something that's of value. We carry that with importance. We try to make sure that we stay up, no interruptions, consistent service. It's a free app. We do it for fun. This is all hobby.

Michael: [13:47] Yeah. [laughs]

Rick: [13:47] We don't try to work, but we do give it the respect it deserves because we know people depend on it.

Michael: [13:54] I do want to talk about the...You'd mentioned that community is super important to you, and that was your original vision for jumping into the project. It's like, how can we start to develop a community around this, get people to contribute, and even pay them a little bit for their efforts?

[14:15] Tell me about what that's looked like over the last five years of developing Destiny Item Manager.

Rick: [14:21] In the very beginning, it was a PayPal account. People would contribute to that account. It was just a little button on page. There was two developers, myself and Kyle. We carried that for a long time. There'd be occasional contributions in the beginning, but for the first year and a half, it was just myself and Kyle working together.

[14:46] I was doing, by far by large, most of the maintenance and upkeep. Every time there was an update, I'd have to make some changes to keep track with BUNGiE. We don't get any foresight in anything.

Michael: [14:55] Sure. [laughs]

Rick: [14:57] We experienced the game just like anybody else. We had to react quickly to make sure that we were back up within a few hours after the update. It was a pretty manual experience. There were some technology barriers that prevented us from doing a lot of automation.

[15:14] I kept that up for about...I want to say two years in total. Then I started to feel a significant amount of burnout, pretty significant between playing the game, being a dad, doing well at work, and then trying to run DIM. Yeah, I was very fatigued.

Michael: [15:36] You've created a new job for yourself, right?

Rick: [15:38] I did. I did.

Michael: [15:40] You only had a limited amount of game time as a dad and worker. Now you got to divide that between actually making DIM for everyone. [laughs]

Rick: [15:48] That's right. No, it was significant. Another developer joined up around that time. His name is Ben. He took the mantle as the lead developer and carried forward our Angular-based code at the time. We developed an AngularJS as back in 2015, and over the next year, understood what was being done, developed an environment.

[16:20] Then we began to transition from AngularJS to React, in part because we needed to modernize. We wanted to tap into a lot of new features. You work on a framework that would bring folks to the platform to want to help code. React was perfect for that. It's been very successful for us in terms of attracting talent.

[16:51] Now that I'm not writing as much code, I'm spending more time looking at Reddit, looking at other environments, finding people who are making stuff. I invite them to our Slack where we build community of app developers. That's been very great for us, sharing information, being cordial to each other, developing this cooperative relationship that's also very competitive.

Michael: [17:19] [laughs] Sure.

Rick: [17:20] We love building the great thing. We help each other to build those great things. It's great to see that the fraternity of developers, the camaraderie present. That's been really good.

[17:36] We've ended up now with three maintainers, Kyle, myself and Ben. We have probably five consistent contributors, a team of eight. Then we have about 12 to 15 translators who contribute to the platform to make sure that when they interact with them, they interact with their native language. That way, we always feel like we're home for them. It's not...

Michael: [18:05] How many languages does DIM exist in now?

Rick: [18:08] I want to say 13. I could be wrong-ish.

Michael: [18:10] Oh, wow. Amazing.

Rick: [18:11] We match whatever Destiny offers. Whatever Destiny is localized in, we match that localization. We take all of the contributions received from the community. We migrated from PayPal to Open Collective.

[18:26] Open Collective is an open-source-focused payment platform where people can contribute to those programs. It's great for us because it's super-transparent. You see where all the contributions come from and where they all go. Anybody can create an expense against it. It has to be approved by maintainer.

[18:47] There's no questions about where things are and where they're going. We have invoices. What's really nice about Open Collective is they issue 1099s, they handle tax obligations for us. It's not double tax, because I'm not receiving it and then paying it out.

[19:02] There's significant benefits that you have to think about in terms of tax obligations, right. Most people don't consider that when they receive their PayPal.

Michael: [19:11] Yeah. [laughs]

Rick: [19:11] We care about that stuff. When we want to pay out to the developers and translators, we keep that in mind, and let them know that these are some of the obligations you have. Minimum international changes the game a little bit.

[19:30] It's been pretty good. We've enjoyed the platform Open Collective. It's a little bit tough for people, most people are used to Patreon, or PayPal, or something like that. When they want to support DIM, they don't see the name brands that they're used to.

Michael: [19:47] Interesting.

Rick: [19:47] I think that's like a friction in terms of wanting to support us, like they don't understand that Open Collective is our payment portal.

Michael: [19:57] Right? They're used to seeing PayPal, and that triggering something like, "They're looking for funds, and so I can jump in there." If you're not familiar with the brand it's like, "OK, just another badge on this website."

Rick: [20:10] We're not heavy-handed with it at all. I mean, we're not out there with our tin cup, shaking it saying, "Hey." We don't put anything behind paywalls like DIM is open.

[20:20] Our beta site is open where we do all of our advanced work that's not in the app yet. Nothing is behind paywalls. We want everyone to have a great experience.

[20:32] Our server side API that we provide is relatively inexpensive. It can be covered by our current donation amounts and still has enough left over for everyone to receive a contribution. We're not replacing day jobs. The way I like to put it is DIM is going to buy everybody a really nice meal once in a while.

[20:52] [crosstalk]

Rick: [20:52] what it does. Good bottle of wine, good meal, take your significant other out on DIM.

Michael: [21:00] Well, there are so many ways that we could go through this because there's the React side of things, your transition to React and how that's been attractive to people, also just how funds work, and the actual building of the product, I'd love to as much as we can cover all of those.

[21:24] One thing that I was really excited to see is that as you mentioned this is a very modern codebase, so it's using React. I believe it's using TypeScript. It's using that API. It's demonstrating how you can do authorization, authentication, localization, and you're deployed to AWS, right?

Rick: [21:50] No, we use a droplet. We don't [inaudible] AWS-based.

Michael: [21:56] It's interesting, and I've been putting a lot of people to this project because there are not a lot of projects that exist like this, projects that are used by millions of people and are open source. Usually you get to a point where the really interesting React projects are closed source. This is fun because you go through this.

[22:21] A lot of React developers have a hard time knowing how to take that next step going from the frontend to a full-blown application that connects to a backend, does the authentication, and is deployed to a robust server somewhere. You've made that and having it open source is such a, I think, gift to the React community.

[22:46] What are some of the most exciting parts of the actual codebase for you now that it's transitioned into React, TypeScript, and all that?

Rick: [22:52] To be frank, ever since Ben came on, I've largely divorced myself from the codebase. The React framework is his, and he's developed it along with other developers like 48klocs, Delphi NAV. They've worked on that codebase.

[23:12] The things that I'm most interested in that they've done though is some of the UI workaround are responsive features, so that the desktop app and the mobile app have unique capabilities.

[23:25] It's not just responsive features. It's using React with media query hooks to understand what components can render what resolutions using share sheets or just sheets in general. We make our own action sheets. We are pouring a lot of our own effort currently into making them a first-class experience on mobile and not just being the desktop reduced to mobile.

Michael: [23:51] Interesting.

Rick: [23:52] Still the same codebase but definitely improving that experience.

Michael: [23:58] Yeah. For right now, you have a fantastic desktop experience. I believe that you're using react-beautiful-dnd to handle like drag and drop, clipping stuff and that actually works really work on mobile. That's how I consume it either on the my iPad or on my phone.

[24:12] It's been amazing. The primary distribution for that is as a PWA. How has that experience been? You mentioned wanting to go native. Have there been hold ups in transferring the PWA to a native in the app store experience?

Rick: [24:33] We have toiled in the past many times about developing a mobile app because we wanted...The fun part for mobile experience is access to the app stores. Folks have been trained if you're on a phone, it gets offered from the app store.

Michael: [24:48] Yeah. [laughs]

Rick: [24:49] The introducing has not been in those. In the past year, Google play store and Microsoft store have made it pretty easy to add PWAs to their app stores. They build wrappers around the Web interface, and then we host them.

[25:10] APKs are being hosted inside the play store Microsoft for their own content of format. They act just like the Web browser where they take the updates as we push them out. The service workers are watching. They take the updates, do the trigger.

Michael: [25:22] Oh, nice.

Rick: [25:23] We don't actually have to update the stores, unless we do something to the APK, the apps just upgrade. What that has done for us though is, we're now a part of that search. You type in DIM, [inaudible] add a manager in Google Play. Hey, we're there now.

[25:43] Most people on the account is not on their PCs, so we really needed that footprint to make them more accessible to people. I will say by far your game is great for moving items on mobile. Our significant features in terms of our load up optimizer, or comparing the items you have, those do best on tablets or desktop or you've much more screen to get into the stats or details to your hand with your phone client.

[26:14] It's really about giving me the thing I need now, or making room on my character to get the thing that's in the game. We're trying to have stories that are focused on where you are on the couch with what you have your phone versus stories like being at your desk, or if you're at work [laughs] and you happen to be...

[26:35] [laughter]

Rick: [26:35] looking at them in your break. You just want to process your stuff and kind of get ready for your playtime when you get home so that way your characters are pinned to go. That's what we try to do. Yeah, we don't build native, we want one codebase. We don't have time to manage multiple codebases.

[26:54] Our PWA story have been really great for us. I wish iOS would get onboard with PWAs and make it first-class citizen in their app store but you know...

Michael: [27:08] Its interesting because it showcases the value of what a team can do and how they can distribute to different places when we actually honor PWA as a first-class application. Right? In stores, you're able to just wrap it and have that be searchable in these closed box-like retailers if...

Rick: [27:30] Like walled garden.

Michael: [27:31] Yeah, walled gardens but it's also unlike an app that lives just in the store is accessible anywhere. That's my favorite thing about DIM. I went to destinyitemmanager.com and I logged in with BUNGiE and I was in. On all my devices it was just super easy. I didn't have to download an app. I love PWAs. They're the best.

Rick: [27:55] That's some significant requirement for sensors on the device or infrastructure like push notifications. I don't need it. Giveaways are great. There are some benefits definitely to native experiences, in terms of maybe clarity or specific capabilities provided by Swift or whatnot, I don't know, man. Anything that I've been building lately, [inaudible] a great answer for it.

Michael: [28:25] I love that you can, at least in the Google Play Store, you're able to get those...Collect those search results. Be able to get people that same experience, the same product in their hands. I find it interesting, too, that with these experiences you are able to update the app without updating it in the store.

[28:51] I feel is really critical for something like Destiny Item Manager. You might be getting new features from the API on, at the weekly reset with each new season, etc. It might be prohibitive to request a new review, whatever that process looks like.

Rick: [29:12] There will be a significant drag in getting releases out for us, so we use CI/CD from travis.org. Another thing that you can learn and get your hands around when you check out our open source our website, you could see how we handle CI/CD and take...We have an action that monitors the manifest, which is the database that BUNGiE provides.

[29:38] Whenever the manifest updates, we know that there are new updates out there so that we can trigger a build that has a whole series of events that occur because we have libraries that we publish to share TypeScript definitions with other third-party products, some of our competitors.

[29:56] We make some of our libraries accessible to them because we fill in some of the gaps in the data that are not covered by what's provided by BUNGiE. That's some of the contributions that we make, that we provide through npm. We use Travis CI/CD to trigger those builds.

[30:17] Then your next time you load the native app container, it updates and you get a little indicator, in the top left-hand corner, it says, "Time to update DIM. Something new waiting for you." We use a ServiceWorker. From our perspective, we cache locally with a ServiceWorker, so that when you can start the app, it's very quick and you're going to have the last experience ready to go immediately.

[30:43] If our site's ever down, ServiceWorker are still going to run because it's all cache locally and you're just communicating with BUNGiE API. You're not going through our servers, your data is private. We don't care about that. In fact, that's not uncommon to see people fork our site or pull our code and run that site locally on their machines.

[31:07] I've mentioned we see examples of DIM running in China off of different sites. People are hosting them for themselves or for their client. That's great, doesn't bother us. We love it, we make it available. The official one is on your URL, but you're all more than welcome to take our code and download it. Run the npm or yarn and start it up. You do running them locally.

Michael: [31:39] So cool. Now you mentioned I think two things that really caught my interest is one, thinking about this from a product standpoint, thinking about the user stories and where they're coming from and whatnot. One of the features that stands out to me is the thumbs up on gear. Someone who's brand new to Destiny, it can be really overwhelming. I'm talking about myself.

[32:09] It's super overwhelming to have all this gear with all these perks and stats that you have no idea what they mean, having that little thumbs up is a great way to start. I'm curious that's not part of the Destiny API, that's a value add of Destiny Item Manager. I'm curious, where do features like that live, things that aren't part of the API? What does that look like, technologically for you all?

Rick: [32:37] Go back just a little bit. I was looking on Reddit one day, and I saw an app called Destiny Percolator, I think it was called. It was built by developers 48klocs, 48,000 lines of code. I was like, "That's a program. I'm going to talk you that guy." I reached out and I said, "Hey, I really like the feature you build. You're telling people what's great. I think that's really useful in the community.

"[33:03] Why don't you join us and build that feature in the DIM and I would give you an instant community." That's the value that we want to provide to programmers. Folks that are out there building very useful, unique experiences, we would love to have them in DIM because we have users. We have a million unique users a month.

[33:27] Our session count is 20 million, I mean instant community. Percolator, I was like, "This is great. We need to bring it in." We have 48, ended joining the team, now he's a contributor. We work with notables in the community who do weapon reviews, Panda Packs, Merkley's, for example.

[33:51] They use DIM and other tools in the community to build this wish list, which has hash for each weapon and then hashes for each of the talent grid items such as the perks. They build this signature for the best roles. Some of those are thumbs up, thumbs down. We don't do the thumbs down thing anymore, we used to. Now it's just thumbs up if it's good. If it's a perfect role, I think it gets a star?

Michael: [34:24] Oh really? I've not seen any stars.

Rick: [34:26] Got to play more Destiny.

Michael: [34:28] We're just going to keep grinding.

Rick: [34:28] We give things, a perfect roll a star. Generally, we keep all the thumbs up stuff. There are differences between PVE and PVP weapons sometimes, but all that stored in the notes. This was just a passion project by somebody's community, we ask them to join us. They brought their code. They integrated it. This is just one version of that experience.

[34:52] We've been doing this in some way or form since Destiny 1. The app used to look like a Christmas tree because we had red for bad. Red or red-yellow, orange, green, and blue. Blue was like diamond. Anyway, we've done some variations of this to give a sense of quality. We've now just boiled it down to thumbs up or stars.

Michael: [35:17] I know this is a passion project. Do you feel like there's this great divide of things that you would love to be able to introduce into DIM, but just a severe lack of time?

Rick: [35:29] Yeah. We're getting close. We've done a lot of them, technical stuff. Before we set this manual effort of getting the manifest, downloading all the images, and packaging it up, I was producing a Chrome extension in the beginning. This is how we were distributing the app, way, way back when it used to be a Chrome-only experience.

[35:49] We have a SQLite client running in the browser that downloads SQLite. It was modified, but it was a SQLite client, download the SQLite databases, unpacking it in memory, scraping it out, and putting it inside isolated storage. We can use that on. Whenever you restart the app, we would do it again.

[36:09] We found ways of automating the pinpoints of making the app work. Since then, BUNGiE is now providing JSON files, which has made everything so much better. We tried to do voice activation a long time ago. "Hey, DIM, cook my whisper."

Michael: [36:27] Oh, wow. [laughs]

Rick: [36:29] We had an Alexa skill for a while working, but I mean, this is a lot of friction in terms of voice and some of these exotic names that are applied to weapons. That just didn't pan out. I mean, it would have been so good because BUNGiE made this little ghost Alexa speaker.

[36:48] It was just bright, but its people power bandwidth. I had to beg for volunteers. That's a pretty tough skill set to get for free. But things in the future that I'm looking forward too, I can't say.

Michael: [37:10] I'm curious you're working day in and day out on this BUNGiE API. You've found ways to extend it to add functionality that is important to the people who are consuming it. Are there things that you wish existed in the BUNGiE API that you could take advantage of that are just like you can't do from the outside?

Rick: [37:32] I want to be able to delete items. That's not something that people want really because that's dangerous territory because then you're responsible for destruction of something. Right now, people will tell us from time to time, ''You delete my favorite thing.'' ''You deleted this thing I got.''

[37:52] Usually what happens is there's a caching miss on the BUNGiE server and you're not seeing that data, it happens. Sometimes if you move a piece of gear, the cache is busted from the game server. Then it's available on the API, those things happen or it's in the vault or on a different character. You just have to go and search for it and you'll find it. Those things happen.

[38:17] Right now, what happens is a lot of people move stuff to their current character. Then they sign in and then mass delete to get rid of all those blues, get rid of all the stuff that you don't want. I would like the ability to delete. It's something we could take responsibly, but that's a big step.

Michael: [38:39] It's a lot of responsibility... [laughs]

Rick: [38:41] to have that lifecycle on your hands. That would be a great place to get to because then you can really curate your platform. I could put it in a promise and give you a five second undo, which is more than what the game does.

Michael: [39:01] [laughs]

Rick: [39:01] [inaudible] .

Michael: [39:01] You got three seconds to change your mind after holding that button down.

Rick: [39:04] At one point, a long time ago, there used to be a bug that if you were pressing the delete operation and it started the three second and then moved something, whatever was under the radical was deleted.

Michael: [39:17] [laughs]

Rick: [39:20] If you'd move something while you're in the process of deleting, you would delete the thing that slid under it. That was another source of, "Hey, DIM deleted my thing." No, you were doing an operation while you were doing a deletion.

Michael: [39:35] [laughs]

Rick: [39:34] You shouldn't do that.

Michael: [39:36] One thing at a time.

Rick: [39:37] We tell people all the time, "One thing at a time. If you're doing a loadout, you're doing a mass transfer, don't be trying to delete stuff in the game. That's trouble."

Michael: [39:46] [laughs] I want to hear a little bit more about the way that you are helping people contribute by collecting money through Open Collective and giving them an opportunity to, basically, add features and make a little bit of money on doing that.

[40:07] Also, numbers, I know that you've shared them with me. They're open on Open Collective. What it looks like to have a project that is this successful. What the monetary status of things are.

[40:23] A lot of people think that one day, they might be able to make it with open source and never have to work again. That's not the case. All of you maintainers and contributors have jobs. Tell me a little bit about that part of the story.

Rick: [40:43] We have grown in terms of our contributions I receive. We, currently, are earning around $17,000 a year, which sounds nice for a hobby project. Not many hobby projects make money.

[40:58] [laughter]

Rick: [40:59] It is pennies on the dollar in terms of developer time and what it costs to have a programmer regardless of the market you're in the United States. I'm in Birmingham, Alabama not an expensive market...

Michael: [41:18] [laughs]

Rick: [41:18] and programmers are still expensive. We're not talking about some local value programmers. It still costs a good deal of money. Our current yearly revenue is about one, maybe two months, of a full-time developer, not that much.

Michael: [41:37] The primary motivator for a lot of people contributing is just the interest in the project, interest in what you're doing, wanting to be part of this intersection of both gaming and web developing communities.

Rick: [41:51] Yeah. They want to make a difference in the lives of millions of players. This is one of those few places you can do that. I mean, just for myself, in 2015 I was 36 and thinking, I really want to do something one day that's big...

[42:15] [laughter]

Rick: [42:15] that makes a difference. This damn thing happened and I'm like, "All right, I'm going to go all in." I'm like working until 2:00 AM trying to maintain this thing and grow it. We're making maybe 3,000 a year at that point. It was just like, "Hey, nice dinner money. Let's go out eat out this month."

[42:36] That was between me and Neutral, and now we have more people contributing. One year, we took all the money and we flew everybody to Seattle for a trip. I flew them and their spouses. We stayed at a hotel. We went for a day hike. We got to tour BUNGiE.

Michael: [42:55] Oh, wow. Awesome.

Rick: [42:56] We created a great experience, which is invaluable in itself. We all got to meet, finally, after working together for so long. Had that cool moment where it's like, "I know everything about you but I never shook your hand."

Michael: [43:11] [laughs] Yeah.

Rick: [43:12] That was a really fun moment. If you ever read Red Player 1, that has a moment in the book like that. This last cycle because of the pandemic, we couldn't go anywhere, so, everyone just essentially got payouts. Everybody who is a contributor or up, we paid out a grand. All of our translators got 250.

Michael: [43:31] It's awesome.

Rick: [43:32] Which is great, nothing to do in the pandemic, buy stuff on Amazon and hang out the house. Here take this.

[43:41] [crosstalk]

[43:41] [laughter]

Michael: [43:41] Totally. Take it.

Michael: [43:41] Go and have a good time and survive the pandemic. We did that. It's like just the one time let's liquidate the money. We have cash. We have a reserve for maintaining the servers. Once conventions start, we hold the reserve for sending someone to the cons to represent DIM. We make t-shirts and patches and some little stuff just things like this little pen here.

Michael: [44:12] [laughs]

Rick: [44:13] That's pretty cool. This is really neat. I like this a lot. I'm not marketing DIM. [inaudible] [laughs]

[44:17] [crosstalk]

Rick: [44:17] We're so proud of the thing that we did so we made this little patch like a little iron on.

Michael: [44:25] Oh, amazing.

Rick: [44:26] That's really cool. I'm a big aerospace geek. I grew up around the space shuttle as a kid and patches were always just seemed accrued together when you're accomplishing things.

Michael: [44:40] Totally.

Rick: [44:41] I wanted to make something that respected the crew that was building DIM, and like patches were the thing that came to mind. Like, "Wouldn't this be really neat?" Just trying to figure out ways of thanking people that aren't just monetary, is always like percolating.

[44:59] How can I make somebody proud and to share that thanks I have for them for helping make this game what it's become? I may do a lot of the talking but the contributions of many have made it what it's become today.

Michael: [45:22] Yeah. You can see how that value extends because even when we fired up this chat, it's like a ton of people just came in and be like, "Oh my gosh, dude, you're amazing. I love DIM. DIM is amazing." I love that community atmosphere.

[45:40] That's something that I've always struggled with, trying to figure out, but it's very clear that this was a vision of yours from the very beginning, to try to find like-minded people, connect them to users, and just make a space where a lot of people with these two common interests were able to enjoy a very vibrant community.

Rick: [46:01] Yeah, it's a vehicle for you to make your own action. You want to shine? Come on, do this thing. Let's shine. You know what I mean? Let's be beautiful. Let's make something amazing. I love to promote folks who are doing the work. There are tremendous plus ones to this. We make something. We share it with other developers. We network with each other.

[46:29] There's folks that are solo projects, solo developers on these projects, the developer behind Braytech, the lowlidev maps. I'm just giving some shout-outs to names here, the Redrix crew for their Crucible app, so many.

[46:52] [laughter]

Rick: [46:52] Anyways, there's many, many people that come to Vlad. He makes an app called Trials Report, which is huge. People love that because it's a competitive advantage to see who your team is that you're fighting against.

[47:06] One more, Guardian Theater. If you ever want to see something super cool with the API, check out Guardian Theater. He did a thing where he looked at your recent games and then looked at the players. BUNGiE has their Twitch API on the profile.

[47:27] He can link Twitch clips to your game and then show you where streamers have clipped. You can see him when someone's like, they get killed. They clip it to make sure you're not cheating.

[47:43] [laughter]

Rick: [47:44] It's so satisfying to see those moments where they're just like, "Oh." Then there's other...It's a really interesting service. That one, to me, is really high in terms of the innovation, is being able to marry all the streaming platforms with the clips, and the Xbox clips, and YouTube. He does that now with your Crucible experience.

[48:06] That's super cool. Like I said, we build things. We share with them and enable them. They read our source code. We're MIT. I don't care what you do with it. This is not something we're monetizing. Going way back to DIM, DIM is open source because we want to make cool things. We want to bring people together, to build cool things, but we also want to enable people who want to make their thing.

[48:35] We figured a lot of stuff out in the beginning. We figured out how to work with the API when there was no documentation. We figured out how to authenticate before BUNGiE gave us [inaudible] . We were scraping cookies and doing all the wrong things.

Michael: [48:48] [laughs] You're making it work. You're making it work, and you're helping people.

Rick: [48:54] Why is DIM requesting my browser history? [inaudible] the one thing, I promise.

[49:01] [laughter]

Michael: [49:03] No, I feel like you're at the forefront of gaming, and gaming ergonomics, and Web development, and streaming. You're in this space. This intersection, it's coming up right now. I always like to ask people, as we close out the episode, what you're excited about for the next short term, year to three years?

[49:31] There's so much happening in streaming, and gaming, and in code. Like you said, the Guardian Theater, where it's actually querying all of these different platforms and being able to connect that back to you. What are some of the things that you think are just going to shine over the next year to three years, spaces that we should be keeping an eye out for?

Rick: [49:58] Kind of looping back a little bit, talking about what you take away from working in open source project, I got recognized by the developers at Gearbox who are working on Borderlands because of the work I did on DIM.

[50:13] I got brought on to a project. They're building a Twitch extension that interface with the game to allow streamers to have these experiences with viewers and vice versa that had these tangible effects within the game world.

[50:30] I think that's a big place to be investing is bringing together the viewer experience and the streamer experience and creating these new ways of interaction. I see it as streamer versus viewer in some ways where you can create these moments of back and forth battling.

[50:53] The example in Borderlands was the Twitch extension that allowed people to empower a particular enemy that they were battling with, and level it up and strengthen it, and challenged the streamer to fight that experience.

[51:09] I thought that was great. I enjoyed working on that project. I want to see more of that deep integration in the game to just let people have new experiences that are outside of that, like, "What can I do when I'm not in front of the couch?" to change that. Can I earn loot while I'm not playing the game in some way? I used to build ARGs. Are you familiar?

Michael: [51:38] No.

Rick: [51:38] Augmented reality games, ARGs? These were narrative constructs that were very popular in the early mid-2000s where you could receive a phone call from a game. Either a voice would pick it up, or there'd be buttons to press.

[52:01] It all comes down to story by number, those old books. It was like those experiences. You can create these narrative experiences outside of the game that can bring you closer to the game. Those who are looking for something more, that want their entertainment property to bring them deeper into that world, I enjoyed making those.

[52:30] The Twitch extensions and similar platforms that are bringing the viewers and streamers closer to the game are delivering that. It's a lot cheaper than ARGs were. ARGs got really expensive, just the scale and infrastructure and trying to run all that stuff. It was pretty nuts.

Michael: [52:48] It kind of goes back to it seems like your whole value for creating the Destiny Item Manager community is participation.

[52:58] It seems like a lot of the future of gaming and streaming and whatnot, as far as you've described it, is a lot more participation, whether you're buffing the enemy or you're collecting some of the loot that gets found or discovered as like the streamers playing.

[53:16] There's going to be a lot more opportunities for us to not just watch or take part in chat while it's happening, but to actually be a part of the thing as it unfolds.

Rick: [53:27] When you're watching a streamer, it's like being on the, calling a radio back in the '80s and '90s and having to say your name...

Michael: [53:38] [laughs]

Rick: [53:38] they're really exciting moment to hear your name on the radio. You're just like, "You want that, you want a piece of that feeling." This is like one way to do it that is, easy on a single person, the streamer to manage. That the game the extension is facilitating some of these great moments for viewers. That dopamine smash...

Michael: [54:02] [laughs]

Rick: [54:03] of having that really great, that experience is what people are chasing. I'd like to be able to provide that.

Michael: [54:08] Totally. I think that's one of the reasons streaming has come up so much is that unlike videos, they are prerecorded. Just being able to see yourself on screen for a second is pretty rad.

Rick: [54:23] It is. There's even new experiences to think about. There's micro-currencies on Twitch called Bits. Through Bits, you can actually purchase things. You can create extensions that allow Bits transactions to occur. It's definitely a revenue stream that you could consider for streamers.

[54:45] The things that we build as developers can sustain a channel. It allows chat to do something that helps their favorite channels prosper. We can also terrorize the streamer by spotting mobs. I'd pay a dollar to do that.

Michael: [55:02] [laughs] It's like certain theme parks. I don't know if they do this anymore but I remember some of the water rides. If you were just watching people, you could go in and there is a machine where you could push a button and then throw a quarter in. It would just shoot water out of a volcano right as someone's going under it.

[55:23] There's something fun about being able to participate in that way, like you said "terrorize the person" who's in the experience.

Rick: [55:30] Trolling someone is fun if it's [inaudible] than fun, like dropping a grenade on them.

[55:37] [laughter]

Michael: [55:37] Just see how good they actually are. This has been super fun. Thank you so much for telling me about your experience. Just building DIM, building the community around that and your vision for community in both realms -- both gaming and software.

[55:56] It's the end of our time today. Is there anything that you want to pitch or let people know about so that they could get involved in either side of this community you're building?

Rick: [56:07] Definitely. We have a Discord. You can find us at destinyitemmanager. The link is in our Twitter bio. That's a great place to join us. We have a developer channel, support channel, a general channel, so we can all chat with other folks, learn how to use DIM to its greatest ability.

[56:26] We can do a lot for you. Some of it is pretty accessible. Others, takes a little skill, you have to build it up.

Michael: [56:33] [laughs]

Rick: [56:33] We crave new developers all the time...

Michael: [56:37] [laughs]

Rick: [56:37] definitely people that are interested in growing their skill set, wanting to network with other developers, which is, for me, the best part of all of this is networking. Not even the hardcore skills, just meeting people, learning from their experiences, you can't get that out of just watching YouTube videos about technology.

[56:59] You need to share the war stories. That's super important, and it's been the best thing that I've taken away from this entire experience is the networking. Come join us on Discord, have the conversation and then, eventually, get you into our GitHub, where you can see the source code. We got a bunch of first good issues labeled. Take a stab, see what you can do to help us out.

Michael: [57:23] [laughs]

Rick: [57:23] They are pretty simple, but if you have any questions, always feel free to ask. Start there, let's see where it goes.

Michael: [57:31] I can't recommend enough if you are into React, as I imagine most of the audience listening to this show is, and want to dive into an open-source product with huge ramifications, using React, TypeScript, all the good stuff. This is a good place to dive in and a really great, warm community to start your open source journey with.

[57:58] Awesome. We'll link all that stuff in the description. I'll probably have to get a picture from you for anyone who's listening to this via audio on those patches because they were super cool. I'd love to be able to include those in the show notes. Thanks so much for being here, Rick. I appreciate your time.

Rick: [1:00:47] Thank you for hosting. This is a great place. I appreciate it.

[1:00:55] [outro]