SlideShare a Scribd company logo
Linkedin: October 18, 2012
2012 Fukuoka Ruby Night:
The New World of Ruby




     Ruby and iOS: An Inside Look
                             Jeanine Swatton
More about me…



             Ruby/iOS Developer, QT, C, C++

             Senior Lecturer, Assistant Professor
             Engineering experience:
             Government, Surveillance and Video Conferencing


             Organizer, Silicon Valley Ruby on Rails Meetup

              Software Product Manager



10/18/2012              Jeanine Swatton                        2
Agenda for today
             1. Why go mobile?

             2. Benefits of Native Mobile App

             3. mRuby + iOS

             4. RubyMotion




10/18/2012            Jeanine Swatton           3
Mobile Trends




10/18/2012       Jeanine Swatton   4
Why go mobile?




10/18/2012       Jeanine Swatton   5
Mobile Trends




10/18/2012       Jeanine Swatton   6
Mobile Trends


             Multiple Platforms for Native
             apps
              • Languages - Objective C, C, C++, .NET,
               Java, Adobe Flash
             • Apple - XCode 4.2, iOS SDK 5.0
             • Windows - Windows Mobile 6.5 Developer
               Toolkit w Mobile 6 SDK
             • Blackberry - Tablet/Native SDK, Runtime for
               Android Apps




10/18/2012              Jeanine Swatton                      7
Web app or Native app?




10/18/2012          Jeanine Swatton   8
What about Hybrid?




10/18/2012         Jeanine Swatton   9
Definitions


             • Native:
             • App designed to run on a device’s OS and
               machine firmware. (Example iPhone Apps run
               on iOS platform, Symbian for Nokia.

             • Web app:
             • All or some parts of software are downloaded
               from web. Coded in browser-rendered
               language – HTML, javascript



10/18/2012                     Jeanine Swatton                10
Definitions


             • Hybrid: Combination of offline and online
               functionality within native app 3 forms:

                1.   Requires you to be online to get data or information
                2.   Has native interface then pulls data via API’s into app and
                     may sync with database. Ex. Rhapsody – Gives you
                     offline screen you can access saved content – online –
                     you have full access to music you can stream.
                3.   Uses mobile site to display info within an application shell.
                     Done using tools such as PhoneGap. Tools provide
                     interface using jafascript to native API’s – then allows a
                     webview to interact with native functionality such as
                     cameras, GPS and device info




10/18/2012                          Jeanine Swatton                                  11
Mobile Trends


             App development comparison




10/18/2012        Jeanine Swatton         12
Mobile Trends




10/18/2012       Jeanine Swatton   13
Mobile Trends
             Solution?
             Web Apps w/ use of core web technologies: CSS3,
             HTML5




10/18/2012           Jeanine Swatton                       14
Mobile Trends


             When would you need a native app over a
             Mobile-Web based app?




10/18/2012             Jeanine Swatton                 15
Native Apps

             Native app advantages:
             Better control over the User Interface
             Platform API (application programming interface) access not
             available to web apps
             Network usage is lower for native – access network for data
             rather than web app completely loading at run-time
             Offline functionality
             Users more willing to download app than downloading from
             the internet

             Native app disadvantages:
             More maintenance with multiple platforms
             Have to update app then submit it


10/18/2012                   Jeanine Swatton                               16
Which App?


             Which type of companies would be a better fit for
             native, Web or both?




10/18/2012                  Jeanine Swatton                      17
Which App?


             Native approach more used by:

             Gaming, social networking, lifestyle & entertainment,
             gadgets, travel and local

             Web based approach:

             News and weather publishers. Sometimes financial
             services, retail and shopping due to need for user
             analytics




10/18/2012                   Jeanine Swatton                         18
What strategy do companies also use?


             Tech Startups/Companies new to the mobile side
             (depending on funds)




10/18/2012                 Jeanine Swatton                    19
Why Ruby on Mobile?



             • Simple transition from Web
               applications to mobile applications
             • Grow the Ruby community even more!
             • Support of mRuby
             • Think outside of the box!




10/18/2012                Jeanine Swatton            20
Intro to iOS Development
                        In 5 minutes




10/18/2012           Jeanine Swatton    21
iOS Development


             What you need to know
              • Objective C – superset of C
              • Delegates – one object depends on
                another object to perform functions.
              • Protocols – declare methods to be
                implemented by any class
              • ARC – Automatic Reference
                Counting/Memory Management



10/18/2012                  Jeanine Swatton            22
iOS Development


Application/Directory Structure
 File types:
 .m – Main file (equivalent to C++ .cpp file)
 .h – Header file (equivalent to C++ header
 file)
 .framework
 .plist – property list files
 .xib – “Nib files”




10/18/2012                         Jeanine Swatton   23
RubyMotion




10/18/2012     Jeanine Swatton   24
RubyMotion

             More info:
              •   Toolchain
              •   Based on Rake
              •   Combine Objective C & Ruby
              •   Subscription license
              •   Memory management
                  – Similar to ARC
              • Debug files available
              • iOS 6 compatible




10/18/2012                      Jeanine Swatton   25
RubyMotion

             Installation:
              • Purchase Commercial License
              • No Xcode needed
              • Install RubyMotion




10/18/2012                   Jeanine Swatton   26
RubyMotion

             Create and run:

              > motion create testapplication
              > cd testapplication
              > rake




10/18/2012                Jeanine Swatton       27
RubyMotion




               Demo
10/18/2012            Jeanine Swatton   28
MobiRuby




10/18/2012     Jeanine Swatton   29
MobiRuby


             Developed by:
             Yuichiro MASUI
             http://mobiruby.org/

             His plans:
                Will be adding it to Android!




10/18/2012                Jeanine Swatton       30
MobiRuby Stack


             Thanks to: Yuichiro MASUI

                              Your code
               mruby –     muby –          mobiruby -   mobiruby -
                cfunc      cocoa            common         ios


                                 mruby

                                    IOS


10/18/2012                      Jeanine Swatton                      31
MobiRuby

             Thanks to: Yuichiro MASUI – feedback from the creator
             • mruby-cfunc
                – C function bridge for mruby
                – Based on libFFI
             • mruby-cocoa
                – Garbage collection
                – Cocoa bridge for mruby
             • mobiruby-ios
                – Xcode integration




10/18/2012                       Jeanine Swatton                     32
MobiRuby

             Installation:
             Xcode
             > git clone git://github.com/mobiruby/mobiruby-
             ios.git
             > gem install nokogiri
             > gem install xcodeproj
              sh ./setup.sh
              open mobiruby-ios.xcodeproj/




10/18/2012                    Jeanine Swatton                  33
iOS Development




10/18/2012         Jeanine Swatton   34
MobiRuby




              Demo
10/18/2012     Jeanine Swatton   35
Thanks to:
Yukihiro Matsumoto, “Matz”
www.github.com/mruby/mruby
Laurent Sansonetti, RubyMotion
www.rubymotion.com
Yuichiro Masui, MobiRuby
www.mobiruby.com

Design/Animation by:
Jana Antonova: www.antonova.me
10/18/2012         Jeanine Swatton   36

More Related Content

What's hot

Agile iOS
Agile iOSAgile iOS
Agile iOS
sgleadow
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architectures
sgleadow
 
Agile toolkit present 2012
Agile toolkit present 2012Agile toolkit present 2012
Agile toolkit present 2012
Romans Malinovskis
 
Swift Development - Mobiloitte
Swift Development - MobiloitteSwift Development - Mobiloitte
Swift Development - Mobiloitte
Mobiloitte Technologies
 
Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014nyolles
 
Applications multi plateformes avec Cordova, HTML5 et Javascript
Applications multi plateformes avec Cordova, HTML5 et JavascriptApplications multi plateformes avec Cordova, HTML5 et Javascript
Applications multi plateformes avec Cordova, HTML5 et Javascript
Microsoft
 
Flutter vs Ionic: Which framework is better for cross platform application d...
Flutter vs Ionic: Which framework is better  for cross platform application d...Flutter vs Ionic: Which framework is better  for cross platform application d...
Flutter vs Ionic: Which framework is better for cross platform application d...
Mobiloitte
 
Frameworks and Tools For Developing Progressive Web App
Frameworks and Tools For Developing Progressive Web AppFrameworks and Tools For Developing Progressive Web App
Frameworks and Tools For Developing Progressive Web App
Mobiloitte
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDE
Muhammad Ghazali
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Prasid Pathak
 
Real World Technologies
Real World TechnologiesReal World Technologies
Real World Technologies
José Maria Silveira Neto
 
Java Development Company | Xicom
Java Development Company | XicomJava Development Company | Xicom
Java Development Company | Xicom
RyanForeman5
 
The Modern Web with Microfrontends
The Modern Web with MicrofrontendsThe Modern Web with Microfrontends
The Modern Web with Microfrontends
Nikki Dingding
 
Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Brian LeRoux
 
Joomla REST API - JoomlaDay Bangkok 2014
Joomla REST API - JoomlaDay Bangkok 2014Joomla REST API - JoomlaDay Bangkok 2014
Joomla REST API - JoomlaDay Bangkok 2014Ashwin Date
 
JWC 2015 - Mobile apps development for Joomla!
JWC 2015 - Mobile apps development for Joomla!JWC 2015 - Mobile apps development for Joomla!
JWC 2015 - Mobile apps development for Joomla!
Extly Extensions - JoomGap
 
Webview: The fifth element
Webview: The fifth elementWebview: The fifth element
Webview: The fifth element
Fernando Cejas
 
Drupal and the Future of the Web
Drupal and the Future of the WebDrupal and the Future of the Web
Drupal and the Future of the Web
John Albin Wilkins
 
Building software using Rich Clients Platforms Rikard Thulin
Building software using Rich Clients Platforms Rikard ThulinBuilding software using Rich Clients Platforms Rikard Thulin
Building software using Rich Clients Platforms Rikard ThulinRikard Thulin
 

What's hot (20)

Agile iOS
Agile iOSAgile iOS
Agile iOS
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architectures
 
Agile toolkit present 2012
Agile toolkit present 2012Agile toolkit present 2012
Agile toolkit present 2012
 
Swift Development - Mobiloitte
Swift Development - MobiloitteSwift Development - Mobiloitte
Swift Development - Mobiloitte
 
Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014Adobe CQ at LinkedIn Meetup February 2014
Adobe CQ at LinkedIn Meetup February 2014
 
Applications multi plateformes avec Cordova, HTML5 et Javascript
Applications multi plateformes avec Cordova, HTML5 et JavascriptApplications multi plateformes avec Cordova, HTML5 et Javascript
Applications multi plateformes avec Cordova, HTML5 et Javascript
 
Flutter vs Ionic: Which framework is better for cross platform application d...
Flutter vs Ionic: Which framework is better  for cross platform application d...Flutter vs Ionic: Which framework is better  for cross platform application d...
Flutter vs Ionic: Which framework is better for cross platform application d...
 
Frameworks and Tools For Developing Progressive Web App
Frameworks and Tools For Developing Progressive Web AppFrameworks and Tools For Developing Progressive Web App
Frameworks and Tools For Developing Progressive Web App
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDE
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
 
Future of Mobile
Future of MobileFuture of Mobile
Future of Mobile
 
Real World Technologies
Real World TechnologiesReal World Technologies
Real World Technologies
 
Java Development Company | Xicom
Java Development Company | XicomJava Development Company | Xicom
Java Development Company | Xicom
 
The Modern Web with Microfrontends
The Modern Web with MicrofrontendsThe Modern Web with Microfrontends
The Modern Web with Microfrontends
 
Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011
 
Joomla REST API - JoomlaDay Bangkok 2014
Joomla REST API - JoomlaDay Bangkok 2014Joomla REST API - JoomlaDay Bangkok 2014
Joomla REST API - JoomlaDay Bangkok 2014
 
JWC 2015 - Mobile apps development for Joomla!
JWC 2015 - Mobile apps development for Joomla!JWC 2015 - Mobile apps development for Joomla!
JWC 2015 - Mobile apps development for Joomla!
 
Webview: The fifth element
Webview: The fifth elementWebview: The fifth element
Webview: The fifth element
 
Drupal and the Future of the Web
Drupal and the Future of the WebDrupal and the Future of the Web
Drupal and the Future of the Web
 
Building software using Rich Clients Platforms Rikard Thulin
Building software using Rich Clients Platforms Rikard ThulinBuilding software using Rich Clients Platforms Rikard Thulin
Building software using Rich Clients Platforms Rikard Thulin
 

Similar to Ruby and iOS: An inside look

Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?
Effective
 
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Shane Church
 
Mobile Application Development with WP7 & Others
Mobile Application Development with WP7 & OthersMobile Application Development with WP7 & Others
Mobile Application Development with WP7 & Others
Andri Yadi
 
Seminar report on android os
Seminar report on android osSeminar report on android os
Seminar report on android os
Appsthentic Technology
 
Building Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and IonicBuilding Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and Ionic
Kadhem Soltani
 
AIDS.gov Drupal4Gov Responsive Design
AIDS.gov Drupal4Gov Responsive DesignAIDS.gov Drupal4Gov Responsive Design
Road to mobile w/ Sinatra, jQuery Mobile, Spine.js and Mustache
Road to mobile w/ Sinatra, jQuery Mobile, Spine.js and MustacheRoad to mobile w/ Sinatra, jQuery Mobile, Spine.js and Mustache
Road to mobile w/ Sinatra, jQuery Mobile, Spine.js and Mustache
Brian Sam-Bodden
 
Getting started with PhoneGap
Getting started with PhoneGapGetting started with PhoneGap
Getting started with PhoneGap
Patrick van Kouteren
 
Native vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationNative vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile application
Loic Ortola
 
Mobile (App) Development with Sitecore
Mobile (App) Development with SitecoreMobile (App) Development with Sitecore
Mobile (App) Development with Sitecore
Pieter Brinkman
 
Mobile Development Platforms
Mobile Development PlatformsMobile Development Platforms
Mobile Development Platforms
Andri Yadi
 
What is Happening in the "App Factory"?
What is Happening in the "App Factory"?What is Happening in the "App Factory"?
What is Happening in the "App Factory"?
Ciklum Ukraine
 
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForgeMobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Luca Milanesio
 
Windows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunity
Windows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunityWindows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunity
Windows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunity
Frédéric Harper
 
Jose l ugia 6 wunderkinder, momenta
Jose l ugia  6 wunderkinder, momentaJose l ugia  6 wunderkinder, momenta
Jose l ugia 6 wunderkinder, momentaapps4allru
 
Build your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App EngineBuild your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App Engine
Jl_Ugia
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
Quang Minh Dao
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
Quang Minh Dao
 

Similar to Ruby and iOS: An inside look (20)

Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?Pick Your Poison – Mobile Web, Native or Hybrid?
Pick Your Poison – Mobile Web, Native or Hybrid?
 
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
Pick Your Poison – Mobile Web, Native, or Hybrid? - Denver Startup Week - Oct...
 
Mobile Application Development with WP7 & Others
Mobile Application Development with WP7 & OthersMobile Application Development with WP7 & Others
Mobile Application Development with WP7 & Others
 
Seminar report on android os
Seminar report on android osSeminar report on android os
Seminar report on android os
 
Building Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and IonicBuilding Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and Ionic
 
AIDS.gov Drupal4Gov Responsive Design
AIDS.gov Drupal4Gov Responsive DesignAIDS.gov Drupal4Gov Responsive Design
AIDS.gov Drupal4Gov Responsive Design
 
Android overview
Android overviewAndroid overview
Android overview
 
Road to mobile w/ Sinatra, jQuery Mobile, Spine.js and Mustache
Road to mobile w/ Sinatra, jQuery Mobile, Spine.js and MustacheRoad to mobile w/ Sinatra, jQuery Mobile, Spine.js and Mustache
Road to mobile w/ Sinatra, jQuery Mobile, Spine.js and Mustache
 
Getting started with PhoneGap
Getting started with PhoneGapGetting started with PhoneGap
Getting started with PhoneGap
 
Native vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationNative vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile application
 
Mobile (App) Development with Sitecore
Mobile (App) Development with SitecoreMobile (App) Development with Sitecore
Mobile (App) Development with Sitecore
 
Mobile Development Platforms
Mobile Development PlatformsMobile Development Platforms
Mobile Development Platforms
 
What is Happening in the "App Factory"?
What is Happening in the "App Factory"?What is Happening in the "App Factory"?
What is Happening in the "App Factory"?
 
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForgeMobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
 
Windows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunity
Windows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunityWindows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunity
Windows Phone 8 Wave Guide Montreal Code Camp - The Windows Phone opportunity
 
Jose l ugia 6 wunderkinder, momenta
Jose l ugia  6 wunderkinder, momentaJose l ugia  6 wunderkinder, momenta
Jose l ugia 6 wunderkinder, momenta
 
Build your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App EngineBuild your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App Engine
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
 
Phonegap
PhonegapPhonegap
Phonegap
 

Recently uploaded

Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
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
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
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
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
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
 
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
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
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
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 

Recently uploaded (20)

Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
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
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
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
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
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 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
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
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
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 

Ruby and iOS: An inside look

  • 1. Linkedin: October 18, 2012 2012 Fukuoka Ruby Night: The New World of Ruby Ruby and iOS: An Inside Look Jeanine Swatton
  • 2. More about me… Ruby/iOS Developer, QT, C, C++ Senior Lecturer, Assistant Professor Engineering experience: Government, Surveillance and Video Conferencing Organizer, Silicon Valley Ruby on Rails Meetup Software Product Manager 10/18/2012 Jeanine Swatton 2
  • 3. Agenda for today 1. Why go mobile? 2. Benefits of Native Mobile App 3. mRuby + iOS 4. RubyMotion 10/18/2012 Jeanine Swatton 3
  • 4. Mobile Trends 10/18/2012 Jeanine Swatton 4
  • 5. Why go mobile? 10/18/2012 Jeanine Swatton 5
  • 6. Mobile Trends 10/18/2012 Jeanine Swatton 6
  • 7. Mobile Trends Multiple Platforms for Native apps • Languages - Objective C, C, C++, .NET, Java, Adobe Flash • Apple - XCode 4.2, iOS SDK 5.0 • Windows - Windows Mobile 6.5 Developer Toolkit w Mobile 6 SDK • Blackberry - Tablet/Native SDK, Runtime for Android Apps 10/18/2012 Jeanine Swatton 7
  • 8. Web app or Native app? 10/18/2012 Jeanine Swatton 8
  • 9. What about Hybrid? 10/18/2012 Jeanine Swatton 9
  • 10. Definitions • Native: • App designed to run on a device’s OS and machine firmware. (Example iPhone Apps run on iOS platform, Symbian for Nokia. • Web app: • All or some parts of software are downloaded from web. Coded in browser-rendered language – HTML, javascript 10/18/2012 Jeanine Swatton 10
  • 11. Definitions • Hybrid: Combination of offline and online functionality within native app 3 forms: 1. Requires you to be online to get data or information 2. Has native interface then pulls data via API’s into app and may sync with database. Ex. Rhapsody – Gives you offline screen you can access saved content – online – you have full access to music you can stream. 3. Uses mobile site to display info within an application shell. Done using tools such as PhoneGap. Tools provide interface using jafascript to native API’s – then allows a webview to interact with native functionality such as cameras, GPS and device info 10/18/2012 Jeanine Swatton 11
  • 12. Mobile Trends App development comparison 10/18/2012 Jeanine Swatton 12
  • 13. Mobile Trends 10/18/2012 Jeanine Swatton 13
  • 14. Mobile Trends Solution? Web Apps w/ use of core web technologies: CSS3, HTML5 10/18/2012 Jeanine Swatton 14
  • 15. Mobile Trends When would you need a native app over a Mobile-Web based app? 10/18/2012 Jeanine Swatton 15
  • 16. Native Apps Native app advantages: Better control over the User Interface Platform API (application programming interface) access not available to web apps Network usage is lower for native – access network for data rather than web app completely loading at run-time Offline functionality Users more willing to download app than downloading from the internet Native app disadvantages: More maintenance with multiple platforms Have to update app then submit it 10/18/2012 Jeanine Swatton 16
  • 17. Which App? Which type of companies would be a better fit for native, Web or both? 10/18/2012 Jeanine Swatton 17
  • 18. Which App? Native approach more used by: Gaming, social networking, lifestyle & entertainment, gadgets, travel and local Web based approach: News and weather publishers. Sometimes financial services, retail and shopping due to need for user analytics 10/18/2012 Jeanine Swatton 18
  • 19. What strategy do companies also use? Tech Startups/Companies new to the mobile side (depending on funds) 10/18/2012 Jeanine Swatton 19
  • 20. Why Ruby on Mobile? • Simple transition from Web applications to mobile applications • Grow the Ruby community even more! • Support of mRuby • Think outside of the box! 10/18/2012 Jeanine Swatton 20
  • 21. Intro to iOS Development In 5 minutes 10/18/2012 Jeanine Swatton 21
  • 22. iOS Development What you need to know • Objective C – superset of C • Delegates – one object depends on another object to perform functions. • Protocols – declare methods to be implemented by any class • ARC – Automatic Reference Counting/Memory Management 10/18/2012 Jeanine Swatton 22
  • 23. iOS Development Application/Directory Structure File types: .m – Main file (equivalent to C++ .cpp file) .h – Header file (equivalent to C++ header file) .framework .plist – property list files .xib – “Nib files” 10/18/2012 Jeanine Swatton 23
  • 24. RubyMotion 10/18/2012 Jeanine Swatton 24
  • 25. RubyMotion More info: • Toolchain • Based on Rake • Combine Objective C & Ruby • Subscription license • Memory management – Similar to ARC • Debug files available • iOS 6 compatible 10/18/2012 Jeanine Swatton 25
  • 26. RubyMotion Installation: • Purchase Commercial License • No Xcode needed • Install RubyMotion 10/18/2012 Jeanine Swatton 26
  • 27. RubyMotion Create and run: > motion create testapplication > cd testapplication > rake 10/18/2012 Jeanine Swatton 27
  • 28. RubyMotion Demo 10/18/2012 Jeanine Swatton 28
  • 29. MobiRuby 10/18/2012 Jeanine Swatton 29
  • 30. MobiRuby Developed by: Yuichiro MASUI http://mobiruby.org/ His plans: Will be adding it to Android! 10/18/2012 Jeanine Swatton 30
  • 31. MobiRuby Stack Thanks to: Yuichiro MASUI Your code mruby – muby – mobiruby - mobiruby - cfunc cocoa common ios mruby IOS 10/18/2012 Jeanine Swatton 31
  • 32. MobiRuby Thanks to: Yuichiro MASUI – feedback from the creator • mruby-cfunc – C function bridge for mruby – Based on libFFI • mruby-cocoa – Garbage collection – Cocoa bridge for mruby • mobiruby-ios – Xcode integration 10/18/2012 Jeanine Swatton 32
  • 33. MobiRuby Installation: Xcode > git clone git://github.com/mobiruby/mobiruby- ios.git > gem install nokogiri > gem install xcodeproj  sh ./setup.sh  open mobiruby-ios.xcodeproj/ 10/18/2012 Jeanine Swatton 33
  • 34. iOS Development 10/18/2012 Jeanine Swatton 34
  • 35. MobiRuby Demo 10/18/2012 Jeanine Swatton 35
  • 36. Thanks to: Yukihiro Matsumoto, “Matz” www.github.com/mruby/mruby Laurent Sansonetti, RubyMotion www.rubymotion.com Yuichiro Masui, MobiRuby www.mobiruby.com Design/Animation by: Jana Antonova: www.antonova.me 10/18/2012 Jeanine Swatton 36

Editor's Notes

  1. C function bridge for mruby – call c based function directlyCocoa bridge for mruby – use cocoa functions transparently, handles garbage collectionMobiruby-common – believe that’s for android onlyMobiruby-ios provides you with xcode integration, iOS specific utilities
  2. A portable foreign function interface library is libffi – released in april as well..The libffi library is useful to anyone trying to build a bridge between interpreted and natively compiled code.C function bridge for mruby – call c based function directlyCocoa bridge for mruby – use cocoa functions transparently, handles garbage collectionMobiruby-common – believe that’s for android onlyMobiruby-ios provides you with xcode integration, iOS specific utilities
  3. Xcodeproj lets you create and modify Xcode projects from Ruby.Nokogiri – xml parser