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”
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
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