SlideShare a Scribd company logo
Ruby <3 .NET Ivan Porto Carrero http://flanders.co.nz http://twitter.com/casualjim www.visug.be
Upcoming sessions June 18 : Domain Driven Design (Yves Goeleven) June 30 : IronRuby (Ivan Porto Carrero) September 10 : ORMs, NHibernate – Entity Framework  			       (Davy Brion, Kurt Claeys) Week of October 5 (TBD) : Dino Esposito November 18 : Modeling with VSTS2010 (Marcel De Vries) November 26 : RIA Services (Miguel De Lathouwer 				& Steven Van Den Eynde)
The plan CLR, DLR, WTF?? All ur Rubyz are now belongs to us Ruby why should I care? Gotcha’s BDD with Bacon and Caricature Sinatra has not left the building IronRuby MVC Ruby + Silverlight == Teh cake
CLR as we knew it VB.NET … C# Base Class Libraries Common Type system Security Class Loader, GC, JIT, Execution Support
CLR but mo betterer VB.NET IronPython C# Base Class Libraries DLR Runtime Common Type system Security Class Loader, GC, JIT, Execution Support
All urRubyz are now… MRI ‐ “The Normal” Ruby  JRuby ‐ Sun  MacRuby ‐ Apple  IronRuby ‐ Microsoft  Rubinius ‐ EngineYard MagLev ‐ Gemstone  HotRuby
All urRubyz are now… MRI ‐ “The Normal” Ruby  JRuby ‐ Sun  MacRuby ‐ Apple  IronRuby ‐ Microsoft  Rubinius ‐ EngineYard MagLev ‐ Gemstone  HotRuby
Why should I care? For me the purpose of life is partly to have joy. Programmers often feel joy when they can concentrate on the creative side of programming, so Ruby is designed to make programmers happy.  - Yukihiro “Matz” Matsumoto
Why should I care? Actually, I'm trying to make Ruby natural, not simple.  - Yukihiro “Matz” Matsumoto
Best of breed If Python was the result of Lisp and C++ having a baby,Ruby is the result of Perl and Smalltalk having a baby.  - MeowMeow Jones, 11/8/2001 on slashdot.
Duck typing if it looks like a duck and acts like a duck it might as well be a duck
Metaprogramming The computer should be doing the hard work. That’s what it’s paid to do, after all.  - Larry Wall
Metaprogramming I don’t think the idea here is to save memory or speed. The idea behind metaprogramming is to teach Ruby your conventions And let it do some guessing In order to save you some code  - Why, author of why’s poignant guide to Ruby
STOP!!!!       Demo time
REPL ReadEvalPrintLoop ReadEvalPrintLoop ReadEvalPrintLoop ReadEvalPrint
STOP!!!!       Demo time
Everything is an object I invented the term Object-Oriented, and I can tell you I did not have C++ in mind  - Alan Kay
STOP!!!!       Demo time
Classes are open
STOP!!!!       Demo time
CLR classes open for business
STOP!!!!       Demo time
Adding Iron to Ruby I  have always imagined that paradise will be a kind of library - Jorge Luis Borges
Gotcha’s
BDD Ruby/CLR interop
IronRuby MVC
Sinatra
Silverlight
Kweshiunz?
“A language that doesn't  affect the way you think  about  programming is not worth knowing.”  - Alan Perlis
References http://flanders.co.nz http://ironruby.net http://ironruby.info http://iunknown.com http://manning.com/carrero http://rubydoes.net http://blog.prokrams.com/ http://nightlybuilds.cloudapp.net/Project.aspx?project=dlr http://blog.jimmy.schementi.com/
go_to(http://ironruby.net).play.create.have_fun

More Related Content

What's hot

Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovim
Shougo
 
Gaasdm
GaasdmGaasdm
Gaasdm
Josh Bailey
 
Intro to java
Intro to javaIntro to java
Intro to java
chrisramey
 
Getting started with Ruby on Rails
Getting started with Ruby on RailsGetting started with Ruby on Rails
Getting started with Ruby on Rails
Ilias Bartolini
 
Javascriptbootcamp
JavascriptbootcampJavascriptbootcamp
Javascriptbootcamp
oscon2007
 
BSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|re
BSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|reBSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|re
BSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|re
Chandra Pratap
 
ElixirConf 2017 - Writing an Editor in Elixir - Ian Duggan
ElixirConf 2017 - Writing an Editor in Elixir - Ian DugganElixirConf 2017 - Writing an Editor in Elixir - Ian Duggan
ElixirConf 2017 - Writing an Editor in Elixir - Ian Duggan
ijcd
 
Qtruby
QtrubyQtruby
Qtruby
Ynon Perek
 
Run once
Run onceRun once
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Shougo
 
Thumbcoil: How we got here...
Thumbcoil: How we got here...Thumbcoil: How we got here...
Thumbcoil: How we got here...
Jon-Carlos Rivera
 

What's hot (12)

Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovim
 
Gaasdm
GaasdmGaasdm
Gaasdm
 
Intro to java
Intro to javaIntro to java
Intro to java
 
Getting started with Ruby on Rails
Getting started with Ruby on RailsGetting started with Ruby on Rails
Getting started with Ruby on Rails
 
Javascriptbootcamp
JavascriptbootcampJavascriptbootcamp
Javascriptbootcamp
 
BSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|re
BSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|reBSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|re
BSidesLondon | Your Money, Your Media - A DRMtastic Android (reverse|re
 
ElixirConf 2017 - Writing an Editor in Elixir - Ian Duggan
ElixirConf 2017 - Writing an Editor in Elixir - Ian DugganElixirConf 2017 - Writing an Editor in Elixir - Ian Duggan
ElixirConf 2017 - Writing an Editor in Elixir - Ian Duggan
 
Qtruby
QtrubyQtruby
Qtruby
 
Run once
Run onceRun once
Run once
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
 
Thumbcoil: How we got here...
Thumbcoil: How we got here...Thumbcoil: How we got here...
Thumbcoil: How we got here...
 

Viewers also liked

משמעות הספרות
משמעות הספרותמשמעות הספרות
משמעות הספרותguest6afe24
 
Scalatra 2.2
Scalatra 2.2Scalatra 2.2
Scalatra 2.2
Ivan Porto Carrero
 
Sbt for mere mortals
Sbt for mere mortalsSbt for mere mortals
Sbt for mere mortals
Ivan Porto Carrero
 
IronRuby - Fosdem 2010
IronRuby - Fosdem 2010IronRuby - Fosdem 2010
IronRuby - Fosdem 2010
Ivan Porto Carrero
 
What's Next in Growth? 2016
What's Next in Growth? 2016What's Next in Growth? 2016
What's Next in Growth? 2016
Andrew Chen
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
Barry Feldman
 

Viewers also liked (6)

משמעות הספרות
משמעות הספרותמשמעות הספרות
משמעות הספרות
 
Scalatra 2.2
Scalatra 2.2Scalatra 2.2
Scalatra 2.2
 
Sbt for mere mortals
Sbt for mere mortalsSbt for mere mortals
Sbt for mere mortals
 
IronRuby - Fosdem 2010
IronRuby - Fosdem 2010IronRuby - Fosdem 2010
IronRuby - Fosdem 2010
 
What's Next in Growth? 2016
What's Next in Growth? 2016What's Next in Growth? 2016
What's Next in Growth? 2016
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Similar to Ruby Loves Dot Net

Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
Paul Gallagher
 
Test
TestTest
Top 10+ Things .NET Developers Should Know About Ruby
Top 10+ Things .NET Developers Should Know About RubyTop 10+ Things .NET Developers Should Know About Ruby
Top 10+ Things .NET Developers Should Know About Ruby
Jeff Cohen
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2
ice799
 
Concurrecy in Ruby
Concurrecy in RubyConcurrecy in Ruby
Concurrecy in Ruby
Vesna Doknic
 
It's OK to make a new folder within Rails.
It's OK to make a new folder within Rails.It's OK to make a new folder within Rails.
It's OK to make a new folder within Rails.
cschaafsma
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
Colin Riley
 
Docker orchestration with kontena
Docker orchestration with kontenaDocker orchestration with kontena
Docker orchestration with kontena
Giovanni Cândido da Silva
 
IronRuby for the Rubyist
IronRuby for the RubyistIronRuby for the Rubyist
IronRuby for the Rubyist
Will Green
 
OOP vs COP
OOP vs COPOOP vs COP
OOP vs COP
Gianluca Padovani
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
tutorialsruby
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
tutorialsruby
 
Design and Evolution of cyber-dojo
Design and Evolution of cyber-dojoDesign and Evolution of cyber-dojo
Design and Evolution of cyber-dojo
Jon Jagger
 
Python @ PiTech - March 2009
Python @ PiTech - March 2009Python @ PiTech - March 2009
Python @ PiTech - March 2009
tudorprodan
 
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsBoxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
Puppet
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
myuser
 
2009 Eclipse Con
2009 Eclipse Con2009 Eclipse Con
2009 Eclipse Con
guest29922
 
Children of Ruby
Children of RubyChildren of Ruby
Children of Ruby
Simon St.Laurent
 
Docker experience @inbotapp
Docker experience @inbotappDocker experience @inbotapp
Docker experience @inbotapp
Jilles van Gurp
 
refORM: Death to ORMs in .NET
refORM: Death to ORMs in .NETrefORM: Death to ORMs in .NET
refORM: Death to ORMs in .NET
James Hughes
 

Similar to Ruby Loves Dot Net (20)

Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
 
Test
TestTest
Test
 
Top 10+ Things .NET Developers Should Know About Ruby
Top 10+ Things .NET Developers Should Know About RubyTop 10+ Things .NET Developers Should Know About Ruby
Top 10+ Things .NET Developers Should Know About Ruby
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2
 
Concurrecy in Ruby
Concurrecy in RubyConcurrecy in Ruby
Concurrecy in Ruby
 
It's OK to make a new folder within Rails.
It's OK to make a new folder within Rails.It's OK to make a new folder within Rails.
It's OK to make a new folder within Rails.
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
 
Docker orchestration with kontena
Docker orchestration with kontenaDocker orchestration with kontena
Docker orchestration with kontena
 
IronRuby for the Rubyist
IronRuby for the RubyistIronRuby for the Rubyist
IronRuby for the Rubyist
 
OOP vs COP
OOP vs COPOOP vs COP
OOP vs COP
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 
Design and Evolution of cyber-dojo
Design and Evolution of cyber-dojoDesign and Evolution of cyber-dojo
Design and Evolution of cyber-dojo
 
Python @ PiTech - March 2009
Python @ PiTech - March 2009Python @ PiTech - March 2009
Python @ PiTech - March 2009
 
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of LaptopsBoxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
 
2009 Eclipse Con
2009 Eclipse Con2009 Eclipse Con
2009 Eclipse Con
 
Children of Ruby
Children of RubyChildren of Ruby
Children of Ruby
 
Docker experience @inbotapp
Docker experience @inbotappDocker experience @inbotapp
Docker experience @inbotapp
 
refORM: Death to ORMs in .NET
refORM: Death to ORMs in .NETrefORM: Death to ORMs in .NET
refORM: Death to ORMs in .NET
 

Recently uploaded

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
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
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
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
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
CAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on BlockchainCAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on Blockchain
Claudio Di Ciccio
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
FODUU
 
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
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
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
 

Recently uploaded (20)

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
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
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
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
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
CAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on BlockchainCAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on Blockchain
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
 
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
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
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
 

Ruby Loves Dot Net

  • 1. Ruby <3 .NET Ivan Porto Carrero http://flanders.co.nz http://twitter.com/casualjim www.visug.be
  • 2. Upcoming sessions June 18 : Domain Driven Design (Yves Goeleven) June 30 : IronRuby (Ivan Porto Carrero) September 10 : ORMs, NHibernate – Entity Framework (Davy Brion, Kurt Claeys) Week of October 5 (TBD) : Dino Esposito November 18 : Modeling with VSTS2010 (Marcel De Vries) November 26 : RIA Services (Miguel De Lathouwer & Steven Van Den Eynde)
  • 3.
  • 4. The plan CLR, DLR, WTF?? All ur Rubyz are now belongs to us Ruby why should I care? Gotcha’s BDD with Bacon and Caricature Sinatra has not left the building IronRuby MVC Ruby + Silverlight == Teh cake
  • 5. CLR as we knew it VB.NET … C# Base Class Libraries Common Type system Security Class Loader, GC, JIT, Execution Support
  • 6. CLR but mo betterer VB.NET IronPython C# Base Class Libraries DLR Runtime Common Type system Security Class Loader, GC, JIT, Execution Support
  • 7.
  • 8. All urRubyz are now… MRI ‐ “The Normal” Ruby JRuby ‐ Sun MacRuby ‐ Apple IronRuby ‐ Microsoft Rubinius ‐ EngineYard MagLev ‐ Gemstone HotRuby
  • 9. All urRubyz are now… MRI ‐ “The Normal” Ruby JRuby ‐ Sun MacRuby ‐ Apple IronRuby ‐ Microsoft Rubinius ‐ EngineYard MagLev ‐ Gemstone HotRuby
  • 10. Why should I care? For me the purpose of life is partly to have joy. Programmers often feel joy when they can concentrate on the creative side of programming, so Ruby is designed to make programmers happy. - Yukihiro “Matz” Matsumoto
  • 11. Why should I care? Actually, I'm trying to make Ruby natural, not simple. - Yukihiro “Matz” Matsumoto
  • 12.
  • 13. Best of breed If Python was the result of Lisp and C++ having a baby,Ruby is the result of Perl and Smalltalk having a baby. - MeowMeow Jones, 11/8/2001 on slashdot.
  • 14.
  • 15. Duck typing if it looks like a duck and acts like a duck it might as well be a duck
  • 16.
  • 17. Metaprogramming The computer should be doing the hard work. That’s what it’s paid to do, after all. - Larry Wall
  • 18. Metaprogramming I don’t think the idea here is to save memory or speed. The idea behind metaprogramming is to teach Ruby your conventions And let it do some guessing In order to save you some code - Why, author of why’s poignant guide to Ruby
  • 19. STOP!!!! Demo time
  • 20. REPL ReadEvalPrintLoop ReadEvalPrintLoop ReadEvalPrintLoop ReadEvalPrint
  • 21. STOP!!!! Demo time
  • 22. Everything is an object I invented the term Object-Oriented, and I can tell you I did not have C++ in mind - Alan Kay
  • 23. STOP!!!! Demo time
  • 25. STOP!!!! Demo time
  • 26. CLR classes open for business
  • 27. STOP!!!! Demo time
  • 28. Adding Iron to Ruby I have always imagined that paradise will be a kind of library - Jorge Luis Borges
  • 35. “A language that doesn't affect the way you think about programming is not worth knowing.” - Alan Perlis
  • 36. References http://flanders.co.nz http://ironruby.net http://ironruby.info http://iunknown.com http://manning.com/carrero http://rubydoes.net http://blog.prokrams.com/ http://nightlybuilds.cloudapp.net/Project.aspx?project=dlr http://blog.jimmy.schementi.com/

Editor's Notes

  1. IMHO Best IDE on the marketShared dynamic subsystemStandard hosting environmentBased on passing messages to objectsFull access to the CLREnable fast generation of dynamic codeOne true objectExplain how Jython was implemented and how it relates to the DLR
  2. Here’s a list of the different implementations of ruby right now. • MRI stands for ‘Matz’s Ruby Interpreter’ - Matz is yukihiromatsumoto, a japanese guy who first created the ruby language back in 1993. It’s written in straight C. This what you get when you go to the official ruby website. • JRuby is an implementation of Ruby running on the JVM - it interops natively with java. Commercially backed by sun. • MacRuby is Ruby running on Apple’s Objective C runtime. It interops natively with ObjectiveC, which makes it ideal for writing OSX GUI applications. It’s in it’s early stages, commercially backed by apple. • IronRuby is microsoft’s version. Commercially backed by microsoft who employ full time staff working on it. This is what our presentation is about • Rubinius is a an implementation of Ruby running using a C++ Virtual machine. Commercially backed by engineyard, one of the biggest ruby on rails web hosting companies.• Maglev is by GemStone, who are a smalltalk company. They’ve been around for years and years writing big enterprise systems using smalltalk. Maglev is their project to run ruby on their smalltalk VM • Hotruby is a small open source thing which compiles ruby into javascript. Sounds ridiculous but people have run this using the V8 engine in Google Chrome and it actually works out to be faster than the other ruby implementations for whatever set of benchmarks they were running All these companies are putting some serious resources behind getting ruby to run on the systems they want. This is evidence that there must be SOMETHING to it.
  3. Here’s a list of the different implementations of ruby right now. • MRI stands for ‘Matz’s Ruby Interpreter’ - Matz is yukihiromatsumoto, a japanese guy who first created the ruby language back in 1993. It’s written in straight C. This what you get when you go to the official ruby website. • JRuby is an implementation of Ruby running on the JVM - it interops natively with java. Commercially backed by sun. • MacRuby is Ruby running on Apple’s Objective C runtime. It interops natively with ObjectiveC, which makes it ideal for writing OSX GUI applications. It’s in it’s early stages, commercially backed by apple. • IronRuby is microsoft’s version. Commercially backed by microsoft who employ full time staff working on it. This is what our presentation is about • Rubinius is a an implementation of Ruby running using a C++ Virtual machine. Commercially backed by engineyard, one of the biggest ruby on rails web hosting companies.• Maglev is by GemStone, who are a smalltalk company. They’ve been around for years and years writing big enterprise systems using smalltalk. Maglev is their project to run ruby on their smalltalk VM • Hotruby is a small open source thing which compiles ruby into javascript. Sounds ridiculous but people have run this using the V8 engine in Google Chrome and it actually works out to be faster than the other ruby implementations for whatever set of benchmarks they were running All these companies are putting some serious resources behind getting ruby to run on the systems they want. This is evidence that there must be SOMETHING to it.
  4. Many people that come to Ruby do so through the Rails framework.And then often you can hear these people say:I came for Rails but I stayed for Ruby
  5. Ruby is a pleasant language to work with, partly because its well-chosen keywords, but mostly because it represents a kind of best breed implementation of a programming language. One of the goals ruby tries to achieve is to make the language you use ,when you’re writing your algorithms, a lot like a natural language. For example ruby has both the keywords if and unless, and you can apply those in 2 different ways. Best of breed Duck typing Everything is an object Classes are open / monkey patching Flexible Functional Procedural meta programming
  6. Show some of the nicer ruby syntax
  7. Regular expression literals [PERL] Strong text processing support [PERL] Blocks [SMALLTALK]Iterators [SMALLTALK]
  8. Introduce blocksExplain about message receivers and message passingNote the string interpolation
  9. Get into dynamic typing before duck typingRuby cares about typesIt cares about hierarchy + mixins when doing method lookupOnly safe operations against an object (no magic)Conversions explicit stepYou can override operators to allow for implicit conversion => explicit step + you’re in controlExplain how static typing resembles aristocracy with their bloodlines and how heritage is more important than capabilitiesExplain how duck typing focusses on the abilities of objects instead of their type. If the method is there it’s all good
  10. Variables can change type =>sacreligion!We care about the size method on the receiver in get_count=> 1 reason type checking defferred to last responsible moment
  11. metaprogramming == program to modify itself at runtime. metaprogramming == defining methods on instances and classes at runtime. You could very well generate most of a program at runtimeMostly used when DATA DRIVES THE CODE
  12. Responding to unknown methods: method_missing Define methods programmatically String evaluation
  13. See demos/metaprogramming.rbShow txt file content firstShow result of scriptOpen script start at bottomWalk through implementation
  14. You can run ‘irb’ and just type some ruby code, and it runs as you go. This is a killer feature for when you’re testing, or when you’re learning a new API. I used to have to miss that when I was in .NET but that is a thing from the past now.
  15. Require ‘mscorlib’Include System (equivalent of using in C#)Puts System.constantsPuts System.constants.grep(/^[A-C]/)
  16. A class is a an object => class itself Nil => objectConstants => object
  17. >>> 0.zero?=> true>>> 5.zero?=> false>>> 120/6=> 20>>> 873.class=> Fixnum>>> (1000 ** 1000).class=> Bignum >>> a = nil=> nil>>> a.nil?=> true>>> a.class=> NilClass
  18. With great power comes great responsibility.You can extend classes at runtime and make api’s more wrist or read friendly