-
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