how i became an ios developer for fun and debt

34
How I Became an iOS Developer ...for Fun and Debt! mark Stanislav [email protected]

Upload: mark-stanislav

Post on 15-May-2015

2.061 views

Category:

Technology


0 download

DESCRIPTION

With the explosive growth of both the iOS and Android platforms, building an “app” is the new “I built a web site!” in terms of nerdy pursuits. Unfortunately, developing an app in traditional methods can be overwhelming for even a reasonably technical person who doesn’t possess a proper foundation in application programming. Come hear not only how RubyMotion can destroy the learning-curve associated with iOS app development, but also hear the steps and frustrations involved in starting a business and getting an app into the Apple App Store. Examples of RubyMotion code and its resulting app will be demoed.

TRANSCRIPT

Page 1: How I Became an iOS Developer for Fun and Debt

How I Became an iOS Developer

...for Fun and Debt!

mark [email protected]

Page 2: How I Became an iOS Developer for Fun and Debt

ME

• Building iOS apps using RubyMotion since June• Never developed a mobile application prior• No background in Objective-C development

Development

Business• Running a single-member LLC out of Michigan

• Single Goal: Make more than I spend (America!)• Passable amount of business/accounting sense

Page 3: How I Became an iOS Developer for Fun and Debt

A historical Thought

• In 1996, everyone wanted to make a web site.• In 2013, everyone wants to make a mobile app.

20131996

Unlocking the true

power of technology, regardless

of platform!

Page 4: How I Became an iOS Developer for Fun and Debt

MY Company; An Overview• Pardalis Labs, LLC

• Single-Member (Disregarded Entity)• Limited Liability Corporation

• Articles of Organization filed on June 15th, 2012• Purposes

• iOS app sales via Apple’s “App Store”• Consulting (Linux & Information Security)• Learning experience!

Page 5: How I Became an iOS Developer for Fun and Debt

Why build a company?

• Protect you, as an individual, from being sued and all of your stuff taken by a court ruling

• Represent yourself more professionally as an entity rather than just a person making stuff

• Give clarity to accounting (personal v. business)• Have a clear direction for tax season• Logos! Business Cards! Web Sites! Stickers!

Solve (Mitigate?) Problems

...by the way, I am NOT a lawyer and/or an accountant

Page 6: How I Became an iOS Developer for Fun and Debt

Naming your company

• Make sure it’s original (enough)

• Michigan Government Name Availability Search• U.S. Trademark Electronic Search System (TESS)• WHOIS records (i.e. see what domains exist)• Social Media (Facebook, Twitter, Linked In)• ...or hire a lawyer to find this all out for you!

• After that, it’s just a matter of being creative enough to satisfy your own desires...

Page 7: How I Became an iOS Developer for Fun and Debt

My company• Pardalis Labs, LLC

• Leopardus pardalis is an Ocelot• Labs is just a cool word• LLC is the company type I designated

Cool Thing

+

Geeky

=

A Company Name!

Page 8: How I Became an iOS Developer for Fun and Debt

Articles of Organization

• Stuff to fill out

• Your personal name and address• Name of the company• The “resident agent” (yourself)• The “registered office” (your home)• Date and Sign

$50 and a week later, you’re a registered company!

Page 9: How I Became an iOS Developer for Fun and Debt

Operating Agreement

• Specifics of how your company will operate

• Overview of LLC declarations• Capital investments from members• Ownership interest percentages• Cost/Profit sharing percentages• Accounting decisions (fiscal year, basis, etc.)• Management (Voting, New Members, etc.)

Sign-up to Rocket Lawyer, get document, cancel service

Page 10: How I Became an iOS Developer for Fun and Debt

IRS EIN

• EIN: Employer Identification Number• Free from the IRS and can be done entirely online• Creation of a business-named bank account• If you’re an S-Corp or C-Corp, you will need one • Under a single-member LLC you’ll use your

personal SSN and not EIN for tax-related stuff• Forming an LLC does not mean you are a

corporation, that is important to know early on!

Page 11: How I Became an iOS Developer for Fun and Debt

Banking/Accounting

• Financial Accounts

• Checking: Huntington Bank (w/ debit card)• ePayments: PayPal Business Account

• Business Management

• Time Tracking: Paymo• Accounting: Kashoo• Invoicing: invoiceto.me

All accounts + services, 100% free for my usage of them

Page 12: How I Became an iOS Developer for Fun and Debt

Other Services I use (for free)

Web Hosting General Software

Two-Factor AuthenticationE-Mail & Misc.

Page 13: How I Became an iOS Developer for Fun and Debt

Logo Creation• Paid $149 to “The Logo Company” for the design

• I have no measurable graphic design talent• Design process involves filling out a survey about

your desired logo, multiple designers submitting initial drafts, then selecting one and iterating on it

• Entire process took a handful of communications and about two weeks from start to finish.

Page 14: How I Became an iOS Developer for Fun and Debt

Business CreationArti

cles o

f Org

aniza

tion F

iled

Jun. 15th

IRS E

IN/ O

pera

ting A

gree

men

t

Jun. 28th

Bank

Acc

ount

Crea

ted

Jun. 30th

pard

alisla

bs.co

m re

gister

ed

Jul. 9th

Starte

d log

o des

ign pr

oces

sJul. 10th

Apple

Accou

nt C

reatio

n

Jul. 25th

D-U-N

-S Pr

oces

s Star

ted

Jul. 27th

D-U-N

-S Pr

oces

s Com

plete

Aug. 29th

Apple

Develo

per A

ccou

nt C

reated

Sep. 17th

First

app s

ubm

itted

Nov. 3rd

First

app a

ccep

ted

Nov. 11th

Page 15: How I Became an iOS Developer for Fun and Debt

RubyMotion

• Write Ruby and get 100%-compliant iOS apps• Built by the former MacRuby Apple engineer• No code interpretation needed, fully compiled• No binary size or performance costs to using it• Only utilizes public APIs (keeps things legit!)• A thriving open-source community on Github• 37 Signals, Living Social, Scribd are all using it

Page 16: How I Became an iOS Developer for Fun and Debt

Cost of Doing Business

• RubyMotion costs $200 (I got it early for $150)• License includes support and updates

• Apple Developer Program costs $100 per year• You’re going to need this to release usable apps

• A Mac OS X system is required to run RubyMotion• Could just use a Virtual Machine...

• Apple will be taking 30% of your sales revenue

Page 17: How I Became an iOS Developer for Fun and Debt

The Power of Community• 370 RubyMotion-related repositories on GitHub• 1881 projects at rubymotionapps.com• 18 video tutorials at motioncasts.tv• 1 conference dedicated to RubyMotion (#inspect)

https://github.com/mstanislav/pool-100https://github.com/mstanislav/lets-camphttps://github.com/mstanislav/ptcb-studyhttps://github.com/mstanislav/michigan-pistol-safety-quiz

...and I’ve given back, too.

Page 18: How I Became an iOS Developer for Fun and Debt

A Quick Comparison

[button addTarget:self action:@selector(buttonTapped:) forControlEvents: UIControlEventTouchUpInside];

- (void)buttonTapped:(id)sender { self.view.backgroundColor = [UIColor redColor];}

button.when(UIControlEventTouchUpInside) do self.view.backgroundColor = UIColor.redColorend

Objective-C

RubyMotion

Source: http://clayallsopp.com/posts/the-ruby-motion-way/

Page 19: How I Became an iOS Developer for Fun and Debt

RubyMotion Build Demo

Page 20: How I Became an iOS Developer for Fun and Debt

RubyMotion REPL

Page 21: How I Became an iOS Developer for Fun and Debt

Example AppDelegateclass AppDelegate def application(application, didFinishLaunchingWithOptions:launchOptions) @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)

@quizController = QuizController.alloc.init @quizController.tabBarItem.title = 'Pistol Safety' @quizController.tabBarItem.image = UIImage.imageNamed('quiz.png') @quizController.navigationItem.title = 'Pistol Safety' @quizController.window = @window

@infoController = InfoController.alloc.init @infoController.tabBarItem.title = 'Buying Process' @infoController.tabBarItem.image = UIImage.imageNamed('info.png') @infoController.navigationItem.title = 'Buying Process' @infoController.window = @window

tabbar = UITabBarController.alloc.init tabbar.viewControllers = [@quizController,@infoController] tabbar.selectedIndex = 0

@window.rootViewController = UINavigationController.alloc.initWithRootViewController(tabbar) @window.rootViewController.wantsFullScreenLayout = true @window.makeKeyAndVisible

@quizController.tabbar = tabbar endend

Page 22: How I Became an iOS Developer for Fun and Debt

Example Controllerclass InfoController < UIViewController attr_accessor :window def loadView self.view = UIView.alloc.init self.view.backgroundColor = UIColor.blackColor title = UILabel.new title.font = UIFont.systemFontOfSize(22) title.textColor = UIColor.whiteColor title.backgroundColor = UIColor.clearColor title.lineBreakMode = UILineBreakModeWordWrap title.textAlignment = NSTextAlignmentCenter title.numberOfLines = 0 title.frame = [[5, 5], [315, 30]] title.text = "Buying Process" view.addSubview title content = UILabel.new content.font = UIFont.systemFontOfSize(14) content.textColor = UIColor.whiteColor content.backgroundColor = UIColor.clearColor content.lineBreakMode = UILineBreakModeWordWrap content.numberOfLines = 0 content.frame = [[5, 40], [315, 100]] content.text = "Where all of the text would go...” content.sizeToFit view.addSubview content endend

Result

Page 23: How I Became an iOS Developer for Fun and Debt

Wrappers & Libraries• BubbleWrap

http://bubblewrap.io/

• SugarCubehttps://github.com/rubymotion/sugarcube

• ProMotionhttps://github.com/clearsightstudio/ProMotion

• TeaCuphttps://github.com/rubymotion/teacup

• NanoStoreInMotionhttps://github.com/siuying/NanoStoreInMotion

• Geomotionhttps://github.com/clayallsopp/geomotion

Page 24: How I Became an iOS Developer for Fun and Debt

App Store Submission

• Things I always do wrong

• Forget to change the code-signing certificate from development to production

• Use rake archive instead of rake archive:distribution• Attempt to build on a machine without my keys

• Process

• From submission to availability, about a week• ...unless you get rejected; then things get fun! ;)

Page 25: How I Became an iOS Developer for Fun and Debt

Michigan Basic Pistol Safety Quiz

• Submission: January 19th• Rejection: January 25th

• Submission: February 12th• Rejection: February 18th

• Submission: February 23rd• Acceptance: February 28th

Page 26: How I Became an iOS Developer for Fun and Debt

Michigan Basic Pistol Safety Quiz

Version #1 Version #2 Version #3Images for buttons apparently is the magic required!

Page 27: How I Became an iOS Developer for Fun and Debt

My Apps

99¢ 99¢

99¢ Free

Page 28: How I Became an iOS Developer for Fun and Debt

Quick App Demos

Page 29: How I Became an iOS Developer for Fun and Debt

Sales NumbersAs of 04/16/2013

0 50 100 150

13

6

101

128

Pool 100

Let’s Camp

PTCB Study Guide

MI Pistol Quiz

Page 30: How I Became an iOS Developer for Fun and Debt

Overall Lessons Learned• Content is king unless your idea is brilliant• Start the process well in advanced of your desire

to be publishing iOS apps to the App Store• Register for your D&B D-U-N-S as soon as

possible or pay for rushed processing• Separate your personal & business finances

completely to protect yourself as much as possible• Use RubyMotion frameworks and libraries as able• Find a friend who can do design if you can’t...

Page 31: How I Became an iOS Developer for Fun and Debt

Additional Information, Part 1• Small Business Administration: How to name a business

http://www.sba.gov/content/how-name-business

• Michigan Name Availability Searchhttp://bit.ly/12mu6PE

• Trademark Electronic Search System (TESS)http://tess2.uspto.gov/bin/gate.exe?f=tess&state=4003:qp0g8h.1.1

• WHOIS Record Lookuphttps://www.easywhois.com/

• The Logo Companyhttp://thelogocompany.net/

• Apply for IRS EINhttps://sa1.www4.irs.gov/modiein/individual/index.jsp

• Articles of Organization, State of Michiganhttp://www.dleg.state.mi.us/bcsc/forms/corp/llc/700.pdf

Page 32: How I Became an iOS Developer for Fun and Debt

Additional Information, Part 2• Rocket Lawyer LLC Operating Agreement

http://www.rocketlawyer.com/document/llc-operating-agreement.rl

• Microsoft BizSparkhttp://www.microsoft.com/bizspark/

• Duo Securityhttp://duosecurity.com/

• Amazon Web Services (Free Tier)http://aws.amazon.com/free/

• Google Apps for Businesshttp://www.google.com/intl/en/enterprise/apps/business/

• Paymohttp://www.paymo.biz/

• Kashoohttps://www.kashoo.com/

Page 33: How I Became an iOS Developer for Fun and Debt

Additional Information, Part 3• invoiceto.me

http://invoiceto.me/

• PayPal for Businesshttps://www.paypal.com/webapps/mpp/merchant

• Huntington Bank - Free Small Business Checkinghttps://www.huntington.com/bas/HNB2320.htm

• Apple Developer Programhttps://developer.apple.com/programs/

• Dun & Bradstreet D-U-N-S Registrationhttp://www.dnb.com/get-a-duns-number.html

• RubyMotionhttp://www.rubymotion.com/

• Pardalis Labs iOS Appshttps://itunes.apple.com/us/artist/pardalis-labs/id576194764

Page 34: How I Became an iOS Developer for Fun and Debt

Thanks! Questions?

[email protected]•uncompiled.com•@markstanislav•github.com/mstanislav