SlideShare a Scribd company logo
Ruby for Java
Developers
!

Robert Reiz
Robert Reiz

http:/
/robert-reiz.com

https:/
/twitter.com/robertreiz

!

http:/
/about.me/robertreiz

!

http:/
/www.VersionEye.com
Agenda
History

Java/Ruby Culture Background

Java/Ruby Tech. Background

Ruby Lang

Rails - Short Intro + Tools

Rails Demo App 

Performance 

Else

The End
A Presentation is no
Documentation
A good presentation supports only the speaker
History

Yukihiro Matsumoto in Japan

1993 first ideas

1995 Version 0.95 released
History
"I wanted a scripting language that was more
powerful than Perl, and more object-oriented
than Python. That's why I decided to design my
own language."
- Matsumoto
History
"Often people, especially computer engineers, focus on
the machines. They think, "By doing this, the machine
will run faster. By doing this, the machine will run more
effectively. By doing this, the machine will something
something something." They are focusing on machines.
But in fact we need to focus on humans, on how humans
care about doing programming or operating the
application of the machines. We are the masters. They
are the slaves."
- Matsumoto
History
for (int i = 0 ; i < 3 ; i++){

System.out.println(“Hallo World”);

}
3.times{

print “Hallo World”

}
History
Language developed by Open Standards
Promotion Center of the InformationTechnology Promotion Agency 

2011: Japanese Industrial Standard (JIS X
3017)

2012: International standard (ISO/IEC 30170)
Culture Background
“Java Programmers are writing strange
Ruby Code.”
Java Culture
JME


Java for Desktops
(Swing, AWT,
JavaFX)


J EE
Java Culture = Enterprise Culture

Enterprise Environment
Java Culture
Waterfall
Servlet
LDAP
Intranet

Eclipse

Excel

Application Server
Oracle

Jira

Deadlines
Outlook

Requirements

SVN
SLAs

EJB
Ruby Culture

Start-Up Culture in Silicon Valley
Ruby Culture

Start-Up Environment (Epicenter Cafe @ SF)
Ruby Culture

Start-Up Environment (The Summit @ SF)
Ruby Culture

Hackathon
Fail fast
Fail early
Ruby Culture
Login with Twitter / Facebook
OAuth

Cloud

Internet
GMail

SaaS

Agile

PostgreSQL
SimpleNote
RTM

Heroku

NoSQL

Textmate
Dropbox
Ideas

GitHub
Java Tech. Background
WAR

EAR

WAR

EAR

WAR

App-Server
DB

SAP

LDAP

This makes sense for big companies with different apartments. 

But it doesn’t make sense for a small Start-Up!
Ruby Tech. Background
In a typical Ruby environment there is usually ...
No SAP

No LDAP

No Oracle

No App-Server

No WAR

No EAR
Ruby Tech. Background
Just the App!

Application
Everything else is secondary!
Java Language

640 Pages
Java Language
Inheritance
Polymorphismus
AutoBoxing

Interfaces

Object Oriented

Annotations
Generics

static typing

Enums
Java Language
More language features don’t make a language
better. Just more complicated and more difficult
to learn.
Without monster tools like Eclipse it is nearly not
possible to use the language.
Can you write down the Java code to open this
file and output the content? 

!

- Without IDE

- Without Google

text_file.txt
Java
import java.io.*;


!
class FileRead {



public static void main(String args[]) {

try{

FileInputStream fstream = new FileInputStream("text_file.txt");

DataInputStream in = new DataInputStream(fstream);

BufferedReader br = new BufferedReader(new InputStreamReader(in));

String strLine;

while ((strLine = br.readLine()) != null) {

System.out.println (strLine);

}

in.close();

} catch (Exception e) { 

System.err.println("Error: " + e.getMessage());

}

}

}
Ruby
puts File.read 'text_file.txt'
Python
f = open('text_file.txt', 'r')

Perl
open FILE, "text_file.txt" or die $!;
Ruby Language
Polymorphismus

Inheritance

Object Oriented
Duck typing

dynamic typing
Ruby Language
No Interfaces

No static types

No Generics 

No Annotations
Java

Ruby

package xyz;

!

import xyz;

!

public class User {

!

public void sayHello(){

System.out.println(“Hello”);

}

!

class User 

!

def say_hello

p “Hello”

end

!

}

end

User user = new User()

user.sayHello()

user = User.new

user.say_hello
Java

Ruby

package xyz;

!

import xyz;

!

class User 

!

def say_hello

p “Hello”

end


public class User {

!

public void sayHello(){

System.out.println(“Hello”);

}


!

private 

!

!

private String secretHero(){

return “secret hero”;

}

!

}

def secret_hero

“secret hero”

end

!

end
Java
public String doubleIt(String name){

result = name + “ ” + name;

return result;

}

Ruby
def double_it name

"#{name} #{name}"

end
Java
public String greetz(String name){ 

if (name != null){

result = “Hello” + name;

else {

result = “Hello”; 

}

System.out.println( result );

}
Ruby
def greetz( name )

if !name.nil?

p "Hello #{name}"

else

p “Hello” 

end

end
Ruby
def greetz(name)

p "Hello #{name}" if name

p “Hello” unless name

end
Ruby
def greetz(name = “Rob”, say_name = true)

p "Hello #{name}" if say_name

p “Hello” unless say_name

end

user.greetz(“Bob”, false)
user. greetz(“Bob”)
user. greetz()
Java
List<String> list = new ArrayList<String>();

!

list.add("Spiderman");

list.add("Batman");

list.add("Hulk");

!

for (String name : list){

System.out.println(name);

}
Ruby
names = Array.new
names << “Hans”

names << “Tanz”
names[0]

names[1]
names.first
names.last
Ruby
names = [‘Spiderman’, ‘Batman’, ‘Hulk’]
names.each do |name|

print “#{name}”

end
Ruby
hash = Hash.new
hash[“a”] = 100

hash[“b”] = 200
hash[“a”]

hash.delete(“a”)
hash.first
hash.last
hash.each {|key, value| puts "#{key} is #{value}" }
hash.each_key {|key| puts key }
irb
Ruby on Rails
Initial Release 2004

David Heinemeier Hansson

Web application framework

MIT License

http:/
/rubyonrails.org/
Ruby on Rails
activesupport : 3.2.8 

bundler : ~>1.0 

activerecord : 3.2.8 

actionpack : 3.2.8 

activeresource : 3.2.8 

actionmailer : 3.2.8

railties : 3.2.8
http:/
/www.versioneye.com/package/rails
Ruby on Rails
MVC Framework

Convention over Configuration

KIS 

Testable 

No UI Components 

You are in control
Ruby on Rails

REST

Stateless

Session in cookies OR database
Ruby on Rails

http:/
/www.myapp.com/photos
http:/
/www.myapp.com/photos/17
http:/
/www.myapp.com/photos/17/edit
Bundler - Gemfile
source 'https:/
/rubygems.org'

!

gem 'rails', '3.2.6'

gem 'sqlite3'

gem 'jquery-rails'

!

# Gems used only for assets and not required

# in production environments by default.

group :assets do

gem 'sass-rails', '~> 3.2.3'

gem 'coffee-rails', '~> 3.2.1'

gem 'uglifier', '>= 1.0.3'

end
Environments
development:

adapter: sqlite3

database: db/development.sqlite3

pool: 5

timeout: 5000


!
test:

adapter: sqlite3

database: db/test.sqlite3

pool: 5

timeout: 5000


!
production:

adapter: sqlite3

database: db/production.sqlite3

pool: 5

timeout: 5000


export RAILS_ENV=test
export RAILS_ENV=production
export RAILS_ENV=development
Rake
require File.expand_path('../config/application', __FILE__)

!

Myapp::Application.load_tasks


rake db:create
rake routes
Ruby on Rails

DEMO
live coding
Performance
Ruby is slower than Java! 

!

... True!
But ...
Performance

Client

Request
Response

WEB

Server

40 %

20 %

READ, WRITE
Response

40 %

DB
Performance
Request
Response

1
HTML

Page

WEB

Server
N - Requests 

to load 

additional 

Resources
Performance
Performance
Performance
Performance opt. for Web Apps. 

Minify

Uglify

CSS Stripes

Opt. HTML

Opt. Database Access
Performance

http:/
/guides.rubyonrails.org/asset_pipeline.html

http:/
/tools.pingdom.com/fpt/
Who is using Ruby?
Ruby is just good small projects. Right?
-> Right!
Small Projects like ...
-> $ 800 Million worth
-> $ 1 Billion worth
Count of Open Source Projects

Java

Java
Ruby

PHP
0

12500

25000

37500

50000

4061

PHP

R

12320

R

Node.JS

23439

Node.JS

Python

43620

Python

Ruby

48034

2973
Ruby on Rails is very
good solution for WebApplications!
What is not good for?
It is not good for ...

Long living batch jobs

parsing 2 million documents

Use Java or C for that kind of jobs.
Links
http:/
/www.ruby-lang.org/en/

http:/
/rubyonrails.org

http:/
/ruby.railstutorial.org

http:/
/rubygems.org/

http:/
/www.heroku.com

http:/
/travis-ci.org
Links
http:/
/www.engineyard.com/

https:/
/www.dotcloud.com/

http:/
/www.CloudControl.com/

http:/
/jruby.org/

http:/
/www.ironruby.net/
???

More Related Content

What's hot

ppt18
ppt18ppt18
ppt18
callroom
 
Ruby for Perl Programmers
Ruby for Perl ProgrammersRuby for Perl Programmers
Ruby for Perl Programmers
amiable_indian
 
name name2 n
name name2 nname name2 n
name name2 n
callroom
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
José Paumard
 
Javascript
JavascriptJavascript
Javascript
guest03a6e6
 
Effective Scala (JavaDay Riga 2013)
Effective Scala (JavaDay Riga 2013)Effective Scala (JavaDay Riga 2013)
Effective Scala (JavaDay Riga 2013)mircodotta
 
DEFUN 2008 - Real World Haskell
DEFUN 2008 - Real World HaskellDEFUN 2008 - Real World Haskell
DEFUN 2008 - Real World Haskell
Bryan O'Sullivan
 
Groovy presentation
Groovy presentationGroovy presentation
Groovy presentation
Manav Prasad
 
Php extensions
Php extensionsPhp extensions
Php extensions
Elizabeth Smith
 
Playfulness at Work
Playfulness at WorkPlayfulness at Work
Playfulness at Work
Erin Dees
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
José Paumard
 

What's hot (11)

ppt18
ppt18ppt18
ppt18
 
Ruby for Perl Programmers
Ruby for Perl ProgrammersRuby for Perl Programmers
Ruby for Perl Programmers
 
name name2 n
name name2 nname name2 n
name name2 n
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
 
Javascript
JavascriptJavascript
Javascript
 
Effective Scala (JavaDay Riga 2013)
Effective Scala (JavaDay Riga 2013)Effective Scala (JavaDay Riga 2013)
Effective Scala (JavaDay Riga 2013)
 
DEFUN 2008 - Real World Haskell
DEFUN 2008 - Real World HaskellDEFUN 2008 - Real World Haskell
DEFUN 2008 - Real World Haskell
 
Groovy presentation
Groovy presentationGroovy presentation
Groovy presentation
 
Php extensions
Php extensionsPhp extensions
Php extensions
 
Playfulness at Work
Playfulness at WorkPlayfulness at Work
Playfulness at Work
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
 

Viewers also liked

Java vs. Ruby
Java vs. RubyJava vs. Ruby
Java vs. Ruby
Bryan Rojas
 
Ruby conf 2016 - Secrets of Testing Rails 5 Apps
Ruby conf 2016 - Secrets of Testing Rails 5 AppsRuby conf 2016 - Secrets of Testing Rails 5 Apps
Ruby conf 2016 - Secrets of Testing Rails 5 Apps
Nascenia IT
 
«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»
Olga Lavrentieva
 
Apresentação sobre JRuby
Apresentação sobre JRubyApresentação sobre JRuby
Apresentação sobre JRuby
Régis Eduardo Weizenmann Gregol
 
Seu site voando
Seu site voandoSeu site voando
Seu site voando
Maurício Linhares
 
Beginner's Sinatra
Beginner's SinatraBeginner's Sinatra
Beginner's Sinatra
Tomokazu Kiyohara
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao Agile
Robson Agapito Correa
 
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
GoIT
 
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Adrian Cockcroft
 
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Marcio Sfalsin
 
Advanced Ruby Idioms So Clean You Can Eat Off Of Them
Advanced Ruby Idioms So Clean You Can Eat Off Of ThemAdvanced Ruby Idioms So Clean You Can Eat Off Of Them
Advanced Ruby Idioms So Clean You Can Eat Off Of Them
Brian Guthrie
 
Object-Oriented BDD w/ Cucumber by Matt van Horn
Object-Oriented BDD w/ Cucumber by Matt van HornObject-Oriented BDD w/ Cucumber by Matt van Horn
Object-Oriented BDD w/ Cucumber by Matt van Horn
Solano Labs
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
Júlio de Lima
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Robert Reiz
 
Ruby vs Java
Ruby vs JavaRuby vs Java
Ruby vs Java
Belighted
 
Ruby on Rails for beginners
Ruby on Rails for beginnersRuby on Rails for beginners
Ruby on Rails for beginners
Vysakh Sreenivasan
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to Code
Mattan Griffel
 
Tic crónicas estudiantes
Tic crónicas estudiantesTic crónicas estudiantes
Tic crónicas estudiantes
Edison Wilmer Rengifo Díaz
 
Bubbl us-2
Bubbl us-2Bubbl us-2
Bubbl us-2
Rene Torres Visso
 

Viewers also liked (20)

Java vs. Ruby
Java vs. RubyJava vs. Ruby
Java vs. Ruby
 
Ruby conf 2016 - Secrets of Testing Rails 5 Apps
Ruby conf 2016 - Secrets of Testing Rails 5 AppsRuby conf 2016 - Secrets of Testing Rails 5 Apps
Ruby conf 2016 - Secrets of Testing Rails 5 Apps
 
«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»
 
Apresentação sobre JRuby
Apresentação sobre JRubyApresentação sobre JRuby
Apresentação sobre JRuby
 
Seu site voando
Seu site voandoSeu site voando
Seu site voando
 
Beginner's Sinatra
Beginner's SinatraBeginner's Sinatra
Beginner's Sinatra
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao Agile
 
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
 
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
 
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
 
Ruby object model
Ruby object modelRuby object model
Ruby object model
 
Advanced Ruby Idioms So Clean You Can Eat Off Of Them
Advanced Ruby Idioms So Clean You Can Eat Off Of ThemAdvanced Ruby Idioms So Clean You Can Eat Off Of Them
Advanced Ruby Idioms So Clean You Can Eat Off Of Them
 
Object-Oriented BDD w/ Cucumber by Matt van Horn
Object-Oriented BDD w/ Cucumber by Matt van HornObject-Oriented BDD w/ Cucumber by Matt van Horn
Object-Oriented BDD w/ Cucumber by Matt van Horn
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Ruby vs Java
Ruby vs JavaRuby vs Java
Ruby vs Java
 
Ruby on Rails for beginners
Ruby on Rails for beginnersRuby on Rails for beginners
Ruby on Rails for beginners
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to Code
 
Tic crónicas estudiantes
Tic crónicas estudiantesTic crónicas estudiantes
Tic crónicas estudiantes
 
Bubbl us-2
Bubbl us-2Bubbl us-2
Bubbl us-2
 

Similar to Ruby for Java Developers

Sinatra: прошлое, будущее и настоящее
Sinatra: прошлое, будущее и настоящееSinatra: прошлое, будущее и настоящее
Sinatra: прошлое, будущее и настоящее
.toster
 
Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan
Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan  Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan
Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan edthix
 
Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In Python
Marwan Osman
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
Michael MacDonald
 
Why Ruby?
Why Ruby? Why Ruby?
Why Ruby?
IT Weekend
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws
loffenauer
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
David Padbury
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
lichtkind
 
Introduction to Google's Go programming language
Introduction to Google's Go programming languageIntroduction to Google's Go programming language
Introduction to Google's Go programming language
Mario Castro Contreras
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
Mark Menard
 
ppt7
ppt7ppt7
ppt7
callroom
 
ppt2
ppt2ppt2
ppt2
callroom
 
name name2 n
name name2 nname name2 n
name name2 n
callroom
 
test ppt
test ppttest ppt
test ppt
callroom
 
name name2 n
name name2 nname name2 n
name name2 n
callroom
 
ppt21
ppt21ppt21
ppt21
callroom
 
ppt17
ppt17ppt17
ppt17
callroom
 
ppt30
ppt30ppt30
ppt30
callroom
 

Similar to Ruby for Java Developers (20)

Sinatra: прошлое, будущее и настоящее
Sinatra: прошлое, будущее и настоящееSinatra: прошлое, будущее и настоящее
Sinatra: прошлое, будущее и настоящее
 
Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan
Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan  Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan
Ruby on Rails - Pengenalan kepada “permata” dalam pengaturcaraan
 
Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In Python
 
Ruby
RubyRuby
Ruby
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 
Why Ruby?
Why Ruby? Why Ruby?
Why Ruby?
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
 
Introduction to Google's Go programming language
Introduction to Google's Go programming languageIntroduction to Google's Go programming language
Introduction to Google's Go programming language
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
 
ppt7
ppt7ppt7
ppt7
 
ppt2
ppt2ppt2
ppt2
 
name name2 n
name name2 nname name2 n
name name2 n
 
test ppt
test ppttest ppt
test ppt
 
name name2 n
name name2 nname name2 n
name name2 n
 
ppt21
ppt21ppt21
ppt21
 
ppt17
ppt17ppt17
ppt17
 
ppt30
ppt30ppt30
ppt30
 

More from Robert Reiz

Silicon Valley vs. Berlin vs. Mannheim
Silicon Valley vs. Berlin vs. MannheimSilicon Valley vs. Berlin vs. Mannheim
Silicon Valley vs. Berlin vs. Mannheim
Robert Reiz
 
Go with Go
Go with GoGo with Go
Go with Go
Robert Reiz
 
Infrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleInfrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & Ansible
Robert Reiz
 
Dependencies and Licenses
Dependencies and LicensesDependencies and Licenses
Dependencies and Licenses
Robert Reiz
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
Robert Reiz
 
Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014
Robert Reiz
 
Api Days Berlin - Continuous Updating
Api Days Berlin - Continuous UpdatingApi Days Berlin - Continuous Updating
Api Days Berlin - Continuous Updating
Robert Reiz
 
Gruenden indercloud
Gruenden indercloudGruenden indercloud
Gruenden indercloud
Robert Reiz
 
Continuous Updating
Continuous UpdatingContinuous Updating
Continuous Updating
Robert Reiz
 
VersionEye for PHP User Group Berlin
VersionEye for PHP User Group BerlinVersionEye for PHP User Group Berlin
VersionEye for PHP User Group BerlinRobert Reiz
 
Silicon Valley
Silicon ValleySilicon Valley
Silicon Valley
Robert Reiz
 
Software Libraries And Numbers
Software Libraries And NumbersSoftware Libraries And Numbers
Software Libraries And Numbers
Robert Reiz
 

More from Robert Reiz (12)

Silicon Valley vs. Berlin vs. Mannheim
Silicon Valley vs. Berlin vs. MannheimSilicon Valley vs. Berlin vs. Mannheim
Silicon Valley vs. Berlin vs. Mannheim
 
Go with Go
Go with GoGo with Go
Go with Go
 
Infrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleInfrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & Ansible
 
Dependencies and Licenses
Dependencies and LicensesDependencies and Licenses
Dependencies and Licenses
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014
 
Api Days Berlin - Continuous Updating
Api Days Berlin - Continuous UpdatingApi Days Berlin - Continuous Updating
Api Days Berlin - Continuous Updating
 
Gruenden indercloud
Gruenden indercloudGruenden indercloud
Gruenden indercloud
 
Continuous Updating
Continuous UpdatingContinuous Updating
Continuous Updating
 
VersionEye for PHP User Group Berlin
VersionEye for PHP User Group BerlinVersionEye for PHP User Group Berlin
VersionEye for PHP User Group Berlin
 
Silicon Valley
Silicon ValleySilicon Valley
Silicon Valley
 
Software Libraries And Numbers
Software Libraries And NumbersSoftware Libraries And Numbers
Software Libraries And Numbers
 

Recently uploaded

GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 

Recently uploaded (20)

GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 

Ruby for Java Developers

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n