 All right, so I don't have any slides because I didn't think that would be very keynote-y of me So what I have here is a essay Keynote essay for the hoedown and I'm going to post this online after I'm done so If I talk too fast or skip over a paragraph because I can't read my own typing you can find it I'm Chris Von Stroth. I'm one of the guys that did github. I also did air the blog in the past not so much anymore and When Jeremy asked me to come talk the first thing I said was yes. Hell. Yes. That was my reaction immediately But after emails had been exchanged and things were set in stone I took a few moments and thought what why why did he ask me to talk? What am I gonna say in a keynote? What am I supposed to say that's interesting? So I thought about past keynotes. I've seen and you know something about Ruby. I have to talk about Ruby probably The future the future is very keynote-y the future of something Ruby So I'm gonna get that part out of the way. I'm gonna talk about the future Ruby for a little bit Hmm-hmm in the future Ruby will become more popular There will be more implementations and there will be more programmers using it more machines with it installed by default and More people writing blogs about it. There will also be More people reading blogs about it. I know this is getting crazy, but you have to trust me because I'm keynoting There will be more Ruby gems and there will be more Ruby gem servers at least one Possibly two and it's conceivable that there will be more than three new books written about Ruby in the future Current books will be released in new editions with more pages and more in-depth information on new features The new Ruby is will be younger and the current Ruby is will be older Makes you think doesn't it some Ruby is will get dogs others cats and a few will remain dogless and catless Perhaps opting for children instead This is a common mistake in my experience children are much more expensive than either cats or dogs Second-hand experience of his websites will be created in Ruby using new futuristic versions of Frameworks like Ruby on Rails and Merb versions that we can barely comprehend like 3.0 and 1.0 respectively New web frameworks will be created with strange names and stranger maintainers We'll come to know why the lucky stiff as a less violent version of the Joker Matt's as a more controlled version of Too Faced Dr. Nick is the penguin. He actually he really loves fish and DHH as our Batman As for me, I am Iron Man I don't know if that works as well as I thought it would but New languages will come along of course and they will become popular People will continue to scorn Ruby calling it names like pythons pearl or Java for nerds and Even God forbid visual basic for the web Technically, however, I think that role was already filled by ASP versions one through three Ruby will be taught in college to young newbies eager to learn the ways of the master craftsman Most of the students will be drunk during these classes others hung over but all will be hungry for knowledge Behavior will drive us and macros will help define us. Well, some of us proc Lambda There will be more conferences people will speak at these conferences sometimes about Ruby, but sometimes not Speakers will wax philosophically about the glory days of small talk Without actually having written any small talk Others will show benchmarks for their new super fast Ruby VMs. No, it's not open source and no, you can't try it out yet Someone will bring up a 2.0 version number, but quickly be hushed suit people will surround us Test will be mock and mocks will be tested. Is that stubs one of the two Ruby will be fast and it will be slow patches will be released that break backwards compatibility and Security vulnerabilities will be handled in a less than satisfying manner History teaches us these things Big websites will track billions of visitors while little bogs will appear amazed than vanish Well, most importantly, Ruby will stay beautiful. We hope So that's the future. That was that was my keynotey part of the keynote But I want to I want to roll with the theme a little bit and talk about the past now So John von Neumann was one of the great mathematicians of the 20th century I don't know how people have heard of his name outside of a textbook in college or maybe even high school if you went to a really good high school He made contributions to cellular automata set theory functional analysis quantum mechanics ergodic theory continuous geometry economics and game theory computer science numerical analysis Explosive hydrodynamics and statistics that's straight from Wikipedia. I I ran some numbers I think I know about 60% of those are but Guy sounds very very smart He also helped invent most importantly to us the modern computer the ones we're using right now this Mac your iPhone all those things in The 40s von Neumann and a group of basically geniuses got together to build a computer. It wasn't the first computer Mind you. In fact computer is a term once used to describe individuals who computed computed numbers Charles Babbage was such a computer Frustrated by the fallibility of the human brain when dealing with massive amounts of numbers mistakes were very common for example William Shanks spent 15 years calculating 707 digits of Pi Tragically he made a mistake at year number 11 His next four years were spent computing in vain and only the first 527 digits were correct Anyway Babbage saw this going on and he envisioned a machine that could carry out precise instructions and deliver accurate information He saw during his time Machines all over being powered by steam doing physical labor and he thought that if machines could do physical labor Why not mental labor? What's what's the big difference? It's a guy's like Alan Turing got in on the action later on and came up with ideas Which would eventually produce machines such as eniac the first programmable digital computer Well eniac was a breakthrough von Neumann's architecture was different in an important way It stored both program instructions and user data in RAM Prior to von Neumann's ideas program instructions while modifiable was stored separately from data Like I said this idea called the von Neumann or stored program architecture is what we use today in our laptops and desktops and servers When you're writing your rubies and your text mates both your rubies and the text mates are stored together in RAM Having both programs instructions and data in memory together could be used to implement as a primitive example loops Branch instructions are modified as the loop iterates in the eniac and other computers where instructions and data are separate These sort of transportation's these sort of transformations were done by hand by programmers The first programmers by the way, they were all women Anyway in the second half of the 40s von Neumann and a small team got together at the Institute of Advanced Study and started working on a machine Based on his stored stored program architecture to be fair. It wasn't entirely his idea Standing on the shoulders of giants and all of that. He was just the one that got all the credit That's a Wikipedia says at least but What is that website ever said anything accurate? So the IAS where von Neumann's machine was built was basically a dorm near Princeton But not officially not officially Affiliated with Princeton it was started by some philanthropists who wanted scientists to stay there have their lodging and food paid for And get their science on big time Einstein was one of the first residents as were von Neumann Kurt Gödel and J mother F and Robert atomic bomb Oppenheimer That's his official name So this place had held historians scientists and engineers The engineers working with von Neumann on the IAS machine worked in the basement. Is that does that sound familiar? To this day the basement is still the server room at IAS So these guys working on the machine that summer were both programmers and engineers They would solder the parts themselves Program the programs and fix bugs in both hardware and software And actually they often had a hard time distinguishing between bugs in hardware and bugs and software Is the code wrong or is the machine wrong? Can you imagine that what a nightmare? They used about 2,300 radius shot caliber vacuum tubes for switches and memory stuff would break constantly They'd stay up until 4 or 5 a.m. Drinking tons of tea with tons of sugar In fact since this was during the war sugar was rationed and they were using more than their fair share The historians and other nerds in the IAS building were often very pissed off Again sounds like me my brother over Mountain Dew in high school, but All the engineers kept notebooks, of course building the machine blogs They'd write frustrated entries only to have massive elated breakthroughs the following day Their notes were being sent out to institutions all over the country So others could reproduce their work and create new machines based on the von Neumann architecture And then they finished June 10th 1952 the IAS machine was fully operational Others around the country built similar machines Though none of them had none of them had compatible instruction sets You couldn't yet write a portable program and the eye at IAS machine then carried out its intended purpose to help design hydrogen bombs The first hydrogen bomb was detonated on November 1st 1952. It's called Ivy Mike Detonated an island in the Anuac and a toac something ate all in the Pacific Ocean and was 450 times more powerful than the bomb dropped on Nagasaki So mathematicians built the first modern computer to aid them in applied mathematics and hydrodynamics These guys were true hackers working on what was a massive side project and in a way the ultimate yak shave Interestingly, this may also explain what everyone thinks you need to be great at math to be a programmer, but anyway, so today in the present There are a number of high-profile Ruby projects, which began as side projects Some of them may be called the bomb Rubinius now has five people working full-time on it, but began humbly in 2006 as Evan Phoenix's side project He wanted to build his own Ruby Rails itself was extracted from Basecamp, which was a website that 37 signals guys were doing on the side at the time They were a design firm and Hansen was a contractor No one really knows what why the lucky stiff does with his time But shoes is certainly moving full steam ahead with no mention of monetary gain Just for hack's sake to make things better for people wanting to put together GUIs in their favorite language for fun Merb start as a pasty a thin layer on top of mongrel to allow fast concurrent file uploads Developers developers at engine yard now actively work on the framework though I'm not entirely sure it can still fit in a single pasty or just So I think that you should always have a side project to Side projects give you an outlet provide a useful distraction Let you explore new ideas learn new concepts and generally give you the freedom to be Unaccountable you don't have to worry about your boss your co-workers or the damned commentators on reddit Just have some fun and treat yourself After I dropped out of college. I worked at a PHP shop doing trucking logistics applications Just think about that for a second We were a broker between independent truckers and big companies like Kmart Truckers would register on our website Say they're gonna be in Delaware on the 3rd of May and that they're heading to Denver Then get information on shipments along their chosen routes. They can then bet on the shipments or accept them all through our amazing website It was fairly complex application and two things are missing Version control and constants There was no version control so you'd have things like main to dot PHP and Compute radius of from shipment seven dot PHP laying around You'd also have version zero through six of the same file in the same directory Magic There were no constants and no configuration files So the source code was filled with magic numbers if you wanted to tweak any of our algorithms You had to find the code which did the computation and change some numbers by hand. Hopefully they were the correct numbers No tests obviously. I don't even know if I have to say that Naturally, the first thing I did was institutionalize subversion and I've apparently always been a champion of source control Though I didn't realize it until setting this story to paper The second thing I did was to start extracting the magic numbers into configuration files at the time It was a pretty common PHP idiom to use dot I and I files for configuration Most of what you need was supported and I'm pretty sure PHP came with a library Aka a shotgun blast of functions in the global namespace that could understand I and I files This this all worked okay, but once I started tinkering with rails I was blown away by YAML. It was so clean and so powerful There was sick the C extension written by why but it was just that a C extension I didn't know anything about loading C and PHP and even less about doing it on our versionless production servers So I set out to write a YAML parser in PHP on my own time as a nod to sick I called it spike SPY C which stood for a simple PHP YAML class And that's what it was because my first parser was stateful and I think did two passes for the reference pointer stuff YAML supports Didn't support all of YAML, but it supported most of it both dumping and loading the good parts. I Snuck it into our app and before long we're using YAML with great success at my company Naturally, I put the code up on source forage king of all online source code repositories My designer friend made a page and in the first month spike was a huge hit a massive hit I swear it must have had at least 70 70 downloads. That was a big deal Fast forward about nine months. I realized the trucking logistics business isn't the beacon of progress for congregation of forward-thinking individuals I had envisioned After all they hired me So I quit and began the process of re-enrolling in university this time I would major in computer science instead of English my path was set But then near the end of that summer a friend. I am me a close friend. I grew up with he was into dig and video games But was far from a programmer. Hey, he said do you know my sequel? He got the Capitalation right and everything Shit, I thought I Figured this conversation would be the modern-day equivalent of said friend asking why Ruby sites are always down real-time trolling Yeah, I know my sequel and you know PHP too, right? Yes, I was dubious about the direction this conversation was at it GameSpot is hiring you should apply. He knew my whole story of trucking wonderfulness So GameSpot He and I were both into video games during high school I worked at a local game stop and in college I worked at EB games in the mall I had all the modern systems and grew up with Atari NES Genesis all that So GameSpot.com was a site I had visited quite often while in high school in college By the way, notice how different the names GameSpot the website and GameStop the store are This would later cause my family endless amounts of confusion thinking I had moved to California to work retail The American dream so when you googled video games any new game that came out GameSpot was usually number one or number two in the results. Therefore. I knew it well Game Facts. That's FAQS was owned by the same company and probably the site. I use the most It's basically walk-throughs how-tos guides and Cheats lots of cheats Anyway, I had no idea where San Francisco was or what the guys at GameSpot were looking for but I applied I Created a brand new resume stayed up all night working on the color cover letter And by the time I was finished it was a page long and I thought pretty convincing My education degree at work English degree at work In it I promised to move to California the next day bringing nothing But my guitar and Xbox with me my family would miss me maybe but I was ready to leave And I was hungry to show the world what I could do ready to learn from the masters The phone interviews went well They liked that I was into Max and Ruby and I obviously got the job My first time ever stepping foot in California was when I flew out to find an apartment with my paw my dad My work experience. However, wasn't what got me the job I'm sure the cover letter had something to do with it But my short-lived career in trucking logistics was less than glamorous I really only had one thing to show GameSpot spike My code was freely available had been used in production and worked they could download it and play with it or check it out online Regardless of whether or not they thought it was good. They could tell it was clean and well thought out Maybe not but it had a website and 70 downloads, so I I Got the job at GameSpot in my mind the first big step in a path that brought me right here. Thanks to open-source side project Something I learned from that experience is that you don't need to make money from code to make money. Thanks to code I didn't make money off spike, but I made money. Thanks to spike. I also got my name in a book But that's that's totally different story That was pretty cool, and I thought unique, but then it happened again Well, I was working at GameSpot. I was doing more and more Ruby on the side This was 2005 or early 2005 I had an open-source Rails tumble log called Azenmoto a crappy FTP server called FTPD.rb Which I use as a way to learn about threading and a command line option parser DSL called choice For choice. I had a full test suite I wrote the thing to learn TDD and an RDoC generated home page on Rubyforge. This is the real deal. We're talking about So when seeing that GameSpot's parent company acquired Chowhound They decided to write the entire site in Rails Classic. They brought on two Rails programmers from Wayfaring.com and were looking for another. They found me I later found out that my RDoC site Ruby gem and test suite proved to the Wayfaring guys I was a real Ruby programmer. They wanted someone excited about the stuff and I certainly was So they threw a bunch of money in my face and convinced me to work on Chowhound Thanks again to open-source side projects This happened to me twice. So it can't be that uncommon Open-source can make wonderful things happen for you and not just financially It can make social things happen for you too at Chowhound. I met PJ Hyatt A github co-founder and co-author of air the blog So start a side project today right now while you're on your laptop not listening Who knows where it will take you If you don't have one right now, why not? What's keeping you from doing something on the side spending a little time working on it? Is it the lack of time? Do you not have any ideas? I think I can help you with both of those The first issue the time issue something we all struggle with I don't know how many of you read RSS But I'm going to challenge you to do something. This is going to be very keynoting for a second I challenge you to stop reading RSS turn it off stop using google reader net newswire or whatever it is that the kids are using these days It's not worth your time But what should you do instead? How will you ever figure out what's going on in the world? Well, if you use twitter try following the authors of your favorite blogs Read their tweets on the bus or in the bathroom Check ruby inside once a week and skim over the post just the titles Visit an aggregator like planet ruby on rails once a month And mainly let other people do the filtering for you use your time for other things You won't miss out on anything big Stuff like the google app engine or rabbinius running rails Or the killer speaker lineup at this year's ruby ohodon will find its way to you How can it not? I'm willing to bet a lot of the stuff in your rss reader is stuff you already knew or heard about before opening up your reader Personally, I used to check rss multiple times a day tab open refresh refresh refresh Now I don't use any reader and haven't since january 2008 So try it Another big time sink among programmers. I found our books Books on process and books on theory books like small talk best practice patterns Practices of an agile developer and even I dare say the pragmatic programmer They're not worth your time Instead listen to rain's talk talk to your friends or co-workers let other people filter the information for you and decide what you like The best way to learn about patterns idioms and best practices is to read open source code I had that written before rain said that by the way. He stole that from me See how other people are doing it. It's a great way to stay current and it's free I also wish someone had really told me that before I read head start design patterns the whole the whole thing So another another thing you can do to help you manage your time working on side projects Is what we call the jerry seinfeld getting things done method So every time you work on your side project mark a big x through that day on your calendar Eventually, you'll have a nice line of x's that can either be a row or a column Missing an x will be torture. I know how much we're all ocd around here It'll mess up your beautiful streak The goal is to maintain the streak even if you don't think you have any ideas for the day After all the best way to overcome writer's block is to write So all right, I just destroyed your time excuse now You have time to work on a side project and the motivation to do it consistently. That's the beauty of the x's You can devote at least one sunday a month to it At least But what's the idea this is actually this is actually the easy part Because you don't need a good idea just start doing something interesting Play with the new framework and ruby. I hear Sinatra is pretty hot these days Learn how to do gooey stuff with shoes Learn javascript like for real If you don't know what the var width or delete keywords are get a book and start working on some flashy effects Or download rhino or johnson and write some server side js. It's a really beautiful and misunderstood language Take some time to master your editor pick up the textmate book and dive in write a bundle If you've already got massive vimfu try out emacs Learn why people love it then use that information in your holy wars against them Write a web service something like cheat subtlety discuss twitchers or twit pick Tools someone can use to help make running a blog site or just coding simpler Simple sites that do one thing very well and surface their information with digestible tasty apis If you've been meaning to learn a new language start learning it But don't just pick up a book and read it start writing a program Learn objective c and coco write a little mac app to do something useful and then give it away for free Post the code on github put up a pledgey badge and accept donations profit Write rake in a lisp. It's a good way to learn about metal programming and how command line scripts work in a new language Write an rss parser and explore native data types in earlain Write a simple blog and learn about the web frameworks in haskell write scrabble and io Picking up some open gl along the way. It doesn't matter if people have done it before In fact, stop worrying so much about other people every time I've worked on a project I thought other people would love it was it was a massive flop But every time I worked on a project. I loved it worked If you're sitting in this room your taste is not as far off from those around you as you think Build something you love and others will love it too not everyone of course Alternatively do something hard the hardest thing you can think of in your language of choice Stretch the boundaries make ruby cry out in pain Install image magic Rewrite all of the standard library Write an objective c bridge something devilish flex your brain Work on your small project for a few Sundays declare it complete and then move on Learn another language or write something else in your new language pick up a new web framework or work on flashy effect number two Add concurrent task execution to your rake The more acclimated you get to this process the more creative your ideas will be it's the whole 10 percent inspiration 90 Percent perspiration thing and so far it's worked for me This after all is how github was started Tom and I had full-time gigs, but we'd get together on saturday have lunch then work on github We wanted a pretty and simple way to share git repositories Something we'd use something that would make it easier for us to share and work on open source Now we have free people working on the site full-time thousands of paying users and tens of thousands of repositories But there was no overnight eureka and it wasn't intentional. We didn't even start out making thinking working to make github a company I especially didn't just walk out of high school pick up a ruby book meet Tom and PJ then launch the site Before github came in chronological order spike asmodo myosm.org tumble log fdpd.rb choice air the blog access textile sheet access cash mofo subtlety cashfoo sexy migrations gibberish engine xconfig generator fixture scenarios builder sake ambition and face box And that's just the stuff I released The more side projects I had the more I felt the pain of maintaining open source code If you already have a job you love this doesn't exclude you you probably use day to day Many side projects from others you can also use your own side projects at your job From emacs configurations to simple web services. There are tons of things you can do to stretch your brain I had no intention of leaving chow ham when I wrote sheet. I just wanted to make it easier to look at commands I rarely used Things like twitpick or twixters have nothing to do with anyone's job They're just fun and make life on the internet a little bit more enjoyable Ruby on rails may have had a financial angle, but if there's money to be made in shoes I'm not sure I see it So my plea to you today is to start a side project scratch your own itch be creative Share something with the world or keep it to yourself Side projects are less masturbatory than reading rss Often more useful than mobile me More educational than the comments on reddit and usually more fun than listening to keynotes. Thank you