Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Here's to the crazy ones

Here's to the crazy ones

We regress around 13 years back into Rails history to revisit a personal journey I took with Rails, and some thoughts about how that might relate to Rails in the future

lazyatom

April 18, 2018
Tweet

More Decks by lazyatom

Other Decks in Programming

Transcript

  1. Here’s to the crazy ones
    lazyatom.com/crazy-ones

    View Slide

  2. 2005

    View Slide

  3. View Slide

  4. – Me, on a mailing list of friends, Thursday, 16 Aug 2001
    “I forsake Java! I renounce C++! All hail
    The Mighty RUBY!!”
    2.upto(100) do |num|
    puts "Ruby is #{num} times better that Java or C++"
    end

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. Rails 5.2
    Active Storage
    Redis Cache Store
    HTTP/2 Early Hints
    Credentials

    View Slide

  11. Rails 5.1
    Yarn/Webpacker Integration
    System Tests
    Encrypted Secrets
    Parameterised Mailers

    View Slide

  12. Rails 5.0
    Action Cable
    API Mode
    Turbolinks 5

    View Slide

  13. Rails 4.2
    Active Job
    Asynchronous Mailers
    Adequate Record
    Web Console

    View Slide

  14. Rails 4.1
    Spring
    Template Variants
    Enums
    Mailer Previews

    View Slide

  15. Rails 4.0
    Russian Doll Caching
    Turbolinks
    Live Streaming
    Strong Parameters

    View Slide

  16. Rails 3.2
    Faster Development Mode
    Faster Routing Engine
    Active Record Store
    Strong Parameters

    View Slide

  17. Rails 3.1
    Asset Pipeline
    HTTP Streaming
    Full Engines!
    Identity Map
    Reversible Migrations

    View Slide

  18. Rails 3.0
    ARel
    Active Model
    Significant Internal Refactoring
    Bundler
    Railtie API

    View Slide

  19. Rails 2.3
    Application Templates
    Rack
    Engines! Sort-of!
    Rails Metal
    Nested Forms

    View Slide

  20. Rails 2.2
    Internationalisation
    HTTP Validators
    Thread Safety
    Database Connection Pool

    View Slide

  21. Rails 2.1
    Time Zones
    Dirty Attribute Tracking
    Named Scopes
    Better Caching

    View Slide

  22. Rails 2.0
    Resources
    MultiView
    Cookie Store Sessions
    “Sexy” Migrations

    View Slide

  23. Rails 1.2
    RESTful Routes
    Formats
    Multibyte Support
    Autoloading

    View Slide

  24. Rails 1.1
    RJS (Javascript written in Ruby)
    Polymorphic Associations
    Eager Loading
    respond_to

    View Slide

  25. Rails 1.0
    Dynamic Finders
    Filter Controls
    redirect_to :back

    View Slide

  26. Rails 0.14
    Plugins
    Cleaner Configuration
    Gem Freezing

    View Slide

  27. Rails 0.13
    Migrations
    Ajax
    Scriptaculous Visual Effects
    Named Routes

    View Slide

  28. Application 1 Application 2
    Application 3 Application 4

    View Slide

  29. Sharing code between apps in 2005
    Railtie inside a gem
    Plugin
    A regular gem
    … guess we better make it

    View Slide

  30. Application 1 Application 2
    Application 3 Application 4

    View Slide

  31. Application 1 Application 2
    Application 3 Application 4
    engines.rb

    View Slide

  32. View Slide

  33. View Slide

  34. – François
    “Thanks! These engines are
    great — this is the most excited
    I’ve been since finding Rails.”

    View Slide

  35. – Robert
    “Sweet stuff! "Most
    coolest" plugin yet !
    Nice "”

    View Slide

  36. – Ramin
    “Amazing. Great job!
    Go see it! GO GO GO!”

    View Slide

  37. – Scott
    “This is just awesome. […] This is the
    real answer to the reuse question. I just
    tried the login engine, and it totally
    works, easy! Wowee zowee...”

    View Slide

  38. ENGINES
    INSIDE OTHER ENGINES

    View Slide

  39. View Slide

  40. –DHH
    “It's a tale of caution, not condemnation”

    View Slide

  41. –DHH
    “It's a tale of caution, not condemnation”

    View Slide

  42. View Slide

  43. Hey, here’s an idea
    OK, but y’know, be careful

    View Slide

  44. Hey, here’s an idea
    OK, but y’know, be careful
    Genuine stock image
    for “excited developer”
    Genuine stock image
    for “angry developer”

    View Slide

  45. 2005-2008

    View Slide

  46. 2005-2008

    View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. Some Guy said about 17 hours later:
    Engines are in fact
    de facto evil

    View Slide

  52. View Slide

  53. View Slide

  54. https://www.flickr.com/photos/etlund/539344246

    View Slide

  55. View Slide

  56. https://www.flickr.com/photos/robbyrussell

    View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. View Slide

  62. View Slide

  63. View Slide

  64. –Rails Envy Podcast #51
    “Kinda like Rails Engines… but
    doesn’t suck?”
    “Exactly.”
    (On the topic of Merb slices)

    View Slide

  65. “Engines
    aren’t
    evil”

    View Slide

  66. November 2008

    View Slide

  67. November 2008

    View Slide

  68. November 2008

    View Slide

  69. THE END

    View Slide

  70. [ insert coding montage ]

    View Slide

  71. Engines plugin features
    Controllers, Helpers, Views
    Models
    Routes
    Migrations
    Assets

    View Slide

  72. + =

    View Slide

  73. class Rails::Application
    < Rails::Engine

    View Slide

  74. Engines plugin features
    Controllers, Helpers, Views
    Models
    Routes
    Migrations
    Assets

    View Slide

  75. Technology Trigger
    Peak of
    Inflated
    Expectations
    Trough of
    Disillusionment
    Slope of
    Enlightenment
    Plateau of
    Productivity

    View Slide

  76. Technology Trigger
    Peak of
    Inflated Expectations
    2005 2011

    View Slide

  77. Technology Trigger
    Peak of
    Inflated Expectations
    Trough of
    Received
    Opinions
    Slope of Fear,
    Uncertainty and
    Doubt
    Plateau of “Oh, are
    those still a thing?”
    2005 2011

    View Slide

  78. –Ryan Bigg & Yehuda Katz, Rails 3 in Action, Manning Publications, 2011
    “There was a lot of controversy
    surrounding engines, and James spent a
    lot of his time defending the decision to
    develop them. Since then, however, the
    community has grown to accept the idea.”

    View Slide

  79. View Slide

  80. Application 1 Application 2
    Application 3 Application 4

    View Slide

  81. Application 1 Application 2
    Application 3 Application 4

    View Slide

  82. The Doctrine

    View Slide

  83. Engines you may know
    Devise
    Spree
    Refinery CMS
    Active Storage

    View Slide

  84. Donate to archive.org
    Almost every site I referenced here is gone

    View Slide

  85. Donate to archive.org
    Almost every site I referenced here is gone

    View Slide

  86. View Slide

  87. A History of Opinions
    The History of Rails

    View Slide

  88. String#capitalize
    Array#forty_two

    View Slide

  89. resource :session

    View Slide

  90. Model-centric ▶ Resource-centric controllers (2.0)
    RJS & Scriptaculous ▶ UJS & jQuery (3.1)
    Observers ▶ Concerns (4.0)

    View Slide

  91. Active Resource ▶ Nothing (Monoliths?) (4.0)

    View Slide

  92. View Slide

  93. Majestic Monolith vs. Microservices
    Fat Models vs. Presenters
    Callbacks vs. Service Objects
    System Tests vs. Unit Testing & Stubs
    Fixtures vs. Factories

    View Slide

  94. View Slide

  95. H A N A M I
    rom.rb
    dry-rb

    View Slide

  96. The Doctrine

    View Slide

  97. Hey, I have an idea!

    View Slide

  98. Hey, I have an idea!
    Some Guy said about 12 seconds later:
    Your idea is in fact
    de facto evil

    View Slide

  99. View Slide

  100. View Slide

  101. View Slide

  102. . I’ve written about it here: http://t.co/…

    View Slide

  103. View Slide

  104. View Slide

  105. Pearls, not diamonds

    View Slide

  106. Thanks!
    lazyatom.com/crazy-ones
    (it really is the end now)

    View Slide