

The iPhone Development Story: the 22-step process to shipping an iPhone app - nickb
http://www.mikeash.com/?page=pyblog/the-iphone-development-story.html

======
Morieris
Great writeup. I'm currently on step 8. Even though the process looks dense
and problematic, it's still leagues ahead of the process required to get apps
up on Verizon, TMobile, or other AT&T devices...

~~~
mattmaroon
Android FTW.

------
cpr
Sorry, but if you went through all the steps required to actually build and
ship a real application on a normal platform (Mac/Win), it'd probably seem a
lot more complex, but just not in a bureaucratic way.

(He said, having just gone through all this pain himself. Our app is still in
review, but if you're interested, there's a pre-release website for it:
<http://grafly.com>. It's a 2d/3d equation graph explorer with some pretty
interesting technology hidden inside. (I didn't write that part. ;-))

There's some nonsense here, yes, but it's just part of the ecosystem.

It might actually consume 2-3 days of your life; if you're serious about
making apps for the iPhone, that's really not a barrier.

Maybe it keeps out the whiners. ;-)

~~~
whacked_new
Grafly looks awesome. Is the "interesting part" in-house?

~~~
cpr
Thanks!

Yes, the 2d/3d isosurface incremental exploration machinery was all written
(exceedingly tight C++) by my whiz-kid development partner.

The challenge is to take an arbitrary equation in a given viewport (2d or 3d
cube), find all the satisfying points, and build a displayable mesh (output as
OpenGL triangles).

Then, as the user zooms in and out, pans around, etc., the challenge is to
rebuild the new mesh intelligently, re-using what you computed so far,
including garbage-collecting all the old mesh values, all the while increasing
or reducing the mesh density for the given zoom level.

It's a really hard problem he solved extremely well.

------
jdg
This write-up is spot on the money. The only addition I would have, based on
my own experience, is that you need to fill out your banking/tax info AS SOON
AS YOU ARE ACCEPTED. It's a 4-week wait for approval on that part right now.

PS - Some of you may find my app, Warehouse, interesting. It's a native UI for
Crunchbase.

[http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftwa...](http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=290682870)

------
thorax
Still on Step 3 for the past two weeks now.

Keep in mind Step 0 is to buy/own some Macs.

------
tocomment
I still can't believe you have to have a mac to develop for iPhones. Why would
apple want to shut out so many potential developers, and app revenue for that
matter?

~~~
cpr
Because they don't think it's worth it to port their whole Xcode development
environment to Windows? It's a heavy user of Cocoa and much Mac OS-specific
technology.

Because they want to (as a side effect, which can only help computer hardware
sales) expose developers to a much more pleasant OS environment?

Because the cost of a Mac ($2K for a very capable 24" iMac) is nothing
compared to the earning potential of a serious iPhone app?

I could go on...

~~~
whacked_new
Just to nitpick, you can actually go on all you want, and most, if not all, of
your reasons, remain speculative. A windows-based dev environment would seem
like, at least at face value, a shrewd strategy (of course I am disregarding
all maintenance costs for spreading apple's competency across multiple
platforms).

But when they switched to intel, everyone knew it was a good decision. If they
didn't switch, Apple would still be alive today, and you can give another list
of reasons for not switching. Can't tell for sure without a time machine.

The fantasy is tantalizing though, and very much so. That alone is
disappointing.

~~~
cpr
Yes, they could port most of Cocoa to Windows just so they could run Xcode,
but do you think that would be cost-effective for them (dozens and dozens of
man-years they don't really have)? The lack of a Windows development
environment doesn't seem to be costing them any serious developers for now, at
least.

So that reason doesn't seem very speculative to me.

Personally, I think it's one of their core strengths that they stay focussed
on what they do well (development under Mac OS X), and not try to spread out
too thinly when they don't have to (clearly, they had to for iTunes; Safari's
a longer shot). It might look like arrogance to you, but it might just be good
sense given limited manpower.

And I don't think it's speculation to say that $2K invested in a blazing fast
development machine like a 24" iMac (you could also do it for less than $1K
with a Mac Mini, which works just fine) is easily recouped, if you're serious
about shipping an app. Even a decent $5 app that's not a flashlight should be
able to sell more than 400 copies in a market of 10MM right now, moving
quickly to 25MM and up.

~~~
ajkirwin
Maybe you're missing the point, however. What about the people who want to
crank out some simplistic, but nifty apps which could drive further use of the
iPhone, but they can't build them, because they (for some reason) can't afford
a Mac. (But they have lots of available time. I'm thinking unemployed geeks,
college students, etcetera)

~~~
cpr
Maybe they could run a VMware appliance with Mac OS X Server (which is legal
now)? ;-)

------
josefresco
They forgot Step 23: Apple kills your app because it threatens a
planned/existing native app.

------
trezor
You know. Looking at this, and for a second ignoring I probably need to buy a
Mac as well to develop for the iPhone, I'm pretty sure I will never ever hack
together a small app for shits and giggles. Not on a platform like this.

For instance a phone client for my online Yahtzee game is something I should
be able to hack together on Windows Mobile in no time. Build, debug, deploy.
Repeat a few times. Done. You know, the way things _usually_ work.

It might just be me, but trying to work with this platform seems to severely
break that whole _flow_ thing real programmers have when they get working on
something.

~~~
jdg
Nah, it doesn't break your flow. These steps are everything before and after
your flow. Flow, to me, is when you're in deep actually developing.

Once you have it up and rolling and have done it more than once, it's pretty
easy. Setting up new projects is easy (1-3 steps rather than 20). It's just
figuring it out the first time that is difficult.

~~~
cpr
Agreed. All this nonsense is entirely outside daily flow. I found while
developing a rather deep app over the past 4-5 months (in review now) that the
whole workflow was actually quite good, with little to slow one down.

You can test things out quickly on the simulator for most functionality
(including OpenGL, which is at the heart of our app), and only go to the phone
when you need to test real performance or accelerometer-based input, etc.

------
ajkirwin
I have maybe three or four apps that I'd love to make for the iPhone.

But, I don't own a Mac (As frankly, when it comes to desktops, I prefer PCs
and I am a big Build-Your-Own person), so, I can't develop.

