iPhone dev - my story

4 views
Skip to first unread message

Andz

unread,
Jan 16, 2010, 1:25:15 AM1/16/10
to cocoaheads-manila
cool group. I got suckered into keeping a 3GS I intended to sell for
a profit because I couldn't stop playing with it.

So now I chalk the expense to "R&D"... lol...

Of course the first thing I did was to learn everything about the
hardware and jailbreaking (3 days cooped up in the room instead of
window shopping in Sim Lim). This controrary to all good sense to
keep the iPhone pristine since I intended to sell it. The geek
impulse was just too great for me to resist... :-)

iPhone Hardware
============
So this device has an ARM cpu and what is probably roughly Voodoo 3
class hardware chip.

http://www.anandtech.com/gadgets/showdoc.aspx?i=3579&p=1

We should really stop calling them phones and start referring to them
what they really are, hand-held, pocket-sized "workstations". There
are over 10 billion ARM cpus shipped, and just about every mobile
device (this includes Nintendo DS and PSP) uses ARM inside, so
compiler and OS geeks might realize that learning ARM assembly exposes
you to a huge base of hardware envs to run on, dwarfing even x86/x64
assembly! The future could very well belong more to ARM rather than
Intel.

Another thing to note is that OpenGL ES on the 3GS is now 2.0 and now
does programmable shaders rather than fixed function which is, in
theory, a quantum leap.

http://www.engadget.com/2009/06/10/iphone-3g-s-supports-opengl-es-2-0-but-3g-only-supports-1-1/


Jailbreaking
=========
So the logical sequence was first to jailbreak, install some
additional utilities to make life easier, e.g. SBSettings... get shell
access of course, since I don't see how any self-respecting developer
can call themselves such if they cannot operate the iPhone at a shell
level.

Re jailbreaks, the exploits needed are just getting more abstruse,
24kpwn

http://www.theiphonewiki.com/wiki/index.php?title=0x24000_Segment_Overflow

no longer works on the firmware i have, so we're waiting for

http://www.theiphonewiki.com/wiki/index.php?title=Usb_control_msg(0x21%2C_2)_Exploit

to be turned into a untethered jailbreak, the so-called greenpois0n.
But anyway, I digress...


Xcode apps
========
Next logical step was to get a hello world app running. Too lazy to
go through the $99 step (I will one day when I have a proper app) so I
can install either the open toolchain or figure out how to get Xcode
compiling to a JB-runnable app. Ever the masochist, I choose the
latter.

As far as I can tell, no single page on the web outlines the exact
sequence of steps needed to make this happen on the latest firmware /
OS combination I have. So I apply a bit of knowhow and mix-and-match
the steps I read about. Couple of hours later I finally figure it out
(clap! clap!), I'm sure luck had a bit to do with that. So I am able
to get an "AppleSucks" app to run on my iPhone to prove I can do it...
hehe.


Next step is to learn about the dev environment, and that's where I am
currently, figuring out the Frameworks and Objective-C...

Comments on the iPhone dev environment
===============================
I have been following (not learning) the NextStep-derived environment
on OS X (iPhone and Mac) since the NextCube (the programming articles
to be found in my circa 1990s issues of NextWorld magazine will not
seem at all dated to those doing iPhone - or Mac for that matter -
development) and it is certainly a very mature and well-designed
environment. But frankly, one should realize it is at least two
generations behind .NET and could be considered one generation behind
the JVM (which, one must realize, Android's VM does not even count
as). The iPhone dev env is *old* technology which has its pros and
cons. It is well understood and has had plenty of maturing over time,
but going forward I think other architectures will ultimately replace
it. Just something to keep in mind...

Consider the 1-2Ghz CPUs and 512MB-1GB of RAM that will be available
in the next couple of generations of mobile devices, which you will
have the opportunity to program for, going forward, and think about
what makes more sense:

1) full-fledged JITting VM runtimes like .NET

or

2) a hybrid like ObjC with a bit more of a static bent (although ObjC
does have dynamic dispatch which was way ahead of its time when it was
first introduced - at that time Java only meant coffee and the
Indonesian island).

As a developer I think the former is ultimately the way you want to
go, and the moment they have a decent .NET environment on Windows
Mobile 7 (coreCLR/Silverlight rather than .NET Compact Framework), I
am defecting. But... Microsoft have proven that they barely
understand the web, and maybe the mobile space even less,

http://webmechs.com/webpress/2009/12/microsoft-should-replace-ie-with-a-coreclr-based-browser/

http://webmechs.com/webpress/2009/03/microsofts-3-front-war-part-1-windows-vs-apples-os-x-the-battle-for-the-operating-system/

...so I am not holding my breath and am actively going to learn xCode
development.

Also, J2ME never created that much developer fever either, so caveats
wrt futurology apply. Like iPhone vs. Mac Frameworks, J2ME vs J2SE
are different APIs with the same underlying runtime architecture, but
J2ME was unable to leverage on the Java ecosystem. The iPhone dev
environment does not exactly leverage off the Mac ecosystem either -
but Apple's marketing prowess made it succeed in the marketplace like
no other mobile dev platform.

My keen hope for coreCLR/Silverlight on mobile however, is that you
have a truly single target platform for desktop (or web more
precisely) and mobile. No reprogramming. E.g. like how you can,
today, take a Flash 7 or earlier .swf that runs on your browser, copy
it to your Flash Lite 2.x enabled mobile phone and just execute it.
Except with coreCLR/Silverlight you can develop such an app using
IronPython, IronRuby, C#, Boo, etc... and also have a truly next-gen
display/render API architecture ala WPF.

But that is a pipe dream so far... so some leisurely iPhone dev
learning while we wait for the Holy Grail (or Godot?) to arrive... eh?


===================
http://www.neotitans.com
Web and IT Consulting

Reply all
Reply to author
Forward
0 new messages