SlideShare a Scribd company logo
Adventures
of Java developer
 in Ruby world
     by Orest Ivasiv
        @halyph
WARNING!
A Presentation is NOT
   a Documentation!



                        2
Agenda
•   Background
•   Project issues and language choice
•   Ruby History
•   “Trololo”
•   Ruby Ecosystem review




                                         3
Background
•   My experience: 5+ years in industry
•   Java is my primary language
•   1st ruby experience – 05/2007
•   08/2012 real Ruby project
•   Language agnostic, only pragmatic choices
•   Co-organizer of




                                                4
Project requirements
•   Scripting language
•   Easy to learn
•   Simple distribution model
•   Language Community
•   Local community size
•   Ecosystem




                                5
Language Matrix
                           Java   Python   Ruby    Groovy   Perl
Well adopted               +      +        +       -        -
Cross-platform             +      +        +/-     +        +
Easy Maintainable          +      +        +       +        -
Huge community             +      +/-      +       +/-      -
Nice to start app from     -      +        +       +        -
scratch
Lots of third-party libs   +      +        +       +/-      +
Speed of execution         +      +        +/-     -        +
Application distribution   +      +/-      +/-     +        +/-
model and dependency
issues
Runtime environment        +      +/-      +/-     +/-      +/-
setup
My Language sympathy       Native - exp    + exp   +/-      Hate it
                                                                      6
History


        Lisp      Smalltalk           Perl           Ruby           Java           C#

•1958          •1983          •1989          •1993          •1995          •2000




                                                                                        7
Ruby History
•   02/24/1993 - Pre-history age. Without code
•   12/21/1995 - Ruby is in public. V.0.95
•   12/25/1996 - Ruby 1.0 released
•   10/27/1999 - the first Ruby book
•   xx/07/2004 - DHH first released Ruby on Rails
•   xx/12/2005 - version 1 of Ruby on Rails was released
•   xx/10/2007 -        bundle/ship RoR w/ OS X Leopard




                                                       8
Ruby History




               9
10
Ruby trolls on early days
September 20, 2007   here is a list of the top 10
                     reasons that anything (and probably
                     everything) related to Java sucks
                     ass in comparison to Ruby and
                     Rails.

                     ... Fuck compilers ... Java
                     Programmers are Morons ... they all
                     suck ass ... Jimmy Gosling?
                     Hahahahahahahaha...




                                                       11
Ruby trolls on early days




                            12
Ruby trolls on early days




                            13
Ruby trolls on early days




 Maybe "Fuck You" means something different in Copenhagen?    14
Ruby trolls on early days
May 13, 2007




               • Ruby on Rails vs Java
               • Ruby on Rails vs PHP
               • Ruby on Rails vs .NET




                                         15
Ruby implementations

                     Which to pick ?
•   Ruby 1.8, MRI
•   Ruby 1.9, YARV
•   JRuby
•   Rubinius
•   IronRuby
•   MacRuby



                                   16
Python Community




                   17
Java Culture


Enterprise
   Big company
 Big departments



                   18
Ruby Culture

        =
Start-Up Culture
   Just the get App running

                              19
How to find non-crappy
         Gem?




                         20
How to find non-crappy
         Gem?




                         21
How to find non-crappy
          Gem?


• Evaluate gem
  o   Documentation
  o   Source code
  o   Open/Closed issues
  o   Gems Dependency
  o   Curation of maintainer
  o   Tests



                               22
:Ruby => *nix




                23
Implement Ruby Gem

    Ruby Style
      Guide
• Follow the better practices




                                24
Implement Ruby Gem
1. How to write own gem?
2. When is it necessary?
3. How to start? FTW?
  o   Find the mentor
  o   Pick proper test framework
  o   Pick the bootstrap tools




                                   25
Tools & Gems
•   Git
•   Gem
•   Bundler   Maven
•   Rake
•   Rspec
•   irb
•   Ri
•   Rdoc, TomDoc, YARD
•   Thor


                           26
Tools & Gems




               27
IDE vs. Text Editor




                      28
Debug Ruby Code
• Ruby-debug
• Pry
• RubyMine debugger




                        29
Ruby Testing
• Test::Unit
• minitest             Which to pick ?
• Rspec
• Cucumber
…
• Tons of other gems




                                         30
Language Features
•   Namespaces
•   Mixin
•   Code organization
•   Duck typing
•   Open Classes
•   Blocks




                            31
Ruby Community
•   Social Coding - GitHub
•   Screencasts
•   Podcasts
•   Conferences
•   Tons of Books




                             32
Ruby Ecosystem




                 33
Any Questions?




             34

More Related Content

PDF
Ruby Beyond Rails
Gaveen Prabhasara
 
PDF
RVM and Ruby Interpreters @ RSC Roma 03/2011
Marcello Barnaba
 
PPTX
Rubykaigi 2017-nishimotz-v6
Takuya Nishimoto
 
PDF
Beware of your Hype Value Stores
Jérémie BORDIER
 
PDF
Minitest
Creditas
 
PDF
Command Line Applications with Ruby
Alexander Merkulov
 
PDF
IJTC%202009%20JRuby
tutorialsruby
 
PDF
IJTC%202009%20JRuby
tutorialsruby
 
Ruby Beyond Rails
Gaveen Prabhasara
 
RVM and Ruby Interpreters @ RSC Roma 03/2011
Marcello Barnaba
 
Rubykaigi 2017-nishimotz-v6
Takuya Nishimoto
 
Beware of your Hype Value Stores
Jérémie BORDIER
 
Minitest
Creditas
 
Command Line Applications with Ruby
Alexander Merkulov
 
IJTC%202009%20JRuby
tutorialsruby
 
IJTC%202009%20JRuby
tutorialsruby
 

Similar to Adventures of java developer in ruby world (20)

PPTX
Optimizing for programmer happiness
Josh Schramm
 
PDF
Ruby an overall approach
Felipe Schmitt
 
PDF
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Katy Slemon
 
PDF
Ruby tutorial
knoppix
 
PDF
Why JRuby?
Fiona Tay
 
PPT
Java, Ruby & Rails
Peter Lind
 
KEY
Ruby on Rails survival guide of an aged Java developer
gicappa
 
PDF
From java-to-ruby-book-summary
120bi
 
PPTX
sl slides-unit-1.pptx
SRAVANTHISALLARAM1
 
PDF
rubyonrails
tutorialsruby
 
PDF
rubyonrails
tutorialsruby
 
PDF
JRuby, Ruby, Rails and You on the Cloud
Hiro Asari
 
PPTX
JRuby in Java Projects
jazzman1980
 
PDF
JRuby - Enterprise 2.0
Jan Sifra
 
PDF
10 Things you should know about Ruby
sikachu
 
PPTX
Ruby And Ruby On Rails
AkNirojan
 
PDF
遇見 Ruby on Rails
Wen-Tien Chang
 
PPT
Ruby on Rails (RoR) as a back-end processor for Apex
Espen Brækken
 
PDF
Feels Like Ruby - Ruby Kaigi 2010
Sarah Mei
 
PDF
From Java to Ruby...and Back
Anil Hemrajani
 
Optimizing for programmer happiness
Josh Schramm
 
Ruby an overall approach
Felipe Schmitt
 
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Katy Slemon
 
Ruby tutorial
knoppix
 
Why JRuby?
Fiona Tay
 
Java, Ruby & Rails
Peter Lind
 
Ruby on Rails survival guide of an aged Java developer
gicappa
 
From java-to-ruby-book-summary
120bi
 
sl slides-unit-1.pptx
SRAVANTHISALLARAM1
 
rubyonrails
tutorialsruby
 
rubyonrails
tutorialsruby
 
JRuby, Ruby, Rails and You on the Cloud
Hiro Asari
 
JRuby in Java Projects
jazzman1980
 
JRuby - Enterprise 2.0
Jan Sifra
 
10 Things you should know about Ruby
sikachu
 
Ruby And Ruby On Rails
AkNirojan
 
遇見 Ruby on Rails
Wen-Tien Chang
 
Ruby on Rails (RoR) as a back-end processor for Apex
Espen Brækken
 
Feels Like Ruby - Ruby Kaigi 2010
Sarah Mei
 
From Java to Ruby...and Back
Anil Hemrajani
 
Ad

More from Orest Ivasiv (8)

PDF
Why don't you Groovy?
Orest Ivasiv
 
PDF
Vagrant or docker for java dev environment
Orest Ivasiv
 
PDF
OAuth2 and Spring Security
Orest Ivasiv
 
PDF
Dockerizing development workflow
Orest Ivasiv
 
PPTX
When Camel Smiles
Orest Ivasiv
 
PDF
Math synonyms
Orest Ivasiv
 
PPTX
Java Code Quality Tools
Orest Ivasiv
 
PPTX
Time Management: the Hidden Power of Pomodoro
Orest Ivasiv
 
Why don't you Groovy?
Orest Ivasiv
 
Vagrant or docker for java dev environment
Orest Ivasiv
 
OAuth2 and Spring Security
Orest Ivasiv
 
Dockerizing development workflow
Orest Ivasiv
 
When Camel Smiles
Orest Ivasiv
 
Math synonyms
Orest Ivasiv
 
Java Code Quality Tools
Orest Ivasiv
 
Time Management: the Hidden Power of Pomodoro
Orest Ivasiv
 
Ad

Recently uploaded (20)

PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
PDF
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
famaw19526
 
PDF
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
PPTX
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PPTX
The Power of IoT Sensor Integration in Smart Infrastructure and Automation.pptx
Rejig Digital
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
This slide provides an overview Technology
mineshkharadi333
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PDF
NewMind AI Monthly Chronicles - July 2025
NewMind AI
 
PDF
Shreyas_Phanse_Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
SHREYAS PHANSE
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
famaw19526
 
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
The Power of IoT Sensor Integration in Smart Infrastructure and Automation.pptx
Rejig Digital
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
This slide provides an overview Technology
mineshkharadi333
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
NewMind AI Monthly Chronicles - July 2025
NewMind AI
 
Shreyas_Phanse_Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
SHREYAS PHANSE
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 

Adventures of java developer in ruby world

  • 1. Adventures of Java developer in Ruby world by Orest Ivasiv @halyph
  • 2. WARNING! A Presentation is NOT a Documentation! 2
  • 3. Agenda • Background • Project issues and language choice • Ruby History • “Trololo” • Ruby Ecosystem review 3
  • 4. Background • My experience: 5+ years in industry • Java is my primary language • 1st ruby experience – 05/2007 • 08/2012 real Ruby project • Language agnostic, only pragmatic choices • Co-organizer of 4
  • 5. Project requirements • Scripting language • Easy to learn • Simple distribution model • Language Community • Local community size • Ecosystem 5
  • 6. Language Matrix Java Python Ruby Groovy Perl Well adopted + + + - - Cross-platform + + +/- + + Easy Maintainable + + + + - Huge community + +/- + +/- - Nice to start app from - + + + - scratch Lots of third-party libs + + + +/- + Speed of execution + + +/- - + Application distribution + +/- +/- + +/- model and dependency issues Runtime environment + +/- +/- +/- +/- setup My Language sympathy Native - exp + exp +/- Hate it 6
  • 7. History Lisp Smalltalk Perl Ruby Java C# •1958 •1983 •1989 •1993 •1995 •2000 7
  • 8. Ruby History • 02/24/1993 - Pre-history age. Without code • 12/21/1995 - Ruby is in public. V.0.95 • 12/25/1996 - Ruby 1.0 released • 10/27/1999 - the first Ruby book • xx/07/2004 - DHH first released Ruby on Rails • xx/12/2005 - version 1 of Ruby on Rails was released • xx/10/2007 - bundle/ship RoR w/ OS X Leopard 8
  • 10. 10
  • 11. Ruby trolls on early days September 20, 2007 here is a list of the top 10 reasons that anything (and probably everything) related to Java sucks ass in comparison to Ruby and Rails. ... Fuck compilers ... Java Programmers are Morons ... they all suck ass ... Jimmy Gosling? Hahahahahahahaha... 11
  • 12. Ruby trolls on early days 12
  • 13. Ruby trolls on early days 13
  • 14. Ruby trolls on early days Maybe "Fuck You" means something different in Copenhagen?  14
  • 15. Ruby trolls on early days May 13, 2007 • Ruby on Rails vs Java • Ruby on Rails vs PHP • Ruby on Rails vs .NET 15
  • 16. Ruby implementations Which to pick ? • Ruby 1.8, MRI • Ruby 1.9, YARV • JRuby • Rubinius • IronRuby • MacRuby 16
  • 18. Java Culture Enterprise Big company Big departments 18
  • 19. Ruby Culture = Start-Up Culture Just the get App running 19
  • 20. How to find non-crappy Gem? 20
  • 21. How to find non-crappy Gem? 21
  • 22. How to find non-crappy Gem? • Evaluate gem o Documentation o Source code o Open/Closed issues o Gems Dependency o Curation of maintainer o Tests 22
  • 24. Implement Ruby Gem Ruby Style Guide • Follow the better practices 24
  • 25. Implement Ruby Gem 1. How to write own gem? 2. When is it necessary? 3. How to start? FTW? o Find the mentor o Pick proper test framework o Pick the bootstrap tools 25
  • 26. Tools & Gems • Git • Gem • Bundler Maven • Rake • Rspec • irb • Ri • Rdoc, TomDoc, YARD • Thor 26
  • 28. IDE vs. Text Editor 28
  • 29. Debug Ruby Code • Ruby-debug • Pry • RubyMine debugger 29
  • 30. Ruby Testing • Test::Unit • minitest Which to pick ? • Rspec • Cucumber … • Tons of other gems 30
  • 31. Language Features • Namespaces • Mixin • Code organization • Duck typing • Open Classes • Blocks 31
  • 32. Ruby Community • Social Coding - GitHub • Screencasts • Podcasts • Conferences • Tons of Books 32

Editor's Notes

  • #4: Issues with Ruby ecosystem. Is Ruby really cross platform? Pitfalls with the Ruby language. Packaging and application distribution, pros&cons. Ruby CLI application facilities. Project based experience.
  • #9: See http://blog.nicksieger.com/articles/2006/10/20/rubyconf-history-of-rubyhttp://gunnertech.com/2011/11/ruby-on-rails-history-a-look-back/27 October 1999: Matz and Keiju’s book is published, the first Ruby book
  • #10: See http://blog.nicksieger.com/articles/2006/10/20/rubyconf-history-of-rubyhttp://gunnertech.com/2011/11/ruby-on-rails-history-a-look-back/27 October 1999: Matz and Keiju’s book is published, the first Ruby book
  • #12: http://www.javalobby.org/java/forums/t101687.html->http://www.jroller.com/obie/entry/top_10_reasons_why_java1) Java has a compilerRuby does not. That's great! Fuck compilers and their false sense of security. Too often is bad code checked in or even deployed to production, simply because it compiled. No such luxury in the Ruby world.2) Java framework authors are not application developersPrime example: the JBoss guys, who are paid handsomely to work on framework code all day. Sure, they're exposed to real application development, but they don't do it themselves. As a result, none of their handiwork is extracted from actual working codebases. Which is a shame, because if it were extracted from actual working codebases then it might actually not suck.All Rails core and plugin contributors of significance are fulltime application developers, starting at the top with DHH himself and the Rails core team. Day in and day out we write applications in Ruby and extract the useful bits out for other Rails developers to make use of via gems and plugins.3) Most Java Programmers are MoronsThis has to do with the number of people in the world that describe themselves as Java programmers and work at day jobs doing Java programming. What are there, like 2 million of them? More? So it's just a numbers thing, really. There just aren't that many good programmers overall in the world -- and most them wouldn't be caught dead doing Java.4) Java is too FragmentedJava has a gazillion open-source frameworks and they all suck ass. So what do Java teams do to cope? Cobble those suck-ass frameworks together into custom layered homebrews that are nothing more than exponential explosions of sheer, despicable suck-assiness.In stark contrast, in the Ruby world, we only have Rails. All Rails projects are structured the same way and follow the same conventions. That's a good thing, since it means that Rails developers can move across projects with relative ease.5) Java is Too SlowHa. This is one of my favorite reasons, for the bloody irony of it. You see, Java isn't actually slow. Everyone reading this knows that it got plenty fast over the last five years or so. Nevertheless, 90% of the world that knows of Java thinks that it is slow, because of its association with crappy slow Java applets and crappy slow Java loading screens on mobile devices.Ruby *is* slow, compared to Java, and yet it is fast enough. Amazing, isn't it.6) Java doesn't have blocks and closuresDo I really need to rehash this reason? No. I don't think so.7) Java has Integrated Development Environments (IDEs)Closely related to Reason #3 Most Java Programmers are morons. Everyone knows that the best programmers use Vim and Emacs. Then come the TextMate users. If you need to use an IDE then you suck, period.8) Java has good debugging supportJava has great and powerful debugging (which is very necessary since most Java code sucks so much ass). Ruby has ridiculously pitiful debugging support, which means our code actually needs to be well-tested and readable.9) Java Makes a Lot of Money for VendorsThis is potentially the most subtle of all of the reasons on the list. Basically, the integrity of most anything having to do with Java is corrupted by the way that it is inextricably linked to a web of intrigue involving money, big vendors and bullshit enterprise politics and pandering. Ruby doesn't make major money for anyone except Pragmatic Dave.10) Java does not have DHHIn the words of my inimitable friend Zed Shaw, "If DHH ain't doing it, you don't fucking do it. (Seems every time some clever fellow gets into trouble it's because of that.)"Who does Java have? Jimmy Gosling? Hahahahahahahaha...
  • #16: May 13, 2007http://www.youtube.com/watch?v=PQbuyKUaKFo
  • #20: “JavaProgrammersarewritingstrangeRubyCode.”
  • #34: https://github.com/h3rald/ruby-compendiumhttp://infoether.com/ruby-and-rails-whitepaper
  • #35: Як я обирав Рубі для поточного пректу. Показати матрицюЯкі основні критерії були? РЕСТ АПІ, кросс платформеністьЧому не Пайтон?Проблеми з ДжДК, креші, бандлер