SlideShare a Scribd company logo
Ruby’izing iOS
   Development


Amit Kumar
About me




• Ruby’ist
• Consultant: Tata Consultancy Services Ltd
• Github: toamitkumar
• Twitter: toamit
• toamitkumar.github.com
Released in May, 2012
Released in May, 2012
RubyMotion
RubyMotion

revolutionary toolchain for native iOS application development using Ruby language
RubyMotion

revolutionary toolchain for native iOS application development using Ruby language




                                                neighbor's envy coder’s delight; happiness;
A What ??
A What ??
A What ??

Fork of MacRuby
A What ??

Fork of MacRuby          Compiles into optimized machine code
A What ??

Fork of MacRuby                                  Compiles into optimized machine code




Automatic object memory allocation and reclaim
A What ??

Fork of MacRuby                                  Compiles into optimized machine code




Automatic object memory allocation and reclaim
A What ??

Fork of MacRuby                                  Compiles into optimized machine code




Automatic object memory allocation and reclaim



Compiles the interfaces built in IB of XCode
A What ??

Fork of MacRuby                                  Compiles into optimized machine code




Automatic object memory allocation and reclaim



Compiles the interfaces built in IB of XCode
A What ??

Fork of MacRuby                                      Compiles into optimized machine code




Automatic object memory allocation and reclaim



Compiles the interfaces built in IB of XCode



Ruby-runtime tightly integrated with Obj-C runtime
A What ??

Fork of MacRuby                                      Compiles into optimized machine code




Automatic object memory allocation and reclaim



Compiles the interfaces built in IB of XCode



Ruby-runtime tightly integrated with Obj-C runtime



 Same ancestor as Obj-C
A What ??
A What ??

Fork of MacRuby                                      Compiles into optimized machine code




Automatic object memory allocation and reclaim



Compiles the interfaces built in IB of XCode



Ruby-runtime tightly integrated with Obj-C runtime



 Same ancestor as Obj-C
A What ??

Fork of MacRuby                                      Compiles into optimized machine code




Automatic object memory allocation and reclaim



Compiles the interfaces built in IB of XCode



Ruby-runtime tightly integrated with Obj-C runtime



 Same ancestor as Obj-C                          Object can be shared with no performance cost
Motion Runtime
Motion Runtime
Motion Runtime
Motion Runtime




  Shared Runtime
Motion Runtime




  Shared Runtime
Motion Runtime




  Shared Runtime
Motion Runtime




Foundation Framework
  (NSObject - Kernel)



      Shared Runtime
Motion Runtime




Foundation Framework
  (NSObject - Kernel)



      Shared Runtime
Motion Runtime




Foundation Framework
  (NSObject - Kernel)



      Shared Runtime
Myths
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
    - Very easy to get started; as we all know HTML/JS/CSS
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
    - Very easy to get started; as we all know HTML/JS/CSS

   Cons:
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
    - Very easy to get started; as we all know HTML/JS/CSS

   Cons:
    - Its a bridge that makes native api calls
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
    - Very easy to get started; as we all know HTML/JS/CSS

   Cons:
    - Its a bridge that makes native api calls
    - Runs in single thread of UIWebView which is painfully slow
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
    - Very easy to get started; as we all know HTML/JS/CSS

   Cons:
    - Its a bridge that makes native api calls
    - Runs in single thread of UIWebView which is painfully slow
    - Limited support of direct access to native APIs
Myths


Can I code using RubyMotion without the pain to learn Cocoa Framework ?




PhoneGap like tools are much easier to learn what advantage do I get with RubyMotion ?


   Pros:
    - Very easy to get started; as we all know HTML/JS/CSS

   Cons:
    - Its a bridge that makes native api calls
    - Runs in single thread of UIWebView which is painfully slow
    - Limited support of direct access to native APIs
    - Debugging becomes extremely difficult when you make native api calls
Download & Install




http://sites.fastspring.com/hipbyte/product/rubymotion
The ‘motion’ command
The ‘motion’ command
The ‘motion’ command
The ‘motion’ command
The ‘motion’ command
The ‘motion’ command




Protip: Forcing update to a particular version:
The ‘motion’ command




Protip: Forcing update to a particular version:
The ‘motion’ command




Protip: Forcing update to a particular version:

sudo motion update --force-version=1.2
The ‘motion’ command
The famous ‘Rake’
The famous ‘Rake’
The famous ‘Rake’
The famous ‘Rake’
The famous ‘Rake’
The famous ‘Rake’
Configuration ‘options’
Configuration ‘options’
Configuration ‘options’
Configuration ‘options’
Configuration ‘options’
Configuration ‘options’
Configuration ‘options’
Pro-tip: Other configuration options
Configuration ‘options’
Pro-tip: Other configuration options




app.file_dependencies ‘app/controllers/curves_controller.rb’ => ‘app/controllers/main_controller.rb’
Configuration ‘options’
Pro-tip: Other configuration options




app.file_dependencies ‘app/controllers/curves_controller.rb’ => ‘app/controllers/main_controller.rb’




app.vendor_project
The Soul


Console REPL - Read Evaluate Print Loop
The Soul


Console REPL - Read Evaluate Print Loop




     You feel in-control
The Soul


Console REPL - Read Evaluate Print Loop




     You feel in-control
The Soul


                     Console REPL - Read Evaluate Print Loop




                           You feel in-control



An excellent in-browser demo of REPL:  https://www.pieceable.com/rubymotion-console
Build Process
Build Process




COMPILING
Build Process




COMPILING               LINKING
Build Process




COMPILING               LINKING




PACKAGING
Build Process




COMPILING               LINKING




PACKAGING          CODE SIGN
Testing your code
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec




‘MacBacon’ has almost all ‘syntactic sugar’ that you are accustomed in RSpec:
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec




‘MacBacon’ has almost all ‘syntactic sugar’ that you are accustomed in RSpec:
 - Assertions
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec




‘MacBacon’ has almost all ‘syntactic sugar’ that you are accustomed in RSpec:
 - Assertions
 - Matchers
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec




‘MacBacon’ has almost all ‘syntactic sugar’ that you are accustomed in RSpec:
 - Assertions
 - Matchers
 - before/after blocks
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec




‘MacBacon’ has almost all ‘syntactic sugar’ that you are accustomed in RSpec:
 - Assertions
 - Matchers
 - before/after blocks

View testing:
Testing your code


Like Rails, RubyMotion comes bundled with ‘RSpec’ like framework ‘MacBacon’

    <motion_root>/spec/main_spec.rb
    $ rake spec




‘MacBacon’ has almost all ‘syntactic sugar’ that you are accustomed in RSpec:
 - Assertions
 - Matchers
 - before/after blocks

View testing:
 - Loading the nib/xib/storyboard file
Continuos Integration


              Jenkins setup on mac-mini          App Store


 WebHook                                  Push




Setup for local deployment and testing
Using External Libraries
Using External Libraries




RubyGems
Using External Libraries



                     Objective-C
RubyGems
                       Project
Using External Libraries



                      Objective-C
RubyGems
                        Project




Native-C
Using External Libraries



                      Objective-C
RubyGems
                        Project




Native-C              CocoaPods
RubyGems
RubyGems

Normal RubyGems won’t work
RubyGems

Normal RubyGems won’t work




Motion::Project::App.setup do |app|
  # Load files from gem
end
RubyGems

Normal RubyGems won’t work




Motion::Project::App.setup do |app|
  # Load files from gem
end




Use Bundler
RubyGems

Normal RubyGems won’t work




Motion::Project::App.setup do |app|
  # Load files from gem
end




                                 source :rubygems

                                 gem 'rake'               require ‘bundler’
Use Bundler                      gem 'bubble-wrap'        Bundler.require
                                 gem 'motion-cocoapods'
                                 gem 'motion-redgreen'           Rakefile
                                         Gemfile
RubyGems contd...
RubyGems contd...
Bubblewrap

teacup

sugarcube

formotion

Nitron

motion-redgreen

motion-logger

MotionModel

NativeJSBridge

SegmentTab
Using Obj-C code
Using Obj-C code

Statically Compiled

 app.vendor_project(
   “vendor/project-name”, #should have both .h and .m file
   :static
 )
Using Obj-C code

Statically Compiled

 app.vendor_project(
   “vendor/project-name”, #should have both .h and .m file
   :static
 )
Using Obj-C code

Statically Compiled

 app.vendor_project(
   “vendor/project-name”, #should have both .h and .m file
   :static
 )

XCode project:

  app.vendor_project(
   “vendor/project-name”,
   :xcode,
   :xcodeproj => “project-name.xcodeproj”,
   :target => “project-name”,
   :products => [“libproject-name.a”],
   :headers_dir => “project-name”
 )
Using native C code
Using native C code

         Basic Types in C                            Ruby data types

(bool, char, int, long, float, double)       (true/false, Fixnum, Bignum, Float)
Using native C code

         Basic Types in C                            Ruby data types

(bool, char, int, long, float, double)       (true/false, Fixnum, Bignum, Float)




  C Complex Data Structures
Using native C code

         Basic Types in C                            Ruby data types

(bool, char, int, long, float, double)       (true/false, Fixnum, Bignum, Float)




                                            No corresponding Ruby Data
  C Complex Data Structures
                                            Types
Using native C code

         Basic Types in C                            Ruby data types

(bool, char, int, long, float, double)       (true/false, Fixnum, Bignum, Float)




                                            No corresponding Ruby Data
                                            Types




  C Complex Data Structures
Using native C code

         Basic Types in C                                        Ruby data types

(bool, char, int, long, float, double)                   (true/false, Fixnum, Bignum, Float)




                                                        No corresponding Ruby Data
                                                        Types




  C Complex Data Structures
                                        BridgeSupport
Using native C code

         Basic Types in C                                        Ruby data types

(bool, char, int, long, float, double)                   (true/false, Fixnum, Bignum, Float)




                                                        No corresponding Ruby Data
                                                        Types




  C Complex Data Structures                                        RubyMotion
                                        BridgeSupport
CocoaPods
CocoaPods
is a dependency manager for Obj-C projects
CocoaPods
is a dependency manager for Obj-C projects

sudo gem install cocoapods
CocoaPods
is a dependency manager for Obj-C projects

sudo gem install cocoapods
pod setup # this may not be required for everyone, it never worked for me
CocoaPods
is a dependency manager for Obj-C projects

sudo gem install cocoapods
pod setup # this may not be required for everyone, it never worked for me

https://github.com/CocoaPods/Specs - lists all the pods
CocoaPods
is a dependency manager for Obj-C projects

sudo gem install cocoapods
pod setup # this may not be required for everyone, it never worked for me

https://github.com/CocoaPods/Specs - lists all the pods


It has been integrated with RubyMotion which comes as a gem
CocoaPods
is a dependency manager for Obj-C projects

sudo gem install cocoapods
pod setup # this may not be required for everyone, it never worked for me

https://github.com/CocoaPods/Specs - lists all the pods


It has been integrated with RubyMotion which comes as a gem


sudo gem install motion-cocoapods
CocoaPods
is a dependency manager for Obj-C projects

sudo gem install cocoapods
pod setup # this may not be required for everyone, it never worked for me

https://github.com/CocoaPods/Specs - lists all the pods


It has been integrated with RubyMotion which comes as a gem


sudo gem install motion-cocoapods

Include it in your Rakefile:
require ‘moion-cocoapods’
Motion::Project::App.setup do |app|
 # ...
 app.pods do
  dependency 'JSONKit'
  dependency 'iActiveRecord'
 end
end
Long way to go !
Long way to go !



RM is only ~4 months old
Long way to go !



RM is only ~4 months old




Something it lacks:

 - Debugger (but REPL kind of makes it easy)
 - Some dynamic code doesn’t work (but hey !!!)
RM applications on AppStore
RM applications on AppStore


Everclip
RM applications on AppStore


Everclip

Cabify
RM applications on AppStore


Everclip

Cabify




Survey
RM applications on AppStore


Everclip

Cabify




Survey

http://signup.bigdayreminder.com/
RM applications on AppStore


Everclip

Cabify




Survey

http://signup.bigdayreminder.com/

http://jukely.com/
THANK YOU
One more thing !


15% discount
 toamitkumar@gmail.com

More Related Content

What's hot

Why ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ HargraveWhy ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ Hargrave
mfrancis
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
Mark Menard
 
Rails On Spring
Rails On SpringRails On Spring
Rails On Spring
swamy g
 
JavaOne 2012 CON3978 Scripting Languages on the JVM
JavaOne 2012 CON3978 Scripting Languages on the JVMJavaOne 2012 CON3978 Scripting Languages on the JVM
JavaOne 2012 CON3978 Scripting Languages on the JVM
PaulThwaite
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Udaya Kiran
 
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPPScalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Udaya Kiran
 
Visual COBOL Development for Unix and Java
Visual COBOL Development for Unix and JavaVisual COBOL Development for Unix and Java
Visual COBOL Development for Unix and Java
Micro Focus
 
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
PaulThwaite
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
Ivano Malavolta
 
How To Access Code In Large w/ Vim
How To Access Code In Large w/ VimHow To Access Code In Large w/ Vim
How To Access Code In Large w/ Vim
Cheng Hsien Chen
 
From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary
120bi
 
A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark Performance
Tim Ellison
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
Arne Roomann-Kurrik
 
Top 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | EdurekaTop 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | Edureka
Edureka!
 
COBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMCOBOL deployment to .NET or JVM
COBOL deployment to .NET or JVM
Micro Focus
 
Testing Ember Apps
Testing Ember AppsTesting Ember Apps
Testing Ember Apps
jo_liss
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
Pavan Kumar
 
Java, Ruby & Rails
Java, Ruby & RailsJava, Ruby & Rails
Java, Ruby & Rails
Peter Lind
 
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Katy Slemon
 
Why would a Java shop want to use Ruby?
Why would a Java shop want to use Ruby?Why would a Java shop want to use Ruby?
Why would a Java shop want to use Ruby?
Keith Pitty
 

What's hot (20)

Why ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ HargraveWhy ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ Hargrave
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
 
Rails On Spring
Rails On SpringRails On Spring
Rails On Spring
 
JavaOne 2012 CON3978 Scripting Languages on the JVM
JavaOne 2012 CON3978 Scripting Languages on the JVMJavaOne 2012 CON3978 Scripting Languages on the JVM
JavaOne 2012 CON3978 Scripting Languages on the JVM
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
 
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPPScalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
Scalable Real Time Chat (Text, Audio, Video) - Implemented using XMPP
 
Visual COBOL Development for Unix and Java
Visual COBOL Development for Unix and JavaVisual COBOL Development for Unix and Java
Visual COBOL Development for Unix and Java
 
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
 
How To Access Code In Large w/ Vim
How To Access Code In Large w/ VimHow To Access Code In Large w/ Vim
How To Access Code In Large w/ Vim
 
From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary
 
A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark Performance
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
 
Top 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | EdurekaTop 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | Edureka
 
COBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMCOBOL deployment to .NET or JVM
COBOL deployment to .NET or JVM
 
Testing Ember Apps
Testing Ember AppsTesting Ember Apps
Testing Ember Apps
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
 
Java, Ruby & Rails
Java, Ruby & RailsJava, Ruby & Rails
Java, Ruby & Rails
 
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
 
Why would a Java shop want to use Ruby?
Why would a Java shop want to use Ruby?Why would a Java shop want to use Ruby?
Why would a Java shop want to use Ruby?
 

Viewers also liked

404 not found
404 not found404 not found
404 not found
toamitkumar
 
Micro-Blogging for The Enterprise (MongoDB)
Micro-Blogging for The Enterprise (MongoDB)Micro-Blogging for The Enterprise (MongoDB)
Micro-Blogging for The Enterprise (MongoDB)
toamitkumar
 
Digital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile ScrumDigital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile Scrum
toamitkumar
 
Bimodal IT - Mode 2 Evolution Roadmap v12
Bimodal IT - Mode 2 Evolution Roadmap v12Bimodal IT - Mode 2 Evolution Roadmap v12
Bimodal IT - Mode 2 Evolution Roadmap v12
Janusz Stankiewicz
 

Viewers also liked (6)

404 not found
404 not found404 not found
404 not found
 
Fibered rails
Fibered railsFibered rails
Fibered rails
 
Micro-Blogging for The Enterprise (MongoDB)
Micro-Blogging for The Enterprise (MongoDB)Micro-Blogging for The Enterprise (MongoDB)
Micro-Blogging for The Enterprise (MongoDB)
 
Ruby conf'11
Ruby conf'11Ruby conf'11
Ruby conf'11
 
Digital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile ScrumDigital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile Scrum
 
Bimodal IT - Mode 2 Evolution Roadmap v12
Bimodal IT - Mode 2 Evolution Roadmap v12Bimodal IT - Mode 2 Evolution Roadmap v12
Bimodal IT - Mode 2 Evolution Roadmap v12
 

Similar to Ruby'izing iOS development

Mac ruby deployment
Mac ruby deploymentMac ruby deployment
Mac ruby deployment
Thilo Utke
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
Immutable Server generation: The new App Deployment
Immutable Server generation: The new App DeploymentImmutable Server generation: The new App Deployment
Immutable Server generation: The new App Deployment
Axel Fontaine
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
Eric Berry
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
Matt Aimonetti
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*
bryanbibat
 
Heroku + Jeweler & Gemcutter
Heroku + Jeweler & GemcutterHeroku + Jeweler & Gemcutter
Heroku + Jeweler & Gemcutter
Ariejan de Vroom
 
IronRuby for the .NET Developer
IronRuby for the .NET DeveloperIronRuby for the .NET Developer
IronRuby for the .NET Developer
Cory Foy
 
An Introduction to WebAssembly
An Introduction to WebAssemblyAn Introduction to WebAssembly
An Introduction to WebAssembly
Daniel Budden
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyKyle Drake
 
Making Swift Native Modules in React Native
Making Swift Native Modules in React NativeMaking Swift Native Modules in React Native
Making Swift Native Modules in React Native
Ray Deck
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
Alexandr Skachkov
 
MacRuby & HotCocoa
MacRuby & HotCocoaMacRuby & HotCocoa
MacRuby & HotCocoaThilo Utke
 
Rubymotion inspect 2014_review
Rubymotion inspect 2014_reviewRubymotion inspect 2014_review
Rubymotion inspect 2014_reviewBob Firestone
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
devopsdaysaustin
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
Codemotion
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 

Similar to Ruby'izing iOS development (20)

Mac ruby deployment
Mac ruby deploymentMac ruby deployment
Mac ruby deployment
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
Immutable Server generation: The new App Deployment
Immutable Server generation: The new App DeploymentImmutable Server generation: The new App Deployment
Immutable Server generation: The new App Deployment
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
 
Concurrency in ruby
Concurrency in rubyConcurrency in ruby
Concurrency in ruby
 
ruby-cocoa
ruby-cocoaruby-cocoa
ruby-cocoa
 
ruby-cocoa
ruby-cocoaruby-cocoa
ruby-cocoa
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*
 
Heroku + Jeweler & Gemcutter
Heroku + Jeweler & GemcutterHeroku + Jeweler & Gemcutter
Heroku + Jeweler & Gemcutter
 
IronRuby for the .NET Developer
IronRuby for the .NET DeveloperIronRuby for the .NET Developer
IronRuby for the .NET Developer
 
An Introduction to WebAssembly
An Introduction to WebAssemblyAn Introduction to WebAssembly
An Introduction to WebAssembly
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
Making Swift Native Modules in React Native
Making Swift Native Modules in React NativeMaking Swift Native Modules in React Native
Making Swift Native Modules in React Native
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
 
MacRuby & HotCocoa
MacRuby & HotCocoaMacRuby & HotCocoa
MacRuby & HotCocoa
 
Rubymotion inspect 2014_review
Rubymotion inspect 2014_reviewRubymotion inspect 2014_review
Rubymotion inspect 2014_review
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
 

Recently uploaded

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 

Recently uploaded (20)

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 

Ruby'izing iOS development

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n