 Okay, this is writing the latest rails for charity. How many teachers do we have in the room tonight, today? One, how many people per program? All teachers, and this is teacher appreciation week, so thank you very much for being awesome teachers. Today's Wednesday, May 4th, may the 4th be with you. And there's something special that our team does every Wednesday, and we do what's called bad, and I emphasize bad, joke Wednesday. So I'm gonna start off the talk in tradition for my company and start off with a bad joke. And since it's May 4th, what do you call a Jedi? Or what do Jedi use to view PDF files? Adobe Juan Kenobi. Bad joke Wednesday. So be the change that you wanna see in the world. This is a powerful quote. It's even more powerful when you put this quote into action. And so here today I'm gonna try to hopefully motivate all of you to be the change. And hopefully, since you're such a small group, that you can be motivated to help others at RailsConf be the change. To change the world that you personally wanna see changed in the world today. So that's my goal for this talk. And I'm gonna start off kinda telling you how I personally am trying to be the change. And then I'm gonna go into how my company has enabled its developers to be the change. So how am I trying to be the change that I wanna see in the world today? It's skipping a slide, but the way I wanna see the world change today is I want to teach kids how to code. And it's not just teaching kids to code, it's giving every child the opportunity to program. A lot of us think, well, it depends on the kids. Some kids gravitate more towards computer programming. They're the gaming kids, right? And that's what we think of when we think of teaching kids how to code. We think of these specific group of kids. But what I wanna do is I wanna change the world today so that computer programming is a required class as young as kindergarten. This is how I wanna change the world personally. And for me, it's really important because no matter what a child's passion is, understanding how to use the computer as a tool gives them the edge that they need to be successful with their passion, what they want to do. Whatever profession they wanna get into. The computer and programming a computer will help them be that much more successful. And so this is my passion. This is how I wanna change the world. And this is my mission. And so, and I had a whole slide up there that showed me with a bunch of Coder Dojo kids and they were all, yay, we finished our code. It was awesome. So that's what we missed out there on. But that's essentially what I do on a regular basis. So I'm always looking for an opportunity to teach every kid, give every kid the opportunity to be introduced to programming a computer. And my motivation is what you're looking at right now is my children at Super Pi Day enjoying Pi Together. This is kind of a benefit of having a nerdy dad as you get all these like special little holidays. And they're actually really bummed that I'm not home for May 4th, but oh well, I'm here to celebrate that with all of you. But this is my motivation. And that's a really important thing in identifying how you wanna change the world is identify what motivates you. This is my oldest son and he is my inspiration. Back in 2012, this is a kid who's kind of your stereotypical programming kid. He came to me at about 10 years old asking me questions on how to solve algebra problems. He was reading algebra textbooks for fun because he loves to learn. And when he came to me with that, I was pretty shocked. And so I instantly was like, dude, you are gonna be an awesome programmer. I can totally see this. So I sat down with him and introduced him to computer programming. And I did that with the only thing I knew was I was like a Ruby programmer. So, and I was like, okay, cool, let's look. How am I gonna teach my son how to code? And so I went in and found Ruby for Kids. I don't know if you guys are familiar with that, but it's a really awesome platform for teaching kids how to code in Ruby. And he loved it. Like, just like I thought. He sat down, got into bugs. He became a programmer right before my very eyes. It was such a special moment for me because he experienced what all of us programmers experience and that is like the nasty bug that you can't figure out. He's banging his head in the keyboard. Dad, can you help me? And I'm looking at his code and I can't figure it out. I'm like, wait, let's go through this together. And we started analyzing the code. He figured it out on his own. And he did like all of us do, like when you figure out that bug you've been beating your head on the wall for is he started jumping up and down. He's like, yeah, dad, we did it. This is awesome. And he's like running around or slapping files. I'm like, dude, you got the bug. You're a coder. And that's when it really started. I started to think about it because what was happening to me right there is I was bonding with my son. I wasn't teaching him to code. I was bonding with my son at a very special level. And it meant a lot to me. And I have two other kids. I'm like, I want the same thing for them. And not only that is he's learning to code. I didn't learn this to like, well, I did a little coding when I was 11, but I didn't really learn to code to the level he was until I was really late or high school and even college. And actually when I graduated, I wasn't a CS major. I was civil engineering. And so I was really excited about that. And so we started doing it more with Hackety Hack, Ruby Warrior, awesome game to play with kids, text-based or it's now graphical. And you get to code like the class to be the warrior and all the little features you want to add to your work to do different things is super fun. And so I was having like more and more bonding moments with my son. And then I wanted to have the same experience with my middle son. And he and my youngest were really into Minecraft. And so I introduced them to computercraft mod. And I don't know if you guys are familiar with that, but that was really exciting for me too. And it was actually a really funny story because I sat down with them, showed them how to craft a computer and they were like, oh, this is cool. They're already into Minecraft, so we're crafting. This is awesome. And then I click into the computer and we're on a terminal. And my middle son does like an LS command. And he's like, dad, check it out. I'm listening to all the directories. This is awesome. He's super excited. And I'm sitting there going, really? Like if I just brought up a terminal, he would have been like, what the heck is this, dad? This is boring. But because I was in computercraft, he loved it. And with him, he eventually kind of, got sick of Minecraft, my middle one, my younger one's still totally into it. But that's when I realized that programming isn't about teaching the kids about the specifics of programming, all the detailed commands. It's about understanding what interests them and teaching them through their interests. That's what's really important. And that's when I kind of discovered Scratch. This is a graphical programming language that really allows the kids to get to their interests as quick as possible without dealing with text-based things, without dealing with configuration and any headaches that you might have in setting up coding. And so that's when I really started working with Scratch and my middle son, because he wants to be a Broadway star. That's what he wants to do. So you're like, how am I gonna teach someone who wants to be a Broadway star, get excited about computer programming? Well, it's actually really easy. You just do everything and you create like Broadway skits in Scratch. And then instantly he's like, dude, this is totally cool. Like, I wanna do this and that. And he just starts coding without even realizing. He's coding. What is he doing? He's creating. And he's loving it. So I was really excited because I got to teach this to all my kids and I got really, really frustrated one day. And that was when my oldest son came home from school one day. And he said to me, dad, I'm not very good in math. I mean, this is the kid who was studying algebra textbooks. And he thinks he's terrible at math. He's like, I suck at math. Early crime. Couldn't believe it. He said, you are a math genius. What are you talking about? And that was the moment when I got super frustrated with not the teachers, the teachers are awesome. It's not the principles, the principles are awesome. It's the system and the curriculum that they're following right now. It prevents them from really focusing on encouraging the kids and making them better instead of discouraging and giving that feeling that without even knowing it, given the kids this discouraged feeling that they can't be good in something like math even though they're awesome. And it was just memorization of math facts that he didn't spend time doing. And that's what gave him the impression he was bad in math. Unfortunately, then I went to a parent teacher conference and man, did I lay into that teacher and my wife, poor wife, had to like pick up all the pieces from that and she was super embarrassed. And I learned a valuable lesson that it's not the teacher's fault. And so I, that's when my wife told me like, you have to be the change. You have to change things. Your job, don't put it on other people. I'm just a developer. How am I gonna change it? I don't know anything about teaching. I don't know anything about the system. I could just go and sit back in my cube with my, or my office with my kids and just pair with them. Like my kids are gonna have a great opportunity. Or I could try to change the world. I can make a difference. This is what I decided to do. But I figured I'd do that once I made a lot of money because teaching doesn't pay that well. So I was like, I'll wait. But I ran into a friend of mine and he told me, hey Joe, I'm teaching on Saturdays, computer science to a bunch of underprivileged kids in downtown San Jose. That sounds pretty cool actually. I'll go do that. He was so excited because he was teaching Excel and he didn't know what he was doing. And he's like, dude, you're a programmer. Like you could come and teach these kids. So I went and did that. And I spent what, like two weeks preparing for it. Got into the classroom at Sacred Heart and started teaching a room of 13 year olds how to cope with scratch. And probably a third of the room was really into it because this is the only chance they ever get to sit in front of a computer because they can't afford a computer and they live in a house with three other families. And the other two thirds of the classroom just didn't wanna be there. They didn't want anything to do with it. And I was trying to explain to them how scratch, the scratch language went from scratch all the way down to binary and was going through all the translations. It was like major turn off. And so I went home, went back to the next class and I was trying to rack my brain. I was like, do what I did with my middle son. Find out what it is they care about. So the next time I went in the classroom, I said, what do you guys care about? I went around and each child would tell me what they're excited about. And lo and behold, that's what they're excited about. One direction. That's easy. All I did was I put one direction just like that onto the scratch screen and we were able to create little bubbles on there and they were able to create a conversation with their favorite band members and they were so stoked and they're doing conditionals. If you say this, then do this and they're doing loops and I'm just like, holy crap, you guys are coding and they wouldn't leave. Like the first class, they couldn't wait to get out of there and this class, the parents, it was on the second story. They had to come up to the classroom, okay, it's time to go. They're like, no, we wanna stay. Mr. Dean's gonna upload the music. And so I upload the music, they wanted to stay, we played the music, it was really awesome. And then eventually the principal had to say, okay, the computer class is over, you gotta get out now. And so that was a really valuable lesson that I learned in being the change and being a teacher is that all the planning, you really have to change your plans and do what's best for the students. So that's my Sacred Heart story, but there's actually another really cool story that I'll share with you guys about Sacred Heart. And it really moved me. And this is the type of things you experience when you take these small steps to change the world. I had the opportunity on New Year's Day, one of the high schools dumped all their old computers and a friend of mine called me up and said, dude, there's a bunch of computers outside of the high school and they're just gonna go to garbage. Do you want me to get them? I said, definitely, get them all in my garage. And then people, like actually a friend of mine from work came over and we all got into the garage and we started to build up these machines and fix them up for the kids. And so on the final day of the final exam, I had the kids demonstrate to me their final project and to the principal and to their parents. And at the end of this, it was like the greatest feeling, one of the greatest feelings of my life is at the end, I got to be like Oprah. And I was like, okay, congratulations. You all get to take those computers home for years. You can go home and code now at any time. I had kids hugging me, parents crying. It was the most moving experience that I've ever experienced. It was awesome. And that's the feeling that you guys get when you're being the change. So then I got addicted and I started up and found it, one of the founders for Koderdojo and Silicon Valley and I teach kids every month how to code. And I do coding clubs after my son's school, still fighting to make it part of the curriculum at their school. I teach robotics during the robotics season, during fall season at school. So I teach kids how to code through robotics. I also teach Boy Scouts. And I am the chapter lead of Little Bits, which is really cool electronics components that you like snap together, kind of like Legos. And it has an Arduino bit so you can code these robotic components. And that's super fun. The kids and I coded like an Asteroids controller and we played Asteroids. And now with Little Bits being the chapter lead, I do meetings with other educators across the world, different countries. And I'm being the change in the world. So my little acts there are having a huge impact across the entire world. I'm just a developer. That's all I am. And I have a passion to change something. And I took that step and it's completely transforming my life and other people's lives. Just got to take action and do it now. All right, that's like the halfway point. And one more joke for you guys. What do you call a fight between two film actors? Star Wars. Bad joke Wednesday. No. So I work at this awesome company called onsite.com. Don't worry, I'm not doing like the big recruiting pitch here but pretty much a lot of my colleagues are here in the front row and I really appreciate shout out to them. They've heard this talk like I think six times and they're still here listening to it again. So thank you guys for that. And it's just an awesome culture. And one of the things that's really neat is we started sending folks out to RailsConf about four or five years ago and it really inspired the company to start up its own internal conference. And the motivation behind starting up this conference was really developer happiness. This conference is called DashCon and we've done it three years now. And it's called DashCon because our URL is ondashsite.com, which is the worst thing you can do in a URL is put a dash in it. That's terrible. Like internet one-on-one, don't pick a domain name with a dash in it, but we're on site. So we own the mistake. We are DashCon, you know. So it's a really fun time for all of us because we learned from RailsConf that it's a special feeling we get when we come together and we share our technical skills, we share what, you know, learning new things. It's just really awesome. And so now we do this as a team and the company allows us to take a whole week off of work, the entire engineering group, QA, IT, all the developers, everyone. And we all get in a room and we talk about anything that we want, whatever our passion is, and we share it with each other. Phenomenal bonding moment, phenomenal. And the productivity you get out of that is amazing. I don't even think I need to explain it, it's obvious. And this year we did something really special where we decided to do a hackathon for charity. We're really excited about it because what an awesome way to do team building between a bunch of engineers is to do a hackathon for charity. Now it's not the hackathon in the traditional sense. It's not the hackathon where we're competing against each other to see if you can come up with the best product. It's really identifying core charities that we think we can make a difference in and we all get in a room and focus on delivering a successful technical solution for this charity to help them with their mission. Now, I'm gonna warn everyone right now that these charities are very sensitive topics and their missions are phenomenal in what they're doing. So I'm gonna explain what these charities are right now. First charity we looked at was the Housing Industry Foundation and what we did for them was provided a way for them to manage their grants and what they do is they provide grants to people that cannot afford to pay their rent and so they're gonna become homeless. They cannot afford to make that bill so they're gonna become homeless. It's because of an unfortunate circumstance that came up in their life. Life is cruel. There's no second chance. If you can't pay your rent, you get a three day pay or quit put on your door and if you can't make up that, I'm sorry, you're out on the street and you've got a black mark. You can't pay rent. Who's gonna want you to live in their complex? It's really sad and HIF, what they do is they help and give them another opportunity so that, and they just give them a grant, they give them the money so that they can pay the rent. And that's pretty awesome. That's a killer mission. And we as a development team were able to help them and that was a big match for us because they were excited about it. We were excited about it. We saw something that we thought we could definitely deliver to them to help them with their mission. So another charity that we looked at was in the city of San Francisco and they are creating like a database for low income housing so you can search if you can't afford the houses in San Francisco or apartments in San Francisco, you can search through this database that they wanted to create and you can find out what you can afford. And that really wasn't a match for us in terms of what we were trying to accomplish and it's primarily because they had a lot of help and support and with Google, they had a lot of support with Facebook and it was just too complicated for us to kind of inject ourselves into that complexity. So beware when you're searching for these charities that you wanna do a hackathon for or that you wanna start a meetup on, make sure it's a match with what you're trying to accomplish. Now this next charity, one of our, so those were the two charities we kinda looked at and we were like, okay, well we got one and another developer on the team came to us and said, hey, there's another charity that means a lot to me and I wanna be the change. It's pretty awesome because he came to us with this charity called Grateful Garments and that picture says it all. It helps those that have been sexually assaulted and what happens today before this charity was they would leave the police station or the hospital in the gown on the right. What this charity does is it gives them clothing so that they can leave with a sense of dignity, whatever dignity is left and that touched the entire development team when he brought that forward and we all were like, yes, we wanna take that on too. We wanna help them. So we started up a product called Stockade as part of our hackathon as well. So now it's time for us to plan this out, right? How the heck are we gonna do this hackathon for these charities? And the key thing in that whole process and the whole process of planning is meeting with the charities, understanding what their needs are, understanding their existing technology stack, understanding how they do things today, what their processes are, what their mission is. We didn't have the opportunity to actually volunteer and work with them on these charities, like in the field, like actually going through the inventory of clothing or helping them fill out grants. But if you can do that, that's even better because you'll understand their business process and you'll understand how you can help. And let's face it, with our skill set, we're superheroes to them. So we really should share our talents with these charities that are trying to do good in the world and then we can be the change. You also should set up your environment, your stack, figure out what are you gonna use? Are you gonna use Rails 5? Are you gonna use Rails 4.2? Are you gonna use a different framework? Like what makes sense, right? And so it really allows you to start analyzing clean slate, no legacy code, kind of our dream, right? We wanna be able to build something from the ground up for them. And what we did was we first went in, we're like, awesome, we get to use Rails 5, for sure. So we dove in with Rails 5 and we were checking out, this is before the hackathon started, this is what I mean by planning, and we started exploring it like, how's the device gem gonna work? You know what, it doesn't, it doesn't. It's broken, there's bugs. So we instantly went back and said, you know what, we have to go back to a stable Rails environment. We have to respect the charities. So that's the key message there when you're planning this, is listen, respect the charity, and put together an environment for them that you have some experience. It's not free for you to learn every new technology in there, but I guarantee you, you will learn new things. So I'm gonna show you a little bit about where we're at with these, different technologies that we built for these charities, and they're still under development. So GrantZilla, they started with just like an access database of a bunch of fields, and the way it worked was they would manually fill out a form, and then they would manually type in, or the person filling out the grant would fill it all out, and then they would give it to the rep, and then the rep would get it, and they would manually fill in all of these fields, and then they would have a record and access the query again, so it was exhausting, totally exhausting. And you guys are Rails developers, like that's like a scaffold with bootstrap, that's easy, and they're like, oh my God, you guys are superheroes, you're the best. Yeah, we're being the change, it's awesome. And this is Grateful Garments, this is how they're doing it today before we do our stuff, this is their Excel spreadsheet inventory along the left column there, and the orders all the way across, like this is gonna keep going till I'll see, like I didn't even know Excel went out this far, it's ridiculous, and this is how they're managing it today, like so inefficient, and you think about it, and you're like, oh yeah, that's painful to use, but you know what happens, is they get the orders wrong, and when they get the orders wrong, they ship the wrong stuff, and when they ship the wrong stuff, it's costing them money. They're trying to do a good thing in the world, and it's painful, but they can't. It's primarily because of the technology that they're familiar with. They need a superhero to come in and be the change. See, all we have to LC, crazy, huh? So this is what we have now that we're in the process of building for them, I mean, it's night and day. Here's the orders, simple list, there's everything in the order, the inventory, this is responsive design, so they can walk around with their mobile app as they're walking through their warehouse to track the inventory, like, dude, I don't really even need to say much more. I mean, this is obvious, and you guys all know, this isn't hard, this is easy, but they're like, you guys are awesome, like, and they can't wait for it to be done, but you know, as always, we're engineers, and we're trying to build this thing up and give them this awesome, shiny car right from the beginning, and we're not gonna just give them like this small little MVP thing, we wanna like, over build this thing, so we in the hackathon, you know, silly us, we're like, we're gonna deliver this whole thing to you guys in three days, yes, and they even were like, really, you guys can do that, of course we can, we're badass, and yeah, we're still working on them, because we're fine tuning them, we're engineers, right? Oh, this isn't secure enough, we need to have the best security with SSL certificates, and this is, we can be more efficient here, and we're just like, we can use an awesome mailing tool to send, you know, help with your process, and blah, blah, blah, and we just go on and on and on, and we learned a really valuable lesson is don't over promise, set your expectations early, and start off with the skateboard, they're gonna be happy with that, just something to get them from point A to point B, and then iterate on it, but iterate on it as if you're building a minimum viable product, and oftentimes there's a misunderstanding with that, and a lot of people think it's the top way of doing it, but it's really the bottom way, you have to have something that works, you can't just throw a wheel at them and say like, yeah, good luck, this is cool, these are get commits from Stockade, and you can see on the top there during the hackathon that everyone is doing all their commits and all this activity is happening, and then when the hackathon ends, it kind of dies off, but the coolest thing about this graph that I love so much is look at Tech, he's not the highest in the beginning, but as the hackathon ends, he's being the change, he found his passion, he found his motivation, he found like his kids to code, and that's this Stockade, and now this is a guy, he told me like, this kid he chills down my spine when he told me this, he says, I used to go to work, come home, and play video games to relax, now when I go home, I'll be the change, and I code for charity, and that's so much more rewarding, so much more fun, and makes me so much more happy than relaxing and playing video games, and it's evident, I mean, look at his commits, it's awesome, and inspirational, and it's inspired a team to form around him, we finished the hackathon at our work, and it was like, okay, that's it, you know, don't do the hackathon during work hours anymore, these folks are doing it as you can see from the commits that are happening after the big spike in the beginning, they're doing it at night, being the change, so yeah, so if you're like, yeah, that's cool, Joe, I don't have time for this, to, I got a lot going on in my life, and maybe one day when I have more time I can do this, well, you know what? You all made time for RailsConf, right? Why? Because you wanna be a better developer, right? I mean, we have a lot of stuff going on at work right now, but you're here, because you wanna be a better developer. Well, guess what? If you code for charity and you do this, it's gonna make your path to becoming a better developer that much straighter, because you're gonna learn how to, or simple, depending on the charity, business processes, and apply a technical solution to that. You're gonna learn when Rails 5 comes out and is stable, we're gonna learn how to migrate from 4.2 to 5. We're gonna be riding the latest Rails with all these awesome gems and trying it out with these charities. Again, be respectful. You don't want to just say, oh, cool, I wanna learn this thing, and I'm gonna add all this risk to this charity. No, it keeps you honest. And you're doing what you should do to become a better developer, and all that is stuff that Jeremy's talking on the keynote this morning. He was saying all these cool things about a team, and you're like, oh, that's not my team, I don't have that. Well, guess what, you can have it right now. If you just be the change, and you code for charity, you can have that. I go in and say, oh, yeah, I already upgraded a whole app from 4.2 to 5, and this is what you don't wanna do. This is how you wanna do it. And everyone at your office is gonna be like, holy crap. Like, this guy's awesome. Like, oh, did you do that on your personal project? Yeah, I did, but it's actually really implemented for real and people are using it. Like, customers of mine, this charity, like, check it out. You've convinced everyone with that. You're the boss, you're the man. And it gets you closer to whatever your dream job is. That's personal, right? My dream job is very different from what your dream job is. Identify what your dream job is. Identify what charity you wanna be the change in, and that is really going to be a way to get there. Some of you may be thinking like, I'm too junior to do this, I'm not good enough. No, you're awesome. You're 10 times, 100 times better than these charity organizations. And you know what? I'm sure, I am positive you'll be able to motivate and encourage a senior engineer to help mentor you along the same mission to help that charity. Phenomenal opportunity for you as a junior engineer to become a better developer and to find your dream job. So let's review. These are the tips that we discovered in being the change from our hackathon. One, find your motivation. That's personal, you have to find yours. The way to do it, try one charity, then try another one, try another one, and you'll find yours, I promise. But don't give up, because once you find your motivation, you're gonna change the world. Explore many charities to identify the one that's for you. Just like I just said. Identify a charity advocate. You really have to identify someone in that charitable organization that will have the power to help you set up DNS. They're gonna understand the business processes so you know what technology and how to implement the technology. Someone you're gonna need to transition the technology over to so that they can use it and they can maintain it. So that's really important. Manage the expectations, like I said before. We did poor job in that, but doing that is really critical to the success. And like I said, just a little skateboard is all they really want and they're gonna be more than happy. And as we all know, as engineers, we're gonna build this up to be the awesome rocket ship. Get a team around it. Don't do it alone. So be that core committer on that charitable coding for charity and then have others committing with you. And that way, if life gets in the way, you can have someone help you out and you don't leave the charity high and dry. And just really define what completion is for them so they understand that. So what do you want to do to change the world? That is the question I put out to each one, every one of you. And if you don't have the answer to that, that's okay. I didn't at first start. You can start today. You can start right now, right after this talk. Go out to these charitable organizations that we did the hackathon for. Do a pull request. Help us out. Give to these charities. If it's education and teaching kids to code that is your passion, talk to me. I'll talk to you forever about that. This is like my passion. But I've been moved so much by Grant Zilla. I am also one of the core committers for that. So you can make a difference right now. Try it with these charities. And maybe it'll strike a chord with you and that becomes your passion. Maybe not. But at least it's a place for you to start. And if I can ask you all to do a favor and tweet this out to your community. Tweet this out to RailsConf. Get them on these URLs and get people to start helping these charities out because they're doing an awesome thing. There's also Ruby4Good that I don't know folks have heard of but that's also a really cool organization that you can start learning about other charities. And then just Google what motivates you. Google it. Find out what's out there and start looking into it. Start a meetup. Take action. Do it right now. Be the change. Thank you. I've been from onsite. We're always hiring as well. So thanks so much for all your time. Appreciate it.