Thank you for coming and Ruby Conf is always great and a keynote make me depressed (laughs) You know I'm a programmer I'm a language designer so you know, my main tasks should be is designing language a great language I admit that I did great things you know that influenced so many people all around the world including you guys so I'm pretty happy with it but still you know I'm not really a great presenter nor I'm very I'm not really good at english that always makes me nervous anyway, today I'm going to talk about the fantasy land ok this way fantasy land that is a place being away from reality the where the unicorn lives in Japanese it is called genjitsu-tohi which is escaping from reality my dictionary says that is escapism is that correct word or something so for example so the starting cleanup right before the deadline is kinda like escapism starting debuging mruby right before the keynote is escapism that is what I did so today I'm going to talk about oh excuse me two fantasy lands the first one is kinda like a distopia in 1990 I graduated from university I feel old I was hired by a software development company which does, which did some kind of enterprise software in that, that age the software development is totally different from now so we had some kind of three year project or something from the huge company or huge government department we had some kind of analysis for months or even years then we wrote some kind of very detailed documentation this abstract documentation the detailed documentation then we code which is the translation from natural language to computer language so the process was driven by waterfall process so the company's decision was very, very, very conservative so at that time I felt something was wrong but I couldn't explain why just because it was so natural everyone was doing it that way in software development back then so I couldn't explain why everyone was doing that it is quit difficult to tell what is wrong when everyone is doing bad things right so yea I couldn't imagine what was right and what was wrong so after more than 20 years of experience I was a pretty experienced programmer ah maybe now I understand, I now understand what was wrong we were wrong in software development that depends on some false assumptions we were depending on such false assumptions assumption number one we know what we make back then we believed we are knowing what we are going to make in reality we don't know what software is so software does not have any physical entity so it is not limited by physical law so it can be very, very easily complex so, for example, if I were a building architect so I design a building like this hotel so we need to think about, for example about weather, or the strengths of the concrete, or iron, or something, the building materials then the strength of the building itself can be calculated by physically, easily simulated but you know when we starting developing software it is easy, like "hello world" that's quite easy there is no room for bug but the software is getting bigger and bigger so it's quite difficult to understand say 10,000 lines of code but now days software is so huge like if I had a Prius here, it is an automobile, it has tons of lines of code, maybe hundreds of lines of code, tons of hundreds maybe millions of code so it's like, as a software developer, you can imagine how difficult to ensure no bugs in the millions of lines of code yeah I'm sure I cannot do that so, the software can be a most complex creation, maybe and no document but code can explain the details so the, we believe we knew what we were going to make but in reality, we didn't false assumption number two, which is we know what we want in reality, it's quite difficult to imagine you know, in a waterfall age I write a code (?? 00:07:27.16) with sophistication and I give that sophistication to our client then clients said, OK, then we started development a few weeks, few months, few years later the software was finished then I wrote if we wrote it to the client, then can you imagine what the client said? it's not what I wanted but, they said yes, this is OK but, afterwards, they said, this is not what I wanted even, I admit, I said OK but, you know, we couldn't imagine what the software appears in reality so, like a stupid boss says ?? (00:08:23.56) to the client yeah, I complained a lot I happened to complain so often, back then but one day, I asked my colleague to create some kind of software at that time I was so busy, so I I explained what I want to my colleague then he created the software, then back to me and I said, this is not what I wanted! (laughs) stupid me I said I don't know why we should make too maximize business value we couldn't, no, we couldn't understand what is gonna bring you success so we are stupid, too so, false assumption number three which is the situation will not be changed in reality, we don't know the future we're not prophets we have wrong forecasts so yeah, in this technology field, we have a lot of we're gonna have this technology, we're gonna have this, too we're gonna conquer the world, so most forecasts will be wrong so let's face it we don't know anything 20 years ago we should have admitted our ignorance, but we couldn't so instead, we ignored our ignorance so, when we know little, we have very few choices, so choice number one is a conservative strategy learn from the past so, this is very good strategy and the politicians often take conservative but it is pretty good unless factors don't change unfortunately not in the IT industry, so we change a lot, the situation will change drastically, day by day so, in our industry it's kind of like the quote from Red Queen in Alice in Wonderland "Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!" It's our situation, here probably, yeah it's our situation we have to run as fast as we can to be in the same place so, strategy number two is ostrich algorithm in the ostrich algorithm so when the sandstorm comes, ostrich dig in their head into sand and wait until the sandstorm ends so the, the ostrich strategy is ignore everything, and wait it is a good strategy only when situations will recover so sandstorms will end so, we will have the clear skies and we we can enjoy our climate again but, you know, in our industry that's not going to happen where the situation will change and change and change and not recover so we, we cannot go back to the main frames we can go back to the, you know, eighty, fifty years or something so we must keep forward, keep going forward so the ostrich algorithm is very good strategy in the past when the situation will recover so the, this strategy, this algorithm, is written in our instincts so we are so easy to choose that strategy but, otherwise, when the situation will not recover it's kind of like the living in the fantasy land so, going forward with false assumptions is kind of like living in the fantasy land so, ignoring reality we had two strategies conservative strategy and ostrich algorithm which strategy do we take? neither of them are good 20 years ago our goal was to create the software, somehow having computerized system is the power it is so powerful, the computer itself is so powerful, comparing to the human creation ??(00:14:05.13) so it has great power, so software development was pretty expensive back then the computers were expensive the network connection was expensive the failure never be allowed in that age so they needed to optimize, not to fail at the cost of satisfaction so I don't care you are satisfied our software or not but I can re-use some kind of the power of computers with that computerized system so everyone was dreaming we believed that the only way to create software we tried hard to believe that was the only way but 20 years later, now our goal is not really, not just create a software our goal is to create the great software you know, nowadays everyone has computer, everyone uses software so, mere possession is no longer the power everyone has computer, everyone has software so we're saved to differentiate, to have the power over others we need to create great software, we need great software we got to create great software, but how? of course we don't know we have made false assumptions admit our ignorance but, but there's good news, there's good news the computers are cheaper cloud computing is even cheaper a network connection is cheaper now and ubiquitous everyone has imagination even in this room software development is cheaper comparing to twenty-something years ago so, we can be more productive, more abstract and we now have better tools and a better language like Ruby and we have a lot of open source software so we can rely on that kind of software we can learn from that software so, old days, it is quite difficult to study from the real source source code ?? (00:16:41.91) if you would like to learn about the operating system so you cannot access to the source code of, say, Microsoft Windows or the ?? (00:17:00.68) or some other operating system you, you can access through Linux?? (00:17:08.34) or the very old version of Linux but not the real software but nowadays you can access the Linux a whole bunch of Linux code and you have tons of operating systems and that is used in reality and you can use some software in your system you can learn from that source code so it's much easier for us to learn and create the great software and we can now have the collaboration via internet it's, it's changed the game so, 20 years ago, soon after I graduated the university I was at the point I was working as a professional programmer in enterprise software I was prohibit to write email abroad, outside Japan only 20 years ago - not two hundred years ago so, yeah, I, when I was a university student I wrote some kind of software, free software it was distributed by, it was quite minor, you know client on top of ?? (00:18:32.73) and, I got to mail from some other guys, probably in the States I don't remember quite but I tried to reply, and soon after that I got error mail your company did not pay money to the internet connection international internet connection, I mean so, I forwarded that reply to my friend in the university the university pay that kind of bill so that he could receive the mail it was quite awkward corresponding, you know he wrote mail to me then I did not respond so that, the friend respond because of me or something like that but, you know, now we can connect to everyone all over the world so we can access through Japan, China, Moscow, everywhere so we can now collaborate over the internet so, that allows us to do some kind of social coding, so so, GitHub changed everything so these good things bring up the new fantasy land the new perspective so we can ignore gory detail of the hardware or the and the new operating system, for most of the cases we can stand on the shoulders of giants, so we can use the great huge software of the operating system, framework, language, the tools, editors so a lot of the things so we can do great things with very little effort, comparing to the past so we can do greater work than our real ability, real power so, I think the genius 20 years ago does not recur enough, is not strong enough they are almost fame ?? (00:21:05.97), the ability as a human, in genius but, now, we can rely, we can collaborate, we can collaborate over internet we can collaborate on top of open source software, free software, so we can do greater works than our past but that does not mean we are greater so the situation has changed we can have power, we can have more freedom we can have more joy in software so I remember that the, working on the enterprises software was not fun so, it's quite boring, so translating human sophistication in human language into the computer language was so boring you know, that sophistication once said that, OK, assign this value to this variable or something like that, so why these kind of genius don't write the code by themselves? it was quite boring when I was ?? (00:22:49.51) so now, we can do by ourselves, we can have joy in our programming it's kind of like engineers' heaven that's where we are, and that's why we are here but wait, it's still not real in reality is as conflict as past so, who maintains this fantasy land? in reality, we cannot just ignore mess, so we don't need something, so, we can ignore or just forget but something's got to maintain this kind of a mess so, it's, so somebody's got to work on that kind of mess garbage collectors no, that's not the garbage that you imagine for that kind of topic you can go to to the Koichi talk so, by the term garbage collector, I meant this (picture) and, we have to rely on this kind of people in our daily life even in our programming without them, we would become mess so welcome to the desert of reality we rely on garbage collectors so we'd better appreciate them we rely on a lot of garbage collectors who keep the fantasy land who created your favorite language? the garbage collector or, who created your favorite gems? gem creators, raise your hands you have to appreciate them (applause) thank you who created your favorite frameworks? who wrote your favorite books? book writers, raise your hand (applause) who created your opensource software, we have tons of open source software in and out our Ruby community so we have to appreciate them so appreciation and respect is the key, I believe the key to the open source community the key to the moving forward so open source community is kind of like a shark (laughs) we need to keep moving forward, or die (applause) so, we have to, and I would advise to you, keep moving forward so you have to run as fast as you can to stay in the same place and you have to run twice as fast as that to move forward so run fast, try often, fail early keep moving forward, yes, that is my message and in addition, appreciation is not enough so, we are not creative to the gem writers we are not creative to the language designer we are not creative to the open source software programmers so we became one so, take the red pill so, you can come join us if you are a programmer, that's fine, that's fine you're a programmer you take a great step to create something you know, the programmer is a creator so, you create software, then by your creation the world will be better, I hope, I really will hope the world will be better by your creation you programmers, you create soft ware, and you make the world better but, but you might still living in the fantasy land which is kept by the garbage collectors and if you're willing, I'm not forcing you if you're willing, you can be one of them you can be a garbage collector you don't want? but this garbage collector is much cleaner so, be a garbage collector, take part in keeping the fantasy land so this fantasy land, unlike the first one, which ignores everything so this fantasy land, we currently enjoy is our result of the effort of the long time maybe twenty, forty, fifty years of the great effort of the garbage collectors so, I, I invite you guys to take part in keeping the fantasy land and for example, so you can join the CRuby even in writing some reporting some issues the bug trackers or something like that so, once you know what we garbage collectors doing behind the CRuby you can take the, that session so, again, so I ask you to create a great fantasy land currently we enjoy, and it can be even greater with your effort so you can do as much, many things, so writing software on top of Ruby on Rails or the ?? (00:22:49.51) or something like that that will enrich the community and communicate with blogs, twitter and social net, social coding or even, participate in the community, like the GitHub is our friend you can do many things, submit bugs, write documents on the you know, have a presentation in the conference, you can or, write a small piece of software, write a part in the, submit a ?? (00:31:05.62) so, so many things you can do, but in any way create and try to keep a great fantasy land that we enjoy change the world so, I believe we've changed the world in better ways in the past, say, ten years, so a lot of people in this conference, in the past Ruby conferences so presented the great things, so now I expect even more great work will be introduced in this conference so do not be a just a listener do not be a passive receiver of information so you hear something in this conference, you learn something, take action change the world so, this is the key of the open source community this is the key of the Ruby community, so I know myself, I'm not a great programmer so, especially the Ruby commuters in the league knows I'm not a great programmer I create so many bugs but, but still, I could, I did great job that influenced the world and I respect myself by changing the world better so I believe you can do that too in someways so change the world thank you domo arigato