CoRecursive: Coding Stories - Story: A Dark Room

Episode Date: July 3, 2023

 Have you ever been frustrated with your job? Maybe not burnt out, but getting close to there? You used to love what you did, and it felt so creative and empowering, but then it starts to feel a bit ...more cookie cutter. Have you ever been frustrated with your whole life? The daily grind has taken what you love and it just doesn't feel the same anymore. Some of the magic just has slowly faded away. You don't know when it started, but it did.  Today's guest is Amir Rajan. He's hard to describe.     Is he a developer? Yes. An artist who sold everything that he owned for indie game development. Yes. The subject of a New Yorker profile? Yes, all of that. And also, somebody who got frustrated with his life and left everything behind. Episode Page Support The Show Subscribe To The Podcast Join The Newsletter  

Transcript
Discussion (0)
Starting point is 00:00:00 Hi, this is Co-Recursive and I'm Adam Gordon-Bell. Each episode is the story of a piece of software being built. Have you ever been frustrated with your job? Maybe not burnt out, but getting close to there? Like you used to love what you did and it felt so creative and empowering, but then it starts to feel a bit more cookie cutter, grab a new ticket, build things. And some of the magic just has slowly faded away. You don't know when it started, but it did. And so maybe you pour energy into side projects. Maybe you work on open source or on some sort of indie development because it reignites that passion.
Starting point is 00:00:43 It gives you back that feeling of it being a wide open space where you can build what you want because somehow that's been lost in your work. Have you ever been frustrated with your job? The daily grind has taken what you love and it just doesn't feel the same anymore. The things that used to excite you have changed. Today's guest is Amir Rajan. He's hard to describe. Is he a developer? Yes. An artist who sold everything that he owned for indie game development? Yes.
Starting point is 00:01:18 Subject of a New Yorker profile? Yes. All of that. And also somebody who got frustrated with his job and left everything behind. But none of that is how Amir describes himself. One of my friends, he worked with me at a client and the client asked me the same thing. So what do you do? And my friend just looked over and said, he's a code hobo. I think that's probably the best description I've got. But I guess the official description would be, I'm a game developer and a runtime engineer. Amir's journey has three major chapters. First, his early days as a software consultant, hungry to prove himself to the world.
Starting point is 00:02:02 Then, his accidental pivot into game development, which took the world by storm. Seriously. And then finally, his quest to build the tools that empower other indie devs. It's a wild story about how passion can push you forward, but it starts back in the mid-2000s, when Amir worked as a.NET and C-sharp software consultant. One of my good first gigs was GameStop.
Starting point is 00:02:28 And it was like, I'm a gamer and I'm working. I go into the corporate office and, you know, there's cubicles and box charts of game stuff. And, you know, the price labels on the boxes, you know, that was me. Like, I contributed to the price labels on boxes that people scan. And you work on the inventory system and the barcode scanning, and it's all fun and new. So those were some of the good things. And then you work with other people that have that same passion,
Starting point is 00:02:55 and they kind of see it as like, hey, this guy wants to learn something, and let's point him to some different things so he can pick it up. And those were a lot of the good things there. But the GameStop project ended and Amir moved on to other clients. And not all of them were as great. And one of the developers, he was assigned this work to create some controller actions that required the existing user plus some products or some tax documents that are associated with that specific company.
Starting point is 00:03:26 And they would go into every single controller and put in that same retrieval code over and over and over again. And it's like, you've done it 15 times. I sent you an email saying, like, if you use this model binder, it'll take the HTTP request, you get the customer ID, and you have it hydrated right there before it even hits that function. And it was just a shrug. It was just like, well, whatever. I'll just copy and paste this code 15 times. And I'm just like, okay. And, you know, and I fix it, right? I just clean it up and put the commit in after the fact.
Starting point is 00:03:57 And it was just a lot of those recurring aspects of I know how to do this specific thing, so I'm going to continue doing it this way, as opposed to taking that extra step to find maybe that better solution. By this time, Amir was leading projects. He came on board as an external consultant, and he had high expectations. You must be great at your job, and you must excel. And if you're doing anything less than perfection, then you're a waste of time. And having that mindset put me in a position where I'm surrounded by people that don't care. I was like 24, 25, and they've had that experience. They've seen frameworks come and go, the new tech or the new hotness come and go and a facet was like well
Starting point is 00:04:46 why bother learning it because you know this works it's simple it's dumb you just copy and paste 15 times and it works and then i'll have to think about it right i feel like maybe just because of your game story like you want to grow as a character you want to like level up and they're and they're like not interested in that or. Yeah. They're like, you know, I, I'm, I'm good. You know, I found, I found this little village, I've set up a shop. I'm ha I'm happy, you know? And yeah, it's a little painful, but everyone else here is used to the same pain, you know? And it's okay. It's, it's not an issue, but, but yeah, I think I'm like that adventurer that's going through and has gone through this village and then wants to get to the next one. But everyone's here is just kind of like, you know, we're good. We're chilling.
Starting point is 00:05:35 So this pattern continues project by project. The different verticals and, you know, business environments was super interesting to understand. But I think the general facet of it was I was getting burned out on having this disconnect with respect to what I valued in a system versus the general populace that I was working around. Then this sense of indifference, it started to get to Amir himself. I was working really hard and tip on your shoulder, you're a really young kid who's got like the senior position. Everyone's like, you don't know anything. So it felt like I was painting drywall, right? It's like, I want to be painting murals and I'm getting paid very well to decorate
Starting point is 00:06:21 textured walls. Around this time, Ruby was gaining popularity, and it seemed like a different approach from the tedious work that Amir was getting tired of. So he started playing around with Ruby on his nights and weekends. And then he saw it. It's, to this day, the most beautiful piece of code I've ever seen. And it's called Clobe. So it's Q-L-O-B-E. It's an ASCi drawing of a globe and this ascii drawing of a globe is actually a valid ruby program so you can run globe.rb and the output will be
Starting point is 00:06:58 the same ascii globe but rotated if you it enough times, you end up back at the starting globe. So it's an ASCII drawing and a program and a quine. It's a program that produces itself. This code was by Mame, a Japanese programmer. He's now known in the West for his odd creations, but in 2010, the Western world was just getting to know him. One of the weirdest ones that he created was that he created a program that when you send it to a 3d printer prints a cylinder with the program written on it and if you if you scan
Starting point is 00:07:33 the actual like thing that was printed it gives you the the program that generated the 3d thing it was humbling to to see this because i understood what it was. I understood what it did, but I couldn't write it. You think you're really good at programming and on some spectrum you are, but then you see Clobe and you're like, I know what it does and I understand. It's just, you know, 100, 200 lines of code, but I can't write it. And even if I could write it, what kind of mind did it take to envision something like this? It was bittersweet, right? It was humbling to see that. I was happy to see this other world and the creative outlets in the Ruby community.
Starting point is 00:08:18 And that kind of further exacerbated the feelings that I was feeling. So Amir thought, maybe.NET just needs some of these tools and techniques from Ruby. Maybe it needs some of this creativity and spirit. They probably weren't ready for MAME and spinning art projects, but he could create things. He could pull ideas from the Ruby way and show the.NET world. So I kind of got very heavy into open source development. So RSpec is the testing framework that exists on Ruby. And me and one of my colleagues ended up creating NSpec, which was
Starting point is 00:08:54 a C-sharp implementation of RSpec. And we spent three years developing on that. Like it was, it was some, you know, heavy, heavy investment in there. So then you could do better testing in.NET, but there was more to do. I wanted to look at the C-sharp language runtime, which allows you to use like the dynamic keyword and kind of gives you like the ability to use dynamic constructs in a static type language and have kind of a hybrid or progressive type system. So I did some, you know, open source development around how can you use the dynamic keyword to make it easier and improve the quality of life of, you know, doing web development or C Sharp development. And, you know, same investment there.
Starting point is 00:09:37 It was quite a bit of time, the same three-year period. And there was more after that. Ruby was big on creating small, task-specific languages. You know, tiny DSLs for BDD or UI automation, clicking on buttons. Me and another friend got together and we built Canopy, which was a UI automation framework for doing UI automation using F-sharp and having this nice DSL. With all these tools Amir was adding to his palette, he could now build business applications more creatively. I'm no longer using use MS-Test within Azure Framework with ASP.NET MVC,
Starting point is 00:10:12 create your store products, you know, this like run-of-the-mill rubric kind of just paint by numbers kind of implementation. I started getting into more of the creative facets of, well, what is a C-sharp implementation of RSpec going to look like? Or what are some interesting ways that we can use the DLR? What are some interesting things we can do with F-sharp? You know, F-sharp's not widely used, but is there a place where I can live and have value inside of the.NET ecosystem that just works well? And I think a lot of those, the creative aspects of programming started to come back up with open source development. So that was three years of, you know, coding during the day as a consultant and then nights and weekends working on open source.
Starting point is 00:10:54 It seems like a lot, but for Amir, programming was more than just a skill, right? It was a creative outlet. It felt like drawing did when he was younger. At school, you'd probably look over and I'd be drawing like Spider-Man, something like that. I think like one of my first two drawings I can remember is Sonic the Hedgehog and then Chip from Beauty and the Beast. Is Chip the cup? The cup, yeah. It was the cup. I mean, it was simple, right? I was like, oh, I can draw this.
Starting point is 00:11:21 And I drew Chip, colored him in and everything. It was great. And then that kind of feedback loop comes into play where you get some validation. It was like, oh, you drew that? That's amazing. I think those things further encouraged that kind of exploration and discovery
Starting point is 00:11:39 in some of those artistic things. It's like there's a two-step process to creating. One is the creation itself, which can be its own reward. But the second step is important. It's when you get external feedback. If it's praise, then great. But if it's criticism, you can improve and you can get better. But back in 2013, Amir was three years into open source
Starting point is 00:12:01 and he was getting neither feedback. If I went to a you know, a client and say, hey, let's use NSpec. And they're like, well, why would you use that? We're going to use MS-Test. And it's like, but this thing is, you know, a lot better. It allows for nesting and, you know, some of these advances like, yeah, but MS-Test because Microsoft. And so after three years, Amir faced a decision. Was he having an impact? Were his efforts actually changing the.NET world? They failed.
Starting point is 00:12:30 Like, I don't know how else to say it. I mean, it's just tough. There'd be some really great library out there, and then there'd be this Microsoft implementation, which was worse, objectively worse. But that was worse, objectively worse. But that was it, and it would extinguish any momentum that an open-source library had. It's impossible to fight that 800-pound gorilla.
Starting point is 00:12:56 And it was frustrating. And then his project reached an end. I could roll one to another client. Do I really want to do that? I was just like, I don't think so. I think I need to just take a break. It was just, I was just tired. I was very, very, very tired.
Starting point is 00:13:16 I think, yeah, I just needed to, I just needed to just rest and disconnect from everything. And I think, yeah, I think that's kind of how it started. I was like, well, let me take a three-month sabbatical, and I'll come back afterwards. And then that ended up being, well, I'm definitely, well, turns out, you know, a lot of cool things happened. I'm not going to come back for a while. And now it's 10 years later.
Starting point is 00:13:38 During the sabbatical, Amir could structure his day however he wanted. I slept in, turned off my alarm clock, which was great. Let me get out of this schedule of pressed shirts and pressed pants and dry cleaning and waking up at 7 a.m. for a 30-mile commute and just stop all of that and reset from that standpoint. I wanted to start exercising, so I was like, okay, I'm going to do the gym thing, just get into a routine. So I had a Windows laptop, got rid of it, ended up getting a Mac. I had a Windows phone, got rid of that, ended up getting an iPhone, and just kind of went head deep into the not.net world.
Starting point is 00:14:17 So a lot of Node, a lot of Rails, Ruby, iOS development, Objective-C. And that's kind of how I started. And yeah, I started, there were some like hackathons, like Node Knockout was a big like coding event where you put a team together and like build something. Then one day he saw a browser-based game trending on Hacker News. It was called A Dark Room.
Starting point is 00:14:41 And I started playing it. This was about like a month and a half, two months into the sabbatical. I was like, hey, I really like this. So I love the minimalism of it. So you see the visual aesthetics of the game and it's like one button. It's all black and white, ASCII, very clipped sentences and sentence structure, minimalist design. And that kind of spoke to me from that perspective.
Starting point is 00:15:02 The other thing, it was easy. It looked easy. I was like, oh, this is a piece of cake. I could totally port this over to mobile. And the complexity of the game ends up opening up into a roguelike, like an assy map. It's a really complicated game. But the initial process was like, ah, I can totally make this. And it's interesting.
Starting point is 00:15:19 It's a fun little game. I think the ease of it, the approachability of building something like that kind of spoke to me. The fact that it had some popularity and some traction on Hacker News gave it some clout or some viability into being a potential commercial product. And I view source and I found the contact information of Michael Townsend. And I emailed him and said, hey, I'm taking a sabbatical. I wanted to get an iOS development. Can I port this to mobile? You know, throw it up there for, you know, a buck, buck 99. And if it makes anything, we'll split the profits. And he said, yeah, go for it. And I was like, all right, well, that was one email. That's kind of where the sabbatical started to
Starting point is 00:16:02 crystallize was I was like, okay, I've got a project that I actually want to complete and finish. And this is something that I can do and I enjoy because it's game development. Let's kind of see where this goes. So he plunged into the process. He wanted to stay with Ruby, so he got a Ruby Motion license and started writing Ruby for iOS. There were a lot of pacing challenges in the game. I wanted it to be a bit more of an active game that you actually interact with as opposed to having just kind of set on a browser.
Starting point is 00:16:32 There were some narrative elements that I wanted to add to it. So it's best that I officially say that I ported the game. But people that have played the game say that these are two different games. To get the game where he wanted it, Amir had to learn the rules of game design. The first rule is simple, but hard. Build a 20-second experience.
Starting point is 00:16:53 So something that communicates the hook of the game and why someone should continue playing within the first 20 seconds. So like King did this. They've got a bunch of live ops and Candy Crush and things like that. And that's the fall-off point. 20 seconds, that's all you got. So if you can't communicate why a person should continue playing your game within that first piece,
Starting point is 00:17:14 that's including the moment they hit the button. So menu selection, options, splash screens, credits, you've got 20 seconds to get to that point. So you've got 20 seconds to communicate why someone should continue So you've got 20 seconds to communicate why someone should continue playing your game. The other thing is, everybody wants to build a game, right?
Starting point is 00:17:31 Game development is competitive, and if you look at the pure numbers, it almost seems like it's impossible. 50% of the apps and games on the stores never get downloaded. They'll never get downloaded. 100% sure that 50%. Never see the light of day. They get put up there and no downloads.
Starting point is 00:17:50 And it's not just that. Even the games that are downloaded out of those, the ones that people pay for, more than 90% won't make more than $5,000 in a year. That's not a full-time income. Can't live on that. But if that's the case, then why spend this hard-earned sabbatical time building a game? There's a certain value that we haven't measured with respect to someone else taking, giving anything that they can do during their leisure time, instead deciding to pick up your game and play it. it's free whether it's paid but saying this hour i could have spent anywhere else but i'm going to spend it playing
Starting point is 00:18:31 your game and i think that's that's worth something there's this idea of time and valuing valuing the time that you've you know that you spend in something how much is a human life worth right i asked people like, you have a loved one, would you, for 10 grand, would you take a month off of their, off of their lives? The answer is never yes. And you keep raising that value, would take a billion dollars. Like, no, I would, there's no amount of money that I would take to take, you know, one month out of some, some loved one's life or some pet's life or something like that. And I think a facet of it is that no matter how much money you end up making in your game, it's not going to offset
Starting point is 00:19:12 the hours that you put into building that thing. So you have to enjoy it. You have to enjoy the work that you're doing. Enjoying the process and, you know, valuing the creation of your art is one thing, but let's be realistic. It's hard not to dream that your creation will, you know, hit the top of the app store and make you millions. So come September on release day on the app store, Amir was filled with anticipation. It just hit the app store. We tweeted about it and we were hoping like, yeah, we're going to make our, you know, we're going to make our millions.
Starting point is 00:19:47 And that definitely did not happen. We got 30 downloads. That was our smash hit. It was a 30 downloads, 30 bucks in one day. Yeah. I was like, all right,
Starting point is 00:19:56 well now what? From, from your perspective, have you dealt with facets of like, you know, losing yourself in coding and then, you know, these ideas, these business endeavors where you think it's going to be this in coding and then you know these ideas these
Starting point is 00:20:05 business endeavors where you think it's going to be this huge hit and then find that it's yeah not the case whenever i take on a coding project and get excited about it there's always a part of me in my mind that thinks like it's going to change the world right it's just you just get excited like i think there's the xkKCD comic where he has to save the world with Pearl or something like that. You just imagine, each little thing you learn, kind of imagine that, yeah, this will change everything. Maybe I'm just delusional. Maybe that's just personally myself. But no, I think that it's worth communicating that there's a 50% chance that no one's going to download it. And there's a 90% chance that it's not going to make more than 5,000 a year. It's hard to hear, but it's something that I feel is worth communicating. But no drama from that standpoint. And just measuring expectations, getting 30 downloads a day on an app or a game is pretty freaking amazing. We were kind of down because we got all this coverage. It did so well on Hacker
Starting point is 00:21:11 News. You know, we thought it would do better than it did. But in retrospect, knowing what I know now, having something that gets that many downloads in a day is just phenomenal. While all this was going on, Amir was working out of a co-working space, and he tried to get the manager there to play the game. He was just a developer, hacker, just like all of us. And I just said, hey, I built this game, here's a redemption code, and
Starting point is 00:21:35 here you go, you can play it. And he's like, oh, thanks. And I didn't hear from him. He just took the game, and you open up the game and you're like, what the hell is this stupid thing? Thanks. Thank you for the monthly co-work
Starting point is 00:21:51 subscription and I'll pat you on the back. But after the release happened and I was at the co-work place and just kind of working on another Node Knockout hackathon at that point. But he comes over and he's like, oh my god, this game is amazing and i'm like oh so you actually played it he's like yeah i was on the airplane and i didn't have
Starting point is 00:22:11 you know internet connection or anything and i was like fine i'll open this up and play and i and i that's all it's amazing and i'm like okay i'm glad i'm glad you played it so i think i think that was like one of those, one of those feelings where like, yeah, you ship something, you're kind of in this routine, you know, you, you're, you're, you're air quotes, true self, right? You're working how you want to work. You're, you're building things how you want to build them on the, on the schedule you want to build them and people are appreciating it. And I think that was a unique feeling. I feel like a turtleneck wearing, you know,
Starting point is 00:22:49 beret wearing pompous person. But yeah, I mean, I got to say, I'm an artist. And I think that's the facet of it is that having that validation is important. It's an important aspect of it. But feedback isn't always praise. Sometimes it's a bug report. Like the person who emailed and said they were stuck on the ASCII map. They couldn't get past it. Was there a bug? Was that slowing adoption?
Starting point is 00:23:15 I tested this thing hundreds of times. There's no way that, you know, there's a bug in it. He's like, no, I'm blind. And I'm on this map and all I I hear is A-A-A-A comma space semicolon T, and I was like, oh, man, how, one, you're blind, what the hell, and two, you're playing my game, what the hell, and how'd you get this far, and it was a lot of emotions coming together all at once. So the game was text-based, and apparently the iPhones have phenomenal accessibility built in for people that are blind so they can use voiceover to use their iPhone. And they thought it was like a narrative, you know, choosing an adventure novel, which is usually amicable to people that are blind. And he started playing the game. And then he got stuck because the later parts of the game weren't
Starting point is 00:24:02 playable for the blind. But this gave Amir a new project to work on, and so he started working on making the game accessible. And six or seven months passed like this, getting some feedback, adding some more polish, doing a hackathon, and so on. And then, April 11th, 2014, with his sabbatical money running pretty low, something happened. Out of nowhere, we go viral in the UK. And we went from like 100 downloads a day. And then the next day, we were up at 800 downloads in one day. And we're like, what the? And we looked online. We changed our browser setting to UK. And there was nothing. There was nothing online about, this was back in 2013, but there was no information online. I think we found one article in like the Sun newspaper
Starting point is 00:24:51 about our darkroom. And then the next day it goes to 8,000 downloads in one day. And we don't understand what's going on. And it hits number one spot in the UK and we get $8,000, $9,000 a day for six days and then it drops off. And as it was dropping off, it starts rising in the US. So I guess Apple's algorithm or whatever, it kind of helped us bump up. And we went, 30 downloads to 100 to 1,000. Then we had 8,000 downloads in one day. We were like in the top 10 at that point. And then we hit the number one spot in the US and it was at 20,000 downloads a day. In Amir's memory, this time is all a blur. So the App Store ranking system refreshes every three hours. I know this because that's when I saw like shifts in the ranks happen.
Starting point is 00:25:53 So every three hours is how they update their placements in the App Store. But I don't think we're prepared to see $20,000 a day getting deposited into a bank account. You get a few hours of sleep, I wake up, refresh the App Store, see what the ranking is, go back to sleep, wake up, refresh, daydream, calculate numbers and peruse the internet to try and find how this even went viral. Nothing makes sense. Like, we have no idea why it went viral. We still don't know. When we got past the week point, we started wondering how long is this going to last?
Starting point is 00:26:33 And then when you get past two weeks, you start thinking about how many days does it need to last for you to never have to worry about money ever again. All those thoughts in your head and the excitement, and we started getting interview requests from, like, The New Yorker. We got an interview in The New Yorker. It's crazy. When does The New Yorker write about video games? Yeah, yeah, it's crazy, right? But they reached out to us, and, you know, we gave an interview to The New Yorker. It's the wildest thing.
Starting point is 00:27:07 The New Yorker article was titled, A Dark Room, The Best-Selling Game No One Can Explain. And interviews with the Dallas Morning News and articles and Slate and other places followed. It ended up staying in the number one spot in the U.S. for 22 days. It generated some serious buzz and it was doing $20,000 a day in revenue. And then on day 22, we dropped from the number one spot and went to the number two spot. We just kind of continued our fall from there. But yeah, even at the spots we were at, we're making $1,000 a day. What do you do with that money? What happens is that it gets split into royalties and then
Starting point is 00:27:47 taxes and, and all that good stuff. And so you're, you're not left with as much on the tail end, but I just didn't sleep. I don't have, it's all a blur, frankly. Sometimes it's better if you don't remember things well. We had like 35,000 reviews at that point. Most of them were five stars, but there were one star reviews and those hurt. They really hurt. One of them I said was like, this app is a scam. I feel like I paid 99 cents to tap on a screen and you would have been better off buying a head of lettuce and tapping that and having a salad afterwards instead of wasting money on this stupid rubbish application. And I'm like, this hurt.
Starting point is 00:28:31 Some once our reviews mentioned little things that were in the back of Amir's head that he was already worried about. It's like, I feel seen and I don't know how to respond to this. Do you ever get used to it? Is that just something that I say in my head is like, I get used to it and it's a new normal used to it is that just something that i say in my head is like i get used to it and it's a new normal or i guess that's something that as a creator that wasn't clear to me you know before i had created anything that people paid attention to is how vulnerable you are when you create something and then you put it out there like it feels like it's a part of you feels like... It's a part of you. Yeah.
Starting point is 00:29:05 Yeah, you've put a part of you out there, especially with creative endeavors. There's a part of you in those things that you create. So when someone speaks poorly of it, it hurts because it wasn't just, you know, some Rust API for managing bank ledgers off of some requirements document. Like it's you
Starting point is 00:29:25 that you put out there. So I feel it. I got an email from a guy that was like, hey, I'm really glad you made this game. My sister who's in junior high, she's completely blind and she was finally able to participate in a conversation
Starting point is 00:29:41 with her classmates that are not blind about a game that you know is the number one hit and uh yeah it was a good feeling so 199 was two bucks for the game but it meant way more to to his sister and him after all this Amir couldn't go back to his old life to his press shirts and you know commutes and trying to convince C-sharp devs to use his libraries, his software. This game dev life was too exciting. Although it turned out that very quickly he ended up back trying to convince C-sharp devs to use his software stack, just in a manner that he could have never predicted when he went on sabbatical. So after that, I built a pre-sequel to A Dark Room
Starting point is 00:30:23 and that ended up doing real well. It had the number five spot overall on the App Store, so that ended up doing extremely well. That was released towards the end of 2014. And then after that, I built another game called A Noble Circle, which is a satirical game based off of Edwin Abbott's Romance of Flatland, Romance of Many Kingdoms. And I released that around 2015, 2016. None of them ended up doing as well as A Dark Room. So I'm still trying to get out from underneath the shadow of that first game. And that kind of just became my life, was that I would build a game and release it and cater to specific audiences.
Starting point is 00:31:08 And I was good at it, apparently, because they all continued to do well. So I opted for six production titles at that point. And then this was 2016, 2017. I ported the game, A Dark Room, to Android. It hit the number two spot on the Android app store. So right below Minecraft. But there was a problem, right? With more titles, keeping everything working on all platforms was just a lot of work. There's maintenance to do on software. And maintenance and porting things to different platforms, it wasn't as fun. It was more
Starting point is 00:31:46 like painting drywall than painting murals. It was better than corporate work, but it didn't always scratch that itch of making something from scratch, of making your art. And then something exciting happened. He got approved to port a darkroom to the Nintendo Switch, a huge platform. It was a big opportunity. But yeah, it's another port. It's more mechanical than creative. I was facing that annihilation where I wasn't creating new art, but instead maintaining like, you know, all these other pieces of art. And that's where I was like, I need to stop. I need to reset and figure out something, some means of actually deploying cross-platform really,
Starting point is 00:32:25 instead of just the language and then having challenges with changing UIs or tweaks based on OS, but have some unified model of actually building games so that I can continue building games and get rid of this feeling that I kept struggling with. So Amir's plan for 2018, pause game development,
Starting point is 00:32:51 build these tools, get rid of the maintenance. I need to port a Darkroom to the Nintendo Switch, but during that porting process, I need to solve these problems so that when I'm porting the rest of these games over and when I'm building new games from right out the gate, they don't have this challenge and upkeep. And so me and I partnered up with Ryan C. Gordon. He's Icarus on Twitter. He's one of the core contributors of LibSDL. So it's like a simple direct media layer is a C library. It's used by Valve. The Steam client is built with this damn thing, like AAA games. It's a really, really powerful battle-hardened multimedia library. We got together and built out this cross-platform Ruby runtime that allows you to build games for any system, one code base that
Starting point is 00:33:32 works, that just works, and lets you release everywhere and not have to worry about the battle scars and the struggles that I was dealing with for my own sanity, let alone someone else's. So the runtime engine, the one that used SDL, it was a success. It made a darkroom on the Nintendo Switch possible. You could share a code base across platforms. And then they released this platform, this tooling, as DragonRuby, a fast Ruby runtime that lets smaller game devs target all these platforms with less overhead.
Starting point is 00:34:03 It's the tool that Amir always wanted back when he started. And so he was excited and he started spreading the word about his amazing creation. But that's just trying to convince developers to use the software you built again. And that's when the problem started. I would talk to Unity devs and they would go, well, you're making a game engine with Ruby.
Starting point is 00:34:23 I mean, that's slow. C Sharp's way faster. And I go, well, no, Ruby is a language. It's not a runtime in here. Here's a YouTube video comparing how many sprites can be rendered on the screen versus, versus Unity. And you know, I show them rendering 20,000 sprites at 60 frames per second while Unity gets like 10 frames per second. And then it's like, well, yeah, but what about physics? And then I saw them like many, many collision and how much faster it is. Well, what about, and it would be like this goalpost move. This whole thing was frustrating. It's the whole N-Spec thing all over again, except now the stakes seem higher because Amir cares so much about creative game making. He's passionate about empowering people to create.
Starting point is 00:35:06 He wants them to know that they can build things. He wants them to be able to follow his path. I do feel like I give a shit. Like I really, really, really do care, right? How many pins have to be lined up perfectly? How many things have to not go wrong for you to be able to say, I'm going to take six months unpaid off to do whatever I want? And I just kind of lucked out there. And another group of people might be in the same position I was where they did take that sabbatical, but it didn't hit the number one spot. And they rolled the dice and they tried and they took their life savings and put it on the line and tried for six months. And then what option do you have? You go back.
Starting point is 00:35:49 And that's it. Amir wanted to help all these other proto game devs. And it turns out that that passion, his passion in empowering people to create, was a better selling point than any technical achievement he could get under his belt. And so what I usually say now is like, look, if you want to be overworked and underpaid at a game studio, and then after release, be immediately laid off, learn Unity, learn the industry standard, you know, dig in, get your job, make your 40 an hour at 80 hours a week, and then let go.
Starting point is 00:36:32 But if you want a fighting chance to build, to have sustainable income with the things that you want to create, that's when you want to use Drag-to-Ruby. If it's been a while since you've written your hello world, think back to when you decided to start being a developer. And usually it's like, oh, I wanted to build a video game or, you know, something like that. Yeah, try to find a way to rekindle that. How can I make it to where you can sustainably make some money off of that? If it's $50 a month, okay, that's something to start with. Framing it that way was better. It helped move the conversation past, you know, all the objective assets.
Starting point is 00:37:06 Well, how can I help you build the game of your dreams? So this worked. DragonRuby has been out for four years now, and people are using it to make their games, to make their creations, their art, whatever you want to call it. It's been a decade since Amir quit, but he finally overcame the issue that caused him to quit in the first place. He convinced people to choose his software over Microsoft, over Microsoft Stack. And his secret wasn't technical merit. It was his passion. But also, after a decade as an indie game dev, some of that passion, some of that focus has changed.
Starting point is 00:37:38 It's do or die. I have to think about monetization. I have to think about, you know, I really want to build this, but is it going to be something that works out? I don't have the luxury of doing like a labor of love over some long period of time. It's got to hit, it's got to sell, it's got to, I got to vet the market quickly. I got to fail fast. So all those stresses are there, which go away when it's just a hobby, right? Does that change it at all?
Starting point is 00:38:03 It's more stressful, air quotes, less fun. Is it more fun than a nine, right? Does that change it at all? It's more stressful. AirQuotes is less fun. Is it more fun than a 9-5? Oh, yeah, 100%. I mean, that aspect of it, AirQuotes, takes the fun out of some. I've got to do marketing. I've got to do taxes. I've got to do all those trailer videos and 16 different versions of the game logo
Starting point is 00:38:23 so I can deploy to Steam. You have to do those things, but way more fun than a line of business applications. And so Amir continues on. The success of the Switch release of A Dark Room, the community growing around DragonRuby and RubyMotion, they're proof of that. And over the years, Amir's brash attitude has mellowed. His ambition is still strong, but now it's mixed with this kind of kindness and this desire to help others. And isn't that part of creating, of making art, or just about anything? There's the
Starting point is 00:38:59 highs of success and praise and the lows of failure and criticism and the thrill and anxiety that comes with validation. But there's also this last stage, empowering others to create. After all, what's creation without sharing with others the power to create? That was the show. You can find Amir on Twitter, at Amir Rajan, and A Dark Room, and his various other games on the various platforms we discussed.
Starting point is 00:39:43 A Dark Room should be on Steam at some point soon. And if you like the podcast, please tell others about it. Maybe share it on your company Slack or whatever your online watering hole of preference is. Just like Amir's online success, I usually have no idea where listeners come from, except when the podcast is occasionally showing up on Hacker News.
Starting point is 00:40:05 So if you're on Hacker News, you know, share away. And if you want more episodes, join the supporters group. We have more episodes there. But really, as Amir says, with all the things that you can do with your time and the amount of content that's out there, even you just giving me your time to listen to this episode that I helped create, well, that's probably enough. That's why giving me your time to listen to this episode that I helped create, well, that's probably enough. That's why I always end the episode by saying, thank you so much for listening.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.