SlideShare a Scribd company logo
1 of 34
The .Net Ruby VM Nikos Dimitrakopoulos Dec 2009
Me Software developer Pamediakopes.gr (now) Rento.gr (past) Individually (past + now) Bachelor in Telecommunications (main emphasis on web) from University of Peloponnese Programming experience: Ruby C# JavaScript Java, Objective-C, … 1 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Pamediakopes.gr Travel agency Airtickets Hotels Ferry Tickets Car rentals … Travel agency. But: Fully electronic Fully automated (ok, almost…) A software house Tools of the trade: C#, SQL, ASP.Net, JavaScript plus a million different technologies for internal stuff (ruby, python, c, …) 2 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Scope Do the laundry Sys-admin Do small but amazingly repetitive tasks Prototype – fast! Don’t reinvent the wheel! Combine 2, 3 or 10s of different software ecosystems! Testing Unit Functional Integration Easier/less time consuming than C# with NUnit (for example) 3 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
So? Ruby is amazingly good for: Sys-admin scripts Implementing simple (and not so simple) libraries Rapid prototyping Rails Sinatra … Reusing code Strong community & ecosystem after 2004 (Rails) Almost everything is Open Source 4 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Ruby Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 5 A fully Object-Oriented Language Everything is an object Functional Paradigm Lambdas / procs map(), each(), inject() Fully Dynamic Interpreted Dynamically typed Totally extensible (even core classes)
Ruby Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 6 Cross platform Open source Multiple VMs Vanilla Ruby (MRI, aka Matz’s Original Interpreter) Runs on all platforms C bindings JRuby (On JVM, aka the Java Virtual Machine) Runs where Java Runs Java bindings MacRuby (On Mac OS X) Runs on Mac OS X Objective-C & Cocoa bindings
Ruby Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 7 Origins in Japan Zen is everywhere in the language Simple Effective “No-fluff”
Demo! Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 8
Famous quotes It doesn’t scale It’s slow It’s immature Not enterprise … 9 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
But jRuby MacRuby Rubinius MagLev IronRuby 10 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
11 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 IronRuby
12 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
What is IronRuby An alternative Ruby VM Implemented on top of the DLR Tight integration with .Net Part of the “Iron” languages implemented in .Net Python Ruby LISP … 13 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
A Ruby VM Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 14 Ruby interpreter (compliant with v 1.8.6) Faster than vanilla MRI Ruby (usually) Standard tools included: Console (irb) Libraries (rubygems) Documentation (ri / RDoc)
.Net Integration Interoperability with .Net Consume all the C# code you want! The huge .Net library ecosystem External .Net libraries Custom / existing C# code 15 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Additionally “Translations” of idioms: object.SomeMethod() <-> object.some_method System.Core <-> System::Core C# lambdas and delegates <-> Ruby clojures >>> l = System::Byte.instance_methods(false).last => 'get_type_code' >>> l.ruby_name => "get_type_code" >>> l.clr_name => "GetTypeCode" 16 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
# Demo 17 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
.Net Integration Test .Net code with Cucumber & RSpec! 18 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
# Demo 19 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
.Net Integration Extend existing .Net classes the ruby way! 20 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
.Net Integration Call ruby code from .Net! 21 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
# Demo 22 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
.Net Integration Deploy on .Net infrastructure Web apps on IIS (Rails on .Net!) Consume Azure services! Use .Net services SQL Office Active Directory Exchange etc... 23 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
.Net Integration Deploy on .Net infrastructure Desktop applications on Windows Desktop applications on everywhere (Mono) 24 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Additionally Interoperability with the other scripting languages! Python … Use code also from there! 25 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Silverlight Silverlight integration Write ruby instead of javascript in your pages! (Gestalt project)  26 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Silverlight 27 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Limitations No support for native C gems Some rough edges in interoperability 28 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Status 29 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 RC1 Runs on .Net 3.5 & .Net 4.0 (different builds) Passing ~93% of the Ruby specs Already faster than vanilla Ruby (in a lot of cases) 1.0 expected soon Full compatibility with Ruby 1.8.6 Common build for .Net 3.5 & .Net 4.0 (hopefully)
Status 30 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
Future 31 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 Speed Be on par with JRuby Ruby 1.9 (maybe?) ???
Thanks! 32 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 Thanks a lot & happy hacking!
Links 33 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 IronRuby: http://ironruby.net/ http://ironruby.codeplex.com/ Rubyst.es http://rubyst.es http://groups.google.com/ruby-hellug Pamediakopes http://www.pamediakopes.gr http://www.airtickets24.com Me http://blog.nikosd.com http://twitter.com/nikosd nospam - at - nikosd - dom – com Code samples : http://nikosd.com/f/ironruby-code-samples.zip

More Related Content

Similar to Microsoft Hellas Dev Days 09: IronRuby

Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko3D
 
IronRuby for the Rubyist
IronRuby for the RubyistIronRuby for the Rubyist
IronRuby for the RubyistWill Green
 
Architect your app modernization journey with containers on Microsoft Azure
Architect your app modernization journey with containers on Microsoft AzureArchitect your app modernization journey with containers on Microsoft Azure
Architect your app modernization journey with containers on Microsoft AzureDavide Benvegnù
 
Minko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko3D
 
.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions.Net introduction by Quontra Solutions
.Net introduction by Quontra SolutionsQUONTRASOLUTIONS
 
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoParis Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoMinko3D
 
Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...Minko3D
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?Steve Poole
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...DynamicInfraDays
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
NetflixOSS and ZeroToDocker Talk
NetflixOSS and ZeroToDocker TalkNetflixOSS and ZeroToDocker Talk
NetflixOSS and ZeroToDocker Talkaspyker
 
.NET Everywhere and for Everyone
.NET Everywhere and for Everyone.NET Everywhere and for Everyone
.NET Everywhere and for EveryoneJames Montemagno
 
Dockerizing Rails
Dockerizing RailsDockerizing Rails
Dockerizing RailsiGbanam
 
Easy_COBOL_for_OSOOSOSSODODODOD_2200.ppt
Easy_COBOL_for_OSOOSOSSODODODOD_2200.pptEasy_COBOL_for_OSOOSOSSODODODOD_2200.ppt
Easy_COBOL_for_OSOOSOSSODODODOD_2200.pptskorlipa
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerAjeet Singh Raina
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Ambassador Labs
 

Similar to Microsoft Hellas Dev Days 09: IronRuby (20)

Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013
 
Mono
MonoMono
Mono
 
IronRuby for the Rubyist
IronRuby for the RubyistIronRuby for the Rubyist
IronRuby for the Rubyist
 
Architect your app modernization journey with containers on Microsoft Azure
Architect your app modernization journey with containers on Microsoft AzureArchitect your app modernization journey with containers on Microsoft Azure
Architect your app modernization journey with containers on Microsoft Azure
 
Minko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with Minko
 
.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions
 
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoParis Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
 
Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
 
Container Days
Container DaysContainer Days
Container Days
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
NetflixOSS and ZeroToDocker Talk
NetflixOSS and ZeroToDocker TalkNetflixOSS and ZeroToDocker Talk
NetflixOSS and ZeroToDocker Talk
 
.NET Everywhere and for Everyone
.NET Everywhere and for Everyone.NET Everywhere and for Everyone
.NET Everywhere and for Everyone
 
Dockerizing Rails
Dockerizing RailsDockerizing Rails
Dockerizing Rails
 
Net core
Net coreNet core
Net core
 
Easy_COBOL_for_OSOOSOSSODODODOD_2200.ppt
Easy_COBOL_for_OSOOSOSSODODODOD_2200.pptEasy_COBOL_for_OSOOSOSSODODODOD_2200.ppt
Easy_COBOL_for_OSOOSOSSODODODOD_2200.ppt
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using Docker
 
C# rocks
C# rocksC# rocks
C# rocks
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
 

More from Nikos Dimitrakopoulos

Lean meetings (Athens Ruby Meetup #25)
Lean meetings (Athens Ruby Meetup #25)Lean meetings (Athens Ruby Meetup #25)
Lean meetings (Athens Ruby Meetup #25)Nikos Dimitrakopoulos
 
Building a globalized, customer facing e-commerce product, powered by micro-s...
Building a globalized, customer facing e-commerce product, powered by micro-s...Building a globalized, customer facing e-commerce product, powered by micro-s...
Building a globalized, customer facing e-commerce product, powered by micro-s...Nikos Dimitrakopoulos
 
Single Sign On in Ruby - Enterprise Ready!
Single Sign On in Ruby - Enterprise Ready!Single Sign On in Ruby - Enterprise Ready!
Single Sign On in Ruby - Enterprise Ready!Nikos Dimitrakopoulos
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 

More from Nikos Dimitrakopoulos (6)

Lean meetings (Athens Ruby Meetup #25)
Lean meetings (Athens Ruby Meetup #25)Lean meetings (Athens Ruby Meetup #25)
Lean meetings (Athens Ruby Meetup #25)
 
Building a globalized, customer facing e-commerce product, powered by micro-s...
Building a globalized, customer facing e-commerce product, powered by micro-s...Building a globalized, customer facing e-commerce product, powered by micro-s...
Building a globalized, customer facing e-commerce product, powered by micro-s...
 
Single Sign On in Ruby - Enterprise Ready!
Single Sign On in Ruby - Enterprise Ready!Single Sign On in Ruby - Enterprise Ready!
Single Sign On in Ruby - Enterprise Ready!
 
A Blink Into The Rails Magic
A Blink Into The Rails MagicA Blink Into The Rails Magic
A Blink Into The Rails Magic
 
Things Learned From Rails
Things Learned From RailsThings Learned From Rails
Things Learned From Rails
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 

Recently uploaded

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
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Recently uploaded (20)

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
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
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...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Microsoft Hellas Dev Days 09: IronRuby

  • 1. The .Net Ruby VM Nikos Dimitrakopoulos Dec 2009
  • 2. Me Software developer Pamediakopes.gr (now) Rento.gr (past) Individually (past + now) Bachelor in Telecommunications (main emphasis on web) from University of Peloponnese Programming experience: Ruby C# JavaScript Java, Objective-C, … 1 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 3. Pamediakopes.gr Travel agency Airtickets Hotels Ferry Tickets Car rentals … Travel agency. But: Fully electronic Fully automated (ok, almost…) A software house Tools of the trade: C#, SQL, ASP.Net, JavaScript plus a million different technologies for internal stuff (ruby, python, c, …) 2 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 4. Scope Do the laundry Sys-admin Do small but amazingly repetitive tasks Prototype – fast! Don’t reinvent the wheel! Combine 2, 3 or 10s of different software ecosystems! Testing Unit Functional Integration Easier/less time consuming than C# with NUnit (for example) 3 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 5. So? Ruby is amazingly good for: Sys-admin scripts Implementing simple (and not so simple) libraries Rapid prototyping Rails Sinatra … Reusing code Strong community & ecosystem after 2004 (Rails) Almost everything is Open Source 4 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 6. Ruby Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 5 A fully Object-Oriented Language Everything is an object Functional Paradigm Lambdas / procs map(), each(), inject() Fully Dynamic Interpreted Dynamically typed Totally extensible (even core classes)
  • 7. Ruby Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 6 Cross platform Open source Multiple VMs Vanilla Ruby (MRI, aka Matz’s Original Interpreter) Runs on all platforms C bindings JRuby (On JVM, aka the Java Virtual Machine) Runs where Java Runs Java bindings MacRuby (On Mac OS X) Runs on Mac OS X Objective-C & Cocoa bindings
  • 8. Ruby Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 7 Origins in Japan Zen is everywhere in the language Simple Effective “No-fluff”
  • 9. Demo! Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 8
  • 10. Famous quotes It doesn’t scale It’s slow It’s immature Not enterprise … 9 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 11. But jRuby MacRuby Rubinius MagLev IronRuby 10 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 12. 11 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 IronRuby
  • 13. 12 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 14. What is IronRuby An alternative Ruby VM Implemented on top of the DLR Tight integration with .Net Part of the “Iron” languages implemented in .Net Python Ruby LISP … 13 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 15. A Ruby VM Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 14 Ruby interpreter (compliant with v 1.8.6) Faster than vanilla MRI Ruby (usually) Standard tools included: Console (irb) Libraries (rubygems) Documentation (ri / RDoc)
  • 16. .Net Integration Interoperability with .Net Consume all the C# code you want! The huge .Net library ecosystem External .Net libraries Custom / existing C# code 15 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 17. Additionally “Translations” of idioms: object.SomeMethod() <-> object.some_method System.Core <-> System::Core C# lambdas and delegates <-> Ruby clojures >>> l = System::Byte.instance_methods(false).last => 'get_type_code' >>> l.ruby_name => "get_type_code" >>> l.clr_name => "GetTypeCode" 16 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 18. # Demo 17 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 19. .Net Integration Test .Net code with Cucumber & RSpec! 18 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 20. # Demo 19 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 21. .Net Integration Extend existing .Net classes the ruby way! 20 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 22. .Net Integration Call ruby code from .Net! 21 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 23. # Demo 22 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 24. .Net Integration Deploy on .Net infrastructure Web apps on IIS (Rails on .Net!) Consume Azure services! Use .Net services SQL Office Active Directory Exchange etc... 23 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 25. .Net Integration Deploy on .Net infrastructure Desktop applications on Windows Desktop applications on everywhere (Mono) 24 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 26. Additionally Interoperability with the other scripting languages! Python … Use code also from there! 25 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 27. Silverlight Silverlight integration Write ruby instead of javascript in your pages! (Gestalt project) 26 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 28. Silverlight 27 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 29. Limitations No support for native C gems Some rough edges in interoperability 28 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 30. Status 29 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 RC1 Runs on .Net 3.5 & .Net 4.0 (different builds) Passing ~93% of the Ruby specs Already faster than vanilla Ruby (in a lot of cases) 1.0 expected soon Full compatibility with Ruby 1.8.6 Common build for .Net 3.5 & .Net 4.0 (hopefully)
  • 31. Status 30 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009
  • 32. Future 31 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 Speed Be on par with JRuby Ruby 1.9 (maybe?) ???
  • 33. Thanks! 32 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 Thanks a lot & happy hacking!
  • 34. Links 33 Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009 IronRuby: http://ironruby.net/ http://ironruby.codeplex.com/ Rubyst.es http://rubyst.es http://groups.google.com/ruby-hellug Pamediakopes http://www.pamediakopes.gr http://www.airtickets24.com Me http://blog.nikosd.com http://twitter.com/nikosd nospam - at - nikosd - dom – com Code samples : http://nikosd.com/f/ironruby-code-samples.zip