 This talk is called Why I Ruby, but really, it's also about my first program, so I guess I could just emcee myself by letting you read that, but whatever, it's cool. Just a quick preface, the slides are a little text heavy, so hopefully it will be easy for you to follow along if you can't hear me way in the back, because, you know, microphones, how do they even work? So brief history of Liz, volume one, there is no volume two. When I was 12, I learned HTML and CSS, and this was a great time to learn HTML and CSS, because the entire internet was hideous, it was so bad, it was so ugly, and so there was nobody to impress. My website could look exactly like Yahoo, and nobody would notice, nobody would care. And that worked out really, really well for me, because there was no pressure to perform. I could do whatever I wanted, which really meant that I just used the blink tag, pretty much constantly, like my whole website was blink and marquee. That's cool, but so I made beautiful websites, not with blink, for about 10 plus years, but I did it alone by myself, and that was kind of sad, I didn't know anyone else who wrote code for 10 years, like boom, came with this, because I did not know any different. I was perfectly happy being by myself, but then I got a job at a tech company, and I started to learn more about technology, and it was doom. It was like terrible, confusing, exciting, wonderful doom, because I don't know if you have seen the internet, but what the fuck is the internet? I learned a lot about it. I didn't know a lot about how the internet worked, how applications worked, and once I learned that, it became so fascinating, it became amazing, but I couldn't do it alone, and so two and a half years ago, I started to learn to program. I picked Ruby. It was my first programming language. It's pretty cute. It's got a little Ruby logo, I love me some logos, but let's talk about why Ruby. Why did I pick Ruby when I could have picked seriously from hundreds of languages? There were people to help me when I was a beginner, and not only help me, but be successful at being a beginner, because it's really, really easy to fail and fall down and fall down and not get up when you're a beginner. I also picked Ruby because of the community. We do lots of small things in the community that end up having a really, really big impact, like conference organizers who host workshops to help people prepare proposals. That's a really, really small thing to do. It doesn't take very much of their time, but it has a huge impact on people who have never spoken before and can now share all of their ideas with you. So I wasn't alone anymore. I didn't want to be alone. I was a beginner, and I wanted friends and colleagues. I didn't have to be alone because of Ruby. Ruby did that for me, and it worked out because I'm here. I write Ruby for a living, and I'm talking to you at a Ruby conference, so I must have done something right. Ruby must have done something right. So let's shift gears for just a moment and talk about my very first program. When I mentioned this to Lauren before her talk, she was telling me about her first program and how she was talking about she rented on Heroku, and it's still there, and I'm like, oh, honey, I'm talking way below a web app. I'm talking about something with logic, something with state, something with very simple design requirements, and something that has a user interface but nothing too fancy. It's something that either works and does what it's supposed to or fails spectacularly. It just goes down in flames. So what was it? What was this thing that I made that was my first program? Who knows what this is? If you were a young adult in the 90s, you probably had a Tamagotchi. I did. And instead of hacking it to not make sound, I just whacked it against the sidewalk so it stopped beeping so I could take it to class so it wouldn't die. So that was my version of hacking in junior high school. So my first program was a puppy gotchy. I had just gotten a puppy. She was pretty cute. And the code is pretty cute, too. And if you don't believe me, let's just take a little tiny peek. It's got a belly. You could just picture that little puppy belly with some rubs. It's got a bladder. And, you know, unfortunately, it has bowels. And it sleeps. And it's your puppy. This is my puppy when she was a puppy. And I made this when I got her because it was something that I really understood. I understood puppies and how to deal with puppies. So the design requirement for my puppy gotchy was super simple. I had this down. I was exhausted because she had to go to the bathroom constantly, but I knew why. So it was more quey. Also, I don't know if you noticed, but her robot bow tie matches my robot skirt. But so I've got my puppy gotchy. How does it experience time? What does it mean for a puppy gotchy to have time? This is very existential for this little tiny thing that fits in your pocket. So don't bother trying to read this. It's pretty. Yeah, it's a thing that happens. This is a private method. And he's a sit in my puppy gotchy class. And the biggest code smell is the word puppy. How many times is puppy in there? A lot. I'm really sorry, Sandy. This is before I read your book or met you. There are five conditionals in there. That's a lot. Turns out puppies have lots of states. But it fails pretty spectacularly. Like, the puppy dies. All the time. It needs constant care, but that was just like a tom and gotchy. It was the same. I was sitting here taking logic and math programming or programming in math, trying to shove them in here with my puppy knowledge. Something I know and two things I don't know to make something cute and fluffy. And it failed because the dog died, but succeeded because that was exactly what my tom and gotchy did in the eighth grade all the time. Just dead constantly. It was really depressing. And so the TLDR kind of of that is we're always beginners. I was new at raising a puppy, but in terms of code, I was an expert at a puppy. So I had strengths in one area and weaknesses in another. And so if you think about it, when was the last time that you learned a new programming language or maybe a JavaScript framework and wrote something that was just completely foolish or super, super fun or exploded in your face? I do this all the time, but it's still really scary to be a beginner at anything. It's not easy to learn something new. And it's even worse when you're surrounded by really smart people. Programmers are so smart, and we brag about what we've made a lot that's kind of all open source is, is people bragging and sharing their stuff with other people. And we learn from these code books that have beautiful, perfect code, but we don't know how to get from our five conditional puppy passing time method to this beautiful, refactored class. We just can't visualize those steps. And so we don't have the tools as beginners to do these things. We're not quite there yet. And so you, as advanced programmers, as people who've been doing this for a long time, can help with this by sharing your adorable mistakes, your puppy gotchies, whatever your first program was. And it makes learning more fun for beginners, because they can see the fun things that you did. Because it's really hard when you're a beginner to think of something to do that's not like Fibonacci. Come on, that's so boring. Let's move on and make puppy gotchies. And sharing mistakes above all, let's beginners see their future. Let's them see what they could be doing in your past. They're actually learning from the thing that you did. Mistake or success, they're still learning. And Ruby is better together. We're a community. It is a language that thrives because we're a community. And so I have a small thing I would like you to do. This is your challenge. This is your requirement for the day. Find your first program. Find it. Dig it up. And it doesn't have to be the first thing you ever wrote, because for some people that could be a long time ago, it could be the first thing you wrote when you learned a new language, say, you were super inspired by Yehuda's talk and dabbled with Russ this morning, would you write? Let's see it. So tweet it and don't edit it and tag it with my first program. So all of the beginners that are on Twitter can see it and they can be inspired by the work that you've done and learn from the work that you've done and feel part of the community. So I did this last night and I actually didn't think this was on GitHub, but I found it. And these are all my programs from when I was learning to code. There's a lot of stuff in there. It's interesting. Answer for better or for worse, it's all there. And so when I talked to beginning programmers, I'm like, oh, yeah, I did some terrible shit when I was learning how to code. So bad. So bad. But they can see how I got from puppy passing time with the word puppy, and there are so many times, it's not a word anymore, to writing enormous Rails apps and refactoring legacy code. They can see that path when they can see the steps. So share your code, share your beginning code, help beginners to be awesome and really show them that Ruby is better together.