Summarized using AI

Fifty Years of Ruby

Craig Buchek • November 13, 2024 • Chicago, IL • Talk

In the talk titled "Fifty Years of Ruby," presented by Craig Buchek at RubyConf 2024, the speaker explores the historical context and influence of the programming language Ruby, particularly its relationship with Smalltalk. The journey of Ruby's development is illustrated through significant milestones and innovations in computing, beginning from the early 1970s at Xerox PARC, where key concepts like GUIs, WYSIWYG, and IDEs emerged. The talk highlights the vision of pioneers such as Alan Kay, who played a crucial role in developing Smalltalk, a language that laid important foundations for modern object-oriented programming.

The key points outlined in the talk include:

- Origins of Ruby: Introduced by Yukihiro Matsumoto (Matz) who aimed for happiness, joy, and productivity in programming.

- Influences on Ruby: Matz drew inspiration from several programming languages, with a particular focus on Smalltalk due to its principles of object-oriented programming.

- Significant historical references: The speaker discusses the "Mother of All Demos" in 1968 and the introduction of personal workstations, which set the stage for modern computing.

- Evolution of Smalltalk: The development of Smalltalk highlighted important innovations such as message passing, object instances, and graphical interfaces.

- Flight of Ruby: Matz released Ruby 0.95 in 1995, transitioning it to a public language, leading to its widespread adoption and establishment of robust community series like Ruby on Rails.

- Ruby’s Growth: Points out how Ruby has evolved with every release adding new libraries and features which prioritize developer happiness.

- Future of Ruby: The talk concludes with a positive outlook on Ruby's future, emphasizing its adaptability and the importance of community involvement in shaping language features and libraries.

- Call to Action: Buchek encourages attendees to explore other languages to enrich their Ruby skills, highlighting the interconnected growth of programming languages.

The overarching takeaway from the presentation is that Ruby stands upon the shoulders of past programming innovations and continues to flourish by embracing its foundational roots while adapting through its community's efforts. As Buchek emphasizes, Ruby's strength lies in simplicity, readability, and expressiveness, ensuring its relevance in the evolving tech landscape.

Fifty Years of Ruby
Craig Buchek • November 13, 2024 • Chicago, IL • Talk

Our modern-day concepts of GUIs, WYSIWYG, and IDEs were developed at Xerox PARC in the early 1970s. Alan Kay was one of the first employees, working on programming languages, among other things. He first released Smalltalk in 1972.

While Ruby was not directly derived from Smalltalk, the two are surprisingly similar. We'll explore the history of Smalltalk, and the context in which it was formed. We'll see how Ruby rediscovered and reapplied Smalltalk's concepts, with an eye towards understanding Ruby's future.

RubyConf 2024

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
Explore all talks recorded at RubyConf 2024
+64