SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Similaire à 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
 

Similaire à 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, ...
 

Plus de 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
 

Plus de 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]
 

Dernier

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Dernier (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

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