Ruby everywhere

Preview:

DESCRIPTION

The keynote at RubyConf 2011 New Orleans

Citation preview

Powered by Rabbit 0.9.2

Ruby Everywhere

まつもと ゆきひろYukihiro "Matz" Matsumoto

@yukihiro_matz

Powered by Rabbit 0.9.2

 TPO 1/192

Powered by Rabbit 0.9.2

TPO

O=Occasion

2/192

Powered by Rabbit 0.9.2

Occasion

Keynote

3/192

Powered by Rabbit 0.9.2

Keynote

a speech, as at a political convention, that presents important issues, principles, policies, etc.

4/192

Powered by Rabbit 0.9.2

Keynote

Give me a break

5/192

Powered by Rabbit 0.9.2

Keynote

I am a mere programmer

6/192

Powered by Rabbit 0.9.2

a programmer

who inventeda language

7/192

Powered by Rabbit 0.9.2

 

a great language

8/192

Powered by Rabbit 0.9.2

 

accidentally

9/192

Powered by Rabbit 0.9.2

 

But that's lifeCe'st la vie

10/192

Powered by Rabbit 0.9.2

 

Let's start the keynote

11/192

Powered by Rabbit 0.9.2

Keynote

Good and Bad

12/192

Powered by Rabbit 0.9.2

Keynote: the good part

The first at the conference

I can enjoy rest of the conference

13/192

Powered by Rabbit 0.9.2

Keynote: the bad part

The first at the conference

I have less time to prepare

You have to endure

14/192

Powered by Rabbit 0.9.2

TPO

P=Place

15/192

Powered by Rabbit 0.9.2

Place

New Orleans

16/192

Powered by Rabbit 0.9.2

Place

松江Matsue

17/192

Powered by Rabbit 0.9.2

Matsue

My hometown

18/192

Powered by Rabbit 0.9.2

Place

Sister Cities

19/192

Powered by Rabbit 0.9.2

 

Any locals?

20/192

Powered by Rabbit 0.9.2

Place

Mayor Matsuura of Matsue City

21/192

Powered by Rabbit 0.9.2

 

Hi from him

22/192

Powered by Rabbit 0.9.2

TPO

T=Time

23/192

Powered by Rabbit 0.9.2

Time

2011

24/192

Powered by Rabbit 0.9.2

The first RubyConf was

Oct. 12-14 2001in Tampa, FL

25/192

Powered by Rabbit 0.9.2

So it's

11th RubyConf

26/192

Powered by Rabbit 0.9.2

 

First RubyConf in second decade

27/192

Powered by Rabbit 0.9.2

 

10th anniversary

28/192

Powered by Rabbit 0.9.2

 

Good chance to beat the world

29/192

Powered by Rabbit 0.9.2

 30/192

Powered by Rabbit 0.9.2

 

2011

31/192

Powered by Rabbit 0.9.2

New position

32/192

Powered by Rabbit 0.9.2

 

Chief Architect, Ruby

33/192

Powered by Rabbit 0.9.2

 

2010

34/192

Powered by Rabbit 0.9.2

 

Salesforce.com acquires Heroku.com

35/192

Powered by Rabbit 0.9.2

Marc Benioff

“Ruby is the language of Cloud 2”

36/192

Powered by Rabbit 0.9.2

 

6 months later

37/192

Powered by Rabbit 0.9.2

TOYOTA Friend

38/192

Powered by Rabbit 0.9.2

 

39/192

Powered by Rabbit 0.9.2

Marc Benioff

“Ruby is great!”

40/192

Powered by Rabbit 0.9.2

Marc Benioff

“I want to help Ruby!”

41/192

Powered by Rabbit 0.9.2

Marc Benioff

“as the language of cloud age”

42/192

Powered by Rabbit 0.9.2

Marc Benioff

“I want to HIRE YOU!”

43/192

Powered by Rabbit 0.9.2

 

What!?

44/192

Powered by Rabbit 0.9.2

 

45/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

Least Business-ish Title

46/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

I will keep working on Ruby core development

47/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

As I have done for long time

48/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

They don't ask me anything new

49/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

except attnending Dreamforce

50/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

I have been worked full time for long time

51/192

Powered by Rabbit 0.9.2

 

52/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

My financial situation has been improved

53/192

Powered by Rabbit 0.9.2

Chief Architect, Ruby

Hiring me do not accelerate development much

54/192

Powered by Rabbit 0.9.2

We have to improve

SFDC+Heroku want to accelerate Ruby development

55/192

Powered by Rabbit 0.9.2

We have to improve

So we are going to form a team

56/192

Powered by Rabbit 0.9.2

We have to improve

of full-time core committer(s)

57/192

Powered by Rabbit 0.9.2

Full-time core committer

Nobuyoshi Nakada (Nobu)

58/192

Powered by Rabbit 0.9.2

Full-time core committer

aka "Patch Monster"

59/192

Powered by Rabbit 0.9.2

Full-time core committer

PatchMon

60/192

Powered by Rabbit 0.9.2

Full-time core committer

Nobuyoshi Nakada (Nobu)

61/192

Powered by Rabbit 0.9.2

Number One Committer

62/192

Powered by Rabbit 0.9.2

Number One Committer

63/192

Powered by Rabbit 0.9.2

 

You can expect more patches from Nobu

64/192

Powered by Rabbit 0.9.2

Full-time Committers

More to come (if budget allows)

65/192

Powered by Rabbit 0.9.2

Full-time Committers

I welcome more companies to hire core committers

66/192

Powered by Rabbit 0.9.2

Full-time Committers

I have already contacted EnginYard

67/192

Powered by Rabbit 0.9.2

 68/192

Powered by Rabbit 0.9.2

 

2011

69/192

Powered by Rabbit 0.9.2

the Standard

We have been working on the standard for last three years

70/192

Powered by Rabbit 0.9.2

the Standard

JISJapan Industrial Standard

71/192

Powered by Rabbit 0.9.2

the Standard

JIS x3017

72/192

Powered by Rabbit 0.9.2

the Standard

ISO

73/192

Powered by Rabbit 0.9.2

the Standard

Vote: 20 vs 0

74/192

Powered by Rabbit 0.9.2

The Standard

The subset of Ruby

75/192

Powered by Rabbit 0.9.2

The Standard

1.8 and 1.9 compatible

76/192

Powered by Rabbit 0.9.2

The Standard

Platform independence

77/192

Powered by Rabbit 0.9.2

The Standard

No fork, no thread

78/192

Powered by Rabbit 0.9.2

The Standard

It's stll incomplete

79/192

Powered by Rabbit 0.9.2

The Standard

More versions to come

80/192

Powered by Rabbit 0.9.2

The Standard

Better coverage

81/192

Powered by Rabbit 0.9.2

The Standard

Will move to 1.9 (or 2.0)

82/192

Powered by Rabbit 0.9.2

The Standard

The reasons behind

83/192

Powered by Rabbit 0.9.2

The reasons behind

Business reliability

84/192

Powered by Rabbit 0.9.2

The reasons behind

Alternative implementations

85/192

Powered by Rabbit 0.9.2

 86/192

Powered by Rabbit 0.9.2

 

2011

87/192

Powered by Rabbit 0.9.2

 

The world has been taken over by machines

88/192

Powered by Rabbit 0.9.2

 

89/192

Powered by Rabbit 0.9.2

 

90/192

Powered by Rabbit 0.9.2

 

91/192

Powered by Rabbit 0.9.2

 

92/192

Powered by Rabbit 0.9.2

 

93/192

Powered by Rabbit 0.9.2

 

94/192

Powered by Rabbit 0.9.2

 

95/192

Powered by Rabbit 0.9.2

 

96/192

Powered by Rabbit 0.9.2

 

97/192

Powered by Rabbit 0.9.2

 

98/192

Powered by Rabbit 0.9.2

 

All driven by computers

99/192

Powered by Rabbit 0.9.2

 

Computers need software

100/192

Powered by Rabbit 0.9.2

 

Software ratio in systems increasing

101/192

Powered by Rabbit 0.9.2

 

Software should be written by us

102/192

Powered by Rabbit 0.9.2

 

in programming languages

103/192

Powered by Rabbit 0.9.2

 

There are numerous programming languages

104/192

Powered by Rabbit 0.9.2

 

But what we love most is..

105/192

Powered by Rabbit 0.9.2

 

Ruby

106/192

Powered by Rabbit 0.9.2

 

But what is Ruby?

107/192

Powered by Rabbit 0.9.2

 

Muiti-fold definition

108/192

Powered by Rabbit 0.9.2

 

Ruby the syntax

109/192

Powered by Rabbit 0.9.2

 

Ruby the philosophy

110/192

Powered by Rabbit 0.9.2

 

Ruby the library

111/192

Powered by Rabbit 0.9.2

 

Ruby the gems

112/192

Powered by Rabbit 0.9.2

 

Ruby the community

113/192

Powered by Rabbit 0.9.2

 

We'd like to help more developers

114/192

Powered by Rabbit 0.9.2

 

JRuby

115/192

Powered by Rabbit 0.9.2

 

Ruby for JVM platform

116/192

Powered by Rabbit 0.9.2

 

Ruby to reach Java world

117/192

Powered by Rabbit 0.9.2

 

Ruboto

118/192

Powered by Rabbit 0.9.2

 

JRuby on Android

119/192

Powered by Rabbit 0.9.2

 

Rhodes

120/192

Powered by Rabbit 0.9.2

 

Ruby for mobile phones

121/192

Powered by Rabbit 0.9.2

 

CRuby

122/192

Powered by Rabbit 0.9.2

 

Ruby 1.9.3

123/192

Powered by Rabbit 0.9.2

 

Ruby 1.9.3RC1

124/192

Powered by Rabbit 0.9.2

 

Yugui

125/192

Powered by Rabbit 0.9.2

 126/192

Powered by Rabbit 0.9.2

 

Keywords for the future

127/192

Powered by Rabbit 0.9.2

 

Cloud+Mobile

128/192

Powered by Rabbit 0.9.2

 

Cloud

129/192

Powered by Rabbit 0.9.2

 

130/192

Powered by Rabbit 0.9.2

 

131/192

Powered by Rabbit 0.9.2

 

132/192

Powered by Rabbit 0.9.2

 

Mobile

133/192

Powered by Rabbit 0.9.2

 

Small devices

134/192

Powered by Rabbit 0.9.2

 

Digital appliances

135/192

Powered by Rabbit 0.9.2

 

Mobile phones

136/192

Powered by Rabbit 0.9.2

 

Vehicle

137/192

Powered by Rabbit 0.9.2

 

Robots

138/192

Powered by Rabbit 0.9.2

 

I'd like to address these fields

139/192

Powered by Rabbit 0.9.2

 

As Lua does now

140/192

Powered by Rabbit 0.9.2

 

141/192

Powered by Rabbit 0.9.2

 

mruby

142/192

Powered by Rabbit 0.9.2

mruby

Matz'sembeddableminimal implementation ofRuby language

143/192

Powered by Rabbit 0.9.2

 

RiteVM as core

144/192

Powered by Rabbit 0.9.2

 

Minimal standard libraries

145/192

Powered by Rabbit 0.9.2

 

Embeddable C API

146/192

Powered by Rabbit 0.9.2

 

Incremental GC

147/192

Powered by Rabbit 0.9.2

 

Soft realtime

148/192

Powered by Rabbit 0.9.2

 

Parser to generate AST

149/192

Powered by Rabbit 0.9.2

 

Codegen to generate bytecode

150/192

Powered by Rabbit 0.9.2

 

RiteVM to run bytecode

151/192

Powered by Rabbit 0.9.2

 

32bit instructions

152/192

Powered by Rabbit 0.9.2

 

Instructions are serializable

153/192

Powered by Rabbit 0.9.2

 

to binary files

154/192

Powered by Rabbit 0.9.2

 

or C files

155/192

Powered by Rabbit 0.9.2

 

Entirely written in C99

156/192

Powered by Rabbit 0.9.2

 

for all imaginable platforms

157/192

Powered by Rabbit 0.9.2

 

Linux

158/192

Powered by Rabbit 0.9.2

 

Windows

159/192

Powered by Rabbit 0.9.2

 

MacOS

160/192

Powered by Rabbit 0.9.2

 

Android

161/192

Powered by Rabbit 0.9.2

 

iOS

162/192

Powered by Rabbit 0.9.2

 

VxWorks

163/192

Powered by Rabbit 0.9.2

 

ITRON

164/192

Powered by Rabbit 0.9.2

 

or even non OS platforms

165/192

Powered by Rabbit 0.9.2

 

As I explained last year

166/192

Powered by Rabbit 0.9.2

 

Difference?

167/192

Powered by Rabbit 0.9.2

 

Now it works!

168/192

Powered by Rabbit 0.9.2

 

Demo

169/192

Powered by Rabbit 0.9.2

Demo

Mandelbrot Set

170/192

Powered by Rabbit 0.9.2

 

171/192

Powered by Rabbit 0.9.2

 

mruby is young

172/192

Powered by Rabbit 0.9.2

 

it's small

173/192

Powered by Rabbit 0.9.2

 

it's weak

174/192

Powered by Rabbit 0.9.2

 

mruby has possibility

175/192

Powered by Rabbit 0.9.2

 

huge possibility

176/192

Powered by Rabbit 0.9.2

 

can you imagine?

177/192

Powered by Rabbit 0.9.2

 

Mobile device

178/192

Powered by Rabbit 0.9.2

 

Robots

179/192

Powered by Rabbit 0.9.2

 

Digital appliances

180/192

Powered by Rabbit 0.9.2

 

Games

181/192

Powered by Rabbit 0.9.2

 

Ruby instead of Lua

182/192

Powered by Rabbit 0.9.2

 

Server side

183/192

Powered by Rabbit 0.9.2

 

Ruby instead of Node.js

184/192

Powered by Rabbit 0.9.2

 

One big step to rule the world

185/192

Powered by Rabbit 0.9.2

 

No perfect languages

186/192

Powered by Rabbit 0.9.2

 

Even Ruby

187/192

Powered by Rabbit 0.9.2

 

We'd like to provide choices

188/192

Powered by Rabbit 0.9.2

 

Freedom to choose Ruby

189/192

Powered by Rabbit 0.9.2

 

And make the world happier

190/192

Powered by Rabbit 0.9.2

 

As we feel right now

191/192

Powered by Rabbit 0.9.2

 

Thank you

192/192