-
Not Synced
Hello
-
Not Synced
my name is Yukihiro Matsumoto
also known as Matz
-
Not Synced
it's nice to see a bigger crowd this year
-
Not Synced
in our first year in 2001
we had only 33 or so
-
Not Synced
and last year, maybe 50
-
Not Synced
Why are we here ?
-
Not Synced
we are here because Ruby is good enough for many of our tasks
-
Not Synced
so we do not have to talk about that
-
Not Synced
so I'm going to talk about
How Ruby Sucks
-
Not Synced
and how we can make it better
-
Not Synced
...
-
Not Synced
for exemple, it's slow and inconsistent
-
Not Synced
how can we fix these
-
Not Synced
with a major version change from 1.0 to 2.0
-
Not Synced
this is the opportunity to take one big step
-
Not Synced
and make big changes which may not be
backward-compatible
-
Not Synced
but will make Ruby better
-
Not Synced
to clarify, Ruby 2 is the next version of the Ruby language
and Rite is the VM for Ruby 2
-
Not Synced
the path we will take through Ruby 2
-
Not Synced
...
-
Not Synced
...
-
Not Synced
then in 1.9 we will work on the syntax changes
-
Not Synced
I do not know what these changes will be yet
-
Not Synced
but there will be experiments
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
thank you.
-
Not Synced
()
-
Not Synced
() sorry.
-
Not Synced
()
-
Not Synced
OK!
-
Not Synced
Here we are.
-
Not Synced
The first thing we do is called the rails command
-
Not Synced
to generate the skeleton of the application
-
Not Synced
so it generates a bunch of things,
a bunch of files
-
Not Synced
and on the next step, the very next step
-
Not Synced
it's starting the ruby server
-
Not Synced
so, seeing that everything works
-
Not Synced
you don't need prerequisites to this
-
Not Synced
except? that you have Ruby on Rails installed
-
Not Synced
(oh no!)
-
Not Synced
() sorry guys...
-
Not Synced
(laughs)
-
Not Synced
OK!
-
Not Synced
we're going to do this again
-
Not Synced
(laughs)
-
Not Synced
(more laughs)
-
Not Synced
anyway, ...
-
Not Synced
bye!
-
Not Synced
[_why]
-
Not Synced
to command? in Ruby
-
Not Synced
is really to learn
-
Not Synced
it stirs you inside
-
Not Synced
when I walk down the street and look into
people's eyes
-
Not Synced
I can see their excitement about learning Rails
-
Not Synced
you know?
-
Not Synced
I can see that they know
David Heinemeier Hansson
-
Not Synced
that they want to be him
-
Not Synced
that they want his ???
and his ways
-
Not Synced
there's rushing out the streets to get here
-
Not Synced
...and that's pretty cool
-
Not Synced
(laughs)
-
Not Synced
so one of the way I've been messing with Ruby
is with cartoons and stuff
-
Not Synced
and there's a science behind this,
it's incredibly thought out
-
Not Synced
I mean, wow...
foxes, you know
-
Not Synced
of all animals
-
Not Synced
these are the foxes that I use in the book
I'm working on
-
Not Synced
and
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
is there personality there ?
is there feeling ?
-
Not Synced
Is there humanism ?
-
Not Synced
Is there humanity in a technical manual ?
-
Not Synced
Not really.
there shouldn't be.
-
Not Synced
Their eyes should be blank, they shouldn't be staring
-
Not Synced
this is the one I like
-
Not Synced
...
-
Not Synced
...
-
Not Synced
and that's supposed to be sort of frustrating
-
Not Synced
..
-
Not Synced
...
-
Not Synced
...
-
Not Synced
[Bryan Liles]
-
Not Synced
Me, I'm going to talk about BDD with RSpec
-
Not Synced
but I like to test things around
-
Not Synced
so let's just talk about BDD
-
Not Synced
or really, let's just talk about testing
for us normal people
-
Not Synced
and the real thing I'm trying to get out to
everyone here is that
-
Not Synced
Test all the fucking time
-
Not Synced
(laughs)
-
Not Synced
so the bible says, "in the beginning"
-
Not Synced
and in the beginning there was, what ?
-
Not Synced
There was Perl !
(laughs)
-
Not Synced
Perl is what I knew
-
Not Synced
... Perl ... Java ?
-
Not Synced
..
-
Not Synced
...
-
Not Synced
so then, a couple of years ago
-
Not Synced
there was this little Danish guy
-
Not Synced
he looks like a cartoon character
-
Not Synced
came up with something call Ruby on Rails
-
Not Synced
and I can't use the logo, 'cause he says I can't
-
Not Synced
so, with Ruby on Rails
-
Not Synced
...
-
Not Synced
and I was still writing bad tests
-
Not Synced
..
-
Not Synced
...
-
Not Synced
some smart guys came up with RSpec
-
Not Synced
...
-
Not Synced
wow, this is hot
-
Not Synced
but I'm still writing brittle tests, with funky syntax
-
Not Synced
and it wasn't helping anyone
-
Not Synced
(laughs)
-
Not Synced
so I decided I wasn't ready to give up with RSpec
-
Not Synced
and I studied, and studied, and studied
-
Not Synced
...
-
Not Synced
...
-
Not Synced
I don't care if it hurts
-
Not Synced
write the tests first
-
Not Synced
...
-
Not Synced
...
-
Not Synced
test all the fucking time
-
Not Synced
(laughs)
-
Not Synced
[Aaron Patterson]
-
Not Synced
O-M-G
O-M-G
-
Not Synced
Happy thursday everybody!
-
Not Synced
(laughs)
-
Not Synced
Welcome to RubyConf 10
-
Not Synced
I love that it's Rubyconf X
-
Not Synced
because I think of it as the eXtreme RubyConf
-
Not Synced
(laughs)
-
Not Synced
...?
-
Not Synced
every time I give a talk, I'm actually very nervous
up here
-
Not Synced
and a friend a mine told me:
when you're upstage, just think
-
Not Synced
what would Freddy Mercury do ?
-
Not Synced
so I put this up here to remind myself
about that, to calm down
-
Not Synced
so, today we're going to look at
some tips and tricks
-
Not Synced
for improving performance in your Ruby code
-
Not Synced
by looking at things...?
-
Not Synced
to improve the performance of ARel
-
Not Synced
so how did I get started with this?
-
Not Synced
there's a feature I wanted to add to Rails
for a very long time
-
Not Synced
and that is prepared statement caching
-
Not Synced
...
-
Not Synced
...
-
Not Synced
a deeper understanding of ActiveRecord was required
-
Not Synced
...
-
Not Synced
...
-
Not Synced
and fixing bugs in ActiveRecord
-
Not Synced
...
-
Not Synced
...
-
Not Synced
and I thought to myself,
five times slower?
-
Not Synced
really, five times slower?
-
Not Synced
how is that possible?
(laughs)
-
Not Synced
it is possible
it really was five times slower
-
Not Synced
...
-
Not Synced
and I thought
what could possibly go wrong?
-
Not Synced
so, motivation
-
Not Synced
why do we care about speed?
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
it's very simple,
like this
-
Not Synced
(laughs)
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...?
-
Not Synced
really, I'm just trolling you
-
Not Synced
...
-
Not Synced
...
-
Not Synced
When should I make my code faster?
We need the answer to this
-
Not Synced
When it isn't fast enough
-
Not Synced
but then the question is :
what is fast enough?
-
Not Synced
Whenever I think about this, I think:
well, do people notice it?
-
Not Synced
and what are you comparing it to?
-
Not Synced
...
-
Not Synced
...
-
Not Synced
and that is subjective
-
Not Synced
and really, I'm telling you all these things
-
Not Synced
but I don't want you to believe it
-
Not Synced
I want you to think critically
-
Not Synced
and go out and look at this stuff
and analyse it for yourself
-
Not Synced
...
-
Not Synced
...
-
Not Synced
method calls, branching and looping
-
Not Synced
and you need to reduce objects
-
Not Synced
what I think is interesting, is that
for clean code
-
Not Synced
the things to reduce, are exactly the same
-
Not Synced
therefore
-
Not Synced
clean code equals performant code
-
Not Synced
(laughs)
-
Not Synced
...in conclusion
-
Not Synced
AKA the things I've learned
-
Not Synced
system impact
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
I learned,
when should I rewrite?
-
Not Synced
I see it like this
-
Not Synced
the earliest you should rewrite is when Ryan Davis says so
-
Not Synced
and the latest you should rewrite is when I say so
-
Not Synced
(laughs)
-
Not Synced
...
-
Not Synced
[Sandi Metz]
-
Not Synced
...?
-
Not Synced
...
-
Not Synced
brace yourself, because some of it is hard
-
Not Synced
everything will change
-
Not Synced
everything.
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
I know this is your future
because it is my task
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
the Internet is at the center of our lives
-
Not Synced
..
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
so there you go,
that's your future
-
Not Synced
...
-
Not Synced
those, unfortunately, are edge cases
-
Not Synced
this is your real fortune
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
you wouldn't ignore the inevitable
-
Not Synced
you'll be writing code for this right now
-
Not Synced
(laughs)
-
Not Synced
accepting the truth of this fortune
makes it clear what's important
-
Not Synced
the MVPs ...?
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
happiness
-
Not Synced
live as if you'll know you'll die
-
Not Synced
do. real. things
-
Not Synced
tell everyone you love them.
today
-
Not Synced
you might consider getting a little dog
(laughs)
-
Not Synced
Health
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
as a community
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
showing up in small ways makes a big difference
-
Not Synced
...
-
Not Synced
we're bigger than Rails and we're bigger than Ruby
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
from scrolls to codexes
all the way to composing drums
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
just a second, technical difficulties
(laughs)
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
-
Not Synced
(applause)
-
Not Synced
[Jim Weirich]
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
these things to mind
-
Not Synced
so I try not to use that word
-
Not Synced
so we're trying to talk instead about
flying robots
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
(laughs)
-
Not Synced
..
-
Not Synced
....
-
Not Synced
...
-
Not Synced
...
-
Not Synced
...
-
Not Synced
(drone flying)
-
Not Synced
so that was the argus library
controlling the drone
-
Not Synced
and totally not Carol's arm
(laughs)
-
Not Synced
ok so here's another program,
I'm going to have it take off
-
Not Synced
using a loop two times,
and making a sweep back and forth
-
Not Synced
(drone flying)
Take off...
-
Not Synced
loopy times,
swing back and forth
-
Not Synced
and land.
-
Not Synced
How about that !
two successful hardware demos !
-
Not Synced
(laughs)
-
Not Synced
(more laughs)
-
Not Synced
oh who cares...
-
Not Synced
[Carol] Jeremy,
Jeremy, Jeremy, Jeremy, Jeremy
-
Not Synced
[Jeremy] hold on, putting my clothes on
-
Not Synced
What?
-
Not Synced
Did you hear about this new conference
Keep Ruby Weird?
-
Not Synced
yeah, I've heard all about it
it sound fun!
-
Not Synced
OMG, we should submit something!
-
Not Synced
well, what do we like?
-
Not Synced
hmm... Conferences!
[Jeremy] Conferences!
-
Not Synced
(laughs)
-
Not Synced
but, how do we make that weird?
-
Not Synced
[Brenna] Puppets!
[All] Puppets!
-
Not Synced
but, do you think people will like it?
-
Not Synced
(applause)
-
Not Synced
alright I'm gonna stand up here for a second
-
Not Synced
there's this mic hanging around
-
Not Synced
so, a lot went wrong there
-
Not Synced
(laughs)
-
Not Synced
but I don't think anybody had more fun
-
Not Synced
than we did it
-
Not Synced
so I am up here on a stage, holding a puppet of myself
-
Not Synced
it's even wearing my earrings
-
Not Synced
I'm up here with two of my favorites people
who are still hiding down here
-
Not Synced
who are also holding puppets of themselves
-
Not Synced
but this is a amazing moment
and we are so grateful to everyone
-
Not Synced
that's made it possible
-
Not Synced
It's actually you, Brenna
that made this happen
-
Not Synced
for every hour of work I put it
she put in three
-
Not Synced
so please, everyone,
some thunderous applause
-
Not Synced
(thunderous applause)
-
Not Synced
sharing moments with people
is why we did this
-
Not Synced
some like this one are amazing
-
Not Synced
and most other are ordinary
-
Not Synced
...?
-
Not Synced
maybe those ordinary ones are pretty good
-
Not Synced
this is a sandy? set, we're doing real things
-
Not Synced
and it'll keep us coming back
-
Not Synced
to the keyboard and the frustration
-
Not Synced
and the endless planning meetings
-
Not Synced
and the ever-changing tech landscape
-
Not Synced
Node? will kill me
-
Not Synced
Jim Weirich passed away early this year,
as everybody knows
-
Not Synced
and, through putting on Steel City Ruby
-
Not Synced
with Carol and a bunch of other people
in Pittsburgh
-
Not Synced
I got some time with Jim that I wouldn't had otherwise
-
Not Synced
we shared a meal or two
-
Not Synced
we shared some jokes,
-
Not Synced
and one time we shared a song
Jim loved to play the ukulele
-
Not Synced
that was a pretty cool moment
in the hallway outside Steel City Ruby
-
Not Synced
three years ago
-
Not Synced
there's a lot we didn't share though
-
Not Synced
we didn't share code
-
Not Synced
we never shared ideas about code or
the projects we were working on
-
Not Synced
we never share a long cab ride
into a airport
-
Not Synced
or favorites places to get brunch
-
Not Synced
I never got to share all the weird shit I made with Rake
-
Not Synced
I guess what we're trying to say up here
is that
-
Not Synced
we want to share those moments with you
-
Not Synced
we don't want to miss another opportunity
to let someone know the impact
-
Not Synced
they'd have on our lives
-
Not Synced
maybe making a puppet that looks kinda like
Aaron Patterson
-
Not Synced
is a weird way to do it
but,
-
Not Synced
we're standing on the shoulder of giants
-
Not Synced
and many of them were pretty weird
-
Not Synced
so thank you again
-
Not Synced
for giving us a place to hang our hats
-
Not Synced
thank you for keeping your weird
-
Not Synced
thank you for optimizing for developer happiness
-
Not Synced
and for being nice because
Matz is nice
-
Not Synced
thank you for all the pictures of weird cats
-
Not Synced
thank you for all the terrible puns
-
Not Synced
and thank you, again, for never forgetting
to test all the fucking time
-
Not Synced
(applause)