#249: Capture the Staff of Pythonic Knowledge in TwilioQuest Transcript
00:00 Michael Kennedy: Are you learning or helping someone else learn Python? Why not make a game out of it? TwilioQuest is a game that doesn't treat you with kids gloves while teaching you Python. Use your editor of choice and write code on your machine and still play the game to solve the Python challenges. In this episode you'll meet Kevin Whinnery and Ryan Kubik from Twilio, who created TwilioQuest, and they're here to tell us all about it. This is Talk Python To Me, Episode 249, recorded December 12th, 2019. Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem and the personalities. This is your host Michael Kennedy. Follow me on Twitter, where I'm @MKennedy. Keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via @TalkPython. This episode is brought to you by Tidelift and Linode. Please check out what they're offering during their segments, it really helps support the show. Kevin and Ryan, welcome to Talk Python To Me.
01:06 Panelists: Awesome, thank you very much, it's a pleasure to be here. Yeah, thanks.
01:09 Michael Kennedy: Nice to spend a little time with you guys and talk about this programming game. I think it's going to be so much fun. For a long time, I played actual games, Mech Warrior, HalfLife, Counterstrikes, something like that. But then I felt like that was kind of just wasting my time. And my game actually sort of became programming, instead of going and diving into a water like that. It's like, well, what can I build in the world with code and like creating stuff with code kind of almost became a game to me. And you've sort of clash these worlds together in an interesting sense. At least at the at the learning level.
01:39 Panelists: Yeah, I think so. And it is kind of funny that the sort of scratches the same itch, right? Like, you know, building something with code. It seems to somehow feel, I don't know, maybe it's not so weird, especially, we see games like Minecraft and that sort of thing. But yeah, it's been fun to kind of marry those two passions for me as well.
01:56 Michael Kennedy: Yeah, and if you disguise them right kids will love them, right. Like kids love MineCraft. If you tell kids to go do programming homework, they'd be like, "No, I don't want to." But then they'll like beg for Minecraft, right? It's just like the context is really, really interesting. Yeah. Before we get too deep into the game side and talking about TwilioQuest, the thing that you both have built, I want to talk a little bit about where you're coming from and your story. So Kevin, let's start with you. How'd you get into programming and Python?
02:20 Panelists: I got I got into programming, kind of in high school. There was the there was like a... I don't know if you can call it programming, but there's this hypercard software that was installed on the computers at school. And I got really into like creating like interfaces, in this like drag and drop system, where you could click on links to go to another card in the in the system. I just thought that was super fun. And then in college, I studied programming and wrote like a Red Rover simulator in Scheme. An thought that that thought that I was figuring out..
02:55 Michael Kennedy: Well, if you did it in scheme, you kind of are. I mean, you are a genius, if you can use so many parentheses at a time.
03:02 Panelists: So many parentheses.
03:05 Michael Kennedy: Just kidding, sorry go on.
03:06 Panelists: No, it's getting super fun. But yeah, that was kind of what kind of got me hooked is the ability to create like even just a stupid little game like Red Rover in Scheme. And yeah, and then I'm working at a been programming for about 15 years now. I've been at Twilio for a little over seven years. And I do lots of different programming languages, but my primary Python is our documentation website and Twilio is built on wagtail, which I'm sure many folks know is a CMS inside Django.
03:32 Michael Kennedy: Yeah, Django CMS. That's a really nice one actually, quite nice.
04:10 Michael Kennedy: Yeah, there's a lot of things these days. Ryan and how about you?
04:13 Panelists: Yeah, so like you I spent a lot of time when I was younger playing video games and then I ended up just making maps and stuff in video games. And then I figured out like, " Oh, maybe I should make something useful instead." So that was sort of my transition into like, "Well, maybe I'll try to make a game on its own." And that didn't really fully blossom for me until sort of undergrad, I started with Java, and then learn to love hate that. But Python was always this sort of, like, whenever there was a weird, fun experiment, like we had like some big data courses or like some machine learning thing. Like Python was always the thing they're like, and now you can have fun for a minute before you have to go back to writing all of your interfaces and stuff. And drop over it.
04:53 Michael Kennedy: Right, right, right.
04:54 Panelists: Yeah, so that my initial impressions of Python have always been very fun, even though I've never actually had a chance to use it professionally. But I also, the one time I came close as I taught a internal programming course in Python at a local boot camp, and that was definitely a good choice. I was glad that I did not have to teach people Java in that setting.
05:14 Michael Kennedy: Now you implement this interface. And that's an abstract method. So what that means is this, like, "Oh, my goodness, I just want to print something out on the screen, can we not do all this?"
05:35 Michael Kennedy: Yeah, for sure, for sure. So let's start by talking a little bit more about your background because it sounds like you both are somewhat involved in education and TwilioQuest came out of some interesting educational stuff done for Twilio and whatnot, to what's your backgrounds in teaching and building courses or tutorials and things like that?
06:38 Michael Kennedy: Yeah, sure. And you're like I'm teaching them. Just here's an API, here's an API, here's kind of a static tutorial they have to go through and you're like, could it be more engaging, huh?
06:47 Panelists: Yeah, absolutely. Like I did. I mean, I don't know if this is the right time to dive in. But basically TwilioQuest was created because I wanted to, live training setting like give people the opportunity to sort of progress at their own pace, because in any kind of like live training, it's either too fast for some people or it's too slow for some people. And with something self paced like TwilioQuest. If you're brand new to the topic and you only make it through three exercises, that's great. Or if you're a more advanced developer, maybe you can speed through 20 pieces of content throughout the day.
07:19 Michael Kennedy: So sure, yeah, that's a real big challenge of these in person trainings. It's also a challenge of online self paced, but it's a really big challenge of the next half hour, I want you to do this, whether that's a PyCon or other conference, like live workshop, or it's a week long training class. There's people of massive different backgrounds in there. And it's super challenging to give them something interesting that doesn't either stop in 10 minutes for the beginner or the experts or just kill the beginners, I did 10 years of in-person training. And people would come to me they would say, "Michael, we're almost out of time, I'm only halfway done. I don't think I'm getting this topic." the point is to have enough that even the really experienced people don't run out of time. So don't feel like you've got to get through all of it. It's just it's a big challenge, right? I think total the open ended quest concept. They can just keep going down these these paths, which is pretty cool.
08:11 Panelists: Yeah, totally, and then that's like sort of has formed the core of it, we still use that in our live, used TwilioQuest in our live training today for that for that reason. But yeah, like the the software and kind of a lot of the other tools that we built around it ended up being useful to build something for self service learning, too.
08:28 Michael Kennedy: So it's before we move off of it. What is life changing at Twilio look like? Is that like, big company that wants to implement the working with you guys? Say, "Hey, come and do it in person class." Are these like conference things that you do, as exhibitors at many of the conferences around and whatnot?
08:44 Panelists: Yeah, I think I think it's kind of a little bit of all of those things you mentioned. So we will go to companies sometimes and they're interested in sort of leveling up a bunch of developers on how to use Twilio because they're about to embark on a larger project of some kind. So we've definitely run TwilioQuest in those settings. And then we also Twilio will sponsor conferences and other meetups and developer events. And will often do like a couple hours or maybe a half day where we get people together. And we they play TwilioQuest, and both when we do it outside at giant corporation, and we will do it at meetup, we usually do a leaderboard with the XP totals of everybody during the event. And then we usually give out some like goofy prizes at the end for people that have completed certain objectives within TwilioQuest. So yeah, and most of it, we do kind of intersperse it with some live demos, like some live code demos or some demos of larger applications. But it's usually like a facilitated hands on experience where people kind of move through the content at their own pace.
09:45 Michael Kennedy: Okay, cool. Ryan, how about you teaching background experience?
09:49 Panelists: For me, this is again, this is the first full time educational role I've had, so a lot of my previous experiences sort of been trying out a bunch of different ways to help people learn and find that of way that I'm actually effective at doing that. So I mentioned that that one time boot camp course I did. That was the only time I did that, 'cause teaching at the boot camp is stressful and crazy, especially on top of a full time job as well.
10:11 Michael Kennedy: Right. It's a pretty big commitment. And those are like 12 weeks, that's 6 months down right?
10:16 Panelists: Yeah, it's a weird place to be because it like the stakes are pretty high for the people involved. Like it's a potential life changing opportunity and not being able to commit to it like as a full time position, I just felt like I was hard to serve them as well as I feel like they deserved
10:31 Michael Kennedy: I can imagine. Yeah.
10:32 Panelists: Yeah. I've also tried like speaking at local meetups, I do a like a monthly blog post on educational topics. And I just tried a bunch of different little things. And in general, I find the ways where I kind of either get to engage in conversation with folks or sort of curate an experience for them rather than the sort of live like lecture style like a, I don't think I'd be very good at recording audio course or like the one time I tried streaming was a little messy. So to set it and start hard.
11:04 Michael Kennedy: Be more interactive, sort of, I'm here with you rather than speaking to you.
11:09 Panelists: Yeah. I like Yeah. Being more on the team with someone versus sort of portraying as this all knowing deity where in reality don't know very much at all. Sage on the stage.
11:23 Michael Kennedy: Yeah, that's a tricky place to be. So, Kevin, while you're speaking something that sounds pretty interesting. You talk about having this leaderboards and people doing this together. And when I was thinking about this, it was like,oh, yeah, and the training that you guys have been doing and whatnot, this might be a really fun activity for a meetup. Right. So if you've got like a Python meetup or some other meetup that there's a mission for have everybody come bring their laptops, and then just play together, how do you create this sort of group leaderboard thing? Is that something people from the outside could do if there's meetup, organized ore something?
11:58 Panelists: We have done it for folks before, Like we we haven't sort of made it self service. But we have community leaders that have been like, "Oh, man, I would really like to do Twilio request in our meetup." So it takes me about 10 seconds to create a new event in Twilio requests. So I've created one for folks and they have gone to a URL, and they can display the leaderboard there. And within the game, you can actually specify that I am participating in this live event. And then it starts sending all your points to the leaderboard. So we've definitely done it for a few third parties. And we do it for first party like Twilio events all the time. Like we have a TwilioQuest Tea Party, which is a fun one that some some of our colleagues have started to do where you just hang out and just as you imagine, drink tea and eat fancy cakes and then also play TwilioQuest at the same time.
12:50 Michael Kennedy: That sounds pretty cool. Alright, nice. I think it would actually be a pretty fun activity, if you're trying to get folks involved to have like some sort of a beginner night or you could pick more missions that are more challenging.
13:01 Panelists: Yeah, totally. We definitely want to make that more self service but in the meantime, if you tweet @KevinWhinnery, he will set that up for you.
13:05 Michael Kennedy: So super, super super. Yeah. And I'll put a link to your Twitter, both of your Twitter's in the show notes. So people just find it there podcast players.
13:16 Panelists: Awesome.
13:16 Michael Kennedy: Now let's dive into TwilioQuest proper. And I'll read the opening paragraph, it's maybe I should try to describe it. It's a little bit, it's like a top down sort of dungeon, exploring game where you go through and you find clues and you solve puzzles by writing code to make those things happen, right, that a fair, very first impression?
13:38 Panelists: Yeah, yeah, I think so. Like we're kind of trying to go for like a Zelda or Pokemon style RPG where a lot of the progression is done by solving code challenges that will unlock doors and clear your progress or the way for progress and berries.
13:52 Michael Kennedy: So one of the things I like is the there is conversation with little non player character type things, but it actually speaks to you and there's just something about a game where it has music. But then the only way to interact with characters is reading. There's something nice about a little bit of conversation. But there's an opening section. And I'll just read what it says there to give people a sense of kind of what you're going for, I guess. There's more and more of lives are lived inside the virtual worlds of computers, the universe is where these virtual worlds reside is known as the cloud. And it expands every second of every day with new worlds that discover the ability to write code, the laws that govern these virtual worlds has become a precious resource. And you have to go on to sort of save the world from the legacy society or something like that. Right?
14:37 Panelists: One of the legacy systems, yeah.
14:38 Michael Kennedy: Legacy systems. Yeah, always read when they appear in text, very nice. So it starts out and you have this like, hey, welcome. You're going to like, learn a little bit of code and you're going to, as part of the game, save the world from these legacy systems, but really just learning. Which is great.
14:57 Panelists: Yeah, it's mostly just learning stuff on this point we, in the coming year, we have some more story elements that are going to be coming out to kind of, that will pitch you against the legacy systems. But we have today it's mostly just learning how to code in a sci-fi setting, for sure.
16:29 Panelists: Yeah, so right around when I joined up at Twilio, because I had done some developer training stuff, I was sort of given the charter of we're having this conference and we'd like to do a live training day, you should build some training for Twilio for the for the conference. I didn't want to do slides, code, slides, code, slides, code, like I had always done for developer training before. So over the course of like a couple of weeks of like, frantic hacking on like Angular 1 or something, I think it was back in those days. I created the first crappy proto version of TwilioQuest, where you could go through and do code challenges except for the code challenges were all manually validated. Like I walked to your laptop and saw that you did the thing and then gave you points based on that.
17:13 Michael Kennedy: Right, Was it also originally just in the cloud? Just in the web?
17:16 Panelists: Yeah, it was just in the browser. It was built on top of parse, may they rest in power. But yeah, it was an app that was browser based. And yeah, we used it at live events, starting in 2013, and kind of sporadically going forward. And then a few years ago, we sort of cleaned it up, made a new version of it and actually deployed on wagtail, our doc CMS, and did like sort of a version two of TwilioQuest that was like a nicer version of what we initially did in 2013. And then last August, we launched TwilioQuest 3, which we rewrote from the ground up, and it is very much this game experience where you download the application, run it on your computer. There are a variety of reasons why we did that, but yeah, it's kind of started for live training in 2013. And then we sort of rebuilt it from the ground up as like a self contained self service game so that it wouldn't be so tightly coupled to live training.
18:15 Michael Kennedy: Yeah, I think that's really neat. And people can definitely use it for all sorts of stuff.It's very unique in a lot of ways. So we're going to talk about how you play and it's not just your standard coding game, gamification. Ryan, when did you get involved in the project?
18:26 Panelists: I joined back in June, I believe, it was the first week of June and that was sort of the last sort of crazy, crazy sprint for Signal this year, which is where we we did the first sort of public release of TwilioQuest three.
18:42 Michael Kennedy: Signal is your big developer conference, right?
18:44 Panelists: Yeah, Next one's coming up there and a and we have like a big one of those super class events that was talking about our live training. We have our biggest one of the year there and have hundreds of developers come in. So we really needed to have TwilioQuest 3 up and polished and get the audio in and as much content as we could get, so sort of this big push that we all kind of came together for. So that was sort of my initial experience was very quick. It was a quick paced time, it was hectic, hectic time. Yeah, we definitely got it together, thankfully and shipped it in August.
19:25 Panelists: For me personally, I've always wanted to work on games. But I've also really enjoyed web development. So this intersection for me has always been like, when I practice code at home, I write web games. So I've been writing games in the same like, we use a library called Phaser. And that we use React and, and all these web technologies that I've been using to make games for the past several years in my own time. What I didn't know then is that I was apparently training up for this exact opening where...
19:51 Michael Kennedy: It's funny how life is like that, right? Like, this is the thing I really am into and then I have no idea what to do with this and then boom, like wow, yeah it's kind of I'm making your hobby fit.
20:20 Panelists: That's so I basically been for several, several months before my application of the TwilioQuest, I was working on another game that was powered by Electron and used Phaser and React to make a interactive, downloadable video game experience in web tech. So it was sort of that technical know how and experience. I think is the the primary contribution. And then just in general, I've been making games for a few years. So I think that I bring some insights on that front too.
20:32 Michael Kennedy: Yeah, super cool. So I know what React is. I know what Electron is and what HTML is, I know all those things, but Phaser, I had not heard about it looks pretty interesting. Tell people about Phaser.
20:42 Panelists: PhaserJS, it's a game development framework of sorts, I think is the best way to think about it. So you could go into writing your own physics engine and your own collision system and then your own audio player and your own rendering code. And then you could start a project. So instead Phaser gives you a lot of great API's for things that are just like, I just want the character to move when I push the arrow keys. and Phaser says like, "Okay, make a sprite and then add cursors." And then like, okay, your character moves, the camera follows them. So it just gives you a lot of great utilities to get you up and running and like making your game rather than making all of the giant technological decisions and implementation that goes behind having a game run.
21:22 Michael Kennedy: Oh, that's cool. But it's based on Canvas and WebGL, and it's on GitHub. Pretty neat.
21:27 Panelists: It's an open source.
21:28 Michael Kennedy: Yeah. Okay. Very cool.
21:30 Panelists: Yeah. It's been a pleasure.
21:31 Michael Kennedy: Yeah, I bet it has, it's really much better than just trying to write that off from scratch, right?
21:36 Panelists: For sure. Yes.
21:37 Michael Kennedy: So Kevin, one of the things that I think that particularly speaks to me when I play this game, is the way that it is real programming. Because one of the things that kind of bugs me is if I go to some online place, it says, "You can write code here and then this is part of our challenge." And I'll talk about some that are nice and not knocking on them at all, but you go there and it's not the same experience, it's not the same as if I'm going to open up the main web application that I work on or the mobile apps. I'm not going to do that in the browser, I'm going to to fire up an IDE or some proper editor and work on my local file system, right. And so one of the things that really surprised me about this game is you go through and you have these challenges you kind of like unlock little electric doors, or whatever. And the way you do that is you write some code to solve a challenge or a puzzle. But the place and the way you write the code is on your machine, right?
22:28 Panelists: Yeah, that is something that we kind of felt strongly about, like, I love a lot of those browser based experiences as well, they're fantastic for like teaching the syntax of programming languages and things like that. But the skills that you need to like as you kind of alluded to you to actually write code professionally, or you have to kind of start using your computer like a developer, you have to kind of know how to navigate a terminal and execute code from the command line and maintain a directory where all your all your code lives. So in a lot of the content in TwilioQuest, we tried to have you actually do that. And because TwilioQuest is a desktop application running on your computer, that gives us the chance to kind of incrementally validate that you've done that. So we have one mission where you can learn Git, so we can verify that you have Git installed. And we can look at a directory where you clone the repository to see if you've created a branch of a certain name. So the fact that we're running on your computer gives us the opportunity to kind of really step you through what is necessary to actually set your computer up for development, which I think is like an important step of teaching people to fish in this process, for sure.
23:39 Michael Kennedy: I agree because you come to one of these, these online things and like I said, they can be really nice, but then I want to build a real thing. What the heck do I do? I have no like, there's not this web editor. Okay, I got to figure out a proper editor. How do I get the Python or Node or Git or whatever it is I'm trying to work with onto the computer and then, oh, it's not the right path and there's just all these challenges, right? So it's pretty cool. Ryan, what are your thoughts on this?
24:04 Panelists: Yeah, that's the same thing for me. I think back to like learning to code, I use like computer craft and Minecraft or something. And I wrote this little thing that made a bot move around. And then as soon as you look at your normal computer, and you're like, How on earth do i do anything? Like, I don't know how to deploy this code. I don't know how to install stuff. It's all just sort of this mess that like, there isn't at least TwilioQuest can help solve this, but there's not really anything that that teaches you that process except for an instructor sitting next to you showing you how to do this stuff.
24:39 Michael Kennedy: Yeah, there's a couple of other platforms out there that I think are worth throwing out for people just consider kind of in this realm, and they're all trying to approach this problem of, I want to teach some simple programming skills in some sort of gamified way, right. So the first one is the PyBites, code-challenge platform, that when you go there, and there's a bunch of little challenges that you do, and you can do them in your browser. And the way those validate is it just runs pytest in the background to verify that it's getting what it would expect, right? And then you the gamification side is kind of you get badges, you become a ninja or levels or whatever. Then there's CheckiO, where you actually go into virtual worlds, more of the canvas, Web GL type of thing. And you navigate those and you sort of solve parts of the world and then when you unlock a part, you can compare your solution to the other people's solution and talk about it, which is really interesting. Like, for example, I went through that and I inadvertently learned that I have this tendency to optimize for performance rather than simplicity, whenever I'm doing something. I'm like, solve this problem, oh, I'll do it this way. 'Cause it would be really bad to just like, you're recreating the list every time let me like, do some sort of little optimization for that. Just not thinking that's what I wanted that's just here's a proper solution. Right? When I looked in other people had it like half the length them, like why did they get it so quickly? I'm like, oh, because they don't care about this thing that I thought mattered and it probably doesn't obviously in that case it doesn't. Right. But it's interesting that get this comparison. And then the last one, which I think is super interesting in the game side is CodeCombat. And Kevin, you're familiar with that one, right?
26:18 Panelists: Yeah, I've definitely CodeCombat a little bit and my daughter Grace's has made a decent amount of progress through there as well. So yeah, it's a really cool project.
26:28 Michael Kennedy: You know what I really like, I love CodeCombat. My daughter's played it some, she was quite successful, and she's not good at programming, she's pretty young. And what I really like about CodeCombat is it doesn't pull the punches, it's not like one of the sketch type things where you drag it around, you're like, "Oh, guess what, if you turn this around, it'll show you the code that you wrote but you didn't really write." You know what I mean? This one dungeon that you go through and you solve these problems, but you solve them by writing a code editor online for real but what's super interesting is the auto-complete of the code editor's like ridiculous. You have a hero object and the hero has to maybe attack an enemy you type the letter A, it'll say it'll auto-complete, hero attack enemy, and it'll like select the enemy, right? It's like ridiculous amounts of auto-complete, but it's still real Python code.
27:11 Panelists: I think that's definitely what I like most about it is that you're typing in code. I mean, I think like the the auto-complete stuff is also really awesome and working with the domain objects of the game is kind of interesting. Is it sort of introducing you to object oriented programming, but not really, like you're just kind of absorbing through osmosis, the fact that there are objects that have these members and all these other things? So, yeah, lots there's definitely a lot of inspiration there for different things that we do in TwilioQuest. I think we approach the content in a slightly different way. And we in the game world is a lot different, but CodeCombat it's really cool.
27:54 Michael Kennedy: Like I said before, I think the most important difference that you guys have out there is that you write real code with a local editor and then you go to the game you say, "Check it out." So I'll give a real quick census of people know the flow like I went through the Python part, which we'll talk more about. But the first challenge or puzzle you have to solve is install Python 3 on your system and set the path, So in the game, you actually say, "Here's the path to the interpreter, executable." And then the next one is to create a folder and put a file in it and then after that, it's like, well, we know where Python is, and all the files you create for the rest of the game are in this folder. We can run them and we don't ever have to ask you again. But it's not like there was a, now go to the preferences and set the config settings where you select Python. No, it was like part of the game. So it was fun to do that, relatively speaking.
28:40 Panelists: Yeah, yeah. I think like exposing it as a part of the narrative of the level was pretty important. And I think like that, that's probably going to be the main difference. People I hope will notice in TwilioQuest is that we made a conscious decision just sort of separate the programming tasks that we would ask people to do from the gameplay and aspects of moving your character around and unlocking laser gates and all that other stuff more because we want to make sure that the technical skills that we're teaching are very practical. And there's several reasons for that, but in CodeCombat, one thing that you're sort of doing is you're learning how this CodeCombat world works, and working with this set of objects, versus sort of equipping yourself with a skill set to write your own Python code.
29:27 Michael Kennedy: Right, yes.
29:28 Panelists: So I think like that's kind of what we're trying to do with the technical content design in TwilioQuest.
29:33 Michael Kennedy: Ryan, are you familiar with any of these or other game like platforms you want to give a shout out to.
30:01 Michael Kennedy: Yeah, cool, how do you spell that?
30:02 Panelists: S-C-R-E-E-P-S I think.
30:05 Michael Kennedy: Screeps, Okay. Yeah. Cool. I'll put a link to that as well. Cool, that sounds interesting. Yeah. So let's maybe talk for a minute about the missions that you all have available. Then I want to dive into the Python one, start out with basic training. The only one just so you know, the only one I have experienced with is the mysteries of the pythonic temple. So you have to just kind of talk us through these. But what are some of the missions you got out there?
30:32 Panelists: A big chunk of the missions in TwilioQuest, teach you how to use various Twilio API. So Twilio for those that might not be familiar. We're an API company that provides communications APIs. So you can use Twilio to send text messages, make voice calls, or create video conferencing or send faxes, all kinds of wild stuff. So a large chunk of the content in TwilioQuest is Twilio related because that's kind of where we started the place that we're going is starting to use TwilioQuest is a platform for general engineering education. So the Python mission, pythonic temple is one example of that. But we also have a mission called the flame of open source where you learn how to...
31:13 Michael Kennedy: I love the name there, the flame of open source. Yeah, tell us about it.
31:17 Panelists: Yeah, it's a fun one. So in that one, you actually go through this forest and in the center of the forest is this ancient artifact known as the flame of open source. And the way that you get to it is by configuring git on your local computer, and going through the process of actually submitting a pull request on GitHub to a repository that we set up on Twilio's GitHub, as sort of a way to learn how to do your first pull request.
31:44 Michael Kennedy: Yeah, that's cool. You don't have to do a real PR to a real project. You just have to do a simple one to yours. Right? That's more achievable.
32:29 Michael Kennedy: Is it like a problem a day or something like that?
32:56 Michael Kennedy: That's cool. Well, this episode is going to come out probably in January. So people might just want to put a note on their calendar for 11 months later, this is going to be totally relevant.
33:06 Panelists: That mean that they don't have to wait. They can just do all 25 days.
33:09 Michael Kennedy: The advent of February code.
33:12 Panelists: Yes.
33:16 Michael Kennedy: This portion of talk Python To Me is brought to you by Linode. Whether you're working on a personal project or managing your enterprises infrastructure Linode has the pricing support and scale that you need to take your project to the next level, with 11 data centers worldwide, including their newest data center in Sydney, Australia, enterprise grade hardware, S3 compatible storage and the next generation network. Linode delivers the performance that you expect at a price that you don't, get started on Linode today with a $20 credit and you get access to native SSD storage a 40 gigabit network industry leading processors their revamped Cloud Manager at cloud.linode.com root access to your server along with their newest API and a Python CLI, just visit talkpython.fm/linode. When creating a new linode account, you automatically get $20 credit for your next project. Oh, and one last thing they're hiring, go to linode.com/careers to find out more. Let them know that we sent you. Yeah, so let's talk about this the mysteries of the pythonic temple and all these are kind of fun. They like the little enter for this part is you get to follow in the footsteps of the legendary Explorer, Toledo vine possum. I hat tilt to Guido van Rossum, right?
34:30 Panelists: Indeed.
34:30 Michael Kennedy: As you uncover the mysteries of the pythonic temple, the last surviving structure of the ancient city of Python, you learn how to use the Python and programming language, and other tools. Your reward is the staff of Pythonic acknowledge.
34:41 Panelists: Indeed it is yes.
34:45 Michael Kennedy: Yeah, did you see the one people have been carrying around at Pycon I don't know if you were even there but the last couple years. Anthony Shaw, this 3d printed is probably, I don't know an inch thick and six feet tall and multiple Python colors and Brian Okken had one they're walking around these giant pythons got a giant Python symbol on the top. These things are crazy.
35:05 Panelists: Wait, what? There's a pythonic staff? I had no knowledge of this, this is fantastic. I need to figure this out immediately. Oh, man.
35:20 Michael Kennedy: Yeah It's called the pythonic staff of enlightenment. And I'll put it in the show notes here. I'll put it in there right in the top so you can see around as we're talking.
35:31 Panelists: I can't believe it
35:32 Michael Kennedy: This is really cool.
35:34 Panelists: We were not, Oh my god.
35:35 Michael Kennedy: Scroll down a little bit. You'll see this bad boy. Yeah, you can order one. They're not totally cheap, because there's a lot of power in that bad boy. Yeah. They even got Guido van Rossum posing with that thing at one of the conferences, it was great.
35:50 Panelists: That is pretty cool, yeah. Now I feel like an idiot for not googling this first.
35:56 Michael Kennedy: Well, no, I mean, yeah, like, this is beautiful. I think it's actually the perfect reward for this. So let me just like run people through the the quick thing is like I said at the beginning, you basically do this on your computer. So what I did is I fired up PyCharm and created a folder. And the first, it says you've got to go through and collect all of the notes of Toledo, the Explorer to figure out what's going on and so on. And they're all behind these locked, lightning barrier type things, laser barriers, and so you've got to go and solve the problems of each one like the first one is configure Python so the game can find it and make sure it's on the machine. The next one is I like the names. The names are like, the trial of salutation which really is hello world.
36:40 Panelists: Yes indeed.
36:41 Michael Kennedy: You've got the the trial soliciting input, which is taking arguments, trial of naming, trial of numbers, myriad of properties, word succession iteration so like the foundations of the Python language like the truth for the glory of Python or you do if statements and finally the grand finale, I won't give people the answer but you have to do the trial of trickery, which is biz buzz.
37:03 Panelists: Yeah, indeed. The entrance into the ancient city of Python was by no means guaranteed you had to earn your place as a citizen of the city. So yeah, as the player, you have to go through the same citizenship trials that the ancient pythonistas had to back in those days. So yeah, it's a pretty fun to build out for sure.
37:24 Michael Kennedy: Yeah. That's super cool. And you guys are planning more, right?
37:27 Panelists: Yeah, if you actually load up the mission, you'll see that a lot of the pythonic temple is currently collapsed and crews are working around the clock to sort of unlock new areas of the temple. And in those areas, there'll be sort of similar puzzles around learning how to use Flask and other libraries within Python and other more advanced python programming techniques like object oriented programming and creating modules and things of that nature. And much of the current mission is kind of based on are teaching you basic Python syntax. So yeah, over the next coming months, We'll have more areas of the temple that become unlocked that you can explore and learn new stuff about Python.
38:07 Michael Kennedy: Cool. And how do I get the update? So one of the things that is easy for websites is to be updated without a whole lot of effort from the people. What have you guys done to update the thing I downloaded? Or how do I get updates?
38:21 Panelists: Yeah, so the thing that you downloaded is a launcher program. It's kind of if you have used Minecraft before, if there's a new version of Minecraft, it sort of automatically downloads it and unzips it and all that stuff. When you launched TwilioQuest, you see an interface that will check for the newest version. If there's a new version, it'll download it and then you can choose to watch that new version if you would like.
38:43 Michael Kennedy: Okay, Ryan, do want to talk a little bit about the internals about how this thing is built. We've touched on some of the things like we touched a tiny bit on Phaser and stuff, but maybe a little bit deeper look.
38:54 Panelists: Sure. Yeah, I could probably go on forever and get lost and confused as I'm sure I don't even know all of the details. But the core of it, it all sort of starts with that launcher that Kev mentioned and we shipped a version of Electron, which sort of like shipping a small version of Chromium to each user, so that we can kind of control the environment that TwilioQuest is running in, which is actually a nice luxury compared to the web version where we have to worry about like, does this work on Safari and Firefox and Opera?
39:24 Michael Kennedy: Did somebody actually seriously just visit it with IE? Did that actually just happen and they're complaining about it? Things like that, right?
39:32 Panelists: Yeah. I think that we actually, that happens a lot. Because some of the training and stuff we end up working with people that are windows developers that have some IT restricted machine, and there's a lot of complications around that world that we have to deal with. And so this helps us restrict some of those variables. And then there's other variables that this introduces that make it hard for us to control because now we're shipping a Windows application, the Mac application and a Linux application. But that stuff all kind of wraps up a relatively normal web page, Electron gives you sort of some Node JS processes that you can use to interact with like the file system until I make network requests. And then we have a another set of a traditional web page, basically, where we have React, running, and it kind of does all the UI for TwilioQuest that pops up and shows like Cedric, talk to you one of our our MPC mascot, that's all like React models and and dialog boxes. And then Phaser is sort of letting you walk around the world and interact with stuff.
41:26 Michael Kennedy: Yeah, for sure. And how long did it take you all to find out that somebody might write code that's an infinite loop? Yeah, end another process, because it's hung up and I don't they keep saying there's a bug in the app, what it seems fine to me. I don't know.
41:39 Panelists: Yeah there's definitely been a lot of zombie process hunting that has happened over the years. But yeah, we we get that relatively quickly. And there's still a couple of corner cases that where things can get gnarly with the code editor. But, but yeah, it's been fun. It's a different set of challenges when you're operating on the desktop. When we kind of consider the trade offs. We knew we wanted to write content that could teach any kind of technical skill, like whether it was Git or Python or Rust or Mongo DB, or whatever it would happen to be. We wanted to be able to have really granular validation, and tight system integration for all that stuff. And we being only one of me for a long time. And then Ryan joined up and has just been a superstar for several months now, with a relatively small team, the prospect of like building a cloud based environment that could support all these different technologies was daunting. So we opted to go with solving problems on the client side versus trying to create this virtualization infrastructure to do all the stuff that we want to do.
43:10 Panelists: Exactly, they're telling their pwn computers if they would like, in fact that means they've already won. They've already become a developer.
43:17 Michael Kennedy: Exactly, Well done. Well done. It worked on your machine til didn't it. in this like launch sub process. rm -rf, sudo against their root directory, boom, like, Oh, wait, why is it rebooting?
43:31 Panelists: Yeah, I like to joke the one of our final missions will be hacking TwilioQuest itself, making your own.
43:38 Michael Kennedy: Yeah. Nice. Well, speaking of hacking TwilioQuest, you have these cool missions. What is the possibility of customizing missions or creating new missions? Can that be done? Can people submit them to you? Would you include them? Like, what's the story around that? Like, could you crowdsource some of that? Give you involved.
44:00 Panelists: Yeah, it's funny you should ask, we were actually just sort of scheming just this very week here in December about how we could make that possible because we've actually have made quite a bit of investment for like content authoring tools that...
44:13 Michael Kennedy: Yeah, I was wondering, do you guys have like level builders and other types of things to help facilitate this? And like music and so on?
45:08 Michael Kennedy: Yeah, that sounds really neat. And if you have the ability to create your own custom event that people could be part of create your own custom levels that people could submit back, I could see a really cool little ecosystem buildup around it.
45:20 Panelists: Yeah, I mean, I've definitely taken a lot of inspiration from Minecraft for a lot of the different parts of the UX and like the the modding community around Minecraft is one of the things that's fostered a lot of creativity in that community, so we definitely want to provide the same kinds of opportunities if folks are interested for TwilioQuest. As we've worked on this project, we've learned the limitations of being to humans so the more we can bring more more folks into contribute their knowledge and train everyone, the better it's going to be for everyone involved, where more people can learn more things from different folks and we really just think that there's an opportunity to kind of help TwilioQuest transcend beyond What just Kevin and I could accomplish on our own.
46:02 Michael Kennedy: Yeah, for sure. I can see tons of folks who are really passionate about their project, whether that's somebody creating a David Lord running Flask, or somebody creating a new web framework or a new language or whatever, and they're like, I would really love to have a more engaging way to have a tutorial rather than just follow these steps and read the docs, read the docs is great, but it's not the same as a game, right? And so there's a lot of people who want to get visibility or more interest in their projects, you could end up with all sorts of things like the Phaser people could come along. Say you know what, we want to have a little game to build games every meta or something like that, it seems seems like it'd be a good opportunity.
46:40 Panelists: Yeah, totally. And and I think that's the power that you get from going that route is what we've sort of discovered almost by accident, which is that just by putting tutorial content in a game form where you provide an actual literal path forward, so people tend to consume or to get much further in a tutorial or in any kind of learning process, when they can see where the path leads and like have some kind of incentive to keep moving on. So like when we moved from the web, which was kind of a little bit like the, I can't remember what the PyBites code challenges, I think you mentioned, the previous web version of TwilioQuest was very similar, where we kind of presented in a text based format. Here are the different objectives that you could complete. Just by taking content that was very similar, and kind of putting it in a map that you could explore, we very quickly saw developers consuming twice as much or even more content on average than what we're seeing in the version previously, so there's a lot of power to structuring technical content and learning it this way. For sure.
47:43 Michael Kennedy: How do you feel about professional developers versus beginners? There's been a lot of success with IoT things with a young kids I'm thinking middle school age, and whatnot, especially people who are not necessarily drawn to pure game play game development, right? Like the UK did this thing with the BBC Microbit and microPython and they found the number of young girls interested in programming and computer science massively increased after they had a course with the BBC Microbit rather than just, Hey, we're going to have a programming course or a game club or something like that.
48:50 Michael Kennedy: That's one of the missions, right?
48:51 Panelists: API. Yes, that is. And so so it's like part of their new engineer onboarding and it's just kind of a fun way to get people up to speed.
49:01 Michael Kennedy: I wonder what their reaction is? They're like, "What kind of cool company have I joined where my first day is to go play a game? I can't believe it."
49:08 Panelists: That's definitely that what we're trying to foster but not everybody is so lucky. There are some people who might fear getting in trouble for playing a game at work maybe. So another thing that we're working on in the first part of the year is exposing a lot of the content in TwilioQuest through a command line interface. So if you are for whatever reason, just really not about the game interface, we still want to try to provide some of the same learning opportunities too.
49:36 Michael Kennedy: Sure.
49:37 Panelists: We chose the CLI just because we still feel that it's really valuable to have the dynamic interaction with the validators that we've written on your local machine versus deploying it just plain deploying the content on the web because then you you get interactive feedback where if any stage along your process you can figure out like we're able to tell you like, "Oh that file path is wrong." Or, "Your username is slightly case, the casing is incorrect." Like we were just about ability we have to help you when we're still on your computer.
50:05 Michael Kennedy: Yeah, no, that makes a lot of sense. There's probably some sort of implicit getting comfortable with this being in the command line knowing that a lot of people don't even when they're not quite programmers don't even know how to get to their terminal app or command prompt these days because there's are quite hidden on both windows and Mac OS. Certainly, Yeah, not bad. So a lot of this stuff is is very interesting. A couple of other resources. I guess you guys threw out there tiled and Phaser. Those are cool. Are you familiar with kenney.nl? K-E-N-N-E-Y .nl
50:37 Panelists: Oh, of course, I think any anybody who is developing game projects and has no dollars with which to do it is probably encountered. Like all the awesome assets that are out there for sure.
50:48 Michael Kennedy: Yeah. So you get a bunch of like map tiles and sprites and stuff, seems like a really cool place. You're wanting to build their own levels at some point in the future if that's possible or play with Phaser or other pygame or arcade?
51:04 Panelists: Yeah, there's lots of great research there also like opengameart.org. If you are kind of hunting for assets for music or graphics or that sort of thing, there's a lot of Creative Commons or public domain licensed content out there you can use as well.
51:17 Michael Kennedy: Yeah, super, and not necessarily something that people could take, but it is interesting that you have it as a separate thing people can get is the original soundtrack to TwilioQuest available on SoundCloud.
51:27 Panelists: Yeah, absolutely. We worked with some of our favorite indie chiptune artists and yeah, the the original soundtrack I really love I like how it how it turned out. And it'll power a lot more experiences in the game as we go. But yeah, definitely check it out from SoundCloud. We're also going to try to make it a little easier to download and get a hold of in other formats as well. But yeah, super fun.
51:50 Michael Kennedy: Super cool.
51:51 Panelists: And I saw and I said he said it reminded you a tiny bit of the early mech warrior soundtrack which I take is high praise because I also enjoy the early mech warrior games.
52:00 Michael Kennedy: The early mech warrior games were really special. I'm talking like 1995 to a little bit after that. Yeah maybe you played it on a Pentium 90 or something like that. The music was good it was just those were cool times when games were kind of like you'd experience like wow I cannot believe it is this immersive and this real and that that music was really I think a big part of it actually that and the fog.
52:23 Panelists: Yeah, that's kind of the the golden era of simulation style games because like x wing, antifighter are out there as well which were fantastic. But yeah, no, just the the fact that you kind of had, it felt like you're piloting like a big lumbering Colossus fantastic games and definitely did play an old Pentium 90 machine. Nice. How about you Ryan, did you play those games? I'm not familiar with mech warrior, I missed out on that. There're excellent games, I do remember though.
52:51 Michael Kennedy: Yeah nice.
52:52 Panelists: Very early like them and then the other Lucas starts like, I don't know what they're even called at this point. But those adventure sort of Lucas Arts games. So those games are really fun too. Ryan's like the Spider Man of our crew. He's like, you remember that really old movie Empire Strikes Back?
53:11 Michael Kennedy: I think it's a classic, I remember. Yeah, that's awesome. Cool. Well, I would say it's probably a good place to leave it. But congratulations on this project, you guys, I know you've been at it for what is that? Six years, overnight success just took six years, but it seems like a lot of progress and as it's unique, and I think that's neat.
53:31 Panelists: Yeah, yeah, it's it's been super fun to work on. It's very literally a dream come true for me. Like I've wanted to work on games forever. And now I have a chance to do it and educate people at the same time. So it's been it's been fantastic. Yeah, I agree that it's an amazing opportunity that I feel really fortunate to be here for this sort of bizarre intersection between video games and education is sort of, we've mentioned some other places that I'm going to have to check out later some other sites and stuff but this is the first time I've had any opportunity to do anything like this. And it's it's super cool.
54:04 Michael Kennedy: Yeah, it seems really great. Sure you have a lot of fun all day working on the things. Except for you have those weird bugs that drive you crazy. Bugs in games to be super hard sometimes.
54:13 Panelists: It's really hard to reproduce them.
54:16 Michael Kennedy: Yeah, yeah, I used to work on 3d simulators. I'm like, "Why can I not see the thing?" And it was like, well, we're rendering counterclockwise instead of clockwise or so is invisible. It was getting called. It's like, "Oh, my gosh."
54:28 Panelists: Fortunately, you have those issues, because that's one of the benefits of Phasers. But it handles some WebGL stuff for us.
54:49 Panelists: I'm a VS Code person, that's not the only one I have installed these days.
54:53 Michael Kennedy: That's a big commitment to just have one editor installed. I mean, it's one thing to use one editor it's another to have just one at all.
54:59 Panelists: Yeah. It's all I got left.
55:01 Michael Kennedy: Nice, Kevin.
55:02 Panelists: Yeah, I've used a few over the years, but I've also recently pushed in my chips on Visual Studio Code. The ecosystem around it has been pretty cool. So that's my weapon of choice these days for sure.
55:12 Michael Kennedy: That's cool and it probably doesn't hurt that you're both on the same team using the same editor.
55:15 Panelists: Yes, it is.
55:17 Michael Kennedy: Yeah. And then normally, I'd ask some notable PyPI package so if you got one code and give it but if you have like an npm one, that's also acceptable, notable like library that you use to build fun stuff like this.
55:29 Panelists: Yeah, I think the folks do have any interest in web game development, I think Phaser is definitely the one to take away from this episode. We support the project through Patreon which does a great job with the with the framework. So definitely go check it out, like Phaser 3 and the upcoming Phaser 4 which he sort of rebuilding from the ground up with TypeScript and all kinds of other great stuff. Yeah, if you're at all interested in getting into web games, Phaser is the one to check out.
55:56 Michael Kennedy: Ryan, you got a recommendation?
55:58 Panelists: Yeah, I mean, I can I can give a shout out for pygame. Actually if Python audience, right pygame is actually the first that's the first place I ever successfully shipped any sort of game project. So I can I can endorse that I'm sure, it gives you a similar great API, it gets a little harder to deploy the game. Phaser does have the benefit of running on any old web page. But you can still make something really cool on local project with pygame.
56:41 Panelists: I would definitely recommend heading out to twilio.com/quest or you can download the game, its most recent iteration. And yeah, there's also a mailing list that you can sign up for twitter.com/quest. We reach out on that mailing list, either Ryan and I do or I do. A couple times a month and when we release new stuff, especially as we release new like Python content. That would be the best way to keep on top of when that's out.
57:08 Michael Kennedy: That's good. Ryan anything you want to add on the way out the door?
57:10 Panelists: No that's it twilio.com/quest and check it out.
57:14 Michael Kennedy: Super. I'll put all the links in the show notes. You guys, this is a lot of fun to explore and think about these ideas and play the game of it, thanks for being here.
57:20 Panelists: Yeah, no problem, thanks for having us. This is a lot of fun.
57:23 Michael Kennedy: Yeah, bye
57:23 Panelists: bye.
57:25 Michael Kennedy: This has been another episode of Talk Python To Me. Our guest on this episode where Kevin Whinnery and Brian Kubik. and it's been sponsored by Data Dog and Linode. Data dog gives you visibility into the whole system running your code, visit talkpyhton.fm/data dog and see what you've been missing. Filter on a free tshirt. Start your next Python project on the nodes state of the art cloud service. Just visit talkpython.fm/linode, L-I-N-O-D-E you'll automatically get a $20 credit when you create a new account. Want to level up your Python if you're just getting started, try my Python Jumpstart by Building 10 Apps course. Or if you're looking for something more advanced, check out our new Async course that digs into all the different types of async programming you can do in Python and of course, if you're interested in more than one of these, be sure to check out our Everything Bundle. It's like a subscription that never expires. be sure to subscribe to the show, open your favorite podcatcher and search for Python, we should be right at the top. You can also find the iTunes feed at /iTunes, the Google Play feed it's /play in the direct RSS feed /rss on talk python.fm. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code.