 So the next talk will be a little bit more interactive. I'll be walking around with Mike during the... So, you know, there's a Facebook thing, right? Remember before Facebook, there was the MySpace? Before the MySpace, there was a Friendster. You kids might not remember. So, Circa Friendster, there's this guy named Zay Frank. And he made a little video talking about Friendster and what social networks are and what friendship has been uncoiled down to. And he talks about, you know, the Germans and American soldiers that were on opposing sides taking the day off of killing each other for Christmas and having lunch or dinner or whatever. And he says, if you lined up all my friends and enemies and tell them to stand still and not say anything, they all look the same. He ends it by saying, in my version of Friendster, you would have to take me to the airport or at least loan me money before you could be in my social network. This guy here has taken me to the airport a couple of times. And, uh... So, we'll have to leave you friends there. This is Evan Phoenix. He started this thing called Rubinius a few years back. And, eventually, I'm working on that thing as well. And we've gone to a few Comic-Cons together. We've forged something and some flames of something. And he's going to talk about his dream job. Okay, so we're going to see if this works for me to just use this for notes since there's no supplies up here, so I don't want to get lost. Okay, so, I like to tell people when people ask me what I do, I usually just respond with, I have my dream job. And then sometimes I just leave it at that and let them think about what I do. Sometimes they go off and go, what does he do? He could do anything that I do. But that's good because a lot of people think if I had my dream job or if I was doing that, what would I do? And I think it's amazing to me that I get to say that, that I get to tell people that I have my dream job. So I thought what I would do here for this time with you is talk about two things. Oh, by the way, first off, ground rules. I don't like, I mean it's fine if a person's at the end, but your questions are usually pertinent to what I'm saying in the moment. And so I prefer if you raise your hand and we talk about your quandary in context rather than post-context. Everybody cool with that? All right, great. So if you have a question put your hand up. Shane will have a mic that you will bring around. Does that, does the fact that you say your dream job, like does that let you gain? Oh, wait. Please raise your question in the form of a question. Does the fact that you say, tell people that you have your dream job allow you to gauge what people think you are? I would say so. I would say there are certain people for which, okay, so let me explain, I'll explain to you what I do, not technically. So I'll assume that I'm talking to a room full of my grandma's. Yes, Charles, real fast, go ahead. How many grandmas do you have? Well, I only have one now, but I had two. But not a room full. Not a room full. A room full of grandmas. Oh, isn't it being my, okay. Anyway, so I work on a piece of software. So I write a piece of software and the answer is inevitably, oh, is it a website that I've heard of? And the answer is no. It's not, I write a piece of software that other developers use. At this point in the conversation, when I'm talking to my grandma, I get the glaze over luck and she's like, I got you some cookies. So for the point of this conversation, I'm actually going to sort of leave it largely at that. I started it as, so I started it really as a hobby and in just something for me to do, and we'll kind of get into that. And I, in 2007, got the opportunity to do this job, this hobby that I had started as my full-time job, all I do. So when I sit at home, I work from home, I work on this thing. So since 2007, I have just worked at home working on this particular project. And people have at the sidebar here, people have asked me, is it weird working at home? Is it hard to work at home by yourself all the time on this thing? To which I always respond, I have never worked on this project when it wasn't in my house. So when it was my hobby, when I had a day job, I worked on it at home in the evenings. In all of those cases, I have, in fact, when I go to an office and I work on this project, it's actually very weird for me because I've never, I've always done it in this capacity. So let me, so we'll get to that in a sec. So a little about myself. So I like to describe myself as a solid B-minus student. Great, I'm a spectacular B-minus student. I can get a B-minus without breaking a sweat. No problem. School is one of those things that I, my entire life I've always wished I was better at. The end of the semester comes and my term, my junior year of high school, my term papers do, and I'm starting at the night before, that kind of thing. I really wish I wasn't doing those things, but for better or for worse, and I started these notes last night for this talk. For better or for worse, I'm sort of resigned that that is the model that I work in when I'm working on these kinds of things. So in school, I was never exceptionally great, but I was not exceptionally bad. I wasn't the national merit scholar, but I was also not the people who were dropping out in their freshman year of high school. So somewhere in the middle. But I think what happened was that I got lucky and I found something that I loved to do and that was writing computer programs. I felt them really interesting and when I was younger, I didn't know why I felt them interesting. I just knew I had met some friend of mine in high school and he was kind of into this and I helped him out. And they seemed interesting. They seemed they were just something that I like to do. And I'd like to practice that with saying that this was in, so this is in high school. So I wasn't one of those programmers who, in second grade, I discovered programming basic and all of a sudden I was a whiz and I was selling programs out of my house for the fourth grade or something like that. In the second grade, I was riding my bike. In the fourth grade, I was probably skiing. I grew up in Montana. So there was not a lot of programming to be had and I was a normal kid until high school if you go on. So the big thing though, being okay in school, not great and having something that I love was that I had parents who pretty much trusted me. They knew that I was a fine kid, that I had good intentions at heart and they sort of trusted me. They said, just go off and do your thing. So in fact, when I was applying to college in high school, they told me, we don't want you applying in state or really any of the states joining Montana don't apply in any of those states. See how far away you can go from us. That's not because they didn't love me. That's because they did. They knew that if I was going to be something if I was going to get out there, I had to actually get out there. They wanted to stay really pushing me out of the nest as much as I can. And I only much later in life realized that that is a rare thing. So knowing that that is a rare thing, I have to think that contributed somewhat. So with my obvious start all the projects the night before work ethic, I got through college with a really awesome, spectacular B minus average. But what I found in college was not so much. School was that I had a bunch of free time that I didn't have previously because we were going to classes all the time and you had all these other people around and you got interested in them. And I found out I started doing what essentially has become my dream job, which is tinkering. So tinkering to me defined as and I wrote this down unstructured learning with no agenda. So if I found something that looked interesting whether it be like a computer program in this case, I would want to know how that worked. I had no agenda. I wouldn't really know why I was even looking or what I was going to do with it. Just sort of taking it apart, figuring out how it worked. I found that really interesting. And that is, I would just sort of do those. So if you can imagine, I'm supposed to be writing a geography paper and instead I'm like taking, like reading the source for the Linux kernel or something totally random that I should not, this is probably the worst use of time management effort. But that's what I really, I found that really interesting. So I graduated from college in 2002 and I would say the last day of college is probably in my top five days ever. In fact, let me put it to you this way. When I drive by a school and I see kids in school, I still think fuck yeah, I know school. Every day that I'm not in school is another great day. It just, it was not, it's not, yes. So I graduated from school. I moved to Seattle with my then girlfriend, now wife Abby. And so 2002, if you were in the tech industry and you remember, it was probably the worst time you could have picked to try and find a tech job. So the bubble had burst. No one was hiring. We moved up there. We both had cars in LA. I sold a car. We moved up to Seattle. And so we basically had the money from someone in my car that we were living off of. We basically did this all summer. Couldn't find a job. I was almost ready to just like, oh, I'm just going with the gap. I mean, I have no retail experience. I'm sure I'll be terrible. I cannot pick out a shirt. So I'm sure that they'll just love me at the gap. And so I was bored. I was bored as you would be if you were unemployed and sitting at home and frustrated with not getting a job. So I went to a randomly user group. And this was actually for this group called Seattle Wireless. And they were, the idea was they were going to try and put wireless things all over Seattle. It was one of those like, do people just hang out, meet and hang out and you kind of go like, hey, that would be cool. Why don't we do that? Oh, I don't know. Pass me the beer. That was sort of that kind of thing. You know, nothing really, very little came out of it. It was really just people kind of getting together. But at this particular meetup, there was one guy who was there who owned a company. And he was a local ISP in town. And I think I chatted with him briefly and we didn't really talk a lot and we left. And that was it. You know, just real brief interaction. And then I was so desperate for a job. I called, just cold called this guy. And I said, do you have a job? Do you have any, are you hiring at all? He said, well, you know, I kind of need something to do some kind of tech support stuff. He said, oh, that's fine. So I go up and meet with them. Great guy. I was the third person in this company. By the way, this company was not like a year old. This company was like five to six years old. So he had been doing basically the whole everything on his own. And so I had been hired. So I was one of the guys, so he had this crazy infrastructure of things that he had managed to just get by with just him and one other guy for the longest time. So I would do stuff like sit around and just wait to see, you know, like some days it would just be totally dead and I would basically just be tinkering. I would have plenty of time to like learn how his stuff was put together. So that was the best possible time for me because I had all of these resources available within this company for me to just kind of go like, hey, I wonder how this works? Hey, Mike, can I go back and check out how this works? Yeah, go ahead. I would just go back to, oh, okay, it's hooked up to this. And so slowly accumulating the knowledge. And then some days it would be just hellacious where I'd be like, I would have to answer the phone and be like, yes, I know your DSL is down. Well, have you rebooted your modem? I would just do that all day some days. So it lasted at that job for about a year and a half or so. And in 2004, I met a guy in the building I lived in and he said, hey, would you like to have lunch with me? I said, yeah, sure. So I showed up to have lunch with him. I got ambushed for a job interview. It was actually the strangest thing ever. I thought I was going to lunch and I actually, he didn't tell me before. We sat down at the table with him and two other guys and we were kind of talking. And they said like, so what do you want to be doing with your career? And I said, are we just having lunch? If you've ever gotten that cold question just from somebody you're trying to have lunch with, it was very quickly realized I was in a job interview. And I had gotten this job interview because I had told this guy that, oh yeah, I'm working for this company that does this wireless stuff. So I just sort of fell into this job interview, literally fell into a job interview and got this job. So I was going to be doing sort of sysadmin stuff again, more sort of tech support, internal tech support stuff. But I really wanted to be doing development because I really loved tinkering with the code and looking at it and figuring out how it worked and that kind of stuff. And so, again, being the sysadmin, the tech support person had downtime. I had plenty of downtime. So I would go and I would sit in on these desk meetings. And I would, I'm kind of a loud person. I don't hold my tongue really well. When the question is asked like, hey, how should we do this? I can't help myself, but actually say like, hey, have you considered X, Y, and Z? I just, I have to say that. So I've started to do that in the deaf means and in time they realized like, hey, this person truly a developer not sysadmin. So after about nine months of doing like windows sysadmin stuff I ended up becoming a developer. Yeah, that's a good time. And I was largely based on just my tinkering. Like, I had done the sysadmin stuff. I had done the sysadmin stuff. But all the things involved in this job were just random pieces of knowledge that accumulated just with tinkering with the code randomly or reading other things. So just kind of trying to keep up to date. So that job was great. And in the beginning, as all jobs are, the first month is always amazing. But after a little while it started to suck. So I started to sort of, again, it started to feel like school. So again, what wasn't I doing, you can guess. And I started to sort of tinker again. Like I would get my work done just enough and then I would kind of tinker with some other things. And in this time actually the precursor to the current, to Rubinius was born in that time, which is a project called Sydney. It doesn't matter. Just that it exists for this conversation is sufficient. So that was also the year, so that was about 2005. So 2005 I heard that there was, I had knew that RubyConf exists. So RubyConf is a conference for Ruby programmers. So I decided I would just, they had an open top proposal thing and I was like, oh, they'll never accept this. And I'll talk about this thing that I've been tinkering with. Maybe they'll like it. So just out of the blue they accept. And so I'm flying down to San Diego to give what is essentially my first conference talk about this piece of software that I killed off a month after the conference. Were you a Ruby developer outside of Sydney at that point? So you who don't want to know was I a Ruby developer outside of Sydney at that point. We were doing Ruby at work at that point. This was, again, me being the kind of tinkerer person when I would get development tasks, I would be given sort of carte blanche, greenfield tasks. And so I started prototyping them in Ruby. And what ended up happening was they would get so far down the pipeline that other people would pick it up too and then the higher ups would be like, why are we introducing in this new language? Oh, it's already written in that. Let's just go ahead. I'm kind of like slipping in under the door. So Sydney, as a thing, turned into just pure knowledge because it was a total dead end. It was one of those things that was like, it was interesting. But after I got, it took me months to get to the point to figure out how it worked enough to get to the point where I actually wanted to change something and then I realized it wasn't even possible. So it was like a complete, I walked down this very long dead end road. And then I was like, oh, well, that was fun. You know, I know what all the sidewalk looks like all the way down here, right? So which was good. So that died off and I was, you know, I didn't pick up anything. I was just sort of trying to get my job done and then about that time I got married also. So that was taking up a lot of my time, my external time. So, and then as many nerds will aspire to and tinkers, I was on my honeymoon and I decided... So I'm on my honeymoon in Bali and I decide, you know what, I really, I got the urge. I got the urge to tinker with something. So I decided, I'll just, all that knowledge that I had accumulated in all that sidewalk I had watched while I was working on Sydney, I'll use that, apply that, I'll start over, I'll start fresh. And so I remember the, I remember the circumstance as well. I was just sitting in bed with a Balinese breeze playing over me and Ali was taking a nap. I was like, I'm going to start it right here. Here we go. So that's where Robinius is born right now. And again, it's just a thing I'm tinkering with. I don't really care if it's for anybody but myself. It's just something interesting, something to scratch a mental itch. So I keep working on it, just kind of, you know, banging on it. And of course as the job, the day job starts to suck, I spend more mental energy on the tinkering because that's more interesting to me. And the job goes kind of craters and I end up quitting on like December 31st. By the way, if you ever have the opportunity to quit a job like right at the end of the year, I totally suggest you do it. Great way to do it. So 2007, I quit a job without having anything lined up because I'm like, I'll just figure something out. I had met enough people at the previous job that I actually had some contacts lined up and I said, there's people who are doing some startups and so I just sort of jumped in with them and we were working in a guy's basement. And it was one of these sort of startups that was pretty vague. So I had some requirements they wanted to give me. I don't know how you, what you say is before a prototype but that was basically what I was tasked with building. And so, and the requirements were like, we would come in on, like on a Monday I was supposed to be building this and on a Tuesday I was supposed to be building something completely orthogonal to what I had been doing the next day. So it wasn't taxing mentally, so I was still sort of tinkering, working under Vinny's at the same time. So about this, so this is about, so now we're sort of up to around May of 2007. So we're living in Seattle and RailsConf was important that year and so I decided, oh well you know what, that'll be fun, it's right there, and actually we're going to go, no, if that was the year I went to, no, no, no, that was the previous year. So we decided we'd just drive down, we'd go to RailsConf, Shane was there and we would just just go to RailsConf, just hang out, I don't know, Shane, do we get tickets or do we just do a hallway track? Oh yeah, oh yeah, we got free tickets. So we were just, yeah, yeah, we were just taking people's bags and going in and that kind of thing. It was expensive, it was super expensive still, right? It was expensive as it was now. And at this point, during the conference, I'm not talking or anything like that, Tom's an engineer comes up and he says, hey, I've heard about this project, you're working on a project with some people within the company. We think it's actually a really cool project. Are you looking for work right now? And I said, actually I am this startup that I'm working at, it's about the crater and you know, I'm moving back to LA and I was just going to work for a job there, but if you want to hire me to do stuff, that'd be fine. Yeah, you can work on your project, that's fine, I think it's got some merit. So yeah, you can go ahead and work on it like 50% of the time and do sysadmin stuff 50% of the time. So I'm like, back doing this damn sysadmin shit. So, but I say that's fine, that sounds great. I get 50% of the time now to do tinkering, which let's be honest, I have been doing 50% of my time tinkering. I'll create a job out of that. So now I was going to start having a job. So I, so we do that. We moved back, Abby and I moved back to LA and I started working from home. When I first started working from home. Probably, I started doing the sysadmin 50% of the time, like sort of trading my time on them and it was actually great because I actually got to like, I got to wake up in the morning and I got to go, how do you work on a release all day today? I don't have to feel guilty for doing it. It was amazing. It was the most amazing feeling. And what would happen is I would get totally grossed because now I'm sort of like a kid in a candy store because this thing that I have to actually leader myself on, I can now just go hogwile. And so I'm supposed to be splitting my time on it but basically what would happen is I would sort of do like a poll week where I wouldn't, I completely ignore all sysadmin tax and I would just work on the video. And I was supposed to just be sort of helping them out with tickets and doing stuff. So it wasn't that big a deal. It wasn't like all the servers were up in flames during that week. Otherwise it would have been a completely different deal. And so what would happen, would kind of die for about a month and then every time I would come back from sort of being underwater sysadmin-wise, if you will, I would be completely lost because things were moving so fast. And so after about a month or two, I basically got the word, you know what, don't worry about the sysadmin stuff. Why don't you just work on Rubinius? Yeah. So now I had made it. So I had managed to start this project just kind of playing around and just sort of falling into all of these weird circumstances of meeting people and tinkering with this thing and having the knowledge and just kind of advancing the ball one step at a time. One step at a time. I had managed to one day be waking up and thinking, I can work on this thing, this hobby project I've had for a long time. I just work on it all day. And that's still what I do. I work on it every day. So it's one of those things that's, you know, how am I doing on time? That's good. All right. Cool. So the takeaway from this is, and this is actually great because a lot of people sort of hit on this topic throughout the day and I'm going to sort of put it in hopefully into some real concrete terms here, which is that thing that you're working on, a poem that you think nobody gives a shit about, someone probably cares about. And if you care enough about it and you keep working on it because you love to do it, just keep doing it. Keep working on it and there's a very good chance that someone else, if you can communicate with someone else, if you can go to user groups, if you can figure out who else is interested in those things, it's a very good chance that you will end up doing that thing that you love doing. You can do it for your job. You just have to be persistent and just keep plugging at it. So this next part is the part that is very rarely talked about because everyone talks about how do I get my dream job? But let me tell you that once you have it, there are some rules, there are some guidelines. It is very, just don't forget, it was your hobby and it is now your job. And it is still a J-O-B in the same way that all that crap before that sucked was a J-O-B, right? So you have to be careful because it's going to suck. Your project that previously had been all roses and kittens is now going to be a shit storm on a Tuesday. You're going to wake up and you're going to be like, I have to work on the stamping again. It will happen because it's just a natural progression of working on one thing all the time. So, here's some simple rules that I've used to keep myself from motivating it fresh. One, when you get demotivated with it and you're a tinkerer because that's how you got this job in the first place, don't pick up a new project. I cannot emphasize this enough. Because remember how you got into this position in the first place? It was because your other job sucked and you started putting all your mental energy into your tinkering. And if you pick up a new project, your mental energy will all go into your new tinkering thing and not into your hobby that you started that you love to do. Instead, go for a walk. Go walk the dog. Go play with the cat. Go do something else. Don't do something. Don't pick up a new project because you think that you're bored with the current one. You're fine with the current one. You just need to take a little break. Take a breather. When you come back the next day, maybe it's an hour later, maybe it's a day later, a lot of times you go like, oh, I'm a total idiot. This is super easy. Let me just go do this, that, and the other thing. Or, oh, now I'm really interested to actually solve this problem. So that's the first thing. So the second thing is sort of a similar kind of thing, which is diversions. Right? So Revidius is a very big piece of software. And so I think about it as tinkering within a very large piece of software. So if you think something is interesting, something is itching at you, you just stop what you're doing and do it. Right? So if I'm working on some really, just hairy bug that's just crazy, sometimes I'll just stop and I'll just go like, I'm not working on this for the rest of the week. I'm gonna work on something fun all week. So some examples. When you go to work on those fun things, they pay huge dividends sometimes. So the number one example I have is a thing that I have worked on for a total of probably, it has existed for since the beginning. So probably, well, this was about 2008. So whatever that is, three years. In those three years, I think I've worked on a total of one hour. So not one contiguous hour. I've worked on it five minutes here and five minutes here and five minutes here and five minutes here and five minutes, that kind of thing. But it is one of those things that people come up to me all the time and go, I love this feature of Rubinius. I worked on it. It was literally an itch to scratch. It was like, oh, this will take no time. I'll just go and do this little thing. Oh, yeah, that's much better. I go back to my other tasks and be like, I got a little mental recharge by doing this other fun thing by getting what is essentially an easy win. That easy win from doing that one thing now gets me motivated again to go back to the hard problem. And those little things, those little projects, those things that were hard or those things that were easy to do that seemed like, oh, it's just no rain or like, let's just go do it. If you are doing it because you feel like it's a problem, 100% of other people who are using your piece of software think it's a problem. They're just not telling you yet. And when they find this thing and they go like, oh, I never realized how bad it was until I found your feature and now it's amazing. What is this thing? Back traces. I mean, it doesn't really matter. It's all about the fact that it was a trivial, it was totally trivial. It was just one of those like itched a scratch, do it, be done with it, go on with life. But I get people who come to me and say like, I love Rubinius because I love the back traces. I'm like, oh, that's great. It's been an hour on that. What about the thing I spent a year on? You know, it's fine. It's fine. So I'll sort of, I'll see. Do you want me to go long or cut it? Go long. Well, I got to cut it. Okay. Okay, so we'll do this. I only got two more points. You've got this great, you've got this thing you've been tinkering with and hopefully you're going to have other people who want to work on it with you too. Don't hold on too tight. There's the tendency to feel like you have, this is your baby that you've been working on it for a long time. You know, you can remember all the time that you invented it sitting in Bali. Those are wondrous times. Those are all yours. Remember those times, right? And there'll be times where someone will come around and they'll say like, hey, I want to do X, Y, and Z. Don't hold on so tight that you can't see that someone else is enthused by it. Let them tinker. Even if the idea seems stupid, let them do it. If you think it's stupid, you should let them find out it's stupid. Let them go off. Let them waste their time. If they want to do it, right? That's the biggest single recommendation I can give for once you got how to interact with other people who want to participate with your project. I haven't written to my notes no is the nuclear option. When you tell someone no, you're really just sort of putting your foot on their neck, right? If you say like, well, I don't know yet. That gives them the door is open. I've gotten plenty of things where I have said like, I have thought to myself this seems like the stupidest idea I've ever heard of. And I would say like, I don't know, why don't you go try it out? They go try it out, they come back a week later and look at the thing and go like, this is amazing. Because they could not I could not get the idea communicated to me in the way just in spoken word. Once we're looking at that code, oh, it's amazing. That has happened multiple times. So, actually, I'm going to end there. So, thank you. So, it feels like there's a fine line between your rule number one and rule number two, which is so you care to elaborate. So rule number one was don't do the thing that you want to do. Don't go and take around something else. And rule number two was always find the thing to do. Right, so, okay. That's fine, that's a very good point. So the differentiating factor in those things is the relationship of the thing that you've sort of moved your mental energy to. If I decide to go and do an easy win within the scope of Rubinius, that is fine to me. Especially if it is a if it is not open-ended. Sometimes if it is open-ended I can just go off and tinker. But it's still within the confounds of the larger project. So I know that mentally I can still be thinking about what I should be working on or what needs to be worked on. It's not a complete departure. Oh, yeah, I mean look, we live on a slope that is just constantly rotating all the time. So, you know, would you say that example would be inventing two new programming languages? Probably, yeah. Yeah, I would say so. Anybody else? Alright, thanks guys. Woo!