SlideShare a Scribd company logo
Have No MacBook,
  Will Code Anyway*
 Putting the “Mobile” in Mobile App Development




   *How To Write   and Test your own code
on your iPhone/iPad without carrying your Mac
                                                  @CarlAllenBrown
XCode for iOS
Of course, it doesn’t exist, but just
     how close can we get?
Well, it’s not
quite there, yet...
But it’s usable. I use it several times
                a week.
But Why?
Wouldn’t a laptop be easier?
Because it’s convenient
It’s useable more
       places
 Standing in line can be productive,
but a laptop would be too awkward.
It’s Social

An iPad is a better tool for
communicating with iOS
App development
customers

When demonstrating an
App or showing a design to
a customer with a laptop,
they’re never as interactive
as they are when I’m using
the iPad
It’s powerful enough
        *Graphic   from http://www.iakttakelser.com/2011/03/on-feeds-and-speeds.html
It’s a growing market
So what do you have?

The project is called
XCAB for now (it stands
for XCode AutoBuild), and
it’s available on GitHub
under an MIT license.

It’s written in Bourne Shell
at the moment

I’d consider it in the
“Advanced Proof of
Concept” stage
So, how does it work?
You start with a connected
         iOS device with you*




*And   a network-connected Mac running back at the office
You use a Dropbox-enabled
           App

         Dropbox



         Textastic (Editor for iPad)


         Nebulous Notes (Universal)
To make changes to your
       Dropbox
Which get checked into Git
New Git commits get built
Each build gets turned into
 a installable web archive




Using iOS Beta Builder
Which gets written to your
public web dir on Dropbox
Your iPhone/iPad is sent a
push notification over Boxcar
The iOS device follows the
link in the push notification
And the App Gets Installed




So you can test, and either iterate or notify your
                    customer
So, how well does it work?
How well does it work?
How do I use it?

XCAB will make a directory in your XCAB directory for each
PROJECT that it can check out from the path in the
XCAB.conf file
Into that directory will be placed a file that lists the branches
and tags for that project so you can see your options
If you make a new directory, it will check out the closest-
named branch/tag it can find into that directory (creating a
branch with the name of the directory if it doesn’t exist).
Any files changed in that directory will cause a build and a
push notification (if there is an associated XCode project)
Demo
                                 We’ll see if this works :)




*If   not, I’ve got some static screenshots to fall back on that I’ll walk you through
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Developing iOS apps on your iPad with XCAB
Isn’t that really, really complicated?
Why, YES, yes it is.
Simplification is coming

Working on making a Mac App
to do the Server-side Stuff

and an iOS App do to branch
creation, checkouts, add new
projects, receive the push
notifications, etc.

Want you to be able to use
your own editor App, so it
won’t be a full IDE.

No ETA, though.
How do I set this up?
           Part 1: Prerequisites



Put a Dropbox in your Home directory on your Mac
Get Boxcar App and Set up Boxcar account (http://boxcar.io)
  Enable Growl/API access
Get and build the command-line Beta Builder from
• git://github.com/sgruby/iOS-BetaBuilder.git




                            65
How do I set this up?
       Part 2: Keychain for Cert Signing
   If you want it run without being logged into your session (e.g.
   from cron), you have to make* a new Keychain with just your
   code-signing Cert and public/private key pair that is locked by a
   password you don’t mind hard-coding into a script.




*See   http://stackoverflow.com/questions/577750/running-xcodebuild-from-a-forked-terminal
                                       66
How do I set this up?
                   Part 3: XCAB

Get the code from https://github.com/carlbrown/XCAB
Copy XCAB.settings.sample to XCAB.settings
Edit the variables in XCAB.settings as needed
  See next slide
run run_me_to_verify_install.sh
    fix anything it points out
    follow its instructions to get the server running


                                67
XCAB.settings.sample
What’s the catch?
There’s no provision for managing XCode projects or xib files
(you’ll still have to do all that on the Mac)
  In other words, you can’t add new files or edit GUIs
  Technically, they’re just XML, but really, just don’t bother for
  anything more complicated that changing the name on the
  signing certificate
What’s the catch?
There’s no provision for managing XCode projects or xib files
(you’ll still have to do all that on the Mac)
  In other words, you can’t add new files or edit GUIs
  Technically, they’re just XML, but really, just don’t bother for
  anything more complicated that changing the name on the
  signing certificate
No auto-complete or refactoring or debugging or instruments
What’s the catch?
There’s no provision for managing XCode projects or xib files
(you’ll still have to do all that on the Mac)
  In other words, you can’t add new files or edit GUIs
  Technically, they’re just XML, but really, just don’t bother for
  anything more complicated that changing the name on the
  signing certificate
No auto-complete or refactoring or debugging or instruments
The lag and long cycle time gets old
What’s the catch?
There’s no provision for managing XCode projects or xib files
(you’ll still have to do all that on the Mac)
  In other words, you can’t add new files or edit GUIs
  Technically, they’re just XML, but really, just don’t bother for
  anything more complicated that changing the name on the
  signing certificate
No auto-complete or refactoring or debugging or instruments
The lag and long cycle time gets old
Oh, and did I mention it’s really overly complicated
Questions?


Email: carlb@pobox.com (H) carlb@PDAgent.com (W)
Twitter: @CarlAllenBrown
Blog: http://www.EscortMissions.com
I'll put this presentation up at http://www.slideshare.net/
carlbrown/
References

http://www.oiledmachine.com/posts/2010/10/27/automated-
ota-ios-app-distribution.html
http://stackoverflow.com/questions/577750/running-
xcodebuild-from-a-forked-terminal
http://help.boxcar.io/kb/developers/sending-yourself-
notifications
http://www.iakttakelser.com/2011/03/on-feeds-and-
speeds.html
Ad

More Related Content

What's hot (20)

Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11
Derek Jacoby
 
Untangling the web10
Untangling the web10Untangling the web10
Untangling the web10
Derek Jacoby
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan Erck
Ortus Solutions, Corp
 
Chatbots
ChatbotsChatbots
Chatbots
Tessa Mero
 
Untangling8
Untangling8Untangling8
Untangling8
Derek Jacoby
 
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
GreeceJS
 
Creating books app with react native
Creating books app with react nativeCreating books app with react native
Creating books app with react native
Ali Sa'o
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
Internal workshop react-js-mruiz
Internal workshop react-js-mruizInternal workshop react-js-mruiz
Internal workshop react-js-mruiz
Miguel Ruiz Rodriguez
 
From zero to hero with React Native!
From zero to hero with React Native!From zero to hero with React Native!
From zero to hero with React Native!
Commit University
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
ModusJesus
 
React js basics
React js basicsReact js basics
React js basics
Maulik Shah
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
Derek Jacoby
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
dvcrn
 
Codemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab TutorialCodemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab Tutorial
gjuljo
 
React Component Library Design @WalmartLabs
React Component Library Design @WalmartLabsReact Component Library Design @WalmartLabs
React Component Library Design @WalmartLabs
chaseadamsio
 
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Lachlan Hardy
 
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Ricardo Castelhano
 
Cutting the Fat by Tiffany Conroy
Cutting the Fat by Tiffany ConroyCutting the Fat by Tiffany Conroy
Cutting the Fat by Tiffany Conroy
Codemotion
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)
Devin Abbott
 
Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11
Derek Jacoby
 
Untangling the web10
Untangling the web10Untangling the web10
Untangling the web10
Derek Jacoby
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan Erck
Ortus Solutions, Corp
 
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
GreeceJS
 
Creating books app with react native
Creating books app with react nativeCreating books app with react native
Creating books app with react native
Ali Sa'o
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
From zero to hero with React Native!
From zero to hero with React Native!From zero to hero with React Native!
From zero to hero with React Native!
Commit University
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
ModusJesus
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
Derek Jacoby
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
dvcrn
 
Codemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab TutorialCodemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab Tutorial
gjuljo
 
React Component Library Design @WalmartLabs
React Component Library Design @WalmartLabsReact Component Library Design @WalmartLabs
React Component Library Design @WalmartLabs
chaseadamsio
 
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Lachlan Hardy
 
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Developing silverlight 4 applications with expression blend 4 (30 Abr 2010)
Ricardo Castelhano
 
Cutting the Fat by Tiffany Conroy
Cutting the Fat by Tiffany ConroyCutting the Fat by Tiffany Conroy
Cutting the Fat by Tiffany Conroy
Codemotion
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)
Devin Abbott
 

Similar to Developing iOS apps on your iPad with XCAB (20)

ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdfITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
Ortus Solutions, Corp
 
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
samimylahji
 
Visual Basic in easy steps Covers Visual Basic 2015 Fourth Edition Mcgrath
Visual Basic in easy steps Covers Visual Basic 2015 Fourth Edition McgrathVisual Basic in easy steps Covers Visual Basic 2015 Fourth Edition Mcgrath
Visual Basic in easy steps Covers Visual Basic 2015 Fourth Edition Mcgrath
hirshpirkka
 
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
waisfarjam
 
RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)
alloy020
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
gillygize
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
Fab L
 
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
paboyjonesh32
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
benDesigning
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
Ajeet Singh Raina
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
Cloud Native Bangalore
 
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
Fwdays
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon
 
Creating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryCreating and Maintaining an Open Source Library
Creating and Maintaining an Open Source Library
Nicholas Schweitzer
 
Christopher Allen's Presentation at eComm 2009
Christopher Allen's Presentation at eComm 2009Christopher Allen's Presentation at eComm 2009
Christopher Allen's Presentation at eComm 2009
eCommConf
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
homeworkping3
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
benDesigning
 
Amazing vue.js projects that are open source and free.
Amazing vue.js projects that are open source and free.Amazing vue.js projects that are open source and free.
Amazing vue.js projects that are open source and free.
Katy Slemon
 
Style Guides Are The New Photoshop (Smashing Conference 2012)
Style Guides Are The New Photoshop (Smashing Conference 2012)Style Guides Are The New Photoshop (Smashing Conference 2012)
Style Guides Are The New Photoshop (Smashing Conference 2012)
Stephen Hay
 
Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)
Stephen Hay
 
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdfITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
Ortus Solutions, Corp
 
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
samimylahji
 
Visual Basic in easy steps Covers Visual Basic 2015 Fourth Edition Mcgrath
Visual Basic in easy steps Covers Visual Basic 2015 Fourth Edition McgrathVisual Basic in easy steps Covers Visual Basic 2015 Fourth Edition Mcgrath
Visual Basic in easy steps Covers Visual Basic 2015 Fourth Edition Mcgrath
hirshpirkka
 
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
waisfarjam
 
RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)
alloy020
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
gillygize
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
Fab L
 
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
Programming Microsoft SQL Server 2000 with Microsoft Visual Basic NET 1st edi...
paboyjonesh32
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
benDesigning
 
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
Fwdays
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon
 
Creating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryCreating and Maintaining an Open Source Library
Creating and Maintaining an Open Source Library
Nicholas Schweitzer
 
Christopher Allen's Presentation at eComm 2009
Christopher Allen's Presentation at eComm 2009Christopher Allen's Presentation at eComm 2009
Christopher Allen's Presentation at eComm 2009
eCommConf
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
homeworkping3
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
benDesigning
 
Amazing vue.js projects that are open source and free.
Amazing vue.js projects that are open source and free.Amazing vue.js projects that are open source and free.
Amazing vue.js projects that are open source and free.
Katy Slemon
 
Style Guides Are The New Photoshop (Smashing Conference 2012)
Style Guides Are The New Photoshop (Smashing Conference 2012)Style Guides Are The New Photoshop (Smashing Conference 2012)
Style Guides Are The New Photoshop (Smashing Conference 2012)
Stephen Hay
 
Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)
Stephen Hay
 
Ad

More from Carl Brown (20)

GDPR, User Data, Privacy, and Your Apps
GDPR, User Data, Privacy, and Your AppsGDPR, User Data, Privacy, and Your Apps
GDPR, User Data, Privacy, and Your Apps
Carl Brown
 
New in iOS 11.3b4 and Xcode 9.3b4
New in iOS 11.3b4 and Xcode 9.3b4New in iOS 11.3b4 and Xcode 9.3b4
New in iOS 11.3b4 and Xcode 9.3b4
Carl Brown
 
Managing Memory in Swift (Yes, that's a thing)
Managing Memory in Swift (Yes, that's a thing)Managing Memory in Swift (Yes, that's a thing)
Managing Memory in Swift (Yes, that's a thing)
Carl Brown
 
Better Swift from the Foundation up #tryswiftnyc17 09-06
Better Swift from the Foundation up #tryswiftnyc17 09-06Better Swift from the Foundation up #tryswiftnyc17 09-06
Better Swift from the Foundation up #tryswiftnyc17 09-06
Carl Brown
 
Generics, the Swift ABI and you
Generics, the Swift ABI and youGenerics, the Swift ABI and you
Generics, the Swift ABI and you
Carl Brown
 
Swift GUI Development without Xcode
Swift GUI Development without XcodeSwift GUI Development without Xcode
Swift GUI Development without Xcode
Carl Brown
 
what's new in iOS10 2016-06-23
what's new in iOS10 2016-06-23what's new in iOS10 2016-06-23
what's new in iOS10 2016-06-23
Carl Brown
 
Open Source Swift: Up and Running
Open Source Swift: Up and RunningOpen Source Swift: Up and Running
Open Source Swift: Up and Running
Carl Brown
 
Parse migration CocoaCoders April 28th, 2016
Parse migration CocoaCoders April 28th, 2016Parse migration CocoaCoders April 28th, 2016
Parse migration CocoaCoders April 28th, 2016
Carl Brown
 
Swift 2.2 Design Patterns CocoaConf Austin 2016
Swift 2.2 Design Patterns CocoaConf Austin 2016Swift 2.2 Design Patterns CocoaConf Austin 2016
Swift 2.2 Design Patterns CocoaConf Austin 2016
Carl Brown
 
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Carl Brown
 
Gcd cc-150205
Gcd cc-150205Gcd cc-150205
Gcd cc-150205
Carl Brown
 
Cocoa coders 141113-watch
Cocoa coders 141113-watchCocoa coders 141113-watch
Cocoa coders 141113-watch
Carl Brown
 
iOS8 and the new App Store
iOS8 and the new App Store   iOS8 and the new App Store
iOS8 and the new App Store
Carl Brown
 
Dark Art of Software Estimation 360iDev2014
Dark Art of Software Estimation 360iDev2014Dark Art of Software Estimation 360iDev2014
Dark Art of Software Estimation 360iDev2014
Carl Brown
 
Intro to cloud kit Cocoader.org 24 July 2014
Intro to cloud kit   Cocoader.org 24 July 2014Intro to cloud kit   Cocoader.org 24 July 2014
Intro to cloud kit Cocoader.org 24 July 2014
Carl Brown
 
Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)
Carl Brown
 
Writing Apps that Can See: Getting Data from CoreImage to Computer Vision - ...
Writing Apps that Can See: Getting Data from CoreImage to Computer  Vision - ...Writing Apps that Can See: Getting Data from CoreImage to Computer  Vision - ...
Writing Apps that Can See: Getting Data from CoreImage to Computer Vision - ...
Carl Brown
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
Carl Brown
 
REST/JSON/CoreData Example Code - A Tour
REST/JSON/CoreData Example Code - A TourREST/JSON/CoreData Example Code - A Tour
REST/JSON/CoreData Example Code - A Tour
Carl Brown
 
GDPR, User Data, Privacy, and Your Apps
GDPR, User Data, Privacy, and Your AppsGDPR, User Data, Privacy, and Your Apps
GDPR, User Data, Privacy, and Your Apps
Carl Brown
 
New in iOS 11.3b4 and Xcode 9.3b4
New in iOS 11.3b4 and Xcode 9.3b4New in iOS 11.3b4 and Xcode 9.3b4
New in iOS 11.3b4 and Xcode 9.3b4
Carl Brown
 
Managing Memory in Swift (Yes, that's a thing)
Managing Memory in Swift (Yes, that's a thing)Managing Memory in Swift (Yes, that's a thing)
Managing Memory in Swift (Yes, that's a thing)
Carl Brown
 
Better Swift from the Foundation up #tryswiftnyc17 09-06
Better Swift from the Foundation up #tryswiftnyc17 09-06Better Swift from the Foundation up #tryswiftnyc17 09-06
Better Swift from the Foundation up #tryswiftnyc17 09-06
Carl Brown
 
Generics, the Swift ABI and you
Generics, the Swift ABI and youGenerics, the Swift ABI and you
Generics, the Swift ABI and you
Carl Brown
 
Swift GUI Development without Xcode
Swift GUI Development without XcodeSwift GUI Development without Xcode
Swift GUI Development without Xcode
Carl Brown
 
what's new in iOS10 2016-06-23
what's new in iOS10 2016-06-23what's new in iOS10 2016-06-23
what's new in iOS10 2016-06-23
Carl Brown
 
Open Source Swift: Up and Running
Open Source Swift: Up and RunningOpen Source Swift: Up and Running
Open Source Swift: Up and Running
Carl Brown
 
Parse migration CocoaCoders April 28th, 2016
Parse migration CocoaCoders April 28th, 2016Parse migration CocoaCoders April 28th, 2016
Parse migration CocoaCoders April 28th, 2016
Carl Brown
 
Swift 2.2 Design Patterns CocoaConf Austin 2016
Swift 2.2 Design Patterns CocoaConf Austin 2016Swift 2.2 Design Patterns CocoaConf Austin 2016
Swift 2.2 Design Patterns CocoaConf Austin 2016
Carl Brown
 
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Advanced, Composable Collection Views, From CocoaCoders meetup Austin Feb 12,...
Carl Brown
 
Cocoa coders 141113-watch
Cocoa coders 141113-watchCocoa coders 141113-watch
Cocoa coders 141113-watch
Carl Brown
 
iOS8 and the new App Store
iOS8 and the new App Store   iOS8 and the new App Store
iOS8 and the new App Store
Carl Brown
 
Dark Art of Software Estimation 360iDev2014
Dark Art of Software Estimation 360iDev2014Dark Art of Software Estimation 360iDev2014
Dark Art of Software Estimation 360iDev2014
Carl Brown
 
Intro to cloud kit Cocoader.org 24 July 2014
Intro to cloud kit   Cocoader.org 24 July 2014Intro to cloud kit   Cocoader.org 24 July 2014
Intro to cloud kit Cocoader.org 24 July 2014
Carl Brown
 
Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)
Carl Brown
 
Writing Apps that Can See: Getting Data from CoreImage to Computer Vision - ...
Writing Apps that Can See: Getting Data from CoreImage to Computer  Vision - ...Writing Apps that Can See: Getting Data from CoreImage to Computer  Vision - ...
Writing Apps that Can See: Getting Data from CoreImage to Computer Vision - ...
Carl Brown
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
Carl Brown
 
REST/JSON/CoreData Example Code - A Tour
REST/JSON/CoreData Example Code - A TourREST/JSON/CoreData Example Code - A Tour
REST/JSON/CoreData Example Code - A Tour
Carl Brown
 
Ad

Recently uploaded (20)

Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 

Developing iOS apps on your iPad with XCAB

  • 1. Have No MacBook, Will Code Anyway* Putting the “Mobile” in Mobile App Development *How To Write and Test your own code on your iPhone/iPad without carrying your Mac @CarlAllenBrown
  • 2. XCode for iOS Of course, it doesn’t exist, but just how close can we get?
  • 3. Well, it’s not quite there, yet... But it’s usable. I use it several times a week.
  • 4. But Why? Wouldn’t a laptop be easier?
  • 6. It’s useable more places Standing in line can be productive, but a laptop would be too awkward.
  • 7. It’s Social An iPad is a better tool for communicating with iOS App development customers When demonstrating an App or showing a design to a customer with a laptop, they’re never as interactive as they are when I’m using the iPad
  • 8. It’s powerful enough *Graphic from http://www.iakttakelser.com/2011/03/on-feeds-and-speeds.html
  • 10. So what do you have? The project is called XCAB for now (it stands for XCode AutoBuild), and it’s available on GitHub under an MIT license. It’s written in Bourne Shell at the moment I’d consider it in the “Advanced Proof of Concept” stage
  • 11. So, how does it work?
  • 12. You start with a connected iOS device with you* *And a network-connected Mac running back at the office
  • 13. You use a Dropbox-enabled App Dropbox Textastic (Editor for iPad) Nebulous Notes (Universal)
  • 14. To make changes to your Dropbox
  • 15. Which get checked into Git
  • 16. New Git commits get built
  • 17. Each build gets turned into a installable web archive Using iOS Beta Builder
  • 18. Which gets written to your public web dir on Dropbox
  • 19. Your iPhone/iPad is sent a push notification over Boxcar
  • 20. The iOS device follows the link in the push notification
  • 21. And the App Gets Installed So you can test, and either iterate or notify your customer
  • 22. So, how well does it work?
  • 23. How well does it work?
  • 24. How do I use it? XCAB will make a directory in your XCAB directory for each PROJECT that it can check out from the path in the XCAB.conf file Into that directory will be placed a file that lists the branches and tags for that project so you can see your options If you make a new directory, it will check out the closest- named branch/tag it can find into that directory (creating a branch with the name of the directory if it doesn’t exist). Any files changed in that directory will cause a build and a push notification (if there is an associated XCode project)
  • 25. Demo We’ll see if this works :) *If not, I’ve got some static screenshots to fall back on that I’ll walk you through
  • 75. Isn’t that really, really complicated?
  • 76. Why, YES, yes it is.
  • 77. Simplification is coming Working on making a Mac App to do the Server-side Stuff and an iOS App do to branch creation, checkouts, add new projects, receive the push notifications, etc. Want you to be able to use your own editor App, so it won’t be a full IDE. No ETA, though.
  • 78. How do I set this up? Part 1: Prerequisites Put a Dropbox in your Home directory on your Mac Get Boxcar App and Set up Boxcar account (http://boxcar.io) Enable Growl/API access Get and build the command-line Beta Builder from • git://github.com/sgruby/iOS-BetaBuilder.git 65
  • 79. How do I set this up? Part 2: Keychain for Cert Signing If you want it run without being logged into your session (e.g. from cron), you have to make* a new Keychain with just your code-signing Cert and public/private key pair that is locked by a password you don’t mind hard-coding into a script. *See http://stackoverflow.com/questions/577750/running-xcodebuild-from-a-forked-terminal 66
  • 80. How do I set this up? Part 3: XCAB Get the code from https://github.com/carlbrown/XCAB Copy XCAB.settings.sample to XCAB.settings Edit the variables in XCAB.settings as needed See next slide run run_me_to_verify_install.sh fix anything it points out follow its instructions to get the server running 67
  • 82. What’s the catch? There’s no provision for managing XCode projects or xib files (you’ll still have to do all that on the Mac) In other words, you can’t add new files or edit GUIs Technically, they’re just XML, but really, just don’t bother for anything more complicated that changing the name on the signing certificate
  • 83. What’s the catch? There’s no provision for managing XCode projects or xib files (you’ll still have to do all that on the Mac) In other words, you can’t add new files or edit GUIs Technically, they’re just XML, but really, just don’t bother for anything more complicated that changing the name on the signing certificate No auto-complete or refactoring or debugging or instruments
  • 84. What’s the catch? There’s no provision for managing XCode projects or xib files (you’ll still have to do all that on the Mac) In other words, you can’t add new files or edit GUIs Technically, they’re just XML, but really, just don’t bother for anything more complicated that changing the name on the signing certificate No auto-complete or refactoring or debugging or instruments The lag and long cycle time gets old
  • 85. What’s the catch? There’s no provision for managing XCode projects or xib files (you’ll still have to do all that on the Mac) In other words, you can’t add new files or edit GUIs Technically, they’re just XML, but really, just don’t bother for anything more complicated that changing the name on the signing certificate No auto-complete or refactoring or debugging or instruments The lag and long cycle time gets old Oh, and did I mention it’s really overly complicated
  • 86. Questions? Email: [email protected] (H) [email protected] (W) Twitter: @CarlAllenBrown Blog: http://www.EscortMissions.com I'll put this presentation up at http://www.slideshare.net/ carlbrown/

Editor's Notes

  • #2: My name is Carl Brown.\nI have several Apps in the store. The first iPhone app I worked on to be published was the LIVESTRONG.COM Calorie Tracker \nI have a Day Job, a Family and a Life,\nand an Mobile App Dev company on the side since 2003.\nI try to be responsive to both my dev customers and my family, but it’s difficult,\nSo I try to squeeze the most work out of the time that I have\n
  • #3: \n
  • #4: \n
  • #5: Before I start talking about where the project is, let me take a minute to talk about why I’m doing this.\n\nI had a customer who sent me a text message while I was at lunch asking why I hadn’t changed something we’d agreed on.\nIt was a trivial one-line change, and it had slipped my mind. It took me 30 seconds to fix, but it was 90 minutes before I got to my laptop to be able to do it.\nI wanted to be more responsive than that, So I developed a way to write and test code with just my iPhone (or iPad)\n
  • #6: It’s far easier to carry an iPad than a laptop, and I don’t want to carry both. Plus, my iPhone is almost never out of arm’s reach, and the same solution works for both the iPad and the iPhone.\n\n\n
  • #7: I also carry my iPad far more often. When leaving the office to go to lunch, I’d rarely take my laptop, but I almost always take my iPad.\n
  • #8: Most (of my) customers will point to and touch the iPad screen while we’re discussing an App, but won’t do that to a laptop screen, and I get better information when they’re more animated.\n
  • #9: This is partly stubbornness on my part, but an iPad is as capable as a Macbook I used to write code on a few years ago. So it ought to be able to be used to write code.\n
  • #10: People who are (almost) always connected to iPads (and tablet PCs in general) are a growing market (I believe, at least).\n\nI also believe that, by being one of those people myself, I’ll become familiar with the day to day annoyances of making an iPad a primary computer. Each one of those annoyances is a potential market opportunity with which I otherwise wouldn’t have become familiar.\n
  • #11: You can get the code from https://github.com/carlbrown/XCAB (url is also later in the presentation).\n\n
  • #12: There are several steps in the process, still too many, but I’ll walk you through them.\n
  • #13: I have a refurb mini in my Living Room that I bought to be an Home Sharing server, and it’s more than up to the task.\n\nI’ve run it on my laptop, too, from time to time.\n
  • #14: Textastic is my favorite code editor for the iPad. Nebulous Notes was my previous favorite, and it’s my monospaced Dropbox-enabled editor of choice for the iPhone\n
  • #15: The way you do that is kind of arbitrary - we’ll talk more about it later, so just go with me for now.\n
  • #16: In theory, it should be possible to use SVN or Mercurial or something else, but I use git for my projects, so that’s what got built in.\n
  • #17: This is true whether the commits came from you or not, so I’ll get notifications for new checkins that other people make to github for some projects.\n
  • #18: Beta Builder automates the process of making a web directory set up for iOS 4.0+’s over-the-air installs. It’s available on the App Store (although my scripts use the command line version from GitHub - see URL later in presentation).\n
  • #19: You can also have it RSync’ed to a web server, but with Dropbox it has fewer moving parts, and you can delete the folder from Dropbox from your device to cause it to get rebuilt.\n
  • #20: Boxcar (from http://boxcar.io) is an App you can buy to get arbitrary notifications.\n\nYou also get an email with more detailed information.\n
  • #21: Boxcar following the link launches a webkit UIWebView*, which follows the itms:// itunes URL scheme to cause the app to be installed.\n\n*Or at least I’m pretty sure that’s what it’s doing, but I haven’t reverse-engineered Boxcar or anything.\n
  • #22: \n
  • #23: \n
  • #24: It’s still, really, a proof of concept, although I do use it a lot.\n\nI’m sure there are conditions that don’t apply to me that cause it to break, but I’d love to find those and fix them.\n
  • #25: \n
  • #26: \n
  • #27: I’m going to fire up Textastic here, although you could use any Dropbox enabled editor\n
  • #28: Navigate into my XCAB folder. I keep it in my “Code” directory, although you can put it wherever you want (it’s specified in the XCAB.settings file on the server).\n
  • #29: \n
  • #30: Grab the config file\n
  • #31: \n
  • #32: Since they say Twitter clients are the new “Hello, World”, let’s use one for our example. Here’s one on github I can use to illustrate the process.\n\nI’ll add in the line with the git repo path, and the local name I want to call it, separated by an equals sign.\n
  • #33: Upload the config file back to Dropbox\n
  • #34: And before too long, I’ll get a TweetWall directory show up\n
  • #35: Which contains files that tell me what branches and tags exist\n
  • #36: So there’s a master branch. We could work in it, but let’s use a different one to keep our changes clean.\n
  • #37: Let’s make a master-carl branch (which will spawn off the master branch) for us to make our changes in.\n
  • #38: Now we’ve been notified that our new branch has been created and the files from it have been added to our Dropbox folder.\n
  • #39: Here we have the contents of our new branch\n
  • #40: Let’s select the project file\n
  • #41: Download it\n
  • #42: Change the iPhone Developer lines to not have a name anymore, and change the default Build type from Release to Debug. That way we won’t have code-signing problems.\n
  • #43: Upload that back to Dropbox\n
  • #44: And, we have a new build. Tap View\n
  • #45: Tap on the notification in Boxcar\n
  • #46: Tap on the “view original” link\n
  • #47: Tap here to Install\n
  • #48: Tap again to Install\n
  • #49: Sometimes Dropbox’s servers haven’t finished synching up, yet, so you have to hit “Retry” a couple of times at this point.\n
  • #50: And it’s done, let’s launch it.\n
  • #51: OK, so it’s running - let’s change the default search to something more relevant\n
  • #52: We’re going to change “I’m happy” there on line 38.\n
  • #53: That’s better.\n
  • #54: Upload that.\n
  • #55: Oh, look, we have a new build ready.\n
  • #56: Tap on the link\n
  • #57: Tap to start the download\n
  • #58: Tap to allow the download\n
  • #59: Like I said before, sometimes Dropbox’s servers haven’t finished synching up, yet, so you have to hit “Retry” a couple of times at this point.\n
  • #60: And, we’ll launch it\n
  • #61: And we have a more relevant search term.\n
  • #62: \n
  • #63: \n
  • #64: \n
  • #65: \n
  • #66: \n
  • #67: This way, if you get logged out, or your machine reboots because of a Lightning Storm (not that we ever have that happen in Central Texas) it will work anyway\n
  • #68: \n
  • #69: You’ll need to rename this to XCAB.settings on your server directory and edit the values as appropriate.\n
  • #70: \n
  • #71: \n
  • #72: \n
  • #73: \n
  • #74: \n
  • #75: \n