00:00:15.639
uh some going to talk about how we got
00:00:16.960
here uh the people who had a vision of
00:00:19.000
the future uh how they shaped the
00:00:20.720
computers we use today and how they
00:00:21.920
shaped Ruby uh and talk a little bit
00:00:24.640
about what Ruby's future might look
00:00:27.679
like uh we're here today
00:00:30.720
because uh Yuki hero Moto AKA matz I
00:00:34.480
thought I saw him in the room there he
00:00:35.640
is hey uh he was inspired to write a
00:00:38.640
programming language um and his goal was
00:00:40.879
programmer Happiness joy and
00:00:42.760
productivity he was influenced by Pearl
00:00:45.000
Small Talk eiel Ada and lisp and I'm G
00:00:48.160
to F Focus mostly on small talk because
00:00:50.079
it had the biggest influence on
00:00:52.760
Ruby uh my story actually starts in 1968
00:00:56.600
December 9th to be specific uh something
00:00:59.760
that called later called the mother of
00:01:01.359
all demos uh it was in San Francisco at
00:01:05.119
a joint computer conference uh hardware
00:01:07.640
and software there about 2,000 attendees
00:01:10.759
and the main presenter was Douglas
00:01:12.520
engelbart uh he worked at Stanford
00:01:14.640
Research Institute SRI uh on a project
00:01:18.119
called the augmented human intellect
00:01:20.320
Research Center The Arc which had
00:01:22.200
started in
00:01:24.159
1962 um so they showed their vision of
00:01:27.680
personal Computing uh they call it the
00:01:30.079
online system NLS and it was very
00:01:32.960
interactive and Computing at that time
00:01:35.000
was mostly on Main frames batch
00:01:37.240
processing and maybe some time sharing
00:01:39.360
but these were actually personal
00:01:41.200
workstations uh they introduced several
00:01:43.439
Innovations uh the mouse which was they
00:01:45.840
had invented in
00:01:47.479
1963 uh that thing on the left is a key
00:01:49.880
Corder uh you can actually hit any
00:01:52.200
combination of the five keys at a time
00:01:54.759
uh that one didn't uh turn out to be
00:01:57.000
very uh popular um and they used it
00:02:00.640
mostly for for like commands like
00:02:02.320
keyboard shortcut type of things um
00:02:05.159
networking uh they mentioned that
00:02:07.119
arpanet is coming next year probably um
00:02:11.000
uh video conference they they had
00:02:12.440
actually had video conferencing going on
00:02:14.800
and they had a full screen interactive
00:02:16.519
editor with copy and paste collaborative
00:02:19.200
editing that was pretty amazing um and a
00:02:22.640
shared screen there were even multiple
00:02:24.160
Mouse cursors uh between uh like 35
00:02:27.280
miles away two people communicating 35
00:02:29.120
miles away
00:02:30.360
uh and hyperlinks they were clicking all
00:02:31.920
through these hyperlinks and going back
00:02:33.239
and forth um I highly recommend watching
00:02:35.519
the video uh mother of all demos uh
00:02:38.080
engelbart will get you there uh there's
00:02:40.239
like some five minute summaries uh
00:02:42.280
there's the whole video is in three
00:02:44.239
parts they're each about half an
00:02:46.840
hour um so one person that was at the
00:02:49.440
mother of Al demos was Ellen K uh he had
00:02:52.120
just gotten his bachelor degree in math
00:02:54.040
in molecular biology uh he was at
00:02:56.760
graduate school at University of Utah
00:02:58.680
working on uh sketchpad which was the
00:03:01.200
first computer Graphics system um and
00:03:04.599
simulus 67 which was actually a little
00:03:06.799
bit
00:03:08.480
objectoriented so slightly be a few
00:03:10.920
months before that conference he had
00:03:13.120
this idea um and he drew this cartoon
00:03:16.720
actually in the fall of
00:03:18.360
1968 uh his original Innovation was the
00:03:20.879
idea of personal computers for children
00:03:23.239
and he was inspired by logo logo Turtle
00:03:25.799
Graphics which I guess already existed
00:03:27.799
probably in sketchpad um if you see
00:03:30.280
they've got he drew up the it's a tablet
00:03:33.360
with a keyboard and um so uh 1969 Xerox
00:03:39.319
opened the Palo Elta Research Center uh
00:03:41.840
Park um that's in Silicon Valley and
00:03:44.640
Alan Kade joined them in
00:03:46.959
1970 a lot of people from sri's
00:03:49.319
augumentation Research Center were there
00:03:51.799
uh a lot of people from iner Bart's lab
00:03:54.200
and park invented the laser printer
00:03:56.159
ethernet among other
00:03:58.239
things 19 72 at Park uh there was a
00:04:01.360
hallway discussion and they were
00:04:03.680
discussing how small could a
00:04:05.159
message-based language be and Alan K
00:04:08.079
said no more no more than a page of code
00:04:10.840
just like lisp right um and Dan Engles
00:04:14.200
was a teammate of his and he said prove
00:04:15.640
it so he was inspired by lisp and small
00:04:18.919
talk or small talk he was inspired by
00:04:21.359
lisp lisp and stimula and he wrote small
00:04:25.040
talk in two weeks and then Dan Eng Les
00:04:28.960
uh ran with it he later was joined by
00:04:30.800
Adele Goldberg and they had 80 releases
00:04:33.479
over the next eight years all internal
00:04:35.800
to park uh as main ideas were everything
00:04:39.320
is an
00:04:40.479
object uh objects communicate by sending
00:04:43.080
and receiving messages objects have
00:04:45.479
their own memory uh every object is an
00:04:48.000
instance of a class and classes hold
00:04:50.000
shared behavior for all its instances
00:04:52.600
pretty much what we know today is
00:04:54.000
objectoriented programming um it was
00:04:56.560
pretty primitive there's look at the
00:04:58.280
code here there's no real iction between
00:05:00.320
classes and instances um U by the way
00:05:03.880
this UTF representation is accurate
00:05:06.080
except for they didn't have color but
00:05:08.199
they did have smiley faces in their code
00:05:10.880
uh so pretty weird um and you can kind
00:05:14.680
of read some of this code like if you
00:05:16.880
replace two with deaf logo used two and
00:05:20.880
it kind of makes sense to to to make a
00:05:22.960
square do this um uh the the happy face
00:05:27.240
was called Smiley and it was an in of a
00:05:30.039
turtle class so for graphics uh it looks
00:05:32.919
a little lispy with all those
00:05:33.960
parentheses
00:05:35.919
there uh 1973 March 1st uh xerx
00:05:39.880
introduced the Aldo computer they called
00:05:42.400
the team called this the interim
00:05:43.759
dynabook uh it was the size of a small
00:05:46.039
refrigerator it cost $32,000 which would
00:05:49.000
be $200,000 today uh it had 9k of Ram uh
00:05:54.400
2 and 1 12 Meg removable hard drive uh
00:05:57.319
the monitor had black and white pixels
00:05:59.479
about about half a million of them uh
00:06:01.639
and it's in portrait in uh portrait
00:06:03.919
orientation it's Xerox they know paper
00:06:06.800
right that's how we use paper uh it had
00:06:09.599
a mouse uh it came with a key Corder but
00:06:12.400
as you see here not everyone was
00:06:13.720
interested in using that and it had a
00:06:15.680
gooey with overlapping Windows icons
00:06:18.720
menus pointers and it had the first
00:06:22.080
wizzywig editor what you see is what you
00:06:24.000
get it was called Bravo it was written
00:06:26.039
by Charles Simoni who later went on to
00:06:28.720
write Microsoft
00:06:32.440
uh so Dan Eng Les uh kept improving on
00:06:35.639
small talk and this was small talk 76 it
00:06:39.319
was two times 200 times faster than
00:06:41.280
small talk 72 it introduced blocks uh
00:06:44.759
and keyword arguments and it's starting
00:06:46.400
to look a little like modern Small
00:06:49.840
Talk um Small Talk 80 was the first
00:06:52.319
public release um and if you see there
00:06:55.199
I've got select collect and inject which
00:06:58.039
are methods that uh Ruby actually has
00:07:00.639
those except we call them uh I think we
00:07:03.039
call them select still uh collect would
00:07:05.520
be map and inject would be
00:07:08.680
reduced uh August 1981 B magazine had a
00:07:12.199
special issue dedicated to small talk it
00:07:14.800
had 13 articles in the issue about small
00:07:17.160
talk and object Ori programming uh quote
00:07:20.360
here uh a large number of the personal
00:07:22.440
computers of Tomorrow will be designed
00:07:24.400
with the knowledge gained from the
00:07:26.360
development of the alto but you probably
00:07:28.720
won't be able to buy
00:07:31.440
one uh the first Small Talk book out
00:07:33.879
came out in 1983 by Adele
00:07:36.840
Goldberg uh so Steve Jobs and apple
00:07:39.280
folks had visited Park in 1979 a couple
00:07:41.720
times uh they paid Xerox in Apple stock
00:07:45.000
options um jobs was enamored with the
00:07:48.680
gooey um he was shown Small Talk 76
00:07:52.360
networking and the mouse driven gooey
00:07:55.240
what you see is what you get he just
00:07:57.560
paid attention to the gooey he was just
00:07:58.960
blown away with it right um so that
00:08:02.080
inspired the Lisa and the Macintosh uh
00:08:04.759
jobs later said xerx could have owned
00:08:06.639
the entire computer industry they could
00:08:09.159
have been the IBM of the 90s they could
00:08:10.759
have been the Microsoft of the 90s um
00:08:13.680
and in 1984 Allan K joined
00:08:17.599
Apple uh 1991 Pearl 4 came out uh
00:08:21.479
written by Larry wall uh it was more
00:08:24.080
powerful scripting language than what
00:08:25.919
existed on Unix the Unix shell said and
00:08:28.440
a um usually if you're choosing a tool
00:08:30.960
you'll start with shell maybe and try
00:08:32.599
said then try a and like I need more
00:08:34.640
power so try Pearl um You' actually
00:08:37.479
started in 1987 but it didn't really
00:08:39.279
become popular until uh Pearl 4 um and
00:08:44.159
his design philosophy Larry Wall's
00:08:45.760
design philosophy was easy things should
00:08:47.399
be easy and hard things should be
00:08:48.920
possible um but they didn't have any
00:08:50.760
objects until Pearl 5 in
00:08:54.080
1994 uh to coincide with pearl 4 in 1991
00:08:57.920
they released the programming Pearl
00:08:59.760
camel book uh with Larry wall and
00:09:02.600
Randall Schwarz uh that is still a
00:09:04.920
popular book today I think it's still
00:09:06.519
O'Reilly's most popular
00:09:08.399
book so um when R MZ was thinking about
00:09:12.880
Ruby or creating his own programming
00:09:15.480
language um he thought Pur was a toy
00:09:18.120
language and he thought python he felt
00:09:21.360
like the object orientation was was kind
00:09:23.120
of bolted on and and I kind of agree
00:09:24.880
with him there uh so he wanted true
00:09:27.560
object orientation he wanted simple
00:09:30.079
syntax iterators closures exception
00:09:32.720
handling and garbage collection and it
00:09:34.920
didn't exist so he created
00:09:37.360
it um in February of 1993 uh he and a
00:09:42.480
friend picked the name Ruby which is
00:09:44.480
shown there uh that is a translation
00:09:47.120
though it was not in English it was in
00:09:49.480
Japanese um so Ruby 0.95 came out in
00:09:53.880
December of
00:09:55.000
1995 and he announced it on Japanese
00:09:57.600
News Group so now it's public it's more
00:09:59.720
than just a couple people uh that he
00:10:01.720
knew directly working on
00:10:03.880
it uh 1996 squeak came out it's a modern
00:10:08.640
portable Small Talk written in small
00:10:10.519
talk uh and it compiles to Sea so that
00:10:12.959
makes it very portable uh it was done at
00:10:16.120
Apple by Alan Kay and Dan Eng Les uh and
00:10:19.800
both of them soon moved to Disney but it
00:10:22.279
was open source so they continued
00:10:23.760
working on it at Disney uh if you've
00:10:26.079
ever used the scratch visual programming
00:10:28.120
language it's built on top of
00:10:30.839
week uh 1996 uh for a long time this is
00:10:34.320
my favorite Ruby book uh even though it
00:10:36.839
mentions zero Ruby uh it's design
00:10:38.959
patterns in the small as written by Kent
00:10:41.200
Beck um he wrote the book on test driven
00:10:43.720
development he wrote the book on Extreme
00:10:46.079
programming and he was later involved in
00:10:48.320
the agile
00:10:52.760
Manifesto 1996 Christmas Day the first
00:10:56.320
of many releases on Christmas Day Ruby
00:10:58.839
1.0 was released and MZ created the Ruby
00:11:02.680
list mailing list in Japanese so people
00:11:05.320
could
00:11:07.600
join uh 1998 Ruby 1.2 was released
00:11:12.120
pretty much the first stable version uh
00:11:15.320
they added the true and false keywords
00:11:17.839
what were they using before what were
00:11:19.320
you using I think you were using nil for
00:11:21.040
false and I guess anything else was was
00:11:23.760
truthy and false oh Capital true and
00:11:26.279
false okay um and it added the or equals
00:11:30.600
uh which I love I think it's one of the
00:11:32.680
best U maybe an innovation of
00:11:35.800
Ruby um 1999 the first Ruby book was
00:11:39.279
published uh it was written by matz and
00:11:41.839
kuu is
00:11:44.680
isuka uh it's in Japanese uh the English
00:11:48.200
translation of the title is the
00:11:49.800
objectoriented scripting language
00:11:52.959
Ruby uh in 2000 there are 20 more Ruby
00:11:56.320
books in Japanese um and by the end of
00:12:00.560
uh 2000 Ruby's more popular in Japan
00:12:03.959
than Pearl or
00:12:05.440
python uh December 15th of 2000 the
00:12:08.200
pickaxe book was released see the cover
00:12:10.720
as a pickaxe on it the first English
00:12:13.000
English language book on Ruby and a
00:12:15.199
covered Ruby 1.6 it's written by Dave
00:12:18.199
Thomas and Andy Hunt same folks that had
00:12:20.839
written the pragmatic programmer book uh
00:12:24.120
Dave Thomas would also go on the next
00:12:25.800
year to be part of the agile Manifesto
00:12:28.240
so he was bringing his agile practices
00:12:30.480
to Ruby from the start uh the latest
00:12:33.079
fifth edition of this is for Ruby 3.3 uh
00:12:36.160
written by n Ren who's giving a talk in
00:12:38.240
another
00:12:39.720
room uh 2001 uh April 12th and 13th the
00:12:44.519
first International Ruby Conference was
00:12:46.440
held in Tampa Florida it was organized
00:12:48.959
by David Allen black on the right and uh
00:12:52.480
Chad fer on the left and also Dave
00:12:54.880
Thomas uh they later founded a nonprofit
00:12:58.160
called Ruby Central
00:12:59.959
uh to run future conferences including
00:13:02.199
this
00:13:03.880
one uh 2001 this is much earlier than I
00:13:07.279
expected J Ruby came out it's written by
00:13:09.839
Jan an Peterson uh it ran on the jvm
00:13:14.959
which made it faster but more
00:13:16.639
importantly it could interrupt with jvm
00:13:19.160
and its libraries and if you're proves
00:13:21.600
to use Java you might be able to use any
00:13:24.360
jvm language honestly um later Charles
00:13:27.199
Nutter and Thomas ano
00:13:29.760
uh joined the project and uh Charles
00:13:32.199
Nutter is giving it actually both of
00:13:33.680
them are giving talks Charles they've
00:13:35.560
both been working on this for 20 years
00:13:37.800
and Charles is gonna talk about J Ruby
00:13:39.760
in that 20
00:13:42.160
years uh 2003 Ruby 1.8 came out this is
00:13:46.920
kind of when it became mature in my
00:13:48.480
opinion uh they added a lot of libraries
00:13:50.959
yaml CSV web open URL open SSL and test
00:13:55.959
unit yay um so string interpolation uh
00:14:01.079
was previously just for variables and
00:14:03.160
this version allowed any expression
00:14:04.720
inside your uh curly braces inside a
00:14:07.320
string um the innumerable inject was
00:14:11.440
added uh again that's from small talk
00:14:13.480
and later renamed
00:14:16.800
reduce 2003 David Hanam Hansen dhh uh
00:14:21.800
built base camp for 37 signals uh he had
00:14:25.279
been previously coding in PHP and just
00:14:27.440
found Ruby and used Ruby to build it and
00:14:31.519
he extracted the the MVC web frame
00:14:35.519
framework from base camp uh and released
00:14:38.320
that in July of
00:14:41.320
2004 uh Ruby on rail's first release uh
00:14:44.680
he marketed it really well he had a
00:14:46.759
15-minute video of building a blog app
00:14:50.000
um and he was really fast with his text
00:14:51.720
editor he was using text man he was
00:14:53.160
blazingly fast at it and people were
00:14:54.720
like how's he doing this so fast it
00:14:57.120
almost looked like he was cheating but
00:14:58.240
he was just really good with the
00:14:59.440
letteror and this was Ruby's killer app
00:15:02.399
and it still is today right
00:15:06.759
um uh it was a big reduction in code
00:15:09.839
versus Java web Frameworks at the time
00:15:12.800
uh it used DSL the uh dsls in meta
00:15:15.839
programming to save a lot of code uh and
00:15:18.800
he used the convention over
00:15:20.360
configuration at the time uh if you're
00:15:22.759
writing to Java website you had to spin
00:15:25.519
like hundreds of lines of XML it's just
00:15:28.600
pretty aw
00:15:29.680
and this led to huge growth of the Ruby
00:15:32.959
Community uh also in 2004 The Groovy
00:15:35.839
language came out another jvm language I
00:15:38.240
was surprised to learn it's actually a
00:15:39.639
super set of java so you can just do
00:15:41.720
Java and then add some more concise
00:15:44.040
stuff and so it borrowed from Ruby
00:15:46.600
concise
00:15:47.720
syntax uh Dynamic typing closures and
00:15:50.959
meta
00:15:54.240
programming uh 2005 the first RS book
00:15:57.240
came out uh Again by Dave with dhh uh
00:16:01.199
this is where I learned Ruby and rails
00:16:03.920
uh there was about 15 pages in the back
00:16:06.600
an appendix on here's how to here's what
00:16:09.160
ruby looks like and I'm like okay I
00:16:11.560
didn't know meta programming but I I
00:16:13.160
could I could use rails without uh
00:16:15.319
having to worry about that for probably
00:16:17.000
even a year uh know the title has agile
00:16:20.000
in it uh Dave Thomas once again bringing
00:16:22.639
agile to our community and the rails 8
00:16:25.639
edition of this book is coming in 2025
00:16:30.440
uh 2007 uh I attended rails comp I think
00:16:34.240
it was my second rails comp and I I Avi
00:16:37.360
Bryant gave a talk called small talks
00:16:39.399
lessons for Ruby um so Avi had built the
00:16:43.319
seaside web framework in small talk uh
00:16:46.079
he worked on the gemstore version of
00:16:48.440
small talk and he was working on a ruby
00:16:51.000
virtual machine based on on that uh
00:16:53.639
gemstone called megl so he talked about
00:16:57.360
what lessons the Ruby Community should
00:16:58.680
Lear learn from Small Talk uh his
00:17:00.880
promise was that Ruby and small talk are
00:17:02.759
dialects of the same language and I I
00:17:05.480
agree with that to to till today um he
00:17:08.439
said Ruby could and should be faster um
00:17:10.959
it should be as fast as small talk
00:17:12.280
because they're almost the same thing
00:17:14.079
and in fact it should be as fast as Java
00:17:15.880
because Java's Virtual Machine Tech came
00:17:17.959
from a small talk research pro project
00:17:20.120
called strong talk um so my takeaway in
00:17:24.319
in Looking Back Now Ruby was a
00:17:26.679
rediscovery of small talk so small talk
00:17:28.960
is you know uh a good thing and it's
00:17:31.799
pure objectoriented and Ms wanted pure
00:17:34.400
objectoriented and it came up with
00:17:35.799
almost the same thing right uh syntax is
00:17:38.120
just a little bit different um and I
00:17:42.400
think now that I look back I think the
00:17:44.360
small talk Community became the Ruby
00:17:46.720
Community um and so that that played a
00:17:49.559
large part I think in in the way our
00:17:51.799
community
00:17:53.480
Works 2007 Ruby 1.9 came out uh this was
00:17:57.200
3 years after Ruby 1.8
00:17:59.679
uh the longest between major releases uh
00:18:02.360
it included yarv yet another Ruby VM uh
00:18:05.720
which is faster um stabby lambdas nice
00:18:09.520
little
00:18:10.159
shorthand uh hash colons um so before
00:18:13.919
this you had use has hash Rockets uh
00:18:16.480
which is the equal greater than um and
00:18:19.280
there was even a company I think it
00:18:20.520
still exists today called hash rocket a
00:18:22.520
ruby
00:18:25.520
company all right they do um so this is
00:18:29.640
a compatibility nightmare though um gems
00:18:32.440
didn't work with each other I think
00:18:33.760
there was even an ABI change between
00:18:36.320
1.90 and
00:18:38.159
1.91 um I think that's what provoked
00:18:41.080
bundler um and it took till 2011 to
00:18:45.120
release 1.9.3 which finally had
00:18:48.200
stability and we that was we used 1.9.3
00:18:52.679
quite a while um 2008 uh forkless squeak
00:18:57.600
called Pharaoh was released East um
00:18:59.720
their goal is to revisit the design of
00:19:02.760
small talk and enhance it so this is
00:19:04.440
probably the most modern version of
00:19:06.200
small talk and it's based on a an open
00:19:09.520
Small Talk VM that is shared between uh
00:19:12.520
several other small talks uh 2008
00:19:15.559
reinius was released by Evan Phoenix uh
00:19:18.440
mostly written in Ruby uh while MRI
00:19:21.120
moz's Ruby interpreter was mostly see uh
00:19:24.200
looked promising but it's now been
00:19:26.240
abandoned Josie in 20 2 uh released
00:19:30.400
Elixir a functional programming language
00:19:32.440
built on the airline VM uh he had been
00:19:34.600
on the Royals core team and he even had
00:19:36.120
a book crafting reals
00:19:38.000
applications um so it's earling but with
00:19:41.039
cleaner syntax mostly borrowed from Ruby
00:19:43.760
uh it scills very well from embedded
00:19:45.559
devices to large clusters distributed
00:19:47.760
systems that'll run a million threads on
00:19:50.360
a 16 core machine and because it's built
00:19:53.000
on earling it's got great fault
00:19:54.520
tolerance as
00:19:56.000
well uh truffle Ruby came out in 20 3
00:19:59.320
it's the fork J Ruby on the gro J uh jit
00:20:02.960
and virtual machine those are also from
00:20:05.679
Oracle just like the normal jvm so I
00:20:08.080
don't know what the difference is and I
00:20:09.320
don't know why they haven't combined
00:20:11.960
yet uh 2013 Ruby 2.0 and 2.1 came out uh
00:20:16.720
since 2.1 every release has been yearly
00:20:19.200
on Christmas day um and they added a lot
00:20:22.559
of refinements uh M's talked about those
00:20:25.720
a little bit um and I didn't even know
00:20:29.120
that we had rational literals with slash
00:20:32.320
slash 2014 Crystal language came out
00:20:35.600
it's effectively compiled Ruby um you
00:20:37.960
lose some meta programming you have to
00:20:39.400
use macros instead they're not as clean
00:20:42.400
um it's tight but you don't have to do a
00:20:43.760
lot of tight penting uh the main thing
00:20:45.799
is if you have an empty array you have
00:20:47.159
to tell it an empty array of what kind
00:20:49.039
of thing am I going to be putting in
00:20:50.480
there and does a great job of nail
00:20:52.200
checking so you don't have any Nils at
00:20:54.240
runtime error or nail errors at runtime
00:20:56.640
uh eliminates an entire class of bugs
00:20:58.440
which which is awesome and it's fast
00:21:00.360
because it's compiled and it has a
00:21:01.440
pretty good community libraries I
00:21:02.960
actually gave a talking list at a local
00:21:04.559
user group I think in 2014
00:21:07.440
2015 uh Russ came out in 2015 it's very
00:21:10.640
fast memory efficient lowlevel embedded
00:21:14.039
has the concept of a bar Checker so uh
00:21:17.679
you own uh only one thread can own a
00:21:20.840
mutable variable if you just went to the
00:21:22.559
rector's talk that's kind of the problem
00:21:24.520
with with concurrency uh so again it's
00:21:27.600
eliminating another whole class of bugs
00:21:30.520
and it borrowed a lot of things of ideas
00:21:32.320
from Ruby
00:21:34.640
um and and quite a few other languages
00:21:37.279
um but a lot of Ruby developers went and
00:21:39.600
started using rust uh instead of C at
00:21:42.039
least uh Ruby 2.3 came out with the safe
00:21:45.840
navigation operator uh Moz calls it the
00:21:48.559
lonely operator because it looks like a
00:21:50.039
person sitting looking at the
00:21:52.240
period um that was borrowed from groovy
00:21:54.880
actually as far as I understand um
00:21:56.720
groovy uses question mark period but uh
00:21:59.960
we have question marks at the end of
00:22:01.760
variable names or method names so that
00:22:04.120
couldn't use it uh one of my favorite
00:22:06.279
things in Ruby uh dig dig through nested
00:22:08.760
arrays and hashes and started the
00:22:11.400
performance improvements um this is when
00:22:13.640
the 3 3x3 performance goal was started
00:22:16.640
and I'll talk about that just a little
00:22:18.120
bit
00:22:19.000
more um the first jit came with Ruby
00:22:22.400
2.6 um mjet was experimental uh we also
00:22:26.440
started including bundler um with Ruby
00:22:29.880
uh we got some function composition
00:22:32.320
operators and then then to chain methods
00:22:36.559
um like pipes in unich Shell or that
00:22:39.200
actually probably came more from Elixir
00:22:41.400
Elixir has a uh triangle operator for
00:22:44.799
piping and it can clean up your code as
00:22:47.039
you can see on the screen um Ruby 2.7 in
00:22:51.200
2019 added pattern matching um borrow
00:22:54.760
from elixir with the case in who's using
00:22:56.600
pattern matching
00:22:58.960
all right about a third of the people I
00:23:00.840
think um and numbered block parameters
00:23:03.000
so you can use underscore one uh so you
00:23:05.600
don't have to give a name to your
00:23:07.480
parameters in a block uh and lots of
00:23:09.880
internal
00:23:11.520
cleanups uh Ruby 3.0 uh the 3X3
00:23:15.080
performance improvements uh the goal was
00:23:17.039
to make Ruby 3.0 three times faster than
00:23:20.240
Ruby 2.0 and most of this was adding a
00:23:23.120
just in time compiler uh they as also
00:23:26.440
add the single line method definition
00:23:28.279
which I'm really digging because most of
00:23:30.440
my methods are on line and I like to
00:23:32.720
keep it that way and that uh rators were
00:23:35.640
introduced experimentally apparently
00:23:37.880
they're still working on that to make
00:23:39.799
them really good um static
00:23:42.720
analysis um and one line pattern
00:23:47.559
matching um Ruby 31 added short hand for
00:23:51.880
hash and keyword arguments so if you
00:23:54.320
want to say xon x just say xon and it'll
00:23:58.080
figure out out the g x um the Y jit was
00:24:02.200
added yet another jit uh we finally got
00:24:05.440
a new standard debugger uh IRB added
00:24:09.200
autocomplete uh some more pattern
00:24:10.919
matching and a type profiler that reads
00:24:12.840
plain Ruby and generates your RBS type
00:24:15.440
signature
00:24:17.159
file uh Ruby 3.2 added the data class is
00:24:20.440
anyone using the data class I I I really
00:24:22.799
enjoy the data class uh similar to
00:24:24.919
struct but it's for Value objects that
00:24:26.840
are immutable uh there's no Setters I
00:24:29.960
like the way that I like I like
00:24:31.799
immutable objects um so this I learned
00:24:35.240
web assembly you can actually output to
00:24:37.039
web assembly uh and the wi jit was
00:24:39.679
Rewritten from C to rust and it was
00:24:42.640
stable I I don't know how they rewrote
00:24:45.080
something and got it stable in a year
00:24:46.720
pretty
00:24:48.159
impressive um Ruby 3.3 came out last
00:24:52.039
year on Christmas Day the prism parser
00:24:55.440
uh was also introduced it's not the
00:24:57.080
default yet but it is an option uh and
00:25:00.279
yet another jit our jit which is in pure
00:25:02.919
Ruby and some more IRB improvements so
00:25:06.200
this Christmas um prism is going to be
00:25:08.880
the default parser uh and instead of
00:25:11.480
underscore one we can use it and you're
00:25:14.159
like well doesn't rspc use it uh well
00:25:17.080
there were warnings in Ruby
00:25:19.240
3.3 and it actually handles all those
00:25:22.679
existing uses because um any existing
00:25:25.720
use of it would be a method that takes
00:25:27.720
an argument or block so this is just a a
00:25:31.240
bare
00:25:32.640
it um we don't have to freeze our
00:25:34.919
strings anymore um hopefully in Ruby
00:25:39.159
3.5 uh maybe we will they'll
00:25:42.120
automatically be Frozen um but mutating
00:25:46.200
string lals is is deprecated now um see
00:25:50.720
oh and I just learned today name spacing
00:25:52.679
was supposed to make it a 34 but got
00:25:55.080
postponed uh so where are we at in Ruby
00:25:57.520
today um ru's still innovating
00:26:00.039
incrementally it gets new features new
00:26:02.159
implementations new libraries um
00:26:05.000
features added later than most of us uh
00:26:07.279
features are added um faster than most
00:26:09.720
of us can keep up with them um there's
00:26:12.440
over 30 implementations of Ruby I was
00:26:14.679
surprised to find out um not all still
00:26:18.159
uh in working function um but the
00:26:21.080
community is learning how to use the
00:26:22.600
features better over time uh we learned
00:26:25.240
how to use metaprogramming and then we
00:26:27.480
learned how not to overdo meta
00:26:29.760
programming uh and I've seen that in the
00:26:31.919
community as well as individuals it's
00:26:33.720
interesting uh the community is still
00:26:35.760
strong um we got Ruby com for Ruby Kye
00:26:39.960
uh Regional conferences and one of the
00:26:42.320
things I want to answer for myself was
00:26:44.039
when did why did Small Talk lose the C++
00:26:46.799
I don't think it did I think the Ruby
00:26:48.200
Community became uh the the small talk
00:26:51.039
Community became the Ruby community and
00:26:53.120
C++ and Ruby have the same number of
00:26:54.960
conferences today um so Ruby has a lot
00:26:57.840
of strength
00:26:59.200
uh Mo's focus on developer happiness
00:27:01.279
includes Simplicity readability
00:27:03.120
expressiveness uh syntax that reads like
00:27:05.360
pseudo code uh the dynamic nature gives
00:27:08.559
us uh fast feedback loop with no type
00:27:11.120
annotations I think it was just
00:27:12.799
objectoriented and a little bit of FP at
00:27:14.760
the right time and mat is nice so we are
00:27:18.279
nice um so Ruby's live and well um it's
00:27:21.919
generated probably a trillion dollars of
00:27:23.840
value in commercial companies and it
00:27:25.760
will continue to adapt uh so I think
00:27:27.960
it's got a pretty bright future and um a
00:27:32.080
lot of rubyists have taken uh have
00:27:34.480
worked in other language joined
00:27:36.320
communities and brought back their ideas
00:27:38.559
uh to Ruby and taken Ruby's ideas to
00:27:40.559
those other
00:27:41.799
languages um so I had highly recommend
00:27:44.720
these talks for uh some great ideas for
00:27:46.640
Ruby
00:27:48.200
futures um so go learn some other
00:27:50.559
languages um it'll make you a better
00:27:52.519
Ruby
00:27:53.559
programmer so let's help invent the
00:27:55.600
future uh experiment with some language
00:27:57.640
features uh steal from other languages
00:27:59.880
add them to Ruby find ways to help the
00:28:01.840
Ruby maintainers uh get involved in the
00:28:04.159
community For an upcoming language where
00:28:06.399
Ruby you can shape their libraries and
00:28:08.240
shape their tools that's kind of fun so
00:28:10.200
have fun and find what brings you Joy
00:28:13.840
thank you