SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Similar a 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 a 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, ...
 

Más 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
 

Más 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]
 

Último

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
[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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
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
 
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
 
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
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Último (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
[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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
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...
 
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
 
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
 
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...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

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