SlideShare a Scribd company logo
1 of 34
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

Similar to Adventures of java developer in ruby world

10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Rubysikachu
 
JRuby - The Best of Java and Ruby
JRuby - The Best of Java and RubyJRuby - The Best of Java and Ruby
JRuby - The Best of Java and RubyEvgeny Rahman
 
The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?Joshua Ballanco
 
Ruby for Beginner
Ruby for BeginnerRuby for Beginner
Ruby for BeginnerMi Ji Kim
 
Ruby an overall approach
Ruby an overall approachRuby an overall approach
Ruby an overall approachFelipe Schmitt
 
RubyならMacでしょう
RubyならMacでしょうRubyならMacでしょう
RubyならMacでしょうvincentisambart
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyHiroshi SHIBATA
 
[.Net开发交流会][2010.06.19]better framework better life(吕国宁)
[.Net开发交流会][2010.06.19]better framework better life(吕国宁)[.Net开发交流会][2010.06.19]better framework better life(吕国宁)
[.Net开发交流会][2010.06.19]better framework better life(吕国宁)Shanda innovation institute
 
Better Framework Better Life
Better Framework Better LifeBetter Framework Better Life
Better Framework Better Lifejeffz
 
Rake: Not Your Father's Build Tool
Rake: Not Your Father's Build ToolRake: Not Your Father's Build Tool
Rake: Not Your Father's Build Toolfilmprog
 
Why i love ruby than x
Why i love ruby than xWhy i love ruby than x
Why i love ruby than xSamnang Chhun
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Hiroshi SHIBATA
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Gozhubert
 
Better framework, better life
Better framework, better lifeBetter framework, better life
Better framework, better lifeDaniel Lv
 

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

Setup ruby
Setup rubySetup ruby
Setup ruby
 
10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Ruby
 
JRuby - The Best of Java and Ruby
JRuby - The Best of Java and RubyJRuby - The Best of Java and Ruby
JRuby - The Best of Java and Ruby
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?MacRuby: What is it? and why should you care?
MacRuby: What is it? and why should you care?
 
Ruby On Rails Ecosystem
Ruby On Rails EcosystemRuby On Rails Ecosystem
Ruby On Rails Ecosystem
 
JRuby: The Hard Parts
JRuby: The Hard PartsJRuby: The Hard Parts
JRuby: The Hard Parts
 
Ruby for Beginner
Ruby for BeginnerRuby for Beginner
Ruby for Beginner
 
Ruby an overall approach
Ruby an overall approachRuby an overall approach
Ruby an overall approach
 
RubyならMacでしょう
RubyならMacでしょうRubyならMacでしょう
RubyならMacでしょう
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of Ruby
 
[.Net开发交流会][2010.06.19]better framework better life(吕国宁)
[.Net开发交流会][2010.06.19]better framework better life(吕国宁)[.Net开发交流会][2010.06.19]better framework better life(吕国宁)
[.Net开发交流会][2010.06.19]better framework better life(吕国宁)
 
Better Framework Better Life
Better Framework Better LifeBetter Framework Better Life
Better Framework Better Life
 
Rake: Not Your Father's Build Tool
Rake: Not Your Father's Build ToolRake: Not Your Father's Build Tool
Rake: Not Your Father's Build Tool
 
Why i love ruby than x
Why i love ruby than xWhy i love ruby than x
Why i love ruby than x
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Why ruby
Why rubyWhy ruby
Why ruby
 
Better framework, better life
Better framework, better lifeBetter framework, better life
Better framework, better life
 
RoR_2_Ruby
RoR_2_RubyRoR_2_Ruby
RoR_2_Ruby
 

More from Orest Ivasiv

Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?Orest Ivasiv
 
Vagrant or docker for java dev environment
Vagrant or docker for java dev environmentVagrant or docker for java dev environment
Vagrant or docker for java dev environmentOrest Ivasiv
 
OAuth2 and Spring Security
OAuth2 and Spring SecurityOAuth2 and Spring Security
OAuth2 and Spring SecurityOrest Ivasiv
 
Dockerizing development workflow
Dockerizing development workflowDockerizing development workflow
Dockerizing development workflowOrest Ivasiv
 
Java Code Quality Tools
Java Code Quality ToolsJava Code Quality Tools
Java Code Quality ToolsOrest Ivasiv
 
Time Management: the Hidden Power of Pomodoro
Time Management: the Hidden Power of PomodoroTime Management: the Hidden Power of Pomodoro
Time Management: the Hidden Power of PomodoroOrest Ivasiv
 

More from Orest Ivasiv (8)

Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
 
Vagrant or docker for java dev environment
Vagrant or docker for java dev environmentVagrant or docker for java dev environment
Vagrant or docker for java dev environment
 
OAuth2 and Spring Security
OAuth2 and Spring SecurityOAuth2 and Spring Security
OAuth2 and Spring Security
 
Dockerizing development workflow
Dockerizing development workflowDockerizing development workflow
Dockerizing development workflow
 
When Camel Smiles
When Camel SmilesWhen Camel Smiles
When Camel Smiles
 
Math synonyms
Math synonymsMath synonyms
Math synonyms
 
Java Code Quality Tools
Java Code Quality ToolsJava Code Quality Tools
Java Code Quality Tools
 
Time Management: the Hidden Power of Pomodoro
Time Management: the Hidden Power of PomodoroTime Management: the Hidden Power of Pomodoro
Time Management: the Hidden Power of Pomodoro
 

Recently uploaded

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

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

  1. 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.
  2. 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
  3. 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
  4. 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...
  5. May 13, 2007http://www.youtube.com/watch?v=PQbuyKUaKFo
  6. “JavaProgrammersarewritingstrangeRubyCode.”
  7. https://github.com/h3rald/ruby-compendiumhttp://infoether.com/ruby-and-rails-whitepaper
  8. Як я обирав Рубі для поточного пректу. Показати матрицюЯкі основні критерії були? РЕСТ АПІ, кросс платформеністьЧому не Пайтон?Проблеми з ДжДК, креші, бандлер