JANELLE: Hi, everyone. Welcome to Episode 129 of Greater Than Code. I am Janelle Klein and I'm here with my fabulous co-host, Jamey Hampton. JAMEY: Thanks and I'm really excited to introduce our guest for say Lori Olson. Lori is the owner and chief instructor of the WNDX School of Ruby Motion development. She's turned the formidable development and mentoring skills nurtured over a 30 year software career toward training people in mobile application development with Ruby. A popular speaker at conferences around the world, her workshops have been featured at RailsConf, NSScotland, and RubyConfAU. When she's not working on the school, Lori keeps her hands in with mobile and Rails app development and in her copious amounts of spare time, that's a joke, I know that because it says ha ha in the bio. In her copious amounts of spare time, she volunteers teaching total novices how to code through such non-profits as RailsBridge, Canada Learning Code, and Destination Exploration. A proud former Calgarian, Lori now lives with her husband and two dogs in Lethbridge, Alberta. Thanks so much for coming on the show, Lori. We're really excited to have you. LORI: Oh, thanks so much for having me. I'm really looking forward to talking to both of you today. JAMEY: So, it's very customary on Greater Than Code that our first question be, what is your superpower and how did you acquire it? LORI: You know it's funny because I recently started telling people this. I hadn't actually thought of it before but my superpower's mapping stuff. I've spent way too many years creating applications using maps. And as such, I've encountered so many of the classical mapping problems that I can solve just about all of them. JAMEY: What kind of things have you mapped? LORI: Living in Alberta, you might guess that I spent a large portion of my career working in the oil patch. So, I have created a lot of maps around information in the oil patch like where wells are, where pipelines are, where different land leases are for oil exploration, and where oil and gas facilities are, like all kinds of stuff like gas plants and gas compressor stations and oil refineries, all kinds of facilities. So basically, that runs the gamut from points on a map, lines on a map, areas on a map for land leases, all of them. And then massive amounts of information on a map just as for instance, the number of wells drilled in Canada is somewhere north of 900.000 now, so that's a lot of points to try and put on a map. JAMEY: Do you think you're mapping superpower effects the way you think about stuff in regular life? I'm thinking if you spend so much time using your brain to think in this kind of visual mapping way, how do you feel like that affects the way you do other things? LORI: My husband would have many words to say about this. I have this positive mania for coming up with optimal routes to go from point A to point B and it changes all the time. So like I'll have a route that I take him in, for some reason I'll try something different, "Oh, this one's way better. It's got two fewer lights and less left turns." It's annoying to him. JAMEY: I can't imagine why that would be annoying. It sounds great. It sounds so efficient. I also love the phrase positive mania. That's so good. If you're enthusiastic about something -- the word fan, of course, comes from fanatic. Fanatic doesn't sound like a good thing, fan does. So, I think we can put positive spins on a lot of things. Just because we're really into something doesn't mean it's a bad thing. I mean if I wasn't such a science fiction fan and fanatic, I might never have gone to that science fiction convention and met my husband. JAMEY: I totally agree. I love to listen to people talk about things that they're passionate about. It's like my favorite thing. I could not care about the thing even a little bit. But if the person telling me about it is like very excited about it, I'm very excited about it. LORI: That's actually probably an excellent segue. I will confess to not being a gamer at all. Like I said, I've had a 30-year career in software and when I started doing software development, I spent like all day on my computer. The last thing I wanted to do was go back home and get on a computer to play games. It didn't appeal to me. Now, going out to arcades, total different thing. I have a history of gaming in arcades but not on my computer, not buying a console or anything. However, when Amir introduced me to his new product, Dragon Ruby Game Toolkit, I got access to the prerelease version. And man, that was fun. I was like, "A tutorial for it? Sure!" I'll just show people how to do a few things. And then, Amir gave me a walk through and he recognized immediately I was not a gamer, from my rather inept use of my gamepad here. So he said, "So, what do you like playing?" I was like, "Arcade games." "Well, what's your favorite?" "Oh, Galaga." Galaga was always my favorite game. JAMEY: Galaga is my favorite, too. LORI: Yey! Galaga! So, he started walking me through, how to create a Galaga clone using Dragon Ruby and it was so much fun. I cannot believe how much fun it was. I had tried to do a little bit of game programming years ago and I was like, "This isn't fun. This is so not fun." But yeah, with the Dragon Ruby Game Toolkit, it is a lot of fun. So, I'm looking forward to continuing to hack away on my little Galaga clone and we'll see what I create at the end. It will probably evolve into something that's not Galaga. JANELLE: It seems like you would encounter a lot of nothing problems in that space and all these things you're talking about with classic mapping problems and displaying lots of little sprites and things on the screen doing collision detection and all of these seem like mapping problems. LORI: They are. They definitely are, and some of the same scary word math problems do apply whether you're working on mapping things and laying things out on a map or laying things out for a game and detecting when things are intersecting with each other. JANELLE: I'm wondering though what makes it fun. LORI: For me, I do enjoy the Ruby. I'm a big Ruby fan. That's not to say I don't like other languages. I spent many years as a C application developer, not C++. I did do that, too. Not C#. Yes, I did do that too. But if you make me do any kind of C and I did Objective C, too. If I had to do any kind of C development, I'd be right back there at plain old C because I still like it. It's a nice low level language that lets you get into the level of things. And I spent years with a library that I created. That's where the name WNDX actually comes from. I got hired by a company named WNDX and wound up with the name by virtue of being the last person standing at the company when everybody else left. So, it's mine now. WNDX was a cross platform, C graphical user interface tool kit. And that library, I know today, is still in use which is scary considering that I haven't touched it since the year 1999, 20 years ago. And I have customers who bought source licenses and they are still using it to build products today. JAMEY: That's impressive though. LORI: It is. The core level of that library was to go down to the most basic graphics level on every platform and use just enough of the native stuff to make it look native everywhere. We were there before Java existed, I'll just say that. This is pre-Java. Java kind of came along and kicked the crap out of that business. That's what happened to it. So we went and created this library and it was an inclusive library. We always implemented all of the native controls. And then if some platform did not have a control that existed on another platform, we would produce an emulated version. And so instead of having a library that was like the least common denominator for what is available across all the platforms which is what pretty much everybody else did, our library was all-inclusive. Whatever control you can think of or see on any of the platforms, it'll work everywhere. So, it was popular. In retrospect, when I abandoned it, I probably shouldn't have. I mean, I decided to join the enemy and became a Java developer. JAMEY: Join the enemy. That's harsh. LORI: It was, because Java pretty much destroyed the cross-platform world for most toolkits that existed at the time. Java came out and said, "Oh well, here you go. You can do all this for free everywhere." So that was kind of hard to compete with - free. JAMEY: It's just a really interesting perspective when something new and exciting that has a lot of features comes out. It's very exciting for a lot of people and I guess I don't normally think about who else is working on stuff like this that's feeling pushed out by it. LORI: That is a common thread [inaudible]. There's always people that feel that they've been pushed out, left behind by new stuff. There's a level of resistance and I think a lot of it is people get too familiar with something and then they don't want to learn anything else when the new stuff comes out. Yes, I'm still using Ruby, but Ruby is still being actively developed and it's still fun. Now if somebody comes up with a language that is new and just as fun to developing and makes me as productive, I'm all for new languages. I love learning new things. That's probably why I'm still a developer after 30 years. JAMEY: I think it's a great trait. LORI: If you don't love learning, then you better start thinking about what your transition plan is because the world changes out from under developers about every five to seven years. So unless you're ready to jump on the next bandwagon, you're going to get left behind. JANELLE: I'm very much in Java land too, but I have friends in Ruby land and since I've been sort of going to some Ruby conferences and some Java conferences and you see this totally different culture. Whereas I go to Java land conferences and it's all very enterprise, stuffy, professionalism stuff and you go to Ruby conferences and you get people that are more so coming on their own as opposed to as many people being sent by their employers. You get people that are like, "We're here because Ruby is fun. We get on stage and talk about the things we're excited about, our little side projects we're doing." I mean, the conferences have such a very different feel and vibe and audience about them. And I'm wondering in being in all these various different worlds over time, seeing these different disruption effects over time, if you were to draw a map of the cultures in some of the differences you see, some of the changes you see, if you were to visualize this as a map, what kind of patterns emerge for you? LORI: It's interesting what you said about Java because in the early days of Java, it was very not corporate. Although there was an aspect to that because back before Oracle, Sun -- Sun developed Java and they had a whole different attitude toward Java. Oracle is all about the enterprise and will always be all about the enterprise. So most of the aspects of Java that were sort of less corporate, more sort of fun, smaller staff -- does anybody talk about Mobile Java these days? JANELLE: Not really. LORI: No. And it was so huge when the mobile version first came out. It was just like, "We have Java on a billion devices." And it's like, "Wow! Really?" Because there was an embedded version of Java on all these consumer devices. It was so exciting to be a Java 1 when they were handing out Palm 5s. JANELLE: Yeah. LORI: And there was a Java Micro Edition on the Palm 5 that you could program with. And it was super fun and super exciting. That's not the Java world today. Today under Oracle's stewardship, it's all about sort of the mainstream, the corporate, the big, big massive applications. My husband works for a big financial company that just got bought by Morgan Stanley, so they use Java. Surprise! Like it's all web logic and enterprise level stuff. And that's good for them. But that's not the Ruby sort of vibe. Ruby came out of, obviously, the base camp world and that was always a little tiny company and remains a small company although wildly successful, always attracted the sort of startup culture, the people that wanted to develop new things and do it rapidly, like prototyping. That's a thing that Ruby and Rails was really good at. I mean, Ruby has been around for a lot longer than Rails, but I got introduced to Ruby as something that I was going to work with because of Rails. And in fact, I got introduced to it at a Java conference. It was one of the No Fluff Just Stuff conferences. And I love that conference but that was like Dave Thomas and a bunch of his buddies. And of course, he talked about Ruby there. But I'd been at a couple of these conferences and this particular one suddenly, all anybody could talk about in the hallway track was this cool new framework called Rails. And it was so awesome. In fact, I think at lunch time, one of the conference organizers finally said, "In the sessions, you guys can't talk about Rails anymore. This is a Java conference." So it was kind of funny. But my co-worker and I had attended this conference, went back to the office, we were starting a new project literally the next day. And we're like, "I don't know. Why don't we try this cool new Rails thing?" It was at version 0.13 at the time, "And see how far we get. We can blow a week or two off the front of the schedule here," and we got so much further in that two weeks than we had even imagined we could get if we'd been doing Java development. And so, that was pretty much it. I didn't really look back very hard at my eight years of Java at that point. I was just like, "OK, it's gone. I'm doing the stuff now." That said, my Ruby probably looked a lot like Java at the beginning but hey, I learned better. JANELLE: It's interesting too just living in Java world now and I'm thinking about how we've seen it evolve over my own career. I'm also on No Fluff tour, so I'm a tour speaker. I know that crowd of folks as well. But I'm wondering what do you think happened along the way that community wise, it started to get stuffy? Because I feel like that happened before the whole Oracle handoff of when it turned into corporate enterprisiness because Sun was driving things a bit that direction too with all their certification stuff. I remember getting Sun certified everything and Oracle was doing their whole certification and training stuff at the same time. That was like the big thing. I've got my handful of certifications from Cisco and Oracle and so on. LORI: When it was still Sun, I got my Java Certified Programmer thing and that's when I realized what a huge scam it was. I was just like, "OK, I'm just not going to bother." But yeah, the certifications were probably a part of it but I don't know. When it was still in Sun's hand, there was a lot of focus on multiple versions of Java. There was Java Enterprise Edition, there was Java Standard Edition, there was Java Mobile Edition and those were three very sort of different focuses and had different crowds. When Oracle took over it, they really didn't give a crap about the mobile edition and that stuff's just like virtually gone, although you can't really say it's gone because it came back from the dead when Google decided to create Dalvik and Android using basically Java. That's where the evolution of Java Mobile Edition ended up. Java Standard Edition, still on a lot of our computers. And there, that's being driven primarily by open source now, like that OpenJDK. So what's there left for Oracle? Well, enterprise edition because that always was their business. They've always been huge, huge into the large companies. I first encountered Oracle when Oracle was still a little company. The Oracle database and their version PL/SQL was so far out there and not standard. It was crazy. They eventually evolved back towards standard SQL and that was when I worked at a large multinational oil company. We were using Oracle. So even when Oracle was little, it was still laser-targeted on that market of super large companies. JANELLE: Interesting. So just in targeting the platform for corporate use versus targeting a platform for rapid prototyping and the size of the company supporting the effort and what their initiatives are, that the culture basically grows up and shapes around those things. It's fascinating to me, I guess, because once I went to a Ruby conference, it made me sad about the Java world because I'm like, "Why don't we have more fun?" Software is so much fun. And here's a bunch of people that still love programming, still loves creating, and then I go over to like Java world and it's like these people are just cynical. LORI: Ok. Now, the cynical, that comes from being, I don't want to say stack but if you are in a programming world for too long, it is super easy to get cynical about it. I know I have a certain amount of cynicism about some of the Ruby stuff developing because I've been around it for more than 10 years. But that said, I'm still doing new projects with Ruby and Rails. Of all things, right now, I'm developing an application for a farrier. And if you don't know what a farrier is, that's the guy that takes care of your horses hooves. So he comes out and he trims them. Seriously, this is a guy who came up with an application idea. He applied for government grant to develop its prototype and hired me to build it. And it's cool. It really is. I couldn't think of anything else that I would use to develop that in but something like Rails. JAMEY: I got another question for you. Just thinking about how you're talking about how Java destroyed this cross-platform world ecosystem. Of that, there are all these tools in a C space of implementing these native libraries that would work across platforms and solves these cross-platform problems with abstractions. And then Java came along and essentially built -- okay, here's an abstraction that will work on everything. And we're going to run this machine layer, build a virtual machine that you can run your programs against and solve that problem. I see now we've got this upcoming trend where there's been a number of attempts at platformification and creating a new Cloud virtual machine, if you will, but nobody's really been successful at that. And I'm curious your thoughts on, do you anticipate a similar type of disruption in the space and what would it look like? LORI: I do start to take the long term trend. I did work on a project for a client of mine to take their artisanal handcrafted Amazon set up and get it all transferred over into Kubernetes, and that was interesting. But having done that and seen what that whole process is like, in my head, I'm like, "Man, there's going to be a lot of money in transferring applications out of Kubernetes and into the next thing because it's not a fantastic thing. It's hard and it's complicated and there's still so much XML. As soon as I see something like that that everybody's using because it's better than what they are doing right now but it's still really, really hard, that's one of my things that I look at going ripe for disruption. Somebody is going to come along and make this more pleasant to do. They're going to make it easier. It'll have lots less XML and it will be fun. As soon as you do that fun thing, you end up with having a whole bunch of people running in that direction. I think somebody will come up with a better solution than Kubernetes and it will take away some of the pain of doing that stuff. I mean, Kubernetes takes away a lot of the pain of all that individually managed stuff that people are doing. And when you have large systems, that starts to get really hairy. I mean, the company I was working with, they aren't even very large. They just have really large customers. So they end up needing to scale quickly and easily because when one of their customers suddenly decides to run a contest that uses their system, it can crumple if it doesn't scale rapidly and easily without a lot of manual intervention because I was there during the days when there was somebody there going, "Oh my God! Oh my God! We have to stand up five more servers!" And that wasn't fun at all. But when you have something like Kubernetes, you can just change a couple of files and run a couple of commands and your stuff scales. But setting it up, it sucks. Let me tell you, setting it up sucks so bad. It is hard. It is complicated, and there are so many ways to fail. JAMEY: I think you have another superpower which is predicting the future. I feel like you just predicted the future to me. And then in a few years, I'm going to like think about this and be like, "Lori pictured the future to me." LORI: I'm just going to say that any software developer who has been around for as long as I have, is making the same predictions. They just maybe aren't saying them out loud but... JAMEY: I think what's interesting when you were talking about maintaining stuff yourself. I was thinking about this recently because I saw a tweet that was -- I work in software all the time and the last thing I possibly want to do is maintain my own stuff at home. I don't want to maintain my servers. I don't want to maintain my smart lights. I don't want to have to maintain my garage door. Please let me pay you to maintain this for me. And I thought that was interesting because I totally related to it but I was thinking about it like in the past, the idea of like, "Oh, I'm going to build all my own stuff from scratch. It's going to be so cool. I'm going to be able to have all this control over it and I'm going to maintain all my own stuff and it's going to be cool." And then like this path through life to the point where I'm like, "No, I don't want to do any of that. I want someone else to take care of that kind of reliability for me." And I think that that's like -- at first I was like, maybe that's what people used to feel like, now people feel differently. But what I think it actually is, is that each individual person goes through this description of what I've just said, maybe. LORI: I completely agree. Evolution, when you're talking about your smart lights and that. Way back when there was home automation stuff, it was called X10 and that was back in the late 90's. So yes, more than 20 years ago. You could do home automation with X10 and what was that like? There was X10 enabled all sorts of devices that you could install but it took some technical smarts to do this. And I had an X10 camera and it was wirelessly connected to my computer at home. And I had in effect a webcam but like this was when high speed internet didn't even exist. It was still dial-up and I had a 24/7 dial up connection at home which was like crazy. Nobody did that. But I had it because I had my business at home. So fun thing. I used my little camera thing. It was pointed at the spot where my dog hung out every day when I wasn't at home. It's this couch in front of the big picture window that looked out on our street. And my dog spent, I was certain, a lot of the day on that couch. And then I didn't have to guess anymore because I had my webcam and it took a picture every five minutes. At that point, you could set up your desktop on Windows to be a live URL. So, I set up my desktop to be that picture, that URL that I was hosting from home. That was the picture of my dog taken every five minutes. And then, everybody at my office was like, "Oh my God, the puppy cam!" And suddenly, everybody was doing this. People would come in and tell me what my dog was doing when I wasn't paying attention. "Oh, the mailman wants to come by," stuff like this because they could see if he was up and barking. And it was all just static shots. It was really funny. That was 20 years ago. Today of course, we can have live streaming views from our little ring devices on our front door and see anybody who's coming up to our front door. But yeah, we could do that 20 years ago. Now, what happened in between there? That X10 stuff. I got tired of maintaining it. So I just kind of eventually put it all away in a box. And when I moved five years ago, I was like, "Oh yeah, here's all this box of X10 stuff. Well, that'll go to electronics recycling." Anyway, the point being, maintaining all that stuff for yourself is fun for a while and then it's just like, "Please, I don't want to do this. Please, I do not want to have to maintain all these little devices and update them and all the rest of it." JANELLE: We've been talking a lot about how the industry has changed both from a technical perspective and also from kind of a human perspective. And I am particularly thinking about your comment about like anyone who's been in software engineer this long can make these predictions. And so I'm wondering how that translates to mentoring with people who are new to the industry? Why is that important to you? What kinds of things from this long background do you feel like it's important to pass on to them? How has your long background in this industry shaped the way that you do mentoring? LORI: How I do mentoring, as mentioned in my bio, I volunteer to teach absolute novices how to learn how to code. And that is very interesting. And honestly, I really love the Canada Learning Code setup because they have an instructor for the workshops but they also have mentors. And there is at least one mentor for every four learners in the class. And if anybody is running into problems as we go through the material, the mentors are there to help them out and see exactly what they're stumbling over and help them pass that. Now that, of course, is for absolute novices. I think in terms of things like people coming out of bootcamps because there's a lot of that right now, there's a certain percentage of those people who fail. I've watched that happen from afar where I was not in a position to be their mentor. There was some other mentor there. And you have to understand that the novices, the beginners need to sort of concentrate on one thing at a time. When we look at, for instance, Rails. Rails is just like, "Oh, it's easy." Well, it's easy for me. I've been a developer for years and years but I can totally see where people stumble over it because there's so many things that go into a Rails application. You need to know Ruby, you need to know HTML. You need to know CSS. You need to know a little bit about JavaScript. You need to know about databases. You need to know about SQL. All these things can come together and really confuse people who are just starting out because SQL does not have a lot in common with HTML. It's completely different skill sets. So if you want novices and beginners to succeed, you need to give them the opportunity to develop expertise in one of those skills at a time. If you have them constantly flipping back and forth, they're going to suffer from that context switching problem and that's not a good way to do any deep learning. So, I don't know. That's one of the things that I always like to tell people when mentoring, "Don't think that you got to know it all when you're starting because you're new and you have to learn." And every time I start on something new, I'm the novice and I have to learn and I have to be easier on myself about needing to learn these things. And sucking for a while at it, it's OK to suck. You just have to make sure that you recognize that you suck and work towards getting better. JAMEY: I've said this quote on the show before but my favorite TV show is Adventure Time and there's a quote from Adventure Time where he says, "Sucking at something is the first step to being sort of good at something." I think about that a lot and I particularly like that you're not even good at the end. You're only sort of good. That's very comforting to me. LORI: It is, because you have to go through all those steps. Here's another one of those opinions of mine. I think intermediate level developers sometimes really make the worst mentors because they have reached that point where they know it all and they haven't yet reached that point where they understand. They've really just begun to scratch the surface of knowing it all. And that's a stage that everybody has to go through. But when they're right at that stage, man they suck as mentors because they know it all, they think their mentee should be able to know all these things. And that's an identification they learned all those things a step at a time and they need to allow their mentees to also make those steps. JAMEY: I think I want to go all the way back and ask about the Dragon Ruby because we talked briefly about Dragon Ruby and how it's fun and how you talked about Galaga. But I think what my other understanding is that you have tutorials projectively. I guess what I want to ask about is how did you go from 'oh, I tried this cool new thing and I like it and it's fun' to 'I want to make these tutorials and help other people learn this cool new thing'. What was that step? How did you decide to do that? LORI: Ok. So my school evolved out of this desire I have to teach. When I was still doing Java stuff, I got involved in a group called Team B. Now, this was a long ways back. Back when Borland was still a company and still had all the cool development tools. Borland used to tap people who appeared in their newsgroups and would answer people's questions and were good at answering people's questions and were good at basically being mentors, asked them to join this group called Team B, which was an official group of people that Borland supported to help others use their products. They had their own support people and everything but this was actual experts in the community who were expert at using their products. And the advantage for being a member of Team B was that you got free products which at the time cost a lot of money. I mean, now, we're all used to having free everything. You know that wasn't always true, right? You know we used to pay like a thousand dollars for an IDE or more every year to get updates. So, it was cool to be a member of Team B and get free product. In fact, all their free products, it was awesome. They also would fly us down to their offices once a year and we got to meet with all of the team members of the products and basically sort of be an official group talking about what new things were coming, what new things would be handy, stuff like that. So, it was a fascinating group to be a member of. But that gave me my taste for being a mentor. So later on when I moved out of the Java world and into the Ruby world, I was like, "Maybe it'd be fun to teach people how to do Rails." So I created a workshop and started teaching Rails to people from other development backgrounds, people who were Java developers or people who were C# developers or basically any kind of developer. My workshop wasn't really focused on teaching people how to be a developer. It was teaching people how to use Rails effectively if they had not been in that world. That was fun. I enjoyed that. The part that I didn't really enjoy was the getting up in front of people and talking for two days straight. I found that utterly exhausting. While I enjoy the teaching part in helping people, I did not enjoy the exhaustion part. So instead, I eventually thought, "Well, maybe I can set up some sort of online thing where I can record courses and teach people that way." So that, in a nutshell, is where the WNDX School came from, was to create courses to teach people. And the focus of it being on Ruby Motion/Dragon Ruby is because that was the thing that fascinated me the most at the time that I started that. The school was doing mobile application development. So now, I have a number of courses there. But Amir came to me and asked me if I could create a tutorial for his new thing. So, Dragon Ruby Game Toolkit. I kind of was in the know before that was released. I knew what the big cool announcement was going to be. That is Ruby [Kaigi] Talk and that there is a version of Ruby now that you can use to create games. And you can use that to create games on Windows, on Mac, or on Linux. So, RubyMotion itself has been stuck in the Mac world for a long time. That is the only place you could develop with it was on a Mac. So, Dragon Ruby has stretched it beyond that. Although right now, it's focused with the game tool kit on 2D games. So I was like, "Yeah, I'll do a tutorial. That sounds like it'll be fun." But I started learning about how this toolkit was going to work and it was just like, "Yeah, this is very, very easy." I know we were talking earlier about mapping and how it helped the games. You know, there's very little of that actually needed when using the Dragon Ruby Game Toolkit because all of that kind of hard math stuff is built in. So you want to find out if two rectangles intersect, you just ask them. There's methods that you can just call, "Does this intersect the rectangle?" "Yes, it does." Or, "No, it doesn't." So creating a tutorial for that is an interesting process. Let's just say being not a gamer, I wanted to be developing something resembling a game. So, it's just the start of a game in the tutorial really, just the start. But it's enough of an introduction that I think people can see where to go, what the next steps are, what all the primitives are. Honestly, there are six primitives you can use to develop these games: labels, sprites, solids, lines, sounds, and you think what can I do with that? Amir built his entire popular game, A Dark Room, from scratch using Dragon Ruby Game Toolkit for the Nintendo Switch. So, you can build an entire game using the game toolkit. It has been proven. It's out there. It's released. And here's the really cool part. Because the Ruby [Kaigi] videos haven't been released yet, a lot of people haven't seen this. But Amir has shown some of the people in the monthly RubyMotion meetup, there's an Easter egg inside A Dark Room for Nintendo Switch. And if you find that Easter egg, you can open up a programming environment for Dragon Ruby inside the game. JAMEY: That's awesome. LORI: So you can connect a keyboard, a bluetooth keyboard, to your Nintendo Switch and you can create your own game. So like every kid right now who has a Nintendo Switch, all they need is a bluetooth keyboard and to buy A Dark Room and they can start game programming on their Nintendo Switch. JAMEY: I love this story. LORI: That's why we have the tutorial and that's why it's free is because I want to make sure that these kids will have some resources to go ahead and start creating their games on the Nintendo Switch. JAMEY: This is perfect for the next thing I was going to ask actually which was that like you keep saying that teaching is fun which I think is like a great thing to say and way to feel. But I also feel like in my experience, most people that do a lot of teaching, care about teaching in addition to being fun and maybe like you care a lot about it, like have big feelings of caring and like what you just said about how you want to make sure that kids can do this and have this tutorial is kind of leading me into that about you. LORI: Well yeah, just the Canada Learning Code, although it started out being called Ladies Learning Code and it was teaching women, which is awesome because we need more women. The fact is they evolved rather quickly into also teaching kids because frankly, we have more than one problem with diversity in the world of programming. It's not just that we don't have a lot of women, it's that we don't have enough people entering, enough diverse people entering. So there's kids learning code. And I've taught that workshop. I've taught the introduction to Ruby for kids. And at the end, you get to it. And you've taught them Ruby and it's just like, "What can they do now?" Rails is cool and all, but it's not really something that is going to be super fascinating for kids. So, what's that next step beyond learning the language? Well, game programming is a really great way of introducing kids to programming because you get a lot of instant feedback on what you're doing, and you're creating something especially with the Dragon Ruby stuff that you can share, easily share. And that's the other part that kids do this better than people. Kids are so wanting to show off to their friends. I mean, sure, there's a lot of big kids out there too that like to show off to their friends. But kids love to do that collaborative stuff. And that's what you can do with Dragon Ruby, you can share your application code in a single file and hand it off to somebody else who has Dragon Ruby and they can just run it, and it's super easy. That's what I see in the Dragon Ruby Game Toolkit is that I'm going to be able to get more kids excited about more programming and that makes me happy because I want to see more kids and more diverse people. JAMEY: My first programming class was a game programming class. I was an art major in college and I took a game programming class because it seemed fun and some people were like, "This is really frustrating." This isn't like normal art because I have to put semicolons in specific places. And some people were like, "No, this is really cool." And then that's how I kind of ended up deciding to continue learning programming. LORI: Yep, that's where a lot of people go. There's a lot of segues of people coming from diverse backgrounds but we have to make it easier. We have to make it friendlier. [Inaudible] the RubyMotion Dragon Ruby community, it's pretty much one of the friendliest communities. There's always a few people that are downers. But as a general rule, if you're a beginner coming in and you join the Motioneers Slack, that's where everybody hangs out, and come in and ask questions, there are people willing to answer your newbie questions and they aren't going to go, "Go read a manual," or stuff like that. That's not a fun experience for new people, being told to go read the manual. The other thing is when people have problems, there's also not a bunch of people saying you're stupid or whatever. They're being helpful and pointing out the resources that you have. And they're very collaborative, very friendly types. And they enjoy helping other people. So, that's why I really still love the Ruby Motioneer community. JAMEY: Sounds wonderful. JANELLE: At this point in the show, we usually try and wrap things up by giving kind of our final thoughts, thinking about all the things we talked about across the entire show, what things stood out to us, what are some kind of key takeaways that we want to take with us. And Lori, you get to go last here after you listen to our thoughts here, give your final thoughts on the show. JAMEY: I've been thinking a lot as we've been talking about kind of the concept of learning. We're talking about it earlier when we're talking about loving to learn and not being left behind in the industry. And I think that loving to learn is a trait that a lot of people have. But I think one of the problems is that it can also be scary to learn. I love to learn but I do think it can be also scary to learn. And so, I really, really liked what Lori was saying about mentoring and the idea that you don't have to know everything, which of course I know intellectually, but it's hard to kind of internalize sometimes. But the idea that like, I've been in this industry for so long and when I learn something new, I'm still starting at the beginning and learning something new. It's like a great comfort for me and makes it feel less scary to learn because you know everyone's doing it and everyone's on the same page. And I think to have people like you, Lori, that have been around for so long and have so much experience being willing to come out and say, "When I'm learning something new, I'm starting from the beginning. And it's hard for me too." It's really valuable. So, I really appreciate that. And I'm going to try to remember that while I'm learning. JANELLE: I've been thinking a lot about cultural evolution in these different communities and how they've kind of evolved. There's people out there that still love what they're doing, still having fun, still sharing the joy in creating and sharing with one another, and you see that collaborative shining childish joy that comes out of adults too. And then somewhere along the way, various things happen where we get all serious and we forget how to have fun and doing game programming. That's not practical. That has no practical utility fun. What's the point of fun? And I feel like there's this wisdom in children that we can really learn a lot from about this basic essence of connection and creation and art and what makes life full of joy. And I'm thinking about what if we can blend these worlds such that fun and doing useful things didn't have to be at odds with one another? What if we could have fun and get our work done at the same time? How awesome would that be? And maybe we could look at some of these things, look at some of the mountains of complexities of things, look at why we're making the choices and stuff in the world and bringing some of these simple fun things back into the serious stuffy corporate world. LORI: That's great. I love that you talk about bringing the fun back into the corporate world. I think that talking to both of you, I've sort of reconnected a bit with that corporate world. I've been very deliberately keeping myself out of the big corporate world. I did my time. I did my time in the large corporations. I worked for Shell for years and I worked on contract for companies like IBM, Halliburton, British Petroleum, stuff like that, really large corporations. And I don't think that it is strictly impossible to have fun in those settings. I mean, I had fun. It's been a very long time since I worked for Shell. I mean, I left there in 1993. You know what I'm going to be doing two weeks from Friday? I'm going to go play darts up in Calgary with all the people that I used to work with at Shell, because we still play darts together. That's a community that has lasted. I've been separate from that community for over 25 years but I still can go back and reconnect with them and play darts. Find me something that I think we have to bring to our jobs. Maybe Ruby is a fun thing and in the Java world, maybe you want to bring a little JRuby to your world. But that's my sort of reflection from this. The fun in our work is not necessarily something that other people do or the products that we use do. We have to do it for ourselves. We have to bring the fun to our job even if it's a very serious job. We have to bring the fun to the job ourselves. JANELLE: Bring the fun. I think that's a great way to wrap up the show. JAMEY: I agree. Thank you so much for coming on the show. It was really great chatting with you. We really appreciate your time and all your thoughts and just thanks so much. LORI: Well, I really enjoyed it. It was fun. JAMEY: And if any of our listeners want to keep having great conversations like this with us and our panelists and our community, if you donate to our Patreon at Patreon.com/GreaterThanCode any amount, you'll get an invite to our Slack community which is just a really great place.