diff --git a/Fifty-Years-of-Ruby/README.md b/Fifty-Years-of-Ruby/README.md index 0c050b5..598b817 100644 --- a/Fifty-Years-of-Ruby/README.md +++ b/Fifty-Years-of-Ruby/README.md @@ -45,16 +45,16 @@ marp --config=marp.yml --pdf --preview slides.md -o slides.pdf - elevator pitch - what is the point? - Ruby influences and influenced-bys - - tie it back to Ruby better -- Chronological order + - tie it all back to Ruby better +- Chronological order ✅ - Timeline at the top or bottom -- EngleBART +- EngelBART - Wait to introduce myself during the first quote - Dave Thomas might be in the room?!?!?!?!?! - Matz may be in the room!?!?!?!?! - less about Dynabook - - tie anything in with Smalltalk portions -- Alto team? + - keep everything tied to Smalltalk and Ruby +- Alto team - Felt guilty having spare computer cycles overnight - $32k in 1973 is now $200k ✅ - More fun with constraints @@ -110,7 +110,10 @@ marp --config=marp.yml --pdf --preview slides.md -o slides.pdf - Should I include full dates, or just years? - Too much? - Too little? -2. Language support for Faux-O +2. Ruby's growth + - Features added (innovations, borrowed) + - Milestones +3. Language support for Faux-O - Boundaries talk - Bob Martin said that the only thing that has changed in the last 50 years has been adding constraints - Structured programming constrains use of GOTO @@ -125,7 +128,7 @@ marp --config=marp.yml --pdf --preview slides.md -o slides.pdf - But the syntax looks the same as OO - They can **represent** a state instead of **having** a state - Message-passing actors for the procedural shell -3. Why Smalltalk "lost" to C++ +4. Why Smalltalk "lost" to C++ - Ask Alan Kay on Quora - Worse is better - Smalltalk ecosystem made it too difficult to share code @@ -133,28 +136,33 @@ marp --config=marp.yml --pdf --preview slides.md -o slides.pdf - Wanted everything to be inside Smalltalk - Hard to talk to DBs - C++ fit into the UNIX ecosystem -4. Key ideas of OOP +5. Key ideas of OOP - Message passing - Encapsulation - Polymorphism - picture of cells "communicating" -5. Compile-time execution will continue to gain popularity +6. Story about Ruby community learning + - Meta-programming overuse + - I did it myself (after deferring learning about it for a while)\ + - I see most programmers do this + - As Noel Rappin says, you don't fully understand the boundaries of your tools until you overuse them +7. Compile-time execution will continue to gain popularity - Today: you tell it what should run at compile time - Future: let the compiler run whatever it thinks is best -6. Slide: XR, new Meta concept, Apple XR, Oculus, etc -7. Smalltalk is still used today +8. Slide: XR, new Meta concept, Apple XR, Oculus, etc +9. Smalltalk is still used today - Heyday was the late 1999s - Many of the people moved to Ruby -8. WYSIWYG -9. Make Headings stay at the top of the page consistently -10. Fix colors in header/footers -11. Add "RubyConf 2024" to title page -12. Make quotes look nicer -13. Add a header with the date? +10. WYSIWYG +11. Make Headings stay at the top of the page consistently +12. Fix colors in header/footers +13. Add "RubyConf 2024" to title page +14. Make quotes look nicer +16. Add a header with the date? - or the title - or RubyConf 2024 -14. Create a thumbnail of the presentation +17. Create a thumbnail of the presentation - `marp --image=png slides.md -o og-image.png` - generate slide-show with `--og-image=og-image.png` - or add `image: og-image.png` to marp.yml -15. Makefile? +18. Makefile? diff --git a/Fifty-Years-of-Ruby/assets/Alan_Kay_at_the_Getty_Museum.jpg b/Fifty-Years-of-Ruby/assets/Alan_Kay_at_the_Getty_Museum.jpg new file mode 100644 index 0000000..f0280b6 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Alan_Kay_at_the_Getty_Museum.jpg differ diff --git a/Fifty-Years-of-Ruby/assets/As-We-May-Think-top-drawing.jpg b/Fifty-Years-of-Ruby/assets/As-We-May-Think-top-drawing.jpg new file mode 100644 index 0000000..a7cccc5 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/As-We-May-Think-top-drawing.jpg differ diff --git a/Fifty-Years-of-Ruby/assets/DHH-headshot-2017-full.jpg b/Fifty-Years-of-Ruby/assets/DHH-headshot-2017-full.jpg new file mode 100644 index 0000000..cb0f884 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/DHH-headshot-2017-full.jpg differ diff --git a/Fifty-Years-of-Ruby/assets/Dynabook-model.jpg b/Fifty-Years-of-Ruby/assets/Dynabook-model.jpg new file mode 100644 index 0000000..48310ec Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Dynabook-model.jpg differ diff --git a/Fifty-Years-of-Ruby/assets/First-Dynabook-idea.webp b/Fifty-Years-of-Ruby/assets/First-Dynabook-idea.webp new file mode 100644 index 0000000..ee717d3 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/First-Dynabook-idea.webp differ diff --git a/Fifty-Years-of-Ruby/assets/Macintosh.jpg b/Fifty-Years-of-Ruby/assets/Macintosh.jpg new file mode 100644 index 0000000..f9288f6 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Macintosh.jpg differ diff --git a/Fifty-Years-of-Ruby/assets/Memex.webp b/Fifty-Years-of-Ruby/assets/Memex.webp new file mode 100644 index 0000000..9d9af5c Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Memex.webp differ diff --git a/Fifty-Years-of-Ruby/assets/PARC-sign.webp b/Fifty-Years-of-Ruby/assets/PARC-sign.webp new file mode 100644 index 0000000..c8ebe95 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/PARC-sign.webp differ diff --git a/Fifty-Years-of-Ruby/assets/Ruby-on-Rails-logo-original.png b/Fifty-Years-of-Ruby/assets/Ruby-on-Rails-logo-original.png new file mode 100644 index 0000000..1ab162d Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Ruby-on-Rails-logo-original.png differ diff --git a/Fifty-Years-of-Ruby/assets/Smalltalk-76-UI.jpg b/Fifty-Years-of-Ruby/assets/Smalltalk-76-UI.jpg new file mode 100644 index 0000000..77dbae2 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Smalltalk-76-UI.jpg differ diff --git a/Fifty-Years-of-Ruby/assets/Steve-Jobs-Lisa.webp b/Fifty-Years-of-Ruby/assets/Steve-Jobs-Lisa.webp new file mode 100644 index 0000000..6525b9e Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Steve-Jobs-Lisa.webp differ diff --git a/Fifty-Years-of-Ruby/assets/Steve-Jobs-introduces-Macintosh.png b/Fifty-Years-of-Ruby/assets/Steve-Jobs-introduces-Macintosh.png new file mode 100644 index 0000000..7559b9f Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Steve-Jobs-introduces-Macintosh.png differ diff --git a/Fifty-Years-of-Ruby/assets/Steve-Jobs-introduces-Macintosh.webp b/Fifty-Years-of-Ruby/assets/Steve-Jobs-introduces-Macintosh.webp new file mode 100644 index 0000000..ac72ef2 Binary files /dev/null and b/Fifty-Years-of-Ruby/assets/Steve-Jobs-introduces-Macintosh.webp differ diff --git a/Fifty-Years-of-Ruby/cut-slides.md b/Fifty-Years-of-Ruby/cut-slides.md new file mode 100644 index 0000000..79047e4 --- /dev/null +++ b/Fifty-Years-of-Ruby/cut-slides.md @@ -0,0 +1,57 @@ +# Slides that were cut from the presentation + +I couldn't bear to not keep this around for posterity. +I'm sure I'll find a use for it later. +And I don't want to have to dig into git history to find it. + +--- +![bg width:100%](assets/As-We-May-Think-top-drawing.jpg) +![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) +# 1942: As We May Think + + diff --git a/Fifty-Years-of-Ruby/slides.html b/Fifty-Years-of-Ruby/slides.html index b328ada..dfd5ba5 100644 --- a/Fifty-Years-of-Ruby/slides.html +++ b/Fifty-Years-of-Ruby/slides.html @@ -15,7 +15,7 @@

Craig Buchek

Fifty Years of Ruby

-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

@@ -24,75 +24,35 @@

Fifty Years of Ruby

Alan Kay

@CraigBuchek
-
+
https://craigbuchek.com/fifty


RubyConf 2024 doodle

-

1995: Ruby

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

1968: Mother of All Demos

@CraigBuchek
-
-
https://craigbuchek.com/fifty
-


-RubyConf 2024 doodle

-

1942: As We May Think

-
@CraigBuchek
-
-
-
https://craigbuchek.com/fifty
-

RubyConf 2024 doodle

-
-

Wholly new forms of encyclopedias will appear,
-ready-made with a mesh of associative trails running through them,
-ready to be dropped into the memex and there amplified.

-
-

Vannevar Bush, As We May Think

-
@CraigBuchek
-
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

-

1969: Xerox PARC

+

Alan Kay

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

-

Alan Kay

-
@CraigBuchek
-
-
-
https://craigbuchek.com/fifty
-


-RubyConf 2024 doodle

-

1972: Dynabook

-
@CraigBuchek
-
-
-
https://craigbuchek.com/fifty
-


-RubyConf 2024 doodle

-

1973: Xerox Alto

-
@CraigBuchek
-
-
-
https://craigbuchek.com/fifty
-


-RubyConf 2024 doodle

-

Macintosh

+

1969: Xerox PARC

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Smalltalk-71

@@ -106,7 +66,14 @@

Smalltalk-71

@CraigBuchek
-
+
+
https://craigbuchek.com/fifty
+


+RubyConf 2024 doodle

+

1972: Dynabook

+
@CraigBuchek
+
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Smalltalk-72

@@ -130,7 +97,14 @@

Smalltalk-72

@CraigBuchek
-
+
+
https://craigbuchek.com/fifty
+


+RubyConf 2024 doodle

+

1973: Xerox Alto

+
@CraigBuchek
+
+
https://craigbuchek.com/fifty

Smalltalk-76 GUI
RubyConf 2024 doodle

@@ -157,21 +131,21 @@

Smalltalk-76

@CraigBuchek
-
+
https://craigbuchek.com/fifty


RubyConf 2024 doodle

Smalltalk-80

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

OOP

TODO: picture

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Simula 67

@@ -195,7 +169,7 @@

Simula 67

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Simula 67

@@ -212,35 +186,51 @@

Simula 67

@CraigBuchek
-
+
+
https://craigbuchek.com/fifty
+


+RubyConf 2024 doodle

+

1984: Macintosh

+
@CraigBuchek
+
+
+
https://craigbuchek.com/fifty
+

RubyConf 2024 doodle

+

1996: Squeak

+
    +
  • Modern Smalltalk
  • +
+
@CraigBuchek
+
+
https://craigbuchek.com/fifty


RubyConf 2024 doodle

-

Smalltalk Best Practice Patterns

+

1996: Smalltalk Best Practice Patterns

@CraigBuchek
-
+
https://craigbuchek.com/fifty


RubyConf 2024 doodle

2000: Pickaxe Book

@CraigBuchek
-
+
https://craigbuchek.com/fifty


RubyConf 2024 doodle

2004: Ruby on Rails

@CraigBuchek
-
top:0
+
top:0
https://craigbuchek.com/fifty


RubyConf 2024 doodle

2005: Agile Web Development with Rails

@CraigBuchek
-
+
https://craigbuchek.com/fifty


RubyConf 2024 doodle

@@ -250,13 +240,13 @@

2007: Avi Bryant at RailsConf

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Ruby was a rediscovery of Smalltalk

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Newer Ruby Features

@@ -269,35 +259,41 @@

Newer Ruby Features

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

-

Squeak

+

TODO: 2008: Pharo

+
@CraigBuchek
+
+
+
https://craigbuchek.com/fifty
+

RubyConf 2024 doodle

+

2012: Elixir

    -
  • Modern Smalltalk
  • -
  • Others: +
  • FP
  • +
  • Ruby-like syntax
      -
    • Pharo
    • -
    • Newspeak
    • -
    • Cuis
    • +
    • DSLs
  • -
  • OpenSmalltalk Virtual Machine
  • +
  • Erlang VM
  • +
  • Concurrency +
      +
    • Lightweight threads
    • +
    +
  • +
  • Fault tolerance
  • +
  • Scalability
  • +
  • Meta-programming
@CraigBuchek
-
-
https://craigbuchek.com/fifty
-

RubyConf 2024 doodle

-

TODO: Pharo

-
@CraigBuchek
-
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

-

Crystal

+

2014: Crystal

  • Effectively compiled Ruby
  • Lose some meta-programming
  • @@ -323,47 +319,40 @@

    Crystal

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

-

Elixir

-
    -
  • FP
  • -
  • Ruby-like syntax +

    2015: Rust

      -
    • DSLs
    • -
    -
  • -
  • Erlang VM
  • -
  • Concurrency +
  • Fast and memory-efficient
  • +
  • Low-level
  • +
  • Embedded
  • +
  • Borrow checker
      -
    • Lightweight threads
    • +
    • Ownership of mutable values
    • +
    • Eliminates a whole class of bugs
  • -
  • Fault tolerance
  • -
  • Scalability
  • -
  • Meta-programming
@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

-

Rust

+

Ruby's Future

    -
  • Fast and memory-efficient
  • -
  • Low-level
  • -
  • Embedded
  • -
  • Borrow checker +
  • Ruby will still get new features
      -
    • Ownership of mutable values
    • -
    • Eliminates a whole class of bugs
    • +
    • Innovations
    • +
    • Borrowing/stealing
  • +
  • Ruby will last a long time
  • +
  • Something will replace Ruby
@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Take-aways

@@ -376,7 +365,7 @@

Take-aways

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

@@ -385,7 +374,7 @@

Take-aways

Alan Kay

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

@@ -394,7 +383,7 @@

Take-aways

Alan Kay

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

@@ -403,7 +392,7 @@

Take-aways

Alan Kay

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Thank You

@@ -419,7 +408,7 @@

Thank You

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Come talk to me!

@@ -447,7 +436,7 @@

Come talk to me!

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Colophon

@@ -458,7 +447,7 @@

Colophon

@CraigBuchek
-
+
https://craigbuchek.com/fifty

RubyConf 2024 doodle

Contact Info

@@ -485,11 +474,11 @@

Contact Info

- people who had a vision of future - how they shaped computers we use today - how they shaped Ruby - - what Ruby's future might look like

- December 21, 1995 - - Ruby's first release: 0.95 - - Started from conversation with a colleague on February 24, 1993 -- Yukihiro Matsumoto - - "Matz" + - what Ruby's future might look like

- February 24, 1993 + - Japanese programmer Yukihiro Matsumoto started developing Ruby + - "Matz" +- December 21, 1995 + - Released his work (0.95) - Influenced by: - Perl, Smalltalk, Eiffel, Ada, Lisp - "more powerful than Perl, and more object-oriented than Python" @@ -501,11 +490,15 @@

Contact Info

- add methods found in Smalltalk. - add functionality found in Perl (in OO way). - I will dig into the most similar of those languages, Smalltalk -- Image credit: https://upload.wikimedia.org/wikipedia/commons/5/5a/Yukihiro_Matsumoto_EuRuKo_2011.jpg

- 1968: Mother of All Demos - - December 9, 1968 - - ACM conference in San Francisco +- Image credit: https://upload.wikimedia.org/wikipedia/commons/5/5a/Yukihiro_Matsumoto_EuRuKo_2011.jpg

- My story starts in 1968 - Matz was 3 years old -- Who: Douglas Engelbart + - I wasn't even born yet + - Most of you weren't born yet + - Some of your parents weren't born yet! +- December 9, 1968 + - ACM conference in San Francisco + - Mother of All Demos +- Who: Douglas EngelBART - Augmentation Research Center - Stanford Research Institute - Stanford University @@ -519,59 +512,10 @@

Contact Info

- Interactive editing - Steven Levy dubbed it "the mother of all demos" in 1994 - _Insanely Great_ +- TODO: Tell them to watch the video (or fit 1 minute of it in) - TODO: Better images -- TODO: Link to "Augmenting Human Intellect: A Conceptual Framework" (1962)

- 1945: As We May Think - - _The Atlantic_ magazine, July 1945 - - Engelbart read it in 1945 and again in 1961 - - Inspired him to design a sort of memex! - - Wrote "A Conceptual Framework for the Augmentation of Man's Intellect" - - 1963 -- Vannevar Bush - - Engineer - - Analog computers - - Differential equation solvers - - MIT - - PhD - - Dean of Engineering - - Lots of government science agencies - - Head of NACA (NASA's predecessor) - - Organization overseeing Manhattan Project - - Was in the 2023 Oppenheimer movie - - Founded Raytheon -- memex (memory expansion) - - store all of your books, records, and communications - - desk with microfilm screens - - supplement memory - - shared and collective memories - - associative indexing "trails" of research -- Innovative ideas - - hypertext - - personal computers - - Internet/Web - - speech recognition - - online encyclopedias - - information science/processing/work/society/literacy - - information overload -- Ted Nelson referred to it when he conceived "hypertext" in 1960 -- Primary sources: - - https://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/ - - paywalled - - https://cdn.theatlantic.com/media/archives/1945/07/176-1/132407932.pdf - - https://www.w3.org/History/1945/vbush/vbush.shtml - - Abridged version in _Life_ magazine, September 10, 1945 - - https://worrydream.com/refs/Bush_1945_-_As_We_May_Think_(Life_Magazine).pdf - - Adds some drawings - - https://dougengelbart.org/pubs/augment-133183-AHI-Vistas.html -- Photo credit: https://www.michaeljkramer.net/wp-content/uploads/2021/09/Bush_The-Memex.jpg -- Photo credit (memex): https://erinkmalone.medium.com/foreseeing-the-future-the-legacy-of-vannevar-bush-c418edc9a4ee

- Xerox Palo Alto Research Center -- Lots of people from SRI's Augmentation Research Center -- Innovations: - - Laser printer - - GUI, icons - - Ethernet - - Real-time video conferencing - - Interactive editing -- Image source: https://www.techspot.com/articles-info/477/images/2015-09-30-image.jpg

- Attended MoAD +- TODO: Explain the picture +- TODO: Link to "Augmenting Human Intellect: A Conceptual Framework" (1962)

- Attended MoAD - Degree in Molecular Biology - Where - Stanford AI Lab (1969) @@ -582,7 +526,17 @@

Contact Info

- Squeak (1995) - https://tinlizzie.org/IA/index.php/Talks_by_Alan_Kay - https://www.quora.com/profile/Alan-Kay-11 -- Photo credit: https://commons.wikimedia.org/wiki/File:Alan_Kay_(3097597186)_(cropped).jpg

- 1968: Alan Kay had an idea +- Photo credit: https://commons.wikimedia.org/wiki/File:Alan_Kay_(3097597186)_(cropped).jpg

- Xerox Palo Alto Research Center (PARC) + - Silicon Valley + - Founded 1969 +- Lots of people from SRI's Augmentation Research Center +- Innovations: + - Laser printer + - GUI, icons + - Ethernet + - Real-time video conferencing + - Interactive editing +- Image source: https://www.techspot.com/articles-info/477/images/2015-09-30-image.jpg

- 1968: Alan Kay had an idea - This cartoon and cardboard mockup - First paper on it: 1972 - Named it Dynabook @@ -591,12 +545,19 @@

Contact Info

- from just “vehicles” and “tools” - to “meta-media” and “for children” - Portability -> ubiquity -- ARPA: “interactive intellectual amplifiers pervasively networked worldwide" - Says his original innovation was the idea of a personal computer for children - Key to everything: - GUI, windows, icons, mouse, UX - OOP -- Image credit: https://www.quora.com/What-lessons-were-learned-in-aspiring-towards-the-DynaBook-and-have-any-of-its-original-goals-become-dated/answer/Alan-Kay-11

- "The Interim Dynabook" +- Image credit: https://www.quora.com/What-lessons-were-learned-in-aspiring-towards-the-DynaBook-and-have-any-of-its-original-goals-become-dated/answer/Alan-Kay-11

- Some notes: + - `to` is equivalent to Ruby's `def` + - 😀 was called smiley + - 😀 is instance of turtle class + - Looks a bit Lispy with the nested parens + - This is 100% accurate UTF transliteration + - TODO: Understand definition of `for`, `∢`, `do`, and `:#exp` +- Already had `self` +- Source: https://smalltalkzoo.thechm.org/papers/EvolutionOfSmalltalk.pdf

- "The Interim Dynabook" - Xerox Alto - Introduced March 1, 1973 - $32k ($200k+ today) @@ -630,44 +591,19 @@

Contact Info

- https://en.wikipedia.org/wiki/PARC_(company) - https://en.wikipedia.org/wiki/List_of_people_associated_with_PARC - PARC campus photo credit: https://preview.redd.it/kjl8la0xow191.jpg?width=900&format=pjpg&auto=webp&s=bc4dfbff6ada4007fdf27ed9fed8dcdbee6ed12e -- Xerox Alto photo credit: https://dq51jve9h21d4.cloudfront.net/sites/default/files/imce/xie-alto-1-886x750.jpg.pagespeed.ic.pU09ByiUIQ.webp

- Steve Jobs and Apple folks visited PARC in 1979 (twice) - - Xerox received some Apple stock options - - Inspired the Mac - - Smalltalk-76, networking, mouse-driven WYSIWYG GUI - - "Xerox could have owned the entire computer industry, could have been the IBM of the nineties, could have been the Microsoft of the nineties." -- Steve Jobs -- Alan Kay joined apple in 1984 - - Had been at Atari for a few years - - Stayed until 1996 -- Kay's criticism of iPad - - Not user programmable - - Not designed for authoring meta-media - - Not designed for kids - - No physical keyboard - - "The Mac was a failure in the sense that it didn't achieve the goal of changing the way people think about computers." - - "The Mac was a success in the sense that it was a very good implementation of the ideas that were around at the time." -- Kay says Microsoft Surface tablet is closer to his vision -- OLPC: One laptop per child (2005) - - encourages children to interact with & change code on their computer

- Some notes: - - `to` is equivalent to Ruby's `def` - - 😀 was called smiley - - 😀 is instance of turtle class - - Looks a bit Lispy with the nested parens - - This is 100% accurate UTF transliteration - - TODO: Understand definition of `for`, `∢`, `do`, and `:#exp` -- Already had `self` -- Source: https://smalltalkzoo.thechm.org/papers/EvolutionOfSmalltalk.pdf

- All in an IDE in a full GUI windowing system +- Xerox Alto photo credit: https://dq51jve9h21d4.cloudfront.net/sites/default/files/imce/xie-alto-1-886x750.jpg.pagespeed.ic.pU09ByiUIQ.webp

- All in an IDE in a full GUI windowing system - overlapping windows - different size fonts, bold, italic - Source: https://smalltalkzoo.thechm.org/papers/The%20Smalltalk-76%20Programming%20System.PDF - Dan Ingalls designed Smalltalk-76 - more of a compromise between the Lisp and Algol worlds - brilliant design; not much flexibility was lost - - almost 200 times faster than Smalltalk-72

- Smalltalk-80: first public release + - almost 200 times faster than Smalltalk-72

- Smalltalk-80: first public release - Added blocks, booleans, meta-classes - First Smalltalk book, 1983 - Adele Goldberg - Xerox PARC - - One of the designers/implementers of Smalltalk

- Alan Kay coined the term "object-oriented programming" in 1967 + - One of the designers/implementers of Smalltalk

- Alan Kay coined the term "object-oriented programming" in 1967 - "objects" that encapsulate data and behavior - interacting with each other through messages - He'd been working on the ideas since 1966 @@ -678,7 +614,7 @@

Contact Info

- "OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things." - Regrets that Smalltalk did not evolve after Smalltalk-80 - Smalltalk was 1st OOP language - - or so I thought ...

- Or perhaps Simula 67 was the first OO language + - or so I thought ...

- Or perhaps Simula 67 was the first OO language - Derived from ALGOL 60 - Most languages we use today are ancestors of ALGOL 60 - "more" syntax than we see today @@ -688,7 +624,7 @@

Contact Info

- class keyword for user-defined types - methods - ... -- code source: https://staff.um.edu.mt/jskl1/talk.html

- but you can make everything out +- code source: https://staff.um.edu.mt/jskl1/talk.html

- but you can make everything out - ... subclass inheriting from superclass - and adding more instance variables - Simula 67 @@ -697,21 +633,38 @@

Contact Info

- actor model - coroutines - no true parallelism -- code source: https://staff.um.edu.mt/jskl1/talk.html

- October 3, 1996 +- code source: https://staff.um.edu.mt/jskl1/talk.html

- Steve Jobs and Apple folks visited PARC in 1979 (twice) + - Xerox received some Apple stock options + - Inspired the Mac + - Smalltalk-76, networking, mouse-driven WYSIWYG GUI + - "Xerox could have owned the entire computer industry, could have been the IBM of the nineties, could have been the Microsoft of the nineties." -- Steve Jobs +- Alan Kay joined apple in 1984 + - Had been at Atari for a few years + - Stayed until 1996 +- Kay's criticism of iPad + - Not user programmable + - Not designed for authoring meta-media + - Not designed for kids + - No physical keyboard + - "The Mac was a failure in the sense that it didn't achieve the goal of changing the way people think about computers." + - "The Mac was a success in the sense that it was a very good implementation of the ideas that were around at the time." +- Kay says Microsoft Surface tablet is closer to his vision +- OLPC: One laptop per child (2005) + - encourages children to interact with & change code on their computer

- October 3, 1996 - IMHO, one of the best "Ruby" books - Design patterns "in the small" - Kent Beck - Agile Manifesto - Extreme Programming - Wrote _the_ book on Test-Driven Development - - JUnit

- December 15, 2000 + - JUnit

- December 15, 2000 - First English-language book on Ruby - Dave Thomas (Pragmatic Dave) - Pragmatic Programmer book - Coined "DRY" - Pragmatic Bookshelf - Agile manifesto (2001) - - Brought Agile/XP practices to Ruby

- David Heinemeier Hansson + - Brought Agile/XP practices to Ruby

- David Heinemeier Hansson - Danish programmer - Using Ruby since 2003 - Was doing PHP before that @@ -728,10 +681,10 @@

Contact Info

- Made enough money to buy himself a bespoke exotic race car - His Wikipedia entry has much more detail on his racing career than Rails - image credit: https://dhh.dk/images/headshot-2017-full.jpg -- image credit: https://commons.wikimedia.org/wiki/File:Ruby_on_Rails-logo.png

- Dave Thomas (Pragmatic Dave) +- image credit: https://commons.wikimedia.org/wiki/File:Ruby_on_Rails-logo.png

- Dave Thomas (Pragmatic Dave) - with DHH - August 7, 2005 -- TODO: More about this book

- "Smalltalk’s Lessons for Ruby" +- TODO: More about this book

- "Smalltalk’s Lessons for Ruby" - Ruby IS-A Smalltalk - Lessons the Ruby community should learn from Smalltalk - TODO: What are the lessons? @@ -744,22 +697,39 @@

Contact Info

- Source: https://www.akitaonrails.com/2007/12/21/chatting-with-avi-bryant-part-1 - Source: https://www.akitaonrails.com/2007/12/22/chatting-with-avi-bryant-part-2 - Source: http://web.archive.org/web/20130729204305id_/http://itc.conversationsnetwork.org/shows/detail3432.html -- Image source: https://www.flickr.com/photos/x180/505428676

- [read slide]

- Most of us are not using Ruby to its full potential +- Image source: https://www.flickr.com/photos/x180/505428676

- [read slide]

- Most of us are not using Ruby to its full potential - Not using modern Ruby features - I have not used most of these - QUESTION: Who uses refinements regularly? - QUESTION: Who is using pattern matching? - QUESTION: Who is using Data class? -- QUESTION: Who is using concurrency in Ruby?

- I gave talk on Crystal very early on - - local Ruby user group - STLRuby - - had one of the 2 originators on video -- https://crystal-lang.org/

- Lightweight threads +- QUESTION: Who is using concurrency in Ruby?

- Today: OpenSmalltalk Virtual Machine, shared among Squeak, Pharo, Cuis, Newspeak +- Cuis looks interesting

- Lightweight threads - 1 million threads on a 16-core machine - Elixir scales - Small embedded devices - Large clusters & distributed systems - Fault tolerance -- https://elixir-lang.org/

- https://www.rust-lang.org/

- Good solutions are rediscovered +- https://elixir-lang.org/

- I gave talk on Crystal very early on + - local Ruby user group - STLRuby + - had one of the 2 originators on video +- https://crystal-lang.org/

- https://www.rust-lang.org/

- Good solutions are rediscovered + - We need to look out for other solutions we can learn from +- Compiled languages are winning again +- Many Rubyists have already moved to other languages + - And communities + - Community is important + - Why I keep attending conferences + - They take what they've learned with them + - Features + - Practices + - Community + - DX +- Ruby is still alive and doing well + - Bright future for many years to come + - It will adapt +- Eventually Ruby use will dwindle + - Long tail

- Good solutions are rediscovered - We need to look out for other solutions we can learn from - Compiled languages are winning again - Many Rubyists have already moved to other languages @@ -770,10 +740,10 @@

Contact Info

- Bright future for many years to come - It will adapt - Eventually Ruby use will dwindle - - Long tail

- Go learn other languages! - - It'll make you a better Ruby programmer

- [read quote] + - Long tail

- Go learn other languages! + - It'll make you a better Ruby programmer

- [read quote] - TODO: Douglas Adams follow-on quote? -- TODO: There was some point I wanted to make here

- Let's help invent the future! +- TODO: There was some point I wanted to make here

- Let's help invent the future! - Explore whether decisions made are still valid - Experiment with language features - Add to Ruby diff --git a/Fifty-Years-of-Ruby/slides.md b/Fifty-Years-of-Ruby/slides.md index 11766e1..313bfbe 100644 --- a/Fifty-Years-of-Ruby/slides.md +++ b/Fifty-Years-of-Ruby/slides.md @@ -49,14 +49,13 @@ url: https://craigbuchek.com/fifty ![bg 60%](assets/Yukihiro-Matsumoto-2011.jpg) ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# 1995: Ruby --- -![bg width:100%](assets/As-We-May-Think-top-drawing.jpg) ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# 1942: As We May Think - - - ---- -![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) - -> Wholly new forms of encyclopedias will appear, -> ready-made with a mesh of associative trails running through them, -> ready to be dropped into the memex and there amplified. - -Vannevar Bush, _As We May Think_ +![bg left](assets/Alan_Kay_(3097597186)_(cropped).jpg) +# Alan Kay --- @@ -170,7 +130,9 @@ url: https://craigbuchek.com/fifty # 1969: Xerox PARC --- @@ -216,7 +176,6 @@ url: https://craigbuchek.com/fifty - from just “vehicles” and “tools” - to “meta-media” and “for children” - Portability -> ubiquity -- ARPA: “interactive intellectual amplifiers pervasively networked worldwide" - Says his original innovation was the idea of a personal computer for children - Key to everything: - GUI, windows, icons, mouse, UX @@ -224,6 +183,42 @@ url: https://craigbuchek.com/fifty - Image credit: https://www.quora.com/What-lessons-were-learned-in-aspiring-towards-the-DynaBook-and-have-any-of-its-original-goals-become-dated/answer/Alan-Kay-11 --> +--- +![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) +# Smalltalk-72 + +~~~ smalltalk-72 +to square + (do 4 + (😀 go 50 turn. 90)) + +to square length + (👉length 🠔 :. + do 4 (😀 go length turn 90))! + +to poly sides size + (👉sides 🠔 :. 👉size 🠔 :. + do sides (😀 go size turn 360/sides))! + +to for token step stop var start exp (:👉var. + (∢←⇒(:start.) 👉start←1). + (∢to⇒(:stop.) 👉stop←start). + (∢by⇒(:step.) 👉step←1). +∢do. :#exp. CODE 24) +~~~ + + + --- ![bg height:151%](assets/xerox-alto.webp) ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) @@ -267,86 +262,6 @@ url: https://craigbuchek.com/fifty - Xerox Alto photo credit: https://dq51jve9h21d4.cloudfront.net/sites/default/files/imce/xie-alto-1-886x750.jpg.pagespeed.ic.pU09ByiUIQ.webp --> ---- -![bg](assets/Macintosh.jpg) -![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# Macintosh - - - ---- -![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# Smalltalk-71 - -~~~ smalltalk-71 -to T 'and' :y do 'y' -to F 'and' :y do F - -to 'factorial' 0 is 1 -to 'factorial' :n do 'n*factorial n-1' - -to 'fact' :n do 'to 'fact' n do factorial n. ^ fact n' -~~~ - - - ---- -![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# Smalltalk-72 - -~~~ smalltalk-72 -to square - (do 4 - (😀 go 50 turn. 90)) - -to square length - (👉length 🠔 :. - do 4 (😀 go length turn 90))! - -to poly sides size - (👉sides 🠔 :. 👉size 🠔 :. - do sides (😀 go size turn 360/sides))! - -to for token step stop var start exp (:👉var. - (∢←⇒(:start.) 👉start←1). - (∢to⇒(:stop.) 👉stop←start). - (∢by⇒(:step.) 👉step←1). -∢do. :#exp. CODE 24) -~~~ - - - --- ![Smalltalk-76 GUI](assets/Smalltalk-76-UI.jpg) ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) @@ -487,10 +402,42 @@ End of LocRectangle; - code source: https://staff.um.edu.mt/jskl1/talk.html --> +--- +![bg](assets/Macintosh.jpg) +![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) +# 1984: Macintosh + + + +--- +![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) +# 1996: Squeak + +- Modern Smalltalk + --- ![bg left w:80%](assets/Smalltalk-Best-Practice-Patterns.jpg) ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# Smalltalk Best Practice Patterns +# 1996: Smalltalk Best Practice Patterns --- ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) +# 2012: Elixir -TODO: Pharo +- FP +- Ruby-like syntax + - DSLs +- Erlang VM +- Concurrency + - Lightweight threads +- Fault tolerance +- Scalability +- Meta-programming + + --- ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png)

-# Crystal +# 2014: Crystal - Effectively compiled Ruby - Lose some meta-programming @@ -661,31 +626,7 @@ x = [] of Int32; --- ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# Elixir - -- FP -- Ruby-like syntax - - DSLs -- Erlang VM -- Concurrency - - Lightweight threads -- Fault tolerance -- Scalability -- Meta-programming - - - ---- -![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) -# Rust +# 2015: Rust - Fast and memory-efficient - Low-level @@ -698,6 +639,37 @@ x = [] of Int32; - https://www.rust-lang.org/ --> +--- +![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) +# Ruby's Future + +- Ruby will still get new features + - Innovations + - Borrowing/stealing +- Ruby will last a long time +- Something will replace Ruby + + + --- ![RubyConf 2024 doodle](assets/RubyConf-2024-background-doodle-2.png) # Take-aways