Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

How I Became an iOS Developer for Fun and Debt


Published on

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.

Published in: Technology, Business
  • Be the first to comment

How I Became an iOS Developer for Fun and Debt

  1. 1. How I Became aniOS Developer...for Fun and Debt!mark
  2. 2. ME• Building iOS apps using RubyMotion since June• Never developed a mobile application prior• No background in Objective-C developmentDevelopmentBusiness• Running a single-member LLC out of Michigan• Single Goal: Make more than I spend (America!)• Passable amount of business/accounting sense
  3. 3. A historical Thought• In 1996, everyone wanted to make a web site.• In 2013, everyone wants to make a mobile app.20131996Unlockingthe truepower oftechnology,regardlessof platform!
  4. 4. 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!
  5. 5. Why build a company?• Protect you, as an individual, from being sued andall of your stuff taken by a court ruling• Represent yourself more professionally as anentity 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?) the way, I am NOT a lawyer and/or an accountant
  6. 6. 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 creativeenough to satisfy your own desires...
  7. 7. My company• Pardalis Labs, LLC• Leopardus pardalis is an Ocelot• Labs is just a cool word• LLC is the company type I designatedCool Thing+Geeky=A Company Name!
  8. 8. Articles ofOrganization• 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!
  9. 9. 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
  10. 10. 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 yourpersonal SSN and not EIN for tax-related stuff• Forming an LLC does not mean you are acorporation, that is important to know early on!
  11. 11. Banking/Accounting• Financial Accounts• Checking: Huntington Bank (w/ debit card)• ePayments: PayPal Business Account• Business Management• Time Tracking: Paymo• Accounting: Kashoo• Invoicing: invoiceto.meAll accounts + services, 100% free for my usage of them
  12. 12. Other Services I use(for free)Web Hosting General SoftwareTwo-Factor AuthenticationE-Mail & Misc.
  13. 13. 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 aboutyour desired logo, multiple designers submittinginitial drafts, then selecting one and iterating on it• Entire process took a handful of communicationsand about two weeks from start to finish.
  14. 14. Business CreationArticlesofOrganizationFiledJun.15thIRSEIN/OperatingAgreementJun.28thBankAccountCreatedJun.30thpardalislabs.comregisteredJul.9thStartedlogodesignprocessJul.10thAppleAccountCreationJul.25th D-U-N-SProcessStartedJul.27thD-U-N-SProcessCompleteAug.29thAppleDeveloperAccountCreatedSep.17thFirstappsubmittedNov.3rdFirstappacceptedNov.11th
  15. 15. 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
  16. 16. 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
  17. 17. The Power of Community• 370 RubyMotion-related repositories on GitHub• 1881 projects at• 18 video tutorials at• 1 conference dedicated to RubyMotion (#inspect) I’ve given back, too.
  18. 18. A Quick Comparison[button addTarget:self action:@selector(buttonTapped:)forControlEvents: UIControlEventTouchUpInside];- (void)buttonTapped:(id)sender {self.view.backgroundColor = [UIColor redColor];}button.when(UIControlEventTouchUpInside) doself.view.backgroundColor = UIColor.redColorendObjective-CRubyMotionSource:
  19. 19. RubyMotion Build Demo
  20. 20. RubyMotion REPL
  21. 21. Example AppDelegateclass AppDelegatedef 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 = @windowtabbar = UITabBarController.alloc.inittabbar.viewControllers = [@quizController,@infoController]tabbar.selectedIndex = 0@window.rootViewController = UINavigationController.alloc.initWithRootViewController(tabbar)@window.rootViewController.wantsFullScreenLayout = true@window.makeKeyAndVisible@quizController.tabbar = tabbarendend
  22. 22. Example Controllerclass InfoController < UIViewControllerattr_accessor :windowdef loadViewself.view = UIView.alloc.initself.view.backgroundColor = UIColor.blackColortitle = UILabel.newtitle.font = UIFont.systemFontOfSize(22)title.textColor = UIColor.whiteColortitle.backgroundColor = UIColor.clearColortitle.lineBreakMode = UILineBreakModeWordWraptitle.textAlignment = NSTextAlignmentCentertitle.numberOfLines = 0title.frame = [[5, 5], [315, 30]]title.text = "Buying Process"view.addSubview titlecontent = UILabel.newcontent.font = UIFont.systemFontOfSize(14)content.textColor = UIColor.whiteColorcontent.backgroundColor = UIColor.clearColorcontent.lineBreakMode = UILineBreakModeWordWrapcontent.numberOfLines = 0content.frame = [[5, 40], [315, 100]]content.text = "Where all of the text would go...”content.sizeToFitview.addSubview contentendendResult
  23. 23. Wrappers & Libraries• BubbleWrap• SugarCube• ProMotion• TeaCup• NanoStoreInMotion• Geomotion
  24. 24. App Store Submission• Things I always do wrong• Forget to change the code-signing certificatefrom 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! ;)
  25. 25. Michigan Basic PistolSafety Quiz• Submission: January 19th• Rejection: January 25th• Submission: February 12th• Rejection: February 18th• Submission: February 23rd• Acceptance: February 28th
  26. 26. Michigan Basic PistolSafety QuizVersion #1 Version #2 Version #3Images for buttons apparently is the magic required!
  27. 27. My Apps99¢ 99¢99¢ Free
  28. 28. Quick App Demos
  29. 29. Sales NumbersAs of 04/16/20130 50 100150136101128Pool 100Let’s CampPTCB Study GuideMI Pistol Quiz
  30. 30. Overall Lessons Learned• Content is king unless your idea is brilliant• Start the process well in advanced of your desireto be publishing iOS apps to the App Store• Register for your D&B D-U-N-S as soon aspossible or pay for rushed processing• Separate your personal & business financescompletely 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...
  31. 31. Additional Information, Part 1• Small Business Administration: How to name a business• Michigan Name Availability Search• Trademark Electronic Search System (TESS)• WHOIS Record Lookup• The Logo Company• Apply for IRS EIN• Articles of Organization, State of Michigan
  32. 32. Additional Information, Part 2• Rocket Lawyer LLC Operating Agreement• Microsoft BizSpark• Duo Security• Amazon Web Services (Free Tier)• Google Apps for Business• Paymo• Kashoo
  33. 33. Additional Information, Part 3• invoiceto.me• PayPal for Business• Huntington Bank - Free Small Business Checking• Apple Developer Program• Dun & Bradstreet D-U-N-S Registration• RubyMotion• Pardalis Labs iOS Apps
  34. 34. Thanks! Questions?•••@markstanislav•