SlideShare ist ein Scribd-Unternehmen logo
1 von 127
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 difïŹcult 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’
ConïŹguration ‘options’
ConïŹguration ‘options’
ConïŹguration ‘options’
ConïŹguration ‘options’
ConïŹguration ‘options’
ConïŹguration ‘options’
ConïŹguration ‘options’
Pro-tip: Other conïŹguration options
ConïŹguration ‘options’
Pro-tip: Other conïŹguration options




app.ïŹle_dependencies ‘app/controllers/curves_controller.rb’ => ‘app/controllers/main_controller.rb’
ConïŹguration ‘options’
Pro-tip: Other conïŹguration options




app.ïŹle_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 ïŹle
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 ïŹles from gem
end
RubyGems

Normal RubyGems won’t work




Motion::Project::App.setup do |app|
  # Load ïŹles from gem
end




Use Bundler
RubyGems

Normal RubyGems won’t work




Motion::Project::App.setup do |app|
  # Load ïŹles from gem
end




                                 source :rubygems

                                 gem 'rake'               require ‘bundler’
Use Bundler                      gem 'bubble-wrap'        Bundler.require
                                 gem 'motion-cocoapods'
                                 gem 'motion-redgreen'           RakeïŹle
                                         GemïŹle
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 ïŹle
   :static
 )
Using Obj-C code

Statically Compiled

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

Statically Compiled

 app.vendor_project(
   “vendor/project-name”, #should have both .h and .m ïŹle
   :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, ïŹ‚oat, double)       (true/false, Fixnum, Bignum, Float)
Using native C code

         Basic Types in C                            Ruby data types

(bool, char, int, long, ïŹ‚oat, 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, ïŹ‚oat, 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, ïŹ‚oat, 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, ïŹ‚oat, 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, ïŹ‚oat, 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 RakeïŹle:
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

Weitere Àhnliche Inhalte

Was ist angesagt?

Why ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ HargraveWhy ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ Hargravemfrancis
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Mark Menard
 
Rails On Spring
Rails On SpringRails On Spring
Rails On Springswamy 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 JVMPaulThwaite
 
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 & CucumberUdaya 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 XMPPUdaya 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 JavaMicro 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 instrumentsIvano 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/ VimCheng Hsien Chen
 
From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary120bi
 
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 PerformanceTim Ellison
 
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 | EdurekaEdureka!
 
COBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMCOBOL deployment to .NET or JVM
COBOL deployment to .NET or JVMMicro Focus
 
Testing Ember Apps
Testing Ember AppsTesting Ember Apps
Testing Ember Appsjo_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 AetherPavan Kumar
 
Java, Ruby & Rails
Java, Ruby & RailsJava, Ruby & Rails
Java, Ruby & RailsPeter 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
 

Was ist angesagt? (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?
 

Andere mochten auch

404 not found
404 not found404 not found
404 not foundtoamitkumar
 
Fibered rails
Fibered railsFibered rails
Fibered railstoamitkumar
 
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
 
Ruby conf'11
Ruby conf'11Ruby conf'11
Ruby conf'11toamitkumar
 
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 Scrumtoamitkumar
 
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 v12Janusz Stankiewicz
 

Andere mochten auch (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
 

Ähnlich wie Ruby'izing iOS development

Mac ruby deployment
Mac ruby deploymentMac ruby deployment
Mac ruby deploymentThilo 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 DeploymentAxel Fontaine
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On RailsEric Berry
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The EnterpriseMatt Aimonetti
 
Concurrency in ruby
Concurrency in rubyConcurrency in ruby
Concurrency in rubyMarco Borromeo
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*bryanbibat
 
Heroku + Jeweler & Gemcutter
Heroku + Jeweler & GemcutterHeroku + Jeweler & Gemcutter
Heroku + Jeweler & GemcutterAriejan de Vroom
 
IronRuby for the .NET Developer
IronRuby for the .NET DeveloperIronRuby for the .NET Developer
IronRuby for the .NET DeveloperCory Foy
 
An Introduction to WebAssembly
An Introduction to WebAssemblyAn Introduction to WebAssembly
An Introduction to WebAssemblyDaniel 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 NativeRay Deck
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScriptAlexandr 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 Productiondevopsdaysaustin
 
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 foolAlessandro Cinelli (cirpo)
 

Ähnlich wie 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
 

KĂŒrzlich hochgeladen

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelDeepika Singh
 

KĂŒrzlich hochgeladen (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
 

Ruby'izing iOS development

Hinweis der Redaktion

  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