Rooftop Ruby Podcast

33: You Had Me at Battlesnake With ChaelCodes

Collin Donnell Episode 33

Rachael Wright-Munn (ChaelCodes) joins to talk everything from coding games to RubyConf to App Store policies.



Follow us on Mastodon:

Show art created by JD Davis.

Collin:

Uh, Rachel, should you say who you are and what, what you're about?

Rachael:

Sure! Uh, hi, I'm Rachel, I go by ChailcodesOnline, I do a lot of streaming, uh, in particular with open source and with programming games, uh, which I mentioned a little bit earlier.

Joel:

I want to know what a programming game is. I've never heard of

Rachael:

Yeah, so. Programming video games are really cool. Basically, you embed programming inside a video game. So, uh, these are all over the place, and they come in all sorts of different forms and factors. So like, Code Romantic is this like, visual story where you like, solve programming puddle puzzles, and you're like, Mina and like, all of the robots have become aware. And what you're doing is you're going and you're modifying their code in order to prevent them from taking over the world. And the entire time you're doing this, there's this like, total hunk Leon who's like, they're at the same time and he's like the hero of the story and he's like so impressed with how great you are at learning c sharp programming and so that's just like this visual novel and it's this super cute story and I love it so much. It's uh, made by one of my friends, Dr. Makichu, that was actually how we met was through her game. But then it gets, like, super crunchy, right? Cause you have all the Zachtronics games and stuff like that. Like, uh, what is it? There's Shenzhen I. O., where you're, like, this, uh, electronics engineer, and you have to go to Shenzhen because you can't get a job in the States. And people keep emailing you, and they're like, Build me this, like, vape pen that lights up, or, like, build me this, like, embedded, like, whatever. And so you're writing this facsimile of ARM assembly inside these components, and you have to, like, drag them on the board and connect them in order for everything to work. Then, it spans the entire other spectrum. There's this one called Bitburner that's online, completely free, and it's an idle JavaScript hacking game. It's amazing, so like you write a script to go hack servers Because they give you, like, documentation and the commands that you can work with. And I actually have, like, a GitHub repo, and, like, my first script gets everything from the GitHub repo, downloads it on the server. I have to open and save all the files, because there's, like, a little bug with that. But then afterwards, it just goes out and hacks the machines for me. And that one gets really wild in, like, the endgame. I haven't made it to the endgame, because it's, like, it's an idle game. It takes forever, right? But, um, but that one, like, you end up, like With, like, a fake body that can, like, go train for you and that you can, like, program to go to the gym and stuff, and, like, there's all sorts of weird enhancements and stuff that you can make to yourself in, like, typical Idle Game fashion where you, like, restart. And then there's another one, so this is my absolute favorite one. So I played the demo for this, it was called One Dreamer, uh, or it is called One Dreamer. And it's this, like, beautiful, like, pixel world with, like, gorgeous colors, like, gorgeous music. The story is, like, poignant and heartbreaking, like, the demo made me cry once, the full game made me cry three times. So it's like Full on, like, real game storytelling, like, whole game. But the mechanic you use to explore the world is programming. Like, you'll walk up to a door and you'll, like, modify one of the variables to be like, this door is no longer closed, it's open. Or you can go get public variables from other, like, Objects in the world and like put them together. So it's like a Zelda based like puzzle game sort of thing it doesn't look like Zelda, but like That's kind of the feel I get from it where you're like Interacting with different objects in the world in order to pull everything together. Um So this one's called One Dreamer and I mentioned that I played the demo so I joined the community after I played the demo and I actually ended up in the final game of it as uh The programming mentor of The main character, um, hang on a second. There's like three programmers, there's Jumbo, and then I keep coming up with Garrett, who's the like actual maker of the game, but that's not the character that my character mentors. Oh my god, I can't remember it. Yeah,

Joel:

you can play it on Mac, so I'm definitely gonna try this.

Rachael:

You totally should. It's so

Joel:

What, what language is it? Is it, is it like their own thing, or is it a specific programming language?

Rachael:

Um, so I know that the thing is built in, um, C sharp because, like, he shared a little bit of the game code through, like, TikToks and stuff like that, um, but I wouldn't describe it as having a specific language. It's a lot more about modifying variables, so, like, the programming puzzles, like, aren't super complicated. It's just that's the mechanism you're using to explore the world because you're a game dev, so it feeds into it. Ah,

Joel:

I'm gonna, I'm gonna, I'm gonna experiment with this.

Collin:

have you ever thought of making

Rachael:

Yeah. I have made one game before with Amir Rajan on his, like, Dragon Ruby thing. Um, it was called Sadistic Self Care Survival, um, Simulator. And the idea was that if you did not take care of your body, you would just die. So, like, you're sitting there at your desk, you have to make sure that your water meter stays full, and your, like, snack meter stays full, and you have to, like, go to the bathroom, and you have to do this, like, on a very regular cadence, or you die.

Collin:

I'd be fucked. Um, I've had a cup of yogurt today and two coffees. Um, what was I going to ask you? Oh, what was your experience with Dragon Ruby? Um, because here, here was, here was my experiences that I didn't play with it very much because one, it seemed like, it seemed like it's not a framework. It's something that I need to build a framework on top of to make my game. Um, it's more like it has all the pieces there, uh, which, I don't know, I wanted to be guided a little bit more, if that makes sense. And two was that it, um, I don't know, it didn't feel very Ruby like to me, like it relies on a lot of like global state and things like that. I don't know. What was your experience?

Rachael:

I had a little bit of a cheat code, which was that Amir helped me build the game. So that, you know, like, my experience with it was that I had a very guided, like, experience learning it. Um, I really liked how responsive it was. Like, he showed me a bunch of tricks, like, how to modify the values so you could just, like, move the mouse and, like, see everything change in the game. And, like, look at some really, like, nifty tricks that it can handle because it's literally, you change the Ruby code and you immediately see the changes. in the game, right? And so for me, that part was really cool. Um, it definitely still felt like Ruby to me, but also, like, we got into a couple of little, uh, arguments about whether to add classes or not. Um, so that might be part of it is just, like, how you're writing it. I kind of see what you mean about the framework. Um, I wonder if you might have had a better time going through, like, the tutorials at the bottom? Did you, like, check those out?

Collin:

Why would I do that?

Rachael:

Okay,

Collin:

I just like to, I just like to,

Rachael:

So a lot of the

Collin:

try things, fail, and then complain about them on my podcast.

Rachael:

there are a bunch of little tutorial games that are like inside of the, um, the version of it that you download. I will say it's, it's a weird experience kind of downloading everything, unzipping it, and that's like your environment. All of your tools and all of the tutorials and documentation and the sample games and all that sort of stuff, and you're building off of that, that felt a little bit odd to me. Like I think it would've felt more natural if it was like, you import this thing and this thing does the thing.

Collin:

so when you distribute that, is it mRuby? Is that what it, it uses? Cause you need to bundle your Ruby with it ideally, right? So you can just give somebody your game.

Joel:

think it uses Dragon Ruby, I think.

Collin:

I mean, they don't have their own interpreter though. I think it uses mRuby. Do they?

Rachael:

Yes.

Joel:

think it's a fork of MRuby or

Collin:

That makes sense.

Rachael:

I feel really bad because I brought him on a podcast and I asked him these questions, and I do not remember the answers. But Joel is absolutely right, it's a, it's a custom little RWBY interpreter thing.

Collin:

we may have told you this before. Did you know that M Ruby is Matt's Ruby and then C Ruby's Collins Ruby and then Jay Ruby is Joel's Ruby.

Rachael:

I was there for that conversation, yes, that was at the Rooftop

Collin:

Yeah, you were there. Um, so we can get a third party review so that way somebody will want to give us money to do this again, because they'll hear about how great it is.

Rachael:

It was absolutely fabulous, I think it was, like, the best party that I went to there, like, everybody was hanging out and chatting around the fire pits and having a great time and there were, like, plenty of drinks and, like, everybody was super nice and friendly and it was just a really awesome party all around.

Collin:

Yeah. And you're definitely going to use Honey Badger and Sidekick and our other, and EchoBind and Flagrant now, right? Because of you learned about our sponsors.

Rachael:

Oh man, HoneyBadger is so absolutely amazing and I 100 percent heard about them for the first time ever at the Rooftop Review Podcast.

Collin:

yeah, absolutely. Yeah.

Rachael:

Or, sorry, at the

Joel:

Never heard them on any other

Collin:

for sure. I mean, there's also this new upstart called Sidekick that, you know, I think we've really given the rooftop Ruby bump to, you know, so that people will start using it now. Um, but he, he, you know, he seemed, Mike seems like a sharp kid, you know, I think he's gonna Um,

Rachael:

Wasn't his party competing with

Collin:

which only makes him cooler because he, cause he helped us pay for

Joel:

he's still sponsored

Collin:

how cool is that? He came over for like one beer, he came over to like get a to go beer at some point, I think, and just see how it was going, um, and say hi. Um, honestly, everybody who helped us with that, like They were all so cool, like, the um, all the sponsors, I think they, they not only, were kind of self organizing, like, One of the guys, um, I think it was the honey badger, Josh, he, um, he basically put me in touch with all of the other people, like I wasn't out doing anything with that and then, um, they were just all really generous and made it possible. Like, it seemed like such a wild thing that, you know, our podcast would have a party at RubyConf. Um, so I'm, I'm really grateful to all of them. Uh, and they were cool guys too. They were like, how can I help promote it? Like stuff like that too.

Rachael:

Are y'all planning on doing another one at the next conference y'all are at?

Collin:

Absolutely. Uh, if we can, if we can find sponsors, um, and, uh. You know, I know I would like to, well, we were talking about Brighton Ruby, but I think the issue with that is it's only one day, and so it's not clear when you would do it, right? Like, you feel like a lot of people are just gonna go home afterwards, so I don't know how that would work. Maybe RubyConf?

Joel:

Oh no, people, people go out

Collin:

Yeah, so maybe that, or maybe, you know, maybe RubyConf next year. It's hard to, you know, it's hard to say, uh, we'll have to see what's available. Rachel or Joel, are you guys planning on going to any more conferences or have you been to a lot of things this year?

Rachael:

I've been to quite a few this year. I went to Strangeloop, I went to Ruby for Good's DC event, I went to RubyConf, I went to RailsConf. Um, I think that's it. But four is a lot. for one year.

Collin:

I went to, I went to three. So I went to, um, Astute listeners will know. Uh, But I went to RailsConf, which, um, Rachel, did you, were you listening to podcasts? And did you know that I drove across the country to go to

Rachael:

I don't know why you would do that.

Collin:

Cause I'm insane. I get a little manic sometimes if I'm being honest. Uh, and I do things that sound like they'd be an adventure. And then sometimes they are. Um, I will say that Wyoming and Nebraska were not an adventure. Those were very boring. Uh, but, uh, but I did see a lot of cool things. I got to meet a lot of cool people. So I, yeah, I drove across the country from Portland, Oregon to Georgia, where we went, um, uh, I, I went the, uh, the kind of Wyoming, Nebraska, Iowa way. And then on the way back, went up through Chicago, Montana. North Dakota, kind of that direction. Um, and I, I saw a lot of things and it was very cool. There's a lot of, there's a lot of neat cities out there. Nashville is very cool. I want to go back there. Um, so I've been to that. I went to Rails Camp. Do you know what that one, Rachel?

Rachael:

Oh, that was in Hawaii this year, wasn't

Collin:

Yeah, yeah, that was, that was really fun. I, I hurt my foot on the first day on a hike. I twisted my ankle really bad. And then, um, so then I spent most of it convalescing in a room, but it was still really fun. It was okay. Um, it had air conditioning, which was nice. It was at a, uh, a YMCA summer camp. So we got to sing like summer camp songs and stuff. Uh, and, uh, yeah, and then obviously RubyConf where we met you.

Rachael:

that was fun.

Collin:

Joel, you just were at RubyConf and Brighton this year, right?

Joel:

I'm not likely to get out to more than one or two per year, unfortunately.

Collin:

considering RailsConf. I, I have to think about it. It's, um, I don't really want to fly again, uh, again, and I'm not going to drive to Detroit and, uh, I don't know. I, I, I don't know. I'm thinking about it. Um, just because I, I want to go to the thing in, in England perhaps. And I want to like three or four is enough for me. Um, Rachel, what about you?

Rachael:

I'm evaluating a couple of different conferences, so next year I really want to go to a couple of international conferences, like I just kind of want to like, break out of the bubble and I want to, in particular, meet some of my viewers and chatters from other locations. I really want to go to Tropical Arby, but they've already sold out of tickets, which means the only way I'm getting in is if I can convince the organizers that they should give me a ticket anyway, or if I get in through the CFP. Maybe I can be like, hey, please can I volunteer? Like, I really want to go to Brazil. First of all, one of my friends, um, Pachi Codes from Twitch is there. Second of all, a lot of my viewers are from Brazil, which I know because they come into my chat and they say, Hello, my name is this and I'm from Brazil. And like, Yeah, it is! So like, I know that I have a lot of people from Brazil and I would love to go meet them. Um, and I also want to go to a European one this year, but I haven't picked which one yet. I mean, Yoruko's a big one. FriendlyRB was this year, and that one looked absolutely amazing. Um, I want to go to Blue Ridge Ruby if they have that one again, because that one looked amazing. And like, it was really close to RailsConf this year. Um, and then, I am actually going to RailsConf. Um, one of my best friends, Ayesha Codes, Ayesha Blake, she's out there. Um, and so, it's a great opportunity for me to go there, drop by her game store, and like, just see people. Um, and then, I'm hoping to go to RubyConf as well, so.

Collin:

and you should try and come

Rachael:

That's at least four again.

Collin:

that one is my absolute favorite. Um, I think, I don't want to rate them, but if I was going to, RailsCamp is number one. Uh, it's also like, the thing I like about that one too is it's like, it's actually really affordable. Because I think she does a lot to basically like, she's not doing it to make money, she's doing it to do it. Um, and so the tickets will be like 700, but that's paying for your lodging and all your food and active and most of your activities in like a really cool location. So like, to me, it's like, that's as much as a ticket costs, like for any of these other things. So to me, it's really affordable. And it's like all the people there, like a lot of the people you're, you would be really excited to meet. It's gets a really cool crowd. RubyConf was really good too, though. I, I, I really liked what they did with the community stuff. I don't, I don't know what the, what people think about that, but I liked it.

Rachael:

Oh, I loved it. I thought it was so, so cool. Um, I basically, like, sat with John Hawthorne all day and worked on Vernier, and that was just, like, a really cool, interesting experience and we ended up having to, like, write a custom um, clock method because none of the clocks were consistent on Windows Subsystem for Linux. I'm, I'm, I'm not entirely convinced that there isn't a clock that we can use. That would solve this problem. But like, our initial research, well his initial research, showed that the best solution was to write a custom clock that ties up one of the

Collin:

Do you think he just thought it would be sort of fun? Cause I'll do that a lot, where like, I know there probably is something, but I won't look at it, like I'll do like a cursory look, and if it's not the first thing I find, I'm like, obviously I have to make my own.

Joel:

Especially on, like, a hack type thing, I feel like that's the kind of thing you do, isn't it? And, like, that's

Collin:

Yeah, I, I think, I think Joel, maybe your thing is less that you do look and you do know what's out there and you decide they aren't good enough. And then you make your own, or you decide they're not

Joel:

Well, it depends.

Collin:

but they're not, they're not the Joel version of it.

Joel:

Yeah. I'm just really picky. But yeah, I really enjoyed the community day as well, I think it was great. I spent a lot of time trying to figure out how to do something, and then ultimately decided not to do it. So that was super successful. I was trying to, I was trying to share some memory between several different Ruby processes. Um, yeah, use, I was trying to use, like, maybe a C extension to do it, but um,

Collin:

yeah. As soon as Joel said this to me on the first day that a goal of his was to figure this out or find somebody who knew about it, and I think I told him that sounded batshit, um, and. I guess I was right.

Joel:

Yeah, I think you were right. I mean, like, I don't really know very much about this stuff, but to me it seems logical. Like, if you can make an object thread and fiber safe, like, why can't you make it process safe and share it between multiple processes? I don't know. Seems like there should be a

Collin:

I don't know, when you say that, because you were describing it, I'm just like, I think you want, I mean, I know this wouldn't help you because you're writing, you're doing it in Ruby, and it has to be Ruby, but um, when you say it, I'm like, I think you just want a language with real threads, like, like that would really solve, like, you know, I think that would really solve your problem. Um, I mean, I guess JRuby, I guess Ruby could do it, because you're, you're picky, so your Ruby, um, can do threads in that way.

Joel:

I, I think if, so if I really needed this, I think I could explore it further and get somewhere. Like, what I ultimately wanted was a queue that all of the different processes could use, and that queue understood, uh, Ruby objects that were available in all of the processes. They didn't need to be the same Ruby objects, they could be the Ruby's, um, like, forked copy on write. Objects. That's fine. It just needed to have a central queue that could, that could communicate with all the processes. So I would, it would probably be possible to write that in C. But that would involve me learning C and learning how to integrate with Ruby through C.

Collin:

but

Joel:

Yeah.

Collin:

absolutely possible in C.

Joel:

But overall it was a fun day.

Collin:

Yeah. I, I liked it a lot. I liked that they had a lot of the community stuff going where you could meet people because it, um, they had talks, but there weren't, I didn't feel pressured that I had to be like going to a talk every time. Like I could go to a talk and then I could like, you know, hang out with You know all these really cool people in in the community room and that was really cool either of you ever played with JRuby I've never used JRuby I say things about it. Like I know it's the one you can do threading with but I actually don't know that cuz I've never done it

Rachael:

Okay, I haven't either.

Collin:

Yeah, good

Joel:

Maybe we should just cut this.

Rachael:

It's kind of um,

Joel:

talk.

Rachael:

it's kind of extra bad that you haven't used JoelRuby

Collin:

Well, he's a big fan of mine. So that's why he only uses Colin Ruby. He's really supportive. I'm kind of Joel's, kind of Joel's cheerleader though. You know, like I'll tell people about like, somebody will be talking about a problem. I'll be like, yeah, check out Joel's library for this. And like, I'm always talking about when you're not around, I'm always telling people about, about your open source stuff. And then if somebody meets me and they're like, um, and they're, and they know the podcast, uh, they're like, they're like, uh, you know, they're like, love the podcast, whatever, you know, you, you and Joel. And I'm like, listen, Joel's the star. I'm just, I'm just kind of the funny one, I guess. Um, although I think Joel's funnier than he thinks he is.

Joel:

I mean, you're just, you're laughing at me.

Collin:

Who's laughing? Only when I, only when I, uh, only when I, only when I sneak in a cheeky Britishism. Uh, I'm trying to do that and then

Joel:

Yep.

Collin:

Joel picks up on it. Just have one or two an episode.

Joel:

The thing is, it's so natural for me, like, I'm not, I never pick up on it.

Rachael:

As a fan, and like a listener, I love the dynamic y'all have though. Like, uh, I think we were talking about this a little bit at the Rooftop Ruby podcast, like, different podcasts and the vibe that they give off. And like, at the time, I was like, kind of thinking about it, and I was like, do you know what this feels like? This feels like game night with your coworkers. Like, there's a lot of shop talk, it's very fun, it's very lightweight, like, everybody's having fun together, and like, yeah. That's what this podcast feels like.

Collin:

Well, you're so nice and I'm glad you're here to have fun with us too.

Rachael:

Yeah, thank you so much for inviting

Collin:

Joel and I, Joel and I, uh, were hanging out with you at the party and I know the next, like the next morning we were getting ready to go to the thing and Joel's like, we definitely have to have Rachel. She seems great. So we, we both agreed on that immediately.

Rachael:

you.

Collin:

Joel, I heard you're learning iOS development. You bought some books.

Joel:

So basically, uh, I've kind of been jealous of the fact that you know Ruby and iOS, and so you're basically like the ultimate full stack developer. Because it's not just like back end and front end, it's like back end, front end, iOS app, and native iOS app, so I'm kind of, yeah, I've, I've been wanting to learn it for ages, um, and for a number of reasons, just haven't, uh, not least of which, haven't had a Mac that was powerful enough to run Xcode, and like, actually, Like, be usable. Uh, like, I tried it back when I had an old Intel Mac, and it was so, like, the experience was so awful. I kind of just didn't, didn't bother. Like, I was going through a tutorial and it was, it was horrible. Like, like, trying to use the simulator was just absolutely awful.

Collin:

Yeah, so there was a period, I think, that's gotten better, um, between when Swift came out, and we all switched to Swift, and before, uh, and before the And I think it was definitely a little slower, like the Rmax are very fast for this. Um, although it wasn't too bad, maybe I'm just used to it. And you were like, you're used to like, you change your code and it just like, is there. There's no compile step where like, for me, I'm like command R like that's, that's normal. Sometimes I restart my rails. Cause I just think about it that way. I forget that I don't have to do that.

Joel:

Yeah. Um Um, yeah, so I'm, I'm gonna, I'm gonna try and get into that. I think, I'm not sure the best place to start, but, uh, I've got some books, so I'm gonna probably read those. What I typically do is, when, when I'm reading a technical book, is I will Just read it from cover to cover, without trying to follow anything or make sure that I'm fully comprehending everything. And then I will go back and re read the specific bits that I'm interested in later or that I missed or something. Because I find that, um, a lot of the time, just pushing ahead, you then realize that that thing you read earlier that you didn't quite understand now makes sense. Um. But also, just reading a book from cover to cover gives you a kind of like, an index of like, Oh, I'm sure I read something about this. And if you have a paperback book, it's quite easy to remember roughly where it was in the book, and then you can kind of find it. And that helps me. Um, So yeah, I'll probably, I'll probably just get through these. And then, maybe go through some tutorials? I don't know, what, where, where would you start?,

Collin:

I think you and I should do some pairing and, uh, like maybe read enough that you feel like, you know, what's up a little bit, like you've got your development environment going and all that, and then, you know, we can do some pairing on like little projects or apps or whatever, because there's, in some ways, iOS development. Mac development, in some ways it's easier than it used to be because like, you know, Swift UI makes things a lot easier, other things like that. Swift has, it's mixed, but Swift on the whole probably makes it easier. Um, but in other ways it's like way harder. Cause there's just so much of it, you know. There are like so many frameworks, so many things just built into it, um, that learning all of that. It does, there is, it does do a good job, though, generally with the frameworks of that. If you, the more you learn, the more you learn, if you know what I mean? Like, you learn one, and then the other frameworks, they may not be doing the same thing or work exactly the same way, but like They follow a lot of the same patterns. And so you learn one and then you kind of know how to use a lot of them because they all sort of operate in similar ways. I really like that.

Joel:

My assumption is that if you're not trying to do really obscure things, it's pretty stable and well documented. But, but like, I do hear about developers, like, hitting all these weird edge cases and they, it's not documented, or they, they file a bug report and they can't get anything from Apple. Uh, but I think for most of the stuff that I'll be doing, I say this now, and maybe it's, that's gonna change, but um, I'm just kind of like, a lot of the ideas that I have for things I want to build with Ruby. They're, like, I'm fine that I'm less inspired to build kind of B2B type applications, and if you have an application that's designed for normal people to use, then you really need an iPhone interface at minimum, right? Um,

Collin:

like you are, you want it to be a good one. You don't want it to be like, you don't want it to be a web

Joel:

yeah, it needs to be a native one, like, it's not, I'm not gonna have a WebView. I want to be able to build an application that I would want to use for myself, and I don't feel like I can really do that with Ruby anymore.

Collin:

Yeah. My thing is that I want to make. products. And so the reason I like originally wanted to learn web stuff because I wanted to make products. And my thought was you kind of like what you're saying. I think a little bit is you sort of need both. Um, cause I feel like one, I just really like native apps and I like making them. So that, but so I was always going to have that side of it, but I also felt as though like if something happened with my app where like I couldn't be on the app store or something, and I didn't have a website. You know, some kind of like a web version of it that I'm like, Oh, I guess my business is over. Like I don't exist anymore. Um, so that's kind of why that was kind of what got me thinking about it originally. So kind of the opposite direction, but sort of similar, maybe.

Joel:

hmm.

Rachael:

So, I think you're both right that you kind of need the app and the mobile app, because if you've got a power user, that power user is going to want access to your app on their phone. I'm kind of wondering, though, if The solution is to have a really nice API and let other people build your mobile apps for you. Because when you think about something like Mastodon, they have a really nice API and then there are so many other third party apps that are built to support that. Or maybe even like after you've learned the iOS aspect of it, finding the API to support it.

Collin:

Yeah, I think that's true. Um, I would think for a new thing that. You probably need to, if you want to have apps, you probably need to make your own app because, or if like the thing you're making really calls for a native app to like get users because nobody's going to make an app for something that nobody uses. Um,

Joel:

Yeah,

Collin:

I would say with Mastodon, like they have their own app, but

Rachael:

The PWA.

Collin:

is it, I thought

Joel:

think it

Rachael:

Oh

Collin:

yeah, they, they use.

Rachael:

the PWA and TASCI.

Collin:

Okay. I use Ivory. Um, but, uh, I, I think with, they have their own native app, but it feels like they definitely leave a lot of room open for other people to make it. So that is a, I think having a good API is something that I would, I would agree

Joel:

Yeah, I would really advocate for that. Like, so many companies are, like, shutting down their APIs now, which I think is really sad. Like, Reddit and Twitter, uh, what they've done recently is, is really shitty to me. Um, I, the, the reason that I'm interested in this though is because I want to make apps for my phone that I can use myself that, that work the way I want them to, to work. So I might even use someone else's API. To do that, um, though I don't have anything in mind for that, but specifically, if I'm building an application that's like for, like, for people to use, um, day, like, every day, then I need to have at least some base experience, baseline experience on their phone, I think. Um, and that's like where I think it'd be really cool to be able to do that, as well as build the backend service. And I guess, like, if I, my hope is if I spend as much time figuring that out as I have spent figuring out how to do Ruby stuff, then I might manage it, but we'll see.

Collin:

mean, another nice thing that is. Benefited me is that, um, you, you're, you're more employable for more things. Uh, you know, like, like this year there's been more Ruby for me. And so I've been doing Ruby, but like, if I needed to do iOS to do something, like I also have that. And so I've kind of bounced back and forth and then I find like when I'm doing Ruby, then I do more iOS in my free time to like, keep up those skills and vice versa. Uh, and it's, you know, so I don't know. I think that's a pretty good reason.

Rachael:

I think that's a good reason to have multiple languages. Of in your pocket.

Collin:

yeah. And I mean, I really like the ones that I, I have. Um, I also think the benefit is I've been able to be slightly choosy with Ruby apps. Like I've never done anything that has like a really big, like React front end or whatever, cause that isn't what, that isn't what excites me. So if that's the only option, then like, I'm, I look for an iOS thing, you know? Uh, so I've only really worked on like very vanilla Rails apps. Which, which I think is pretty

Joel:

Yeah, I've looked at the, like, there is a, there are a ton of frameworks that claim to help you build a native app that you can distribute to Windows and Mac and iOS and Android all at the same time with the same code base. I don't think any of those have really delivered on their promise in that, like, the, what you get out of them just isn't as good as if you had built. Like, specifically an application for that native framework. And I think I would rather have a really, really highly polished iOS app, and maybe, like, fewer users, or, like, my users have to be from the smaller pool, at least initially, and then I can follow that up by maybe employing someone to build a great Android app, but they're gonna customize that Android app specifically for the platform, rather than like, yeah, just trying to do it all but not really do a very great job of any of it.

Collin:

and I think to Rachel's point, um, I think if you make a really great API and then you build up a user base with web and iOS, the chances that somebody will make an Android app for you just on their own, because they want it is probably pretty high because you have actually gotten some users at that point.

Joel:

Mm

Collin:

just felt like I. Um, I'm so embedded in like the iOS and Mac isms, you know, like the, the patterns of user interface and stuff that because I don't use Android, I feel like if I made an Android app, it would probably really

Joel:

Right. For people who

Collin:

know.

Joel:

the time, it would suck.

Collin:

Yeah.

Rachael:

They're all different.

Collin:

app is supposed to be like, and that'd be a whole thing for me.

Joel:

Yeah.

Rachael:

Well, okay. As it sounds like the sole Android user in this group, all the Android apps are different. Yeah.

Joel:

Probably because they were made

Rachael:

these really

Joel:

I

Rachael:

Some of them I'm sure! But the Apple store has some like, really strict standards and uh, Colin maybe you can speak more to this but like, they have really strict standards around what an app should look like and

Collin:

Uh,

Rachael:

Android store does not. They're just like, do you want to publish your app here? Does it have any spam in it? It doesn't? Okay, cool. It has a little bit of spam? That's fine too.

Collin:

I mean, that's interesting because I would say. I don't think the standards are that high. Um, I think it's

Joel:

with spam in your apps as well.

Collin:

Yeah, they're not that great at that one.

Rachael:

I don't know, I had a friend who was working, like, this was back in college, so like, oh god, 11 plus years ago, but like he was working on a thing where it was like math equations and you would pinch it apart or pinch the equations together to like, uh, what was it, to like factor it out or bring it back together into like the larger equation, uh, and they said he couldn't do that because it was pinch and pinch was only for Zoom.

Collin:

That's fair. Yeah, I think they've loosened up on that a little bit. Um,

Joel:

When you say that's fair, are you saying, are you saying, that, are you ruling in favour of Apple?

Collin:

Um,

Joel:

Or in favor of the freedom to use Pinch for something else.

Collin:

No, I, I, I'm not in favor without seeing it. I, I think that sounds kind of silly, especially because I feel like I could explain that as being a version of Zoom, like you're zooming in on the equation, zooming out on the equation.

Joel:

Hmm. Mm

Collin:

seemed kind of double silly. Yeah, I, that is sort of remarkable. I don't think they enforce like, I don't know, that your app like looks like an iOS app or whatever. That's not really it. Um, but I think what it is partially is that they, and I, this could be true on Android. I don't, I say I don't use Android, so correct me if I'm wrong. I feel like Apple's own apps have tended to be pretty consistent and like kind of demonstrate what the patterns are. And the frameworks are very, um, good at guiding you to that. And so if you just kind of follow the happy path, you're going to end up with something that feels like an iOS app. Where, you know, if you go and use one of these web things that turns into, like, who knows what's going to happen. That could be anything. Um, I haven't used those.

Joel:

components, right? That you can

Collin:

Oh yeah, yeah. And I'm sure that's the same on Android, but, um, absolutely.

Joel:

I think on that point about Zooming, just think it just, I'm thinking about it further. I wonder if their stance on that is related to accessibility. And, like, if they have made Zoom, like, pinched this kind of standard way of Zooming in for accessibility reasons, maybe that's why they're taking a bit of a hard line on it.

Rachael:

I think it's like a clear decision that Apple can make, right? Like, they can either be like, all of these should have the same look and feel, or like, just, Wild West, you can do whatever. And I definitely think that they've gone for same look and feel. Um, and that doesn't mean that they all look identical, right? Like, but it's definitely, at least from what I've seen, um, the iOS apps definitely have a lot. More in common than the Android apps do. The Android apps to me honestly tend to look a lot more like their web app versions

Collin:

Mm hmm.

Rachael:

than they do each other. I

Collin:

and also handsome. I think that's what it is. Um,

Joel:

think it's not for everyone, but I really like. The end result of whatever it is that Apple have been doing with that app store, because there are so many apps, like, I use so many apps on my phone, and they're all beautiful, and they're all consistent, and everything works together and feels great. Like, somehow the end result is actually really good. Huh. Uh

Collin:

who are the most excited about making really good experiences for native. tend to gravitate towards iOS, um, I mean, I, I actually sort of, I'm, I'm taking this from a friend of mine who was an Android developer, is they had talked about like, if they really wanted to like, be on the forefront of like, doing mobile apps and whatever, that Apple might have been a good place for them to try and work, because, and not Google, because they felt like they were really where that kind of thing was getting pushed forward at the time. Yeah. So, Rachel, I did want to ask you though, have, do you mess with any other languages or platforms or mostly Ruby?

Rachael:

was a polyglot before I met Ruby, so I have done Quite a few other things before, um, like I built a little baby Android app to play with. It's not deployed to the, like, Android store or anything, but that's part of the reason that this conversation was, like, something that I paid so much attention to is because, like, in college we did build an iOS app and I have built an Android app. So I do kind of, like, see the differences, but all of that information is, like, over a decade out of date. Um, the most recent language I picked up was Rust. Here's another programming game you can play. So there's this game called Battlesnake, and what it is is you build your own server, and their server will reach out to your server and be like, Here is the board state. What move does your Battlesnake make? And there are like, multiple snakes on the board, there's little like, obstacles and stuff like that, there's food you can eat to like, grow larger like in typical snake, and then you can eat other snakes too. So it really is like a battle arena with your snake and everything. Anyway, so, uh, I have one in Rust and one in Ruby. My Ruby one is called HettyCode and she's an albino hognose. And then my Rust one is called CorneliusCodes. And they're a, uh, corn snake. Yeah.

Collin:

you guys like snakes? I think they're cute.

Rachael:

I like snakes. I like snakes a lot. I used to be scared of snakes, and then I learned more about snakes, and I was no longer scared of snakes. Because I was like, oh, here's how you stop a snake from attacking you. Like, snakes really don't want to, like, hurt people. I tried to do the same thing with spiders, and the reverse happened. I was more scared of spiders after I learned about them.

Collin:

You have some serious spiders in Georgia too, right?

Rachael:

There are black widows and brown recluses.

Collin:

not. No, I'm not going to live in

Rachael:

Both deadly. The ones that I hate the most are wolf spiders, though. They're like They can get up to two inches long. They have big, fat, hairy legs. And like, they run. That's their thing. They don't build webs. They go run places, and they go hunt things down and like, bite them. They can't kill you, but they will rip out a part of your like, flesh. And the thing is that like, I found them in my bathroom before. One time I was like, pulling the toilet paper and like, the roll rolls, right? So it rolled and the spider was just on the top of the roll, and I was just like, I'm gone. No, I'm not. I'm done. I'm not here anymore. This is the worst thing that has ever

Collin:

I, I don't like any creepy crawlies or insects or arachnids to touch me. Uh, spiders and so insects like house flies and stuff. I'm just like, please get away from me. Bees, I'll be like, the fluffy ones, I'll be like, they're cute, but also please don't touch me. Um, spiders, I don't really have a problem with. I don't kill them. I will always like, lead them outside and then tell them they're a good boy or girl. Um, cause I don't want to hurt anybody. Uh,

Joel:

That's so funny. I always thought that I was being nice by catching spiders and releasing them outside, but, but now I'm being put to shame by the because I don't tell them they're a good boy when I do it.

Collin:

Yeah. Or a good girl. You have to, there's, you have to kind of get the vibe of them to know what their gen, you know, what their, um, what would

Joel:

a Hamish

Collin:

you know?

Rachael:

You're such a good arachnid, I'm so proud of you. Go out there and catch some flies, honey. That's what you need to say next time.

Collin:

mean, mostly I'm aware that most, most spiders just eat more annoying bugs. And so that's why I don't have anything personally against them. Maybe the ones that run at you and bite your flesh. I already have wiener dogs for that. Um, how did you like rust?

Rachael:

Team Violence over here. Oh, okay. No, we're not talking about bugs anymore and killing them. Cool. No, it's fine. I'd rather talk about rust. We can talk about a different arachnid. Well, no wait, crustacean. We can talk about a different crustacean. Rust is interesting. So, like, I feel like Rust is very, like, crunchy and, like, rules heavy, right? And, like, in some ways, that's really fun and cool to, like, puzzle around with. And, like, it's fun to play with. But it's also, it doesn't feel very productive in the same way that Ruby does. But, like, at the same time, it's You know, it's very fast, it's very low level, which is interesting. The documentation is beautiful. The error message is beautiful. Like I feel like the developer experience is first class, and I feel like that's a really hard thing to find in such a low level language.

Collin:

it's very strict though, innit?

Rachael:

Yes, that's what I mean by crunchy. When I talk about crunchy, I'm talking about like RPGs, how some of them have crunchy rules and some of them have loose rules Yeah, those rules real crunchy.

Collin:

Yeah, I think what's kept me away from learning Rust is one is I don't have an obvious thing I want to do with it and Two is that I already know Swift Battlesnake. You had me at Battlesnake. I was gonna say it's a pretty good name And two is that I already know Swift and I do My impression is that Rust is even more strict, but I already know a language that is pretty strict and compiled that I can run on any platform. So, I don't know, it feels like it would cover a lot of the same ground for me. I would bet that the Linux story for Rust is better, but also I've never actually done Swift Linux. So, probably gotten a lot better over time too.

Rachael:

I think the big thing about Rust is that you're manually managing your memory, and the borrow system is very different from previous ways of managing memory, and it's both more intuitive than, like, the kind of pointer based system, but it's also, like, very low level. Like, there's no garbage collector. You know what I mean? Which is very, like, different from other compiled languages. Like, pretty much anything like Java, or like I'm pretty sure Swift has a garbage

Collin:

I'll explain it to you, but

Rachael:

like.

Collin:

I want to hear the rest of what you're

Joel:

Collector.

Rachael:

No, I want to hear the rest of what you're saying.

Collin:

sorry, my follow up with you was going to be if you'd ever heard of, um, ARC or automatic reference counting. Have you heard of this? That is what Swift has. So, a garbage collector is like a Part of your process part of your application that's running and will like look for Abandoned objects and then clean them up, right? They have no references And in Swift and Objective C what they do is they do automatic reference counting Which is to say that so like one way a garbage collector could work, right? Each object has, say, a variable called ReferenceCount. And when it gets a new reference, it goes up, and when it gets a one removed, it goes down. And when it gets a zero, it's free. So in, and you could also do that manually though. So in Objective C, what you used to do is when you wanted to, uh, increase the reference count, you would say, this object you call Retain, and then when you're done with it, you call Release. Right? And that would raise and lower it, got to zero, that was released. AUtomatic reference counting is doing that by, uh, just analyzing your code and then doing it at compile time. So the difference from garbage collection is, is it doesn't, um, it's not a performance hit potentially, because it's not having to run something to figure this out at runtime. It's just figuring it out at compile time. And it kind of just works and it's cool. So functionally to, as the developer, it feels like using a garbage collector most of the time, but. You also have the benefit of a language which does not do that, which I think is pretty cool. But I haven't used Rust, so I know, I've heard about the Borrow thing, but I don't know anything, I don't actually know how it works.

Rachael:

Yeah, it's interesting. Um, I think you mentioned you were thinking about learning Elixir.

Collin:

about learning Elixir. I bought a book called Ruby to Elixir that was on PragProg, um, and uh, that's what cool people call pragmatic programmers. So I bought this Ruby 2 Elixir book, but I haven't really read it yet. Cause I got to the first step and it looked like setting up the build system was going to be sort of annoying. And then I got bored. Uh, but I will probably come back to it cause I think, I don't know if I will use it for anything necessarily, but I, I have this idea that learning a new language teaches you things about the languages you already know. Um, and so that like. Picking one a year to sort of get into is just like a good practice as a programmer. Like when I learned Ruby, it got me thinking a lot more about like object orientation. And I learned a lot from that. It got me thinking a lot more about testing. And so when I go back to doing a mobile app now, my, like my architecture skills are better, my testing skills are like a thousand times better. iOS developers don't really write tests that much. Um, but the, uh, you do have a compiler that will give you a lot of warnings for things, but still. Um, so like my ability to test is, um. is much better. And so I'm interested to use a more, I guess Elixir isn't purely functional, but like a more purely functional language, because I think that will probably teach me things about the languages. I know that like Ruby and Swift both have a lot of, like, functional things, but I'm interested in like, if that's kind of all I had, how that would inform how I think about certain things.

Rachael:

think one of the cool things you can do is use Advent of Code to like practice with these new languages because you're getting a whole bunch of new puzzles. It forces you to go look at the documentation in order to check out all of the different array methods that are available to you. And I think that can be a good opportunity. I know that in the past I think I did a Rust year with it, and you were mentioning the functional programming. I actually did a year where I was focused on writing functional Ruby over, like, object oriented. And that is coming up, so it might be a good opportunity to play around with some

Collin:

Are you going to stream that? Cool. I, um, I, I, I hit the bell on your, on your Twitch account so that when you, when you go online, I'm going to see it. And I'll

Rachael:

See you Thursday!

Collin:

Colin from Brazil. Probably not a lot of Brazilian Collins, I guess. Huh?

Rachael:

I can't say

Collin:

Yeah., I want to ask, um, Rachel about Advent of Code. So how many years have you, have you done it? And have you like completed the whole thing? Like in multiple years? Cause I've never, I've done like two days and then been like, this is a lot of work.

Rachael:

Um, I have never finished a year. I've done it for four years straight.

Joel:

Does it get harder as you go through it? Okay,

Rachael:

you done it before?

Joel:

I've never done it. It's like a challenge a day for the whole month of December or

Collin:

Yeah.

Rachael:

It's a challenge a day. They drop, um, I don't know exactly what time because it's always like in the middle of the night for me. Um. But they drop for everybody at the same time. There is a leaderboard. Um, what I always do is I have, like, a channel on my, um, Discord where everybody shares their solutions and, like, compares and, like, talks about what they did, um, and, like, the problems. And then, uh, what is it? And then I always have a private leaderboard where people can, like, try and get It's, it's two part questions, so like, the first one will be a little bit easier, the second one will be a modification on whatever you did in the first one. And they get significantly harder as you go on. Um, I'm not sure how far I've gotten. I've gotten into, like, the 10s, I've never gotten into the 20s, I don't think.

Collin:

was like, I'm going to have to learn an algorithm for this.

Joel:

ha.

Collin:

Kind of had LeetCode energy for me at a certain point.

Rachael:

Yeah, a little bit, kind of, yeah. For me, I, feel like part of the problem with LeetCode is a little bit, like, the branding. Because I like the idea of, oh, you're doing fun holiday themed puzzles. I don't like the idea, these are evidence that you are a good programmer if you can solve these

Joel:

Mmhmm.

Collin:

I don't know, I I don't like showing evidence of things like that. I'm like, my experience is my evidence. I, I feel very, um, I, I also just, my experience with those kind of problems was that I didn't feel like they showed anything that was very relevant. I'm like, I don't know, this isn't like anything I've ever done in over a decade.

Rachael:

I completely agree. Most of my, like, actual work has been looking at an API and integrating it with whatever it is that we're doing and, like, extract transform load. Like, get a whole bunch of data from users and their usage, transform that data in some way, and show it in another form, right? And that is nothing like the algorithms that are in InterviewPreps. It's nothing like the algorithms that are in like, AdventiveCode or LeetCode, or any of that sort of stuff.

Collin:

And I mean, on iOS, I like to say the song of my people is download JSON and show it in a list. Uh, that's actually like 80 percent of iOS apps are some version of downloading JSON and showing it in a list. And sometimes that list is a grid, but it's, it's, it's a very high percentage of apps.

Joel:

Mmhmm.

Collin:

Yeah. Um, well, Rachel, I think this is great and we'd love to have you back. Uh, I think you'd be a great, um, what would you call it? Uh, a recurring guest star, if you, if you'd like. Um, but yeah, anyway, where can people find you? Show codes.

Rachael:

ChaelCodes, in all the normal places. You can also go to chail. codes slash links, it's my link page and it has the specific places I am available.

Collin:

I'm looking forward to your stream on Thursday and, uh, well, this episode won't come out by then, but it will come out before the next one. I'm sure we'll have another stream. And so people can all go there and tell you where they're from.

Rachael:

Fabulous. I'm looking forward to it. Um, I had a great time chatting with y'all, Colin and Joel, because this is, y'all, like, literally, like, one of my favorite podcasts, and this has been absolutely delightful, and I appreciate it so much.

Collin:

I can't speak for Joel. I think you're absolutely delightful as well.

People on this episode

Podcasts we love

Check out these other fine podcasts recommended by us, not an algorithm.

Fresh Fusion Artwork

Fresh Fusion

Jared White
Ruby for All Artwork

Ruby for All

Andrew Mason & Julie J
Code with Jason Artwork

Code with Jason

Jason Swett
IndieRails Artwork

IndieRails

Jess Brown & Jeremy Smith
The Ruby on Rails Podcast Artwork

The Ruby on Rails Podcast

Elise Shaffer and Brian Mariani
Remote Ruby Artwork

Remote Ruby

Jason Charnes, Chris Oliver, Andrew Mason
YAGNI Artwork

YAGNI

Matt Swanson
GemRuby Show Artwork

GemRuby Show

Lucas Barret
The Bike Shed Artwork

The Bike Shed

thoughtbot
Rubber Duck Dev Show Artwork

Rubber Duck Dev Show

Chris & Creston