How to be an Independent
 Mobile Application Dev
       By Terence J. Grant
    tjgrant@tatewake.com
About Terence
                      For my clients
•   Freelance iPhone / iPad contractor, working
    mostly with streaming audio and video.
•   Working out of Van Nuys, have worked with
    companies in L.A., Irvine, Silicon Valley.
•   Some work is on site, some is remote.
•   Surprisingly, I’ve gotten a lot of non-iPhone
    work via my iPhone experience.
Companies I’ve worked for
• EA – Electronic Arts – I worked on the Madden
  Football and Nascar Racing franchises for
  PlayStation 2 and Xbox
• Adidas America – I worked on a delivery
  shipment program using Palm Pilot devices when
  “handheld computers” were still fairly new
• Final Draft – A company I’ve most recently
  worked with, doing cross-platform development
  for Mac and Windows.
My Projects
• Currently have games in the App store, simple
  games that generate a little income.
  – More for portfolio purposes than anything else
  – But they’ve already paid for themselves in terms of
    sunk costs. (App store fees, etc.)
• Actively developing games with OpenGL ES 2.0
  for iPhone, iPad, and Mac OS X.
  – (OpenGL is a 3D Graphics API.)
• I’m investigating Windows Phone 8 as a viable
  platform as well.
What’s out there to develop for?
• Phones phones phones!
  – There’s iPhone
  – Android, Google’s offering
  – Windows Phone 8, which is based on Microsoft’s
    new APIs
• Pads
  – There’s the iPad – Runs iOS
  – Galaxy Tab – Runs Android
  – Microsoft Surface – Runs Windows 8
Your development environment
• For iPhone / iPad, you’ll need a Mac.
• For Android, you can develop on Mac, PC, Linux.
• For Windows Phone, you have to run Windows.

Don’t have a Mac?
Or have a Mac and don’t run Windows?
Are there any other options?
Virtual Machines
• If you own a Mac, two pieces of software help
  you conquer this problem:
  – VMWare Fusion
  – Parallels
• Each lets you run Windows– like Windows 7 or
  Windows 8, Linux (Ubuntu), even Android itself,
  without having to have two machines.
• Similar products (by the same companies) are
  available for PC. Rumor has it you can run Mac on
  Windows, so there may be possibilities there.
What do you own?
• So what should I develop for?
  – iPhone, Android, iPad, Blackberry?
• A good strategy is to start with what you have
  and use already
  – If you have an iPhone, start with that. If you’ve been
    an Android fan, start there instead.
  – You already have a feel for what your device is like,
    and you’d be surprised at the little differences
    between platforms, if you’re not used to them.
  – Don’t own an iPhone, Android, or other SmartPhone?
    May be time to invest in one, if you’re looking to get
    into this market.
What’s your current skill set?
• Are you a “dyed in the wool” C or C++ guy/gal
  already? Use that to your advantage!
• Not a hardcore programmer?
  – Well, have you ever made a web site?
  – There’s tools that can already help you with design,
    and you can still publish apps that are HTML based…
• Not a web designer either?
  – Well, may be time to learn
  – Or, you can always collaborate with a programmer…
How to set up your dev environment…
• Apple provides a compiler, called Xcode
    – Which allows you to program for iPhone, iPad, and Mac Desktop
    – Apple prefers you use Objective C, but allows for C and C++
• Microsoft provides their solution, Visual Studio
    – Which is essentially the same thing, but allows you to program
      Windows Phone, and for Windows all the way from Windows XP to
      Windows 8 itself.
    – Microsoft prefers you use C#, but (now) allows for C and C++
• Google, for Android devices, points you to use a solution called
  “Eclipse”
    – Eclipse is an Open Source product, that can do more than just Android
      development
    – Google wants you to use Java, but also allows for C and C++
• Best news for all of this is that 99% of what’s out there is free!
How to learn all those crazy languages
• Objective C, C#, Java… do I have to learn any of
  these?
   – Well, yes and no. You do have to learn the ins and
     outs a little.
   – If you want to make “native” apps, speak what the
     “natives” speak.
• Pros: Learning the native language tends to give
  you more control over the device.
• Cons: But only for the devices you’re learning on.
  And there may be a learning curve.
I ain’t learnin’ nothin!
• That’s okay too! (Well, kinda.) There are other
  tools you can use:
   – PhoneGap – This tool allows you to make an
     application based almost purely in HTML / JavaScript.
   – Adobe Air – Adobe’s offering allows you to use
     familiar things like Flash, HTML, ActionScript, and the
     like.
   – Unity and Unity3d – This is a tool that allows you to
     publish 2d and 3d games in a cross-platform manner.
• So you’ll still have to learn something either way,
  but you have many options in what way you want
  to learn.
Let’s make a game!
• What kind of games do you want to make?
  – Simple?
  – Flashy?
  – Immersive?
Simple games
• You can make super simple games, like the ones
  you played as a kid, or the ones your parents /
  grandparents taught you.
• Such games have simple logic, easy enough that
  you can implement them in a fairly short time
  period, without spending weeks or months
  spinning your wheels.
• Games such as Tic-Tac-Toe, The 15-Puzzle,
  Concentration, BlackJack
• The logic is simple, and the art assets, amount of
  visual representation is simple too.
Card Games
• Card games you might consider the next level up from
  a simple game.
• The rules of Solitaire are pretty simple, but now you
  have to draw 52 cards on screen at once, and keep
  track of their places.
• How will you place them on screen?
• Is each card “drag-able,” even “touch-able,” do you
  have buttons, etc?
• Even a simple game can be complicated to write.
• Now think about the rules of Poker, Bridge, Gin
  Rummy… things get messy pretty quick.
Flash Games
• iPhone doesn’t run Flash, but that doesn’t
  mean you can’t make Flash-style games.
• Angry Birds, Fruit Ninja, Jetpack Joyride are
  good examples
• Highly animated, media rich, arcade-style
  gaming– people dig it!
Immersive Games
• Story rich
• Massively multiplayer
• Epic adventures

• These are the kind of games big studios make,
  and an indie developer can too, but realize the
  more complicated something is, the more
  time it’ll take to make.
Where do you start?
• What do most games we can think of have in
  common?
• There’s things you can do to “win,” and there’s
  things you can do to “lose.”
• There’s a score of some kind, and there’s a
  “high score” you gotta beat.
• Whenever you “do something,” something
  else happens as a response.
So if it’s that simple…
• Let’s start with a small game you already
  know…
  – Tic Tac Toe
     •   You can do things to win,
     •   You can do things to lose,
     •   We can keep score between players.
     •   We can also do it as two-player without having to do
         any crazy artificial intelligence or anything like that.
Add some polish…
• Adding color, art assets, and animation can
  take you a long way.
• You can add player names
• Artificial Intelligence
• Let’s take a look at someone else’s version of
  Tic-Tac-Toe:
  – http://youtu.be/-hdSMWNKPmM
I’d buy that for a dollar!
• Well, except that guy’s version is free.
• In fact, many simple games like this are free.
• However, there are people who will pay for
  your version.
  – Whether they’re friends, family, co-workers
  – Perhaps they’re just iPhone game enthusiasts?
  – But they do exist.
How to build your skills
• There’s so many things you can do…
  – Make your own game
  – Forget games, just make your own app!
  – Learn a new programming language
  – Collaborate with a friend
  – Work for a start-up
  – Work for an established company
  – Work for yourself!
The wonderful world of freelancing
• Types of work that’s out there
  – Full-time employment
  – Contracting
  – Freelancing
  – Start-ups
  – Setting up your own Store-front
• There’s pros and cons to each approach.
• Something that’s a con for me, may be a pro
  for you. It’s all in how you view it.
Full-time employment
• Pros: Steady paycheck, health benefits, stable
  work environment
• Cons: Often just one project (limited growth),
  very long term, company tends want to "own"
  your work in and out of office
Contracting
• Pros: Typically higher "per hour" than a full-
  time, can be extended, not permanent
• Cons: Unstable teams, no benefits, no sick
  days, pay your own taxes, sometimes end
  early
Freelancing
• Pros: More "creative" control over projects,
  your free time, and you can build a portfolio
• Cons: Can be riskier, may go "too long" term
  or want too many quick gains over a short
  term.
Start-ups
• Startups that aren’t funded are essentially the
  same as freelance.
• If they’re funded, they’re more akin to
  Contracts, but typically with longer work
  hours and more commitment and dedication.
Your own store-front
• Pros: Similar to a start-up, but you publish
  your own apps; you can just publish apps as
  you please.
• Cons: You might have "make this" your job,
  and you have to keep publishing new ideas,
  keep publicizing, etc. Also, there's lots of
  competition that might be better, and many
  give away their stuff for free.
What drives you now, and what do you
        want to accomplish?
• So there’s lots of options, probably more than
  you thought.
• But what are your goals?
   – Do you want to make your own apps?
   – Do you want to make someone else’s apps?
   – Do you want to “be the guy” making the app, or do
     you want to “find the guy” to help with your app?
• Always keep your eyes on the end-goal.
• Deviation from a goal is okay, as long as you’re
  learning a skill, but go too far and you’ll be on the
  different road altogether.
Networking with peers, and
         collaborative projects
• Networking with peers is good–
  – It’s a form of marketing your services, sure…
  – But you’ll also be surprised who you meet too–
    you might meet someone who has a service you
    didn’t even know you needed!
  – And hell, make a friend while you’re at it; couldn’t
    hurt, right?
What you can learn from the big guys
• EA does games
• Apple does hardware and software
• Google is a search engine that somehow does
  everything
• Microsoft is that 800 pound gorilla

Surely there’s something we can learn from them,
they’re in our market, right?
But what?
Electronic Arts
• These are just vague generalities, but let's go with
  it…
   – EA publishes games on multiple platforms
     (sometimes)
   – and they typically have a tie-in game for mobile.
   – For games, they typically have a "quick game" mode
     as a first option as well
• So, think about more than one device, and think
  about “how quick can I make my app to use?”
Google
  – Google does a lot with Open Source, simplicity,
    and usuability.
• They leverage existing technology with no cost
  to them. You should do that.
  – They were also a key innovator with "small ads"
    on websites.
  – Guess who else does “small ads” now, only for
    mobile devices?
     • Google, Apple, Microsoft.
Apple
• Apple has a high aesthetic for their devices
  and high quality for their software.
  – High quality, nice aesthetic… you should do that.
• They also invent new ways of doing things,
  and this can be quite challenging for
  developers.
  – Simple sometimes isn’t always best, so “think
    different” like them.
Microsoft
   – Microsoft values the quick and simple. They see someone
     else do something (like Apple), and they do something
     similar.
• “Just do it”
• They also will venture into new markets—
• The xbox was the first true American Video Game
  console developer since Atari.
   – Xbox vs Sony’s Playstation
   – Zune vs iPod
   – Windows 8 vs Apple's iOS strategy.
• Competition is exciting! You should be competitive.
Open Source Software
• There’s a lot out there, from beginning
  projects to the complex.
• Many programmers *use* Open Source
  Software, but the vast majority don’t
  contribute.
• Yet another opportunity to build portfolio
  material.
• There’s opportunity everywhere!
Questions?

How to be an Independent Mobile Dev by TJ Grant

  • 1.
    How to bean Independent Mobile Application Dev By Terence J. Grant tjgrant@tatewake.com
  • 2.
    About Terence For my clients • Freelance iPhone / iPad contractor, working mostly with streaming audio and video. • Working out of Van Nuys, have worked with companies in L.A., Irvine, Silicon Valley. • Some work is on site, some is remote. • Surprisingly, I’ve gotten a lot of non-iPhone work via my iPhone experience.
  • 3.
    Companies I’ve workedfor • EA – Electronic Arts – I worked on the Madden Football and Nascar Racing franchises for PlayStation 2 and Xbox • Adidas America – I worked on a delivery shipment program using Palm Pilot devices when “handheld computers” were still fairly new • Final Draft – A company I’ve most recently worked with, doing cross-platform development for Mac and Windows.
  • 4.
    My Projects • Currentlyhave games in the App store, simple games that generate a little income. – More for portfolio purposes than anything else – But they’ve already paid for themselves in terms of sunk costs. (App store fees, etc.) • Actively developing games with OpenGL ES 2.0 for iPhone, iPad, and Mac OS X. – (OpenGL is a 3D Graphics API.) • I’m investigating Windows Phone 8 as a viable platform as well.
  • 5.
    What’s out thereto develop for? • Phones phones phones! – There’s iPhone – Android, Google’s offering – Windows Phone 8, which is based on Microsoft’s new APIs • Pads – There’s the iPad – Runs iOS – Galaxy Tab – Runs Android – Microsoft Surface – Runs Windows 8
  • 6.
    Your development environment •For iPhone / iPad, you’ll need a Mac. • For Android, you can develop on Mac, PC, Linux. • For Windows Phone, you have to run Windows. Don’t have a Mac? Or have a Mac and don’t run Windows? Are there any other options?
  • 7.
    Virtual Machines • Ifyou own a Mac, two pieces of software help you conquer this problem: – VMWare Fusion – Parallels • Each lets you run Windows– like Windows 7 or Windows 8, Linux (Ubuntu), even Android itself, without having to have two machines. • Similar products (by the same companies) are available for PC. Rumor has it you can run Mac on Windows, so there may be possibilities there.
  • 8.
    What do youown? • So what should I develop for? – iPhone, Android, iPad, Blackberry? • A good strategy is to start with what you have and use already – If you have an iPhone, start with that. If you’ve been an Android fan, start there instead. – You already have a feel for what your device is like, and you’d be surprised at the little differences between platforms, if you’re not used to them. – Don’t own an iPhone, Android, or other SmartPhone? May be time to invest in one, if you’re looking to get into this market.
  • 9.
    What’s your currentskill set? • Are you a “dyed in the wool” C or C++ guy/gal already? Use that to your advantage! • Not a hardcore programmer? – Well, have you ever made a web site? – There’s tools that can already help you with design, and you can still publish apps that are HTML based… • Not a web designer either? – Well, may be time to learn – Or, you can always collaborate with a programmer…
  • 10.
    How to setup your dev environment… • Apple provides a compiler, called Xcode – Which allows you to program for iPhone, iPad, and Mac Desktop – Apple prefers you use Objective C, but allows for C and C++ • Microsoft provides their solution, Visual Studio – Which is essentially the same thing, but allows you to program Windows Phone, and for Windows all the way from Windows XP to Windows 8 itself. – Microsoft prefers you use C#, but (now) allows for C and C++ • Google, for Android devices, points you to use a solution called “Eclipse” – Eclipse is an Open Source product, that can do more than just Android development – Google wants you to use Java, but also allows for C and C++ • Best news for all of this is that 99% of what’s out there is free!
  • 11.
    How to learnall those crazy languages • Objective C, C#, Java… do I have to learn any of these? – Well, yes and no. You do have to learn the ins and outs a little. – If you want to make “native” apps, speak what the “natives” speak. • Pros: Learning the native language tends to give you more control over the device. • Cons: But only for the devices you’re learning on. And there may be a learning curve.
  • 12.
    I ain’t learnin’nothin! • That’s okay too! (Well, kinda.) There are other tools you can use: – PhoneGap – This tool allows you to make an application based almost purely in HTML / JavaScript. – Adobe Air – Adobe’s offering allows you to use familiar things like Flash, HTML, ActionScript, and the like. – Unity and Unity3d – This is a tool that allows you to publish 2d and 3d games in a cross-platform manner. • So you’ll still have to learn something either way, but you have many options in what way you want to learn.
  • 13.
    Let’s make agame! • What kind of games do you want to make? – Simple? – Flashy? – Immersive?
  • 14.
    Simple games • Youcan make super simple games, like the ones you played as a kid, or the ones your parents / grandparents taught you. • Such games have simple logic, easy enough that you can implement them in a fairly short time period, without spending weeks or months spinning your wheels. • Games such as Tic-Tac-Toe, The 15-Puzzle, Concentration, BlackJack • The logic is simple, and the art assets, amount of visual representation is simple too.
  • 15.
    Card Games • Cardgames you might consider the next level up from a simple game. • The rules of Solitaire are pretty simple, but now you have to draw 52 cards on screen at once, and keep track of their places. • How will you place them on screen? • Is each card “drag-able,” even “touch-able,” do you have buttons, etc? • Even a simple game can be complicated to write. • Now think about the rules of Poker, Bridge, Gin Rummy… things get messy pretty quick.
  • 16.
    Flash Games • iPhonedoesn’t run Flash, but that doesn’t mean you can’t make Flash-style games. • Angry Birds, Fruit Ninja, Jetpack Joyride are good examples • Highly animated, media rich, arcade-style gaming– people dig it!
  • 17.
    Immersive Games • Storyrich • Massively multiplayer • Epic adventures • These are the kind of games big studios make, and an indie developer can too, but realize the more complicated something is, the more time it’ll take to make.
  • 18.
    Where do youstart? • What do most games we can think of have in common? • There’s things you can do to “win,” and there’s things you can do to “lose.” • There’s a score of some kind, and there’s a “high score” you gotta beat. • Whenever you “do something,” something else happens as a response.
  • 19.
    So if it’sthat simple… • Let’s start with a small game you already know… – Tic Tac Toe • You can do things to win, • You can do things to lose, • We can keep score between players. • We can also do it as two-player without having to do any crazy artificial intelligence or anything like that.
  • 20.
    Add some polish… •Adding color, art assets, and animation can take you a long way. • You can add player names • Artificial Intelligence • Let’s take a look at someone else’s version of Tic-Tac-Toe: – http://youtu.be/-hdSMWNKPmM
  • 21.
    I’d buy thatfor a dollar! • Well, except that guy’s version is free. • In fact, many simple games like this are free. • However, there are people who will pay for your version. – Whether they’re friends, family, co-workers – Perhaps they’re just iPhone game enthusiasts? – But they do exist.
  • 22.
    How to buildyour skills • There’s so many things you can do… – Make your own game – Forget games, just make your own app! – Learn a new programming language – Collaborate with a friend – Work for a start-up – Work for an established company – Work for yourself!
  • 23.
    The wonderful worldof freelancing • Types of work that’s out there – Full-time employment – Contracting – Freelancing – Start-ups – Setting up your own Store-front • There’s pros and cons to each approach. • Something that’s a con for me, may be a pro for you. It’s all in how you view it.
  • 24.
    Full-time employment • Pros:Steady paycheck, health benefits, stable work environment • Cons: Often just one project (limited growth), very long term, company tends want to "own" your work in and out of office
  • 25.
    Contracting • Pros: Typicallyhigher "per hour" than a full- time, can be extended, not permanent • Cons: Unstable teams, no benefits, no sick days, pay your own taxes, sometimes end early
  • 26.
    Freelancing • Pros: More"creative" control over projects, your free time, and you can build a portfolio • Cons: Can be riskier, may go "too long" term or want too many quick gains over a short term.
  • 27.
    Start-ups • Startups thataren’t funded are essentially the same as freelance. • If they’re funded, they’re more akin to Contracts, but typically with longer work hours and more commitment and dedication.
  • 28.
    Your own store-front •Pros: Similar to a start-up, but you publish your own apps; you can just publish apps as you please. • Cons: You might have "make this" your job, and you have to keep publishing new ideas, keep publicizing, etc. Also, there's lots of competition that might be better, and many give away their stuff for free.
  • 29.
    What drives younow, and what do you want to accomplish? • So there’s lots of options, probably more than you thought. • But what are your goals? – Do you want to make your own apps? – Do you want to make someone else’s apps? – Do you want to “be the guy” making the app, or do you want to “find the guy” to help with your app? • Always keep your eyes on the end-goal. • Deviation from a goal is okay, as long as you’re learning a skill, but go too far and you’ll be on the different road altogether.
  • 30.
    Networking with peers,and collaborative projects • Networking with peers is good– – It’s a form of marketing your services, sure… – But you’ll also be surprised who you meet too– you might meet someone who has a service you didn’t even know you needed! – And hell, make a friend while you’re at it; couldn’t hurt, right?
  • 31.
    What you canlearn from the big guys • EA does games • Apple does hardware and software • Google is a search engine that somehow does everything • Microsoft is that 800 pound gorilla Surely there’s something we can learn from them, they’re in our market, right? But what?
  • 32.
    Electronic Arts • Theseare just vague generalities, but let's go with it… – EA publishes games on multiple platforms (sometimes) – and they typically have a tie-in game for mobile. – For games, they typically have a "quick game" mode as a first option as well • So, think about more than one device, and think about “how quick can I make my app to use?”
  • 33.
    Google –Google does a lot with Open Source, simplicity, and usuability. • They leverage existing technology with no cost to them. You should do that. – They were also a key innovator with "small ads" on websites. – Guess who else does “small ads” now, only for mobile devices? • Google, Apple, Microsoft.
  • 34.
    Apple • Apple hasa high aesthetic for their devices and high quality for their software. – High quality, nice aesthetic… you should do that. • They also invent new ways of doing things, and this can be quite challenging for developers. – Simple sometimes isn’t always best, so “think different” like them.
  • 35.
    Microsoft – Microsoft values the quick and simple. They see someone else do something (like Apple), and they do something similar. • “Just do it” • They also will venture into new markets— • The xbox was the first true American Video Game console developer since Atari. – Xbox vs Sony’s Playstation – Zune vs iPod – Windows 8 vs Apple's iOS strategy. • Competition is exciting! You should be competitive.
  • 36.
    Open Source Software •There’s a lot out there, from beginning projects to the complex. • Many programmers *use* Open Source Software, but the vast majority don’t contribute. • Yet another opportunity to build portfolio material. • There’s opportunity everywhere!
  • 37.