How I Became an iOS Developer for Fun and Debt
-
Upload
mark-stanislav -
Category
Technology
-
view
2.061 -
download
0
description
Transcript of How I Became an iOS Developer for Fun and Debt
![Page 2: How I Became an iOS Developer for Fun and Debt](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/19.jpg)
RubyMotion Build Demo
![Page 20: How I Became an iOS Developer for Fun and Debt](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/20.jpg)
RubyMotion REPL
![Page 21: How I Became an iOS Developer for Fun and Debt](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/27.jpg)
My Apps
99¢ 99¢
99¢ Free
![Page 28: How I Became an iOS Developer for Fun and Debt](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/28.jpg)
Quick App Demos
![Page 29: How I Became an iOS Developer for Fun and Debt](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022060109/5555a952d8b42afe5d8b46a0/html5/thumbnails/33.jpg)
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