> MIDI
> Chords

> Videos
    function setAttributeOnload(object, attribute, val) {
      if(window.addEventListener) {
        window.addEventListener("load",
          function(){ object[attribute] = val; }, false);
      } else {
        window.attachEvent('onload', function(){ object[attribute] = val; });
      }
    }
  





skip to main  |
      skip to sidebar







	      
	Stop Flying Blind
	Mobile Opportunity
	Links
	Contact
	About
	Michael Mace's homepage






































The iPhone SDK: Apple gets it right



I have time tonight for only a quick note on Apple's iPhone software developer kit announcement.  Overall, it is deeply impressive how many things Apple got right.  We still need to see more details on terms and conditions, and a lot will depend on Apple's execution, but here are the problems they appear to have solved:--Mobile applications are hard for users to find and install, so Apple is building the applications store into every device.  Apps are installed automatically when you buy them, and you can also be notified of upgrades when they're available.--Third party applications stores take far too much of a developer's revenue -- 60% or more.  So the Apple store takes 30%.  That's a bit high (20% would be better), but everyone else has been so greedy that Apple looks like a charity.--Getting applications certified for use on mobiles is expensive and time-consuming, so Apple has streamlined the process dramatically.  Developers pay $99 a year, and apparently get automatic certification of all their apps.  We need to learn more about how the app approval process will work, but if it's not burdensome this service alone justifies Apple's 30% cut of revenue.  Apple takes responsibility for ensuring that iPhones remain secure and do not abuse the network, something that no one else has been willing to do.--Developers want to get access to the features of the phone, so Apple has exposed a very rich API set including access to the accelerometer and other special features of the iPhone.  This is not a sandbox; it looks like it's access to pretty much the whole OS.--And oh by the way, Kleiner Perkins is creating a $100 venture million fund for iPhone developers.  Makes Google's $10m contest for Android developers look like a popgun.It has been obvious for at least six years that all of these changes were needed in the mobile market, but until now no one in the US and Europe has had the courage / political muscle / intelligence to carry them all out.  The other mobile platforms now look pretty pathetic by comparison -- not so much because their technologies are bad, but because their business infrastructure is so primitive.At the announcement today, John Doerr called this Apple's third platform, which has a very specific meaning in Silicon Valley.  It means they're planning to drive rapid growth in apps, which will make the iPhone more attractive to customers, which will in turn attract more developers, bringing in even more users, and so on in a virtuous circle.I don't know how far Apple can drive that, just because their sales are so small compared to the total number of phones out there.  I still think it's likely that web apps will eventually displace most native mobile apps, because the addressable market will be so much larger.  But eventually can take a long time, and if anyone can buck the trend it'll be Apple.  They have created by far the best overall proposition for mobile developers on any platform in the US or Europe, and I hope they'll do very well for a long time.Apple is challenging the rest of the mobile industry to compete on its terms.  It will be very interesting to see how the other mobile vendors react, Nokia and Microsoft in particular.  Nokia seems to be focused on a strategic positioning activity around seeing who can collect the most runtimes, while Apple is solving real developer and user problems.  It's a striking contrast.The rest of the industry is still trying to figure out how to respond to the system design of the iPhone, and now they need to also figure out how to run an ecosystem as well.  Right now Apple is changing the terms of the competition faster than the other guys can react, which is exactly the right way to beat a group of larger competitors.





Posted by
Michael Mace


at
11:53 PM
 Permalink. 23 comments.  Click here to read post with comments.















Labels:
apple,
applications,
developers,
iphone,
microsoft








23
comments:
        




Stefan Constantinescu
said...


All they [Apple] need to do now is offer an unlocked iPhone and the world is golden, they can't sustain the operator lock in model forever.I too was deeply impressed with the presentation given, link here for your readers: http://events.apple.com.edgesuite.net/rtp20e92/event/index.html?internal=fj2l3s9dm




Friday, March 07, 2008 12:52:00 AM










z
said...


As a developer I find 30% too high. I  hope they lower it down to 20% or 15%.




Friday, March 07, 2008 1:44:00 AM










Anonymous
said...


I think the 30% is an excellent deal, especially because the number is now in the open. It is now very hard for other resellers to demand a higher percentage of the sales price, especially because it also includes credit card processing costs and other distribution costs. And, installing cracked software is also going to be much harder if the Apple Store and iTunes are the only distribution mechanisms.I also loved the 100 million iFund announcement. With that kind of money, people are serious.




Friday, March 07, 2008 1:51:00 AM










Monty Alexander
said...


Hi, thanks for your information. I agree with your terms about Apple but think apple should decrease it's mobile phones rate. In India where 70% popolation belongs to middle class famile, it is hard enough for them to buy Apple's Mobile Phone.




Friday, March 07, 2008 2:12:00 AM










raddedas
said...


It is rather a lot easier to implement all this "game changing" stuff when you fundamentally only have a few million units of a single handset running a single OS variant out in the wild... the contrast with Nokia's hundreds of millions of veryu diverse devices is as striking as the contrast in their platform strategies (whether Nokia's strategy is right or not is another matter)There are still quite a few unknowns and TBCs where Apple's proposition could fall over, but in principal I do agree that they are doing good things with what they have - which is a niche platform of high spending data users (about the best platform to start from scratch with for this kind of venture, for sure).As for the guys running the $100m fund... I'd be very surprised if they see any ROI on that one, but then they may just be in it for the hype and publicity of being associated with Apple, and somewhere between now and implementation it'll turn into a different fund with wider scope. Hell, it's other people's money they are raising, so maybe they'll just take the management fees and who cares about the ROI :D




Friday, March 07, 2008 3:42:00 AM










Alan / Falcon
said...


Fantastic post.  Well thought out and well informed.  This has my head reeling and trying to figure out what is the iPhone killer app.  What is the program that is going to cause people to go out and say "I can now justify buying an iPhone for that app"?  Obviously we are starting from a restricted group of people who can actually afford $400 for a phone and $60/month for service - not a "mass market" mentality.  If we get this killer app, then we get that snowballing effect you describe of apps driving iPhone sales driving more app sales.  What kind of application will capture the public's imagination (and pocketbooks)?




Friday, March 07, 2008 3:52:00 AM










Anonymous
said...


How about putting this post in relation to the last couple where you said that native apps are, for the most part, dead.




Friday, March 07, 2008 5:57:00 AM










Sovind
said...


In reply to Raddedas....IMHO Nokia's current problem is self inflicted. There was never any reason to create so many different interfaces of s60 for ex. It is their pure greed of trying to segmentalize what is basically the same functionality that got them into this mess.I frankly don't see any difference in functionality of the E90 and N90.Think it is difficult for Nokia? Nothing compared to the limited resources that developers have to endure just to keep up with the soft keys changes etc that Nokia inflicted on them.




Friday, March 07, 2008 6:27:00 AM










Elia
said...


This is definitely exciting news for the developer community if for no other reason to get us excited about a mobile platform again. While I don't use an iPhone myself, it is the first mobile platform I have felt truly excited about since Palm circa 1997-2001, ending with the Palm m515 series. I also think it is a boon for Apple as all these developers will have to go out and buy Mac desktop or laptop systems to program for iPhone. Cha-ching!I don't think what Michael meant was that native application development was dead -- there is obviously a market for it -- just that for the first time it is viable to develop a web-based application and that many of those applications that have traditionally been native will move to the web. For me (since I was the main reference point in Mike's previous article) -- and many like me -- the web is a better bet than native. Mobile is still a very important piece of my value proposition. The difference is the browser becomes my delivery mechanism.In my mind, this SDK doesn't change that at all. We are still talking about a platform with a tiny fraction of users. To be successful, I still need to support as many as ten platforms. The costs of marketing and developing native commercial apps is still a tough proposition.Don't get me wrong, I would love to see iPhone be very successful. All three keys to success support each other -- standardization of mobile browser technology coupled with a thriving native app market and really cool device design. This means more users and more developers and more stuff to do on it to make it fit your lifestyle, which means more users and more developers... you get the idea. It will make development a lot easier for all of us if all of these things are happening!




Friday, March 07, 2008 6:29:00 AM










Sic
said...


I think Apple will capitalize on multi-touch in current (Air laptop) and upcoming devices.The developer community they're educating about CocoaTouch will be writing apps for these new devices as well... or maybe like the Spore demo we'll see applications ported to a Mac laptop and the iPhone.




Friday, March 07, 2008 10:10:00 AM










gibtang
said...


The news of what the SDK offers is a surprise to me ever since Jobs said that web apps are the future. Anyway, 30% sounds a lot better than the eye gouging 50% that is the norm for the middlemen. Now, if only iPhone would only come to Asia, specifically South East Asia soon. Developing games for the iPhone sound very interesting to with their unconventional UI system.I hope this serves as a wakeup call to the rest of the competitors in the mobile industry.




Friday, March 07, 2008 3:14:00 PM










MikeTeeVee
said...


$100M venture fund.  Apple's third platform.  This isn't just about the iPhone and the iPod touch.  Or the expected 3G iPhone.This kind of money and talk suggests a wider range of touch devices are coming.




Friday, March 07, 2008 3:29:00 PM










Dave
said...


Even if native apps fade away and Web apps command the future, the iPhone still benefits with its far superior Web UI.The other game changer is the Enterprise support, they nailed the requirements.  Exchange and Directory integration, Device Management, Security Policies, Remote Wipe, PKI and VPN support, WiFi security enhancements, they hit all the important areas.RIM, Nokia, Samsung HTC and the rest should be afraid.  Very afraid.  Apple has a decent shot to take the Smartphone market away from them.




Friday, March 07, 2008 5:53:00 PM










Michael Mace
said...


Great comments, everybody.  Thanks!raddedas wrote:>>It is rather a lot easier to implement all this "game changing" stuff when you fundamentally only have a few million units of a single handset running a single OS variant out in the wildVery true.>> the contrast with Nokia's hundreds of millions of very diverse devices is as striking as the contrast in their platform strategiesYeah, although Nokia could have done something like what Apple has done, limited to a few products and then branching out.  They have done those sorts of experiments in the past.>>As for the guys running the $100m fund... I'd be very surprised if they see any ROI on that one, but then they may just be in it for the hype and publicity of being associated with AppleNah, Kleiner's got enough visibility around here already.  >>somewhere between now and implementation it'll turn into a different fund with wider scope. That's what I was thinking -- they'll start with iPhone software, but those developers will branch beyond iPhone pretty quickly.Alan / Falcon wrote:>>what is the iPhone killer app. What is the program that is going to cause people to go out and say "I can now justify buying an iPhone for that app"? My personal bias: the mobile market is so fragmented that there is no single killer app.  The real killer is having lots of diverse software, so everyone can find the app that's right for them.  I suspect that's what Apple is banking on as well.Anonymous wrote:>>How about putting this post in relation to the last couple where you said that native apps are, for the most part, dead. Thanks for asking.  The idea I was shooting for was dying, not dead.  And as I said in that post, I think Apple's SDK can delay that process for a time.  But in the long run, I believe the economics of web apps are more compelling than making native apps, because you can serve a much broader market.  Even if all the other mobile companies were to duplicate Apple's software distribution model, native development would still be split across a huge array of platforms, making a consistent web app platform very attractive.The same evolution is gradually happening in PC applications.  I think Apple can probably delay, but not stop, this process. MikeTeeVee wrote:>>$100M venture fund. Apple's third platform. This isn't just about the iPhone and the iPod touch. Or the expected 3G iPhone.  This kind of money and talk suggests a wider range of touch devices are coming. I think you absolutely nailed it, Mike.  I believe the iPhone is part of a larger strategy to reshape the mobile market, and we haven't seen all of it.If Apple's game plan is to keep changing the rules faster than the industry can react, what other surprises might Apple be planning?  I think we'll see lower-priced phones, and other new non-phone devices beyond the rumored Apple media tablet.Dave wrote: >>the Enterprise support, they nailed the requirementsAgreed.  I was expecting them to just do Outlook compatibility.>>RIM, Nokia, Samsung HTC and the rest should be afraid. Very afraid. I think the biggest impact is on Nokia, because it wants to be seen as the most innovative computer -phone company.  Apple's taking that role, at least in the US (in Europe things are not going as well for them).  I think RIM is not as vulnerable as a lot of people believe.  Its core customers are heavy-duty businesspeople who don't really care about playing Spore on their phones.  But RIM does need to be doing more innovation aimed at the needs of its core customers.  The Blackberry hasn't been evolving fast enough, in my opinion.




Friday, March 07, 2008 11:25:00 PM










Michael Mace
said...


By the way, TechCrunch has a nice roundup of drawbacks of the iPhone SDK.  Some of the limits, such as no VOIP over the carrier connection, are easy to understand.  Apple also appears to forbid applications that launch other software.  If I read that right, it means Adobe is prohibited from porting Flash, and Sun can't port Java.  And it also appears to block the porting of StyleTap's Palm OS emulator.  I presume that's for security reasons, but it is disappointing.But the most troubling limitation is that applications can't leave code operating in the background.  They exit as soon as the phone rings, or the user starts another application.  I do not understand the reason for this, as it blocks a lot of interesting and useful mobile apps (for example, messaging apps that need to stay running in the background). The SDK still looks good, but Apple has more work to do.




Friday, March 07, 2008 11:50:00 PM










Chris Dunphy
said...


"But the most troubling limitation is that applications can't leave code operating in the background. They exit as soon as the phone rings, or the user starts another application. I do not understand the reason for this, as it blocks a lot of interesting and useful mobile apps (for example, messaging apps that need to stay running in the background). "This is troubling, though I am hoping they are being smart about this.  The right way to allow for background tasks on a mobile device is to allow apps to spawn special background threads, and not have the whole app running in the background using resources and burning battery.  This is what PalmOS Cobalt was going to do.I am hoping that Apple will role an API for spawning background threads into the SDK, and I expect that they will.  What is the point of an IM application if it can't stay online and notify you of new messages?  That they showed AOL demo AIM makes me think Apple knows what they are doing, and they just haven't added this sort of API to the SDK yet.  - Chris Dunphy // www.twostepsbeyond.com




Saturday, March 08, 2008 2:31:00 PM










Stefan Constantinescu
said...


Mace said:"I think you absolutely nailed it, Mike. I believe the iPhone is part of a larger strategy to reshape the mobile market, and we haven't seen all of it.If Apple's game plan is to keep changing the rules faster than the industry can react, what other surprises might Apple be planning? I think we'll see lower-priced phones, and other new non-phone devices beyond the rumored Apple media tablet."Care to expand on your thoughts on Apple's mobile strategy actually?




Monday, March 10, 2008 5:24:00 PM










Anonymous
said...


I think the killer app for the iPhone and iPod Touch has already been announced and demoed -- the App Store itself.  It will do for mobile applications what the iTunes Store did for music, movies, television shows, audiobooks, podcasts... And even though it doesn't require the use of your Mac or PC to find and purchase mobile apps, imagine what would happen if Apple decided to to turn that into a general app store for desktop software as well!




Wednesday, March 12, 2008 6:43:00 AM










Gio
said...


This post has been removed by the author.




Wednesday, March 12, 2008 7:17:00 AM










Krakowian
said...


I'm kind of surprised that I haven't read this anywhere on the net, but I suspect that the real loser to the iPhone will be the PSP. What's its niche now? the iPhone does it all, and without the stupidly placed pad, and with a really cool, new interface. I really suspect that the announcement of the SDK (and the awesome games demoed) spell the death-knell for the PSP. Am I alone?-Jon




Wednesday, March 12, 2008 4:20:00 PM










Anonymous
said...


iPhone/iPod Touch vs. PSP is interesting. While the base PSP system is $169, 8GB memory sticks are still going for $80 at Fry's (though I bought one for $70 on-line), so the price of an 8GB PSP is more like $250+, which is in the same league as the $299 iPod Touch, though significantly cheaper than the $399 iPhone.The PSP has a massive head-start in gaming, with a large library of excellent games including Sony platform exclusives (God of War, Ratchet & Clank, LocoRoco, Patapon, Jeanne D'arc) as well as other major franchises such as Final Fantasy, Grand Theft Auto, Metal Gear, Silent Hill, etc., as well as a library of UMD movie discs (fortunately Sony is doing a better job of selecting films and has dropped the price.) It also has its own on-line game store, and it plays any DRM-free music from  Amazon, iTunes Plus, eMusic, etc. as well as h.264 video. It also integrates well with the PS3 (e.g. remote play of PS1 games, over the network remote control of the PS3, remote video and music playback, future DVR integration), and it comes with Skype and internet radio. While the iPod Touch offers interesting multitouch and motion-sensing interfaces, the PSP and DS support traditional D-pad and shoulder-button interfaces (with the DS supporting single-touch and the PSP including a single analog stick.) The PSP delivers a "PS2 in your pocket" in terms of game content, game quality, and game interface.The PSP has an interesting niche which is between the Nintendo DS and the iPod Touch, competing with the former on media capabilities, and the latter on price and gaming capabilities.Right now my music lives on my iPod, and I game on the PSP, but I have an 8GB card in my PSP, and I'm thinking about an iPod touch...If Apple can get major game studios - including Japanese studios - on board, perhaps it will begin to compete with Sony and Nintendo. However, the iPod touch (and possibly iPhone) will need to compete on price as well; the PSP didn't start taking off until last fall, which featured a winning combination of a lighter design with video out, and a price drop from $199 to $169.




Wednesday, March 12, 2008 9:46:00 PM










Mr. Gunn
said...


Gets it right?  Are you kidding?  Even the most die-hard Apple fans are admitting that the SDK is a bit of a disappointment.30% is a extremely high tariff, and since they have the distribution monopoly, the developer just has to accept what they're given, instead of being able to negotiate as one can do with existing mobile software portals, which can reduce the tariff considerable below the quoted 60%.The SDK is by no means full featured, as it can't even run applications in the background, nor will it allow apps to talk to one another.On top of all this, developers can still have their app turned down because someone at Apple deems it untasteful.  Not dangerous, not abusive of the network, just no aligned with the particular taste of the guy who's turn it is to review it for admission.  Talk about adding insult to injury...By the way, it's not all that hard to get an Symbian application signed.  Android is going to wipe the floor with these guys.  Fast forward 5 years and I'd be surprised if the iphone has half the market share in the mobile software market as apple does in personal computing."The real killer is having lots of diverse software, so everyone can find the app that's right for them."That's actually the opposite of Apple's strategy.  Their strategy has always been to restrict the diversity and availability of software in favor of one favored app(it's to protect the user experience, you see...).  Anyone running an alternative to itunes on their Mac, for example?  The restrictions and financial hurdles they're placing in the way of developers here is in line with achieving the same end on their phone, which to this day has only "visual voicemail" as its lone novel feature.  Unless you consider the inability for your iphone having friends to spam you with multi-recipient IMs to be a feature, of course. ;-)I'm sorry to come off as such a hater, but surely you can see that this really isn't all it's made out to be....




Friday, March 14, 2008 3:00:00 PM










Jean-Pierre
said...


alan/falcon said:Obviously we are starting from a restricted group of people who can actually afford $400 for a phone and $60/month for service - not a "mass market" mentality. If we get this killer app, then we get that snowballing effect you describe of apps driving iPhone sales driving more app sales.What kind of application will capture the public's imagination (and pocketbooks)?Don't forget that most iPhone apps will be able to run on the iPod Touch as will. I haven't seen any numbers on iPod touch sales, but I suspect that they're selling at least as well as iPhones. Don't forget that for the time being, the iPhone isn't available outside the US, but the Touch is on sale just about everywhere around the world...




Wednesday, March 19, 2008 9:36:00 PM










Post a Comment
















Newer Post


Older Post

Home




Subscribe to:
Post Comments (Atom)






About This Blog

The walls between the web, wireless, entertainment, and computer industries are coming down. This weblog explores the opportunities that result. I post about one article a week.











Sidebar Contents


About Michael Mace
Favorite Posts
Recent Posts & Archive
Recent Comments
Suggestion Box
Search This Blog
Recommended Sites
Subscribe
Translation
Statistics












About Michael Mace




I'm a principal at Rubicon Consulting, where we help tech companies solve tough strategy and marketing problems.  Drop by and sign up for our newsletter.  I'm former Chief Competitive Officer and VP of Product Planning at Palm, VP of Strategic Marketing at PalmSource, director of Mac Platform Marketing at Apple, and served in a lot of other roles.  For more info on me, visit my website.

View my complete profile











Favorite Posts


The big picture: How mobile, personal computing, media, and the Internet all fit together

The Market(s) for Mobile Devices
The shape of the smartphone and mobile data markets
Which mobile device companies get it?
Desperately seeking the info pad
Will the smartphone kill the PC?
Trouble with a 3G smartphone
Sprint recalls an Ambassador
European vs. American mobile phone use
Impact of the Apple iPhone

The Internet and Web Apps
Why Web 2.0 doesn't cut it for mobile devices
Be nice to the wiki
Bring on the Singularity!
"Software as a service" misses the point
The Cluetrain Manifesto revisited


Operating Systems & Infrastructure
Flash vs. Windows: Can Adobe break Microsoft?
Does the Mobile OS matter?
Why are mobile app sales dropping?
We need a new mobile platform
Symbian unloads UIQ
Will flat-rate pricing make mobile data take off?
Sprint and WiMax: Are these guys serious?


Content Distribution
Removing the Middleman
Removing the Middleman, Part 2: Music
Removing the Middleman, Part 3: Books












Recent Posts








          ► 
        


2009
(22)





          ► 
        


November
(3)

The mobile data apocalypse, and what it means to y...
The OS is always greener...
Which mobile apps are making good money?








          ► 
        


October
(1)

A web guy and a telecom guy talk about net neutral...








          ► 
        


September
(1)

Is Apple too powerful?








          ► 
        


August
(2)

Four questions about the Microsoft-Nokia alliance
Nokia and Microsoft, sittin' in a tree...








          ► 
        


July
(1)

Google Chrome OS: Opening a vein in Redmond








          ► 
        


June
(2)

Two videos for mobile app developers
Symbian: Evolving toward open








          ► 
        


May
(1)

A quick history of software platforms:  How we got...








          ► 
        


April
(5)

Microsoft:  What could have been
The lesson from OQO
Checking in on smartphone and Twitter usage
The ugliest logo ever, but maybe it makes sense
Thoughts on the tech industry bailout








          ► 
        


March
(1)

Watch out for RIM








          ► 
        


February
(1)

Speech recognition: Almost ready for mobile prime ...








          ► 
        


January
(4)

News flash: Microsoft lied
The Palm Pre: Think Similar
Welcome to the real world
Will the mobile phone really eat the PC?








▼ 

2008
(33)





          ► 
        


December
(4)

Nokia: Running in molasses
Proposition 8 and community review sites: Everyone...
Mobile data: Be careful what you wish for
The Influencers are dead.  Or not.








          ► 
        


October
(1)

Everything you always wanted to know about web com...








          ► 
        


September
(2)

App stores and APIs: It's the ecosystem, stupid
Conference time








          ► 
        


August
(2)

Does anybody really know what smartphone market sh...
Only 10% of Japanese people know how to use all th...








          ► 
        


July
(1)

Hypenotized by Apple








          ► 
        


June
(3)

The end of the dream
Symbian changes everything, and nothing
Thoughts on the 3G iPhone announcement








          ► 
        


May
(3)

Nokia goes for 1% market share in the US
WiMax gets closer and further away at the same tim...
Adobe frees mobile flash: It's about time








          ► 
        


April
(3)

The sad (but respectable) demise of Microsoft Spot...
Some other things you didn't know about iPhone use...
Announcing a new survey of iPhone users






▼ 

March
(7)

The spontaneous society
How to make a college basketball fan very, very ha...
Maybe it's possible to have too many developers
The iPhone SDK: Apple gets it right
Nokia and Microsoft, sittin' in a tree...
The three laws of technology strategy
Following up on "Mobile Applications, RIP"








          ► 
        


February
(4)

Mobile applications, RIP
What would you like to ask the mobile OS companies...








          ► 
        


January
(3)









          ► 
        


2007
(61)





          ► 
        


November
(8)







          ► 
        


October
(1)







          ► 
        


September
(5)







          ► 
        


August
(4)







          ► 
        


July
(4)







          ► 
        


June
(2)







          ► 
        


May
(4)







          ► 
        


April
(5)







          ► 
        


March
(10)







          ► 
        


February
(6)







          ► 
        


January
(12)









          ► 
        


2006
(73)





          ► 
        


December
(7)







          ► 
        


November
(4)







          ► 
        


October
(7)







          ► 
        


September
(6)







          ► 
        


August
(4)







          ► 
        


July
(4)







          ► 
        


June
(7)







          ► 
        


May
(5)







          ► 
        


April
(8)







          ► 
        


March
(6)







          ► 
        


February
(6)







          ► 
        


January
(9)









          ► 
        


2005
(22)





          ► 
        


December
(9)







          ► 
        


November
(6)







          ► 
        


October
(7)

















Recent Comments

var a_rc=10;var m_rc=false;var n_rc=true;var o_rc=100;











Suggestion Box

Click here to make a comment or suggestion about Mobile Opportunity.











Search This Blog








 Web  This blog 














Recommended Sites


Tech-related sites:
   	Michael Gartenberg
    	Muni Wireless
    	The Register
    	Rough Type
    	What Japan Thinks
    	Community Group Therapy
    	DW2.0

Mobile sites:
    	Lifeblog
    	Telepocalypse
    	Wireless Watch Japan
    	Software Everywhere
    	Disruptive Wireless
    	Techype

Mobile commentary aggregators:
    	Carnival of the Mobilists
    	Wireless Watch Community

My blog on strategy:
    	Stop Flying Blind
  











Subscribe

You can subscribe to Mobile Opportunity in several ways:

Enter your email address here to subscribe by email (you'll receive a copy of each post): Powered by FeedBlitz

Feeds:
Subscribe to posts (Atom)
Subscribe to all comments (Atom)





You can also subscribe to the comments for individual posts.  Just click "permalink" at the end of the post, scroll down to the bottom of the page that opens, and you'll find the link to subscribe.











Translation

Translation by Google:





























Code by Digital Inspiration











Statistics



var sc_project=2177760; 
var sc_invisible=0; 
var sc_partition=5; 
var sc_security="44c75920"; 
var sc_text=2; 



 visitors since January 2007.  Counted by StatCounter.









_uacct = "UA-1189801-1";
urchinTracker();





_qacct="p-4fZDzyrDKjuco";quantserve();














Advertising

Messages placed by Google:




























 





© 2005-2009 Michael Mace   |   Design by Mike Rohde   |  Powered by Blogger















if (window.jstiming) window.jstiming.load.tick('widgetJsBefore');


_WidgetManager._Init('http://www.blogger.com/rearrange?blogID=17898384', 'http://mobileopportunity.blogspot.com/2008/03/iphone-sdk-apple-gets-it-right.html','17898384');
_WidgetManager._SetPageActionUrl('http://www.blogger.com/display?blogID=17898384', 'gyq6SgX2hGqVWZ4EuEbEFbL1BPA:1261143133022');
_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'title': 'Mobile Opportunity', 'pageType': 'item', 'url': 'http://mobileopportunity.blogspot.com/2008/03/iphone-sdk-apple-gets-it-right.html', 'homepageUrl': 'http://mobileopportunity.blogspot.com/', 'enabledCommentProfileImages': true, 'searchLabel': '', 'searchQuery': '', 'pageName': 'The iPhone SDK: Apple gets it right', 'pageTitle': 'Mobile Opportunity: The iPhone SDK: Apple gets it right', 'encoding': 'UTF-8', 'locale': 'en-US', 'isPrivate': false, 'languageDirection': 'ltr', 'feedLinks': '\74link rel\75\42alternate\42 type\75\42application/atom+xml\42 title\75\42Mobile Opportunity - Atom\42 href\75\42http://mobileopportunity.blogspot.com/feeds/posts/default\42 /\76\n\74link rel\75\42alternate\42 type\75\42application/rss+xml\42 title\75\42Mobile Opportunity - RSS\42 href\75\42http://mobileopportunity.blogspot.com/feeds/posts/default?alt\75rss\42 /\76\n\74link rel\75\42service.post\42 type\75\42application/atom+xml\42 title\75\42Mobile Opportunity - Atom\42 href\75\42http://www.blogger.com/feeds/17898384/posts/default\42 /\76\n\74link rel\75\42EditURI\42 type\75\42application/rsd+xml\42 title\75\42RSD\42 href\75\42http://www.blogger.com/rsd.g?blogID\07517898384\42 /\76\n\74link rel\75\42alternate\42 type\75\42application/atom+xml\42 title\75\42Mobile Opportunity - Atom\42 href\75\42http://mobileopportunity.blogspot.com/feeds/709159788087409157/comments/default\42 /\76\n', 'meTag': '', 'openIdOpTag': '', 'latencyHeadScript': '\74script type\75\42text/javascript\42\76(function() { var a\75window;function e(b){this.t\75{};this.tick\75function(c,h,d){d\75d?d:(new Date).getTime();this.t[c]\75[d,h]};this.tick(\42start\42,null,b)}var f\75new e;a.jstiming\75{Timer:e,load:f};try{a.jstiming.pt\75a.gtbExternal\46\46a.gtbExternal.pageT()||a.external\46\46a.external.pageT}catch(g){};a.tickAboveFold\75function(b){b\75b;var c\0750;if(b.offsetParent){do c+\75b.offsetTop;while(b\75b.offsetParent)}b\75c;b\74\075750\46\46a.jstiming.load.tick(\42aft\42)};var i\75false;function j(){if(!i){i\75true;a.jstiming.load.tick(\42firstScrollTime\42)}}a.addEventListener?a.addEventListener(\42scroll\42,j,false):a.attachEvent(\42onscroll\42,j); })();\74/script\076'}}]);
_WidgetManager._SetSystemMarkup({'layout': {'varName': '', 'template': '\74div class\75\47widget-wrap1\47\76\n\74div class\75\47widget-wrap2\47\76\n\74div class\75\47widget-wrap3\47\76\n\74div class\75\47widget-content\47\76\n\74div class\75\47layout-title\47\76\74data:layout-title\76\74/data:layout-title\76\74/div\76\n\74a class\75\47editlink\47 expr:href\75\47data:widget.quickEditUrl\47 expr:onclick\75\47\46quot;return _WidgetManager._PopupConfig(document.getElementById(\\\46quot;\46quot; +       data:widget.instanceId + \46quot;\\\46quot;));\46quot;\47 target\75\47chooseWidget\47\76\74data:edit-link\76\74/data:edit-link\76\74/a\76\n\74/div\76\n\74/div\76\n\74/div\76\n\74/div\076'}, 'quickedit': {'varName': '', 'template': '\74div class\75\47clear\47\76\74/div\76\n\74span class\75\47widget-item-control\47\76\n\74span class\75\47item-control blog-admin\47\76\n\74a class\75\47quickedit\47 expr:href\75\47data:widget.quickEditUrl\47 expr:onclick\75\47\46quot;return _WidgetManager._PopupConfig(document.getElementById(\\\46quot;\46quot; +       data:widget.instanceId + \46quot;\\\46quot;));\46quot;\47 expr:target\75\47\46quot;config\46quot; + data:widget.instanceId\47 expr:title\75\47data:edit-link\47\76\n\74img alt\75\47\47 height\75\04718\47 src\75\47http://img1.blogblog.com/img/icon18_wrench_allbkg.png\47 width\75\04718\47/\76\n\74/a\76\n\74/span\76\n\74/span\76\n\74div class\75\47clear\47\76\74/div\076'}, 'all-head-content': {'varName': 'page', 'template': '\74data:blog.latencyHeadScript\76\74/data:blog.latencyHeadScript\76\n\74meta expr:content\75\47\46quot;text/html; charset\75\46quot; + data:page.encoding\47 http-equiv\75\47Content-Type\47/\76\n\74meta content\75\47true\47 name\75\47MSSmartTagsPreventParsing\47/\76\n\74meta content\75\47blogger\47 name\75\47generator\47/\76\n\74link href\75\47http://www.blogger.com/favicon.ico\47 rel\75\47icon\47 type\75\47image/vnd.microsoft.icon\47/\76\n\74link expr:href\75\47data:blog.url\47 rel\75\47canonical\47/\76\n\74data:blog.feedLinks\76\74/data:blog.feedLinks\76\n\74data:blog.meTag\76\74/data:blog.meTag\76\n\74data:blog.openIdOpTag\76\74/data:blog.openIdOpTag\076'}});
_WidgetManager._RegisterWidget('_TextView', new _WidgetInfo('Text2', 'footer',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('Text2'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_TextView', new _WidgetInfo('Text1', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('Text1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML3', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML3'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74b:if cond\75\47data:team \75\75 \46quot;true\46quot;\47\76\n\74ul\76\n\74b:loop values\75\47data:authors\47 var\75\47i\47\76\n\74li\76\74a expr:href\75\47data:i.userUrl\47\76\74data:i.display-name\76\74/data:i.display-name\76\74/a\76\74/li\76\n\74/b:loop\76\n\74/ul\76\n\74b:else\76\74/b:else\76\n\74b:if cond\75\47data:photo.url !\75 \46quot;\46quot;\47\76\n\74a expr:href\75\47data:userUrl\47\76\74img class\75\47profile-img\47 expr:alt\75\47data:photo.alt\47 expr:height\75\47data:photo.height\47 expr:src\75\47data:photo.url\47 expr:width\75\47data:photo.width\47/\76\74/a\76\n\74/b:if\76\n\74dl class\75\47profile-datablock\47\76\n\74dt class\75\47profile-data\47\76\74/dt\76\n\74b:if cond\75\47data:showlocation \75\75 \46quot;true\46quot;\47\76\n\74dd class\75\47profile-data\47\76\74data:location\76\74/data:location\76\74/dd\76\n\74/b:if\76\n\74b:if cond\75\47data:aboutme !\75 \46quot;\46quot;\47\76\74dd class\75\47profile-textblock\47\76\74data:aboutme\76\74/data:aboutme\76\74/dd\76\74/b:if\76\n\74/dl\76\n\74a class\75\47profile-link\47 expr:href\75\47data:userUrl\47\76\74data:viewProfileMsg\76\74/data:viewProfileMsg\76\74/a\76\n\74/b:if\76\n\74b:include name\75\47quickedit\47\76\74/b:include\76\n\74/div\076'}}, document.getElementById('Profile1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_TextView', new _WidgetInfo('Text3', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('Text3'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title\47\76\n\74h2\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74div id\75\47ArchiveList\47\76\n\74div expr:id\75\47data:widget.instanceId + \46quot;_ArchiveList\46quot;\47\76\n\74b:if cond\75\47data:style \75\75 \46quot;HIERARCHY\46quot;\47\76\n\74b:include data\75\47data\47 name\75\47interval\47\76\74/b:include\76\n\74/b:if\76\n\74b:if cond\75\47data:style \75\75 \46quot;FLAT\46quot;\47\76\n\74b:include data\75\47data\47 name\75\47flat\47\76\74/b:include\76\n\74/b:if\76\n\74b:if cond\75\47data:style \75\75 \46quot;MENU\46quot;\47\76\n\74b:include data\75\47data\47 name\75\47menu\47\76\74/b:include\76\n\74/b:if\76\n\74/div\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\76\n\74/div\076'}, 'flat': {'varName': 'data', 'template': '\74ul\76\n\74b:loop values\75\47data:data\47 var\75\47i\47\76\n\74li class\75\47archivedate\47\76\n\74a expr:href\75\47data:i.url\47\76\74data:i.name\76\74/data:i.name\76\74/a\76 (\74data:i.post-count\76\74/data:i.post-count\76)\n      \74/li\76\n\74/b:loop\76\n\74/ul\076'}, 'menu': {'varName': 'data', 'template': '\74select expr:id\75\47data:widget.instanceId + \46quot;_ArchiveMenu\46quot;\47\76\n\74option value\75\47\47\76\74data:title\76\74/data:title\76\74/option\76\n\74b:loop values\75\47data:data\47 var\75\47i\47\76\n\74option expr:value\75\47data:i.url\47\76\74data:i.name\76\74/data:i.name\76 (\74data:i.post-count\76\74/data:i.post-count\76)\74/option\76\n\74/b:loop\76\n\74/select\076'}, 'interval': {'varName': 'intervalData', 'template': '\74b:loop values\75\47data:intervalData\47 var\75\47i\47\76\n\74ul\76\n\74li expr:class\75\47\46quot;archivedate \46quot; + data:i.expclass\47\76\n\74b:include data\75\47i\47 name\75\47toggle\47\76\74/b:include\76\n\74a class\75\47post-count-link\47 expr:href\75\47data:i.url\47\76\74data:i.name\76\74/data:i.name\76\74/a\76\n\74span class\75\47post-count\47 dir\75\47ltr\47\76(\74data:i.post-count\76\74/data:i.post-count\76)\74/span\76\n\74b:if cond\75\47data:i.data\47\76\n\74b:include data\75\47i.data\47 name\75\47interval\47\76\74/b:include\76\n\74/b:if\76\n\74b:if cond\75\47data:i.posts\47\76\n\74b:include data\75\47i.posts\47 name\75\47posts\47\76\74/b:include\76\n\74/b:if\76\n\74/li\76\n\74/ul\76\n\74/b:loop\076'}, 'toggle': {'varName': 'interval', 'template': '\74b:if cond\75\47data:interval.toggleId\47\76\n\74b:if cond\75\47data:interval.expclass \75\75 \46quot;expanded\46quot;\47\76\n\74a class\75\47toggle\47 href\75\47javascript:void(0)\47\76\n\74span class\75\47zippy toggle-open\47\76\46#9660;\46#160;\74/span\76\n\74/a\76\n\74b:else\76\74/b:else\76\n\74a class\75\47toggle\47 href\75\47javascript:void(0)\47\76\n\74span class\75\47zippy\47\76\n\74b:if cond\75\47data:blog.languageDirection \75\75 \46quot;rtl\46quot;\47\76\n          \46#9668;\46#160;\n        \74b:else\76\74/b:else\76\n          \46#9658;\46#160;\n        \74/b:if\76\n\74/span\76\n\74/a\76\n\74/b:if\76\n\74/b:if\076'}, 'posts': {'varName': 'posts', 'template': '\74ul class\75\47posts\47\76\n\74b:loop values\75\47data:posts\47 var\75\47i\47\76\n\74li\76\74a expr:href\75\47data:i.url\47\76\74data:i.title\76\74/data:i.title\76\74/a\76\74/li\76\n\74/b:loop\76\n\74/ul\076'}}, document.getElementById('BlogArchive1'), {'languageDirection': 'ltr'}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML9', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML9'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML5', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML5'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML2'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML4', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML4'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML8'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML6', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML6'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_TextView', new _WidgetInfo('Text4', 'sidebar',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('Text4'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_AdSenseView', new _WidgetInfo('AdSense1', 'sidebar',{'main': {'varName': '', 'template': '\74div class\75\47widget-content\47\76\n\74data:adCode\76\74/data:adCode\76\n\74b:include name\75\47quickedit\47\76\74/b:include\76\n\74/div\076'}}, document.getElementById('AdSense1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML7', 'header',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('HTML7'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_ImageView', new _WidgetInfo('Image1', 'header',{'main': {'varName': '', 'template': '\74b:if cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74b:if cond\75\47data:link !\75 \46quot;\46quot;\47\76\n\74a expr:href\75\47data:link\47\76\n\74img expr:alt\75\47data:title\47 expr:height\75\47data:height\47 expr:id\75\47data:widget.instanceId + \46quot;_img\46quot;\47 expr:src\75\47data:sourceUrl\47 expr:width\75\47data:width\47/\76\n\74/a\76\n\74b:else\76\74/b:else\76\n\74img expr:alt\75\47data:title\47 expr:height\75\47data:height\47 expr:id\75\47data:widget.instanceId + \46quot;_img\46quot;\47 expr:src\75\47data:sourceUrl\47 expr:width\75\47data:width\47/\76\n\74/b:if\76\n\74br/\76\n\74b:if cond\75\47data:caption !\75 \46quot;\46quot;\47\76\n\74span class\75\47caption\47\76\74data:caption\76\74/data:caption\76\74/span\76\n\74/b:if\76\n\74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, document.getElementById('Image1'), {'resize': false}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header'));
_WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar'));
_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main',{'main': {'varName': 'top', 'template': '\74div class\75\47blog-posts hfeed\47\76\n\74b:include data\75\47top\47 name\75\47status-message\47\76\74/b:include\76\n\74data:defaultAdStart\76\74/data:defaultAdStart\76\n\74b:loop values\75\47data:posts\47 var\75\47post\47\76\n\74b:if cond\75\47data:post.dateHeader\47\76\n\74h2 class\75\47date-header\47\76\74data:post.dateHeader\76\74/data:post.dateHeader\76\74/h2\76\n\74/b:if\76\n\74b:include data\75\47post\47 name\75\47post\47\76\74/b:include\76\n\74b:if cond\75\47data:blog.pageType \75\75 \46quot;static_page\46quot;\47\76\n\74b:include data\75\47post\47 name\75\47comments\47\76\74/b:include\76\n\74/b:if\76\n\74b:if cond\75\47data:blog.pageType \75\75 \46quot;item\46quot;\47\76\n\74b:include data\75\47post\47 name\75\47comments\47\76\74/b:include\76\n\74/b:if\76\n\74b:if cond\75\47data:post.includeAd\47\76\n\74b:if cond\75\47data:post.isFirstPost\47\76\n\74data:defaultAdEnd\76\74/data:defaultAdEnd\76\n\74b:else\76\74/b:else\76\n\74data:adEnd\76\74/data:adEnd\76\n\74/b:if\76\n\74div class\75\47inline-ad\47\76\n\74data:adCode\76\74/data:adCode\76\n\74/div\76\n\74data:adStart\76\74/data:adStart\76\n\74/b:if\76\n\74b:if cond\75\47data:post.trackLatency\47\76\n\74data:post.latencyJs\76\74/data:post.latencyJs\76\n\74/b:if\76\n\74/b:loop\76\n\74data:adEnd\76\74/data:adEnd\76\n\74/div\76\n\74b:include name\75\47nextprev\47\76\74/b:include\76\n\74b:include name\75\47feedLinks\47\76\74/b:include\76\n\74b:if cond\75\47data:top.showStars\47\76\n\74script src\75\47http://www.google.com/jsapi\47 type\75\47text/javascript\47\76\74/script\76\n\74script type\75\47text/javascript\47\76\n      google.load(\46quot;annotations\46quot;, \46quot;1\46quot;, {\46quot;locale\46quot;: \46quot;\74data:top.languageCode\76\74/data:top.languageCode\76\46quot;});\n      function initialize() {\n        google.annotations.setApplicationId(\74data:top.blogspotReviews\76\74/data:top.blogspotReviews\76);\n        google.annotations.createAll();\n        google.annotations.fetch();\n      }\n      google.setOnLoadCallback(initialize);\n    \74/script\76\n\74/b:if\076'}, 'nextprev': {'varName': '', 'template': '\74div class\75\47blog-pager\47 id\75\47blog-pager\47\76\n\74b:if cond\75\47data:newerPageUrl\47\76\n\74span id\75\47blog-pager-newer-link\47\76\n\74a class\75\47blog-pager-newer-link\47 expr:href\75\47data:newerPageUrl\47 expr:id\75\47data:widget.instanceId + \46quot;_blog-pager-newer-link\46quot;\47 expr:title\75\47data:newerPageTitle\47\76\74data:newerPageTitle\76\74/data:newerPageTitle\76\74/a\76\n\74/span\76\n\74/b:if\76\n\74b:if cond\75\47data:olderPageUrl\47\76\n\74span id\75\47blog-pager-older-link\47\76\n\74a class\75\47blog-pager-older-link\47 expr:href\75\47data:olderPageUrl\47 expr:id\75\47data:widget.instanceId + \46quot;_blog-pager-older-link\46quot;\47 expr:title\75\47data:olderPageTitle\47\76\74data:olderPageTitle\76\74/data:olderPageTitle\76\74/a\76\n\74/span\76\n\74/b:if\76\n\74b:if cond\75\47data:blog.homepageUrl !\75 data:blog.url\47\76\n\74a class\75\47home-link\47 expr:href\75\47data:blog.homepageUrl\47\76\74data:homeMsg\76\74/data:homeMsg\76\74/a\76\n\74b:else\76\74/b:else\76\n\74b:if cond\75\47data:newerPageUrl\47\76\n\74a class\75\47home-link\47 expr:href\75\47data:blog.homepageUrl\47\76\74data:homeMsg\76\74/data:homeMsg\76\74/a\76\n\74/b:if\76\n\74/b:if\76\n\74/div\76\n\74div class\75\47clear\47\76\74/div\076'}, 'post': {'varName': 'post', 'template': '\74div class\75\47post uncustomized-post-template\47\76\n\74a expr:name\75\47data:post.id\47\76\74/a\76\n\74b:if cond\75\47data:post.title\47\76\n\74h3 class\75\47post-title\47\76\n\74b:if cond\75\47data:post.link\47\76\n\74a expr:href\75\47data:post.link\47\76\74data:post.title\76\74/data:post.title\76\74/a\76\n\74b:else\76\74/b:else\76\n\74b:if cond\75\47data:post.url\47\76\n\74a expr:href\75\47data:post.url\47\76\74data:post.title\76\74/data:post.title\76\74/a\76\n\74b:else\76\74/b:else\76\n\74data:post.title\76\74/data:post.title\76\n\74/b:if\76\n\74/b:if\76\n\74/h3\76\n\74/b:if\76\n\74div class\75\47post-header-line-1\47\76\74/div\76\n\74div class\75\47post-body\47\76\n\74p\76\74data:post.body\76\74/data:post.body\76\74/p\76\n\74div style\75\47clear: both;\47\76\74/div\76\n\74/div\76\n\74div class\75\47post-footer\47\76\n\74p class\75\47post-footer-line post-footer-line-1\47\76\n\74span class\75\47post-author\47\76\n\74b:if cond\75\47data:top.showAuthor\47\76\n\74data:top.authorLabel\76\74/data:top.authorLabel\76\n\74data:post.author\76\74/data:post.author\76\n\74/b:if\76\n\74/span\76\n\74span class\75\47post-timestamp\47\76\n\74b:if cond\75\47data:top.showTimestamp\47\76\n\74data:top.timestampLabel\76\74/data:top.timestampLabel\76\n\74b:if cond\75\47data:post.url\47\76\n\74data:post.timestamp\76\74/data:post.timestamp\76\n\74a class\75\47timestamp-link\47 expr:href\75\47data:post.url\47 title\75\47permanent link\47\76 Permalink. \74b:if cond\75\47data:post.numComments \75\75 1\47\0761 comment. \74b:else\76\74/b:else\76\74data:post.numComments\76\74/data:post.numComments\76 comments. \74/b:if\76 Click here to read post with comments.\74/a\76\n\74/b:if\76\n\74/b:if\76\n\74/span\76\n\74span class\75\47post-comment-link\47\76\n\74b:if cond\75\47data:blog.pageType !\75 \46quot;item\46quot;\47\76\n\74b:if cond\75\47data:post.allowComments\47\76\n\74a class\75\47comment-link\47 expr:href\75\47data:post.addCommentUrl\47 expr:onclick\75\47data:post.addCommentOnclick\47\76Click here to post a comment.\74/a\76\n\74/b:if\76\n\74/b:if\76\n\74/span\76\n\74span class\75\47post-backlinks post-comment-link\47\76\n\74b:if cond\75\47data:blog.pageType !\75 \46quot;item\46quot;\47\76\n\74b:if cond\75\47data:post.showBacklinks\47\76\n\74a class\75\47comment-link\47 expr:href\75\47data:post.url + \46quot;#links\46quot;\47\76\74data:top.backlinkLabel\76\74/data:top.backlinkLabel\76\74/a\76\n\74/b:if\76\n\74/b:if\76\n\74/span\76\n\74span class\75\47post-icons\47\76\n\74b:if cond\75\47data:post.emailPostUrl\47\76\n\74span class\75\47item-action\47\76\n\74a expr:href\75\47data:post.emailPostUrl\47 expr:title\75\47data:top.emailPostMsg\47\76\n\74span class\75\47email-post-icon\47\76\46#160;\74/span\76\n\74/a\76\n\74/span\76\n\74/b:if\76\n\74b:include data\75\47post\47 name\75\47postQuickEdit\47\76\74/b:include\76\n\74/span\76\n\74/p\76\n\74p class\75\47post-footer-line post-footer-line-2\47\76\n\74span class\75\47post-labels\47\76\n\74b:if cond\75\47data:post.labels\47\76\n\74data:postLabelsLabel\76\74/data:postLabelsLabel\76\n\74b:loop values\75\47data:post.labels\47 var\75\47label\47\76\n\74a expr:href\75\47data:label.url\47 rel\75\47tag\47\76\74data:label.name\76\74/data:label.name\76\74/a\76\74b:if cond\75\47data:label.isLast !\75 \46quot;true\46quot;\47\76,\74/b:if\76\n\74/b:loop\76\n\74/b:if\76\n\74/span\76\n\74/p\76\n\74p class\75\47post-footer-line post-footer-line-3\47\76\74/p\76\n\74/div\76\n\74/div\076'}, 'postQuickEdit': {'varName': 'post', 'template': '\74b:if cond\75\47data:post.editUrl\47\76\n\74span expr:class\75\47\46quot;item-control \46quot; + data:post.adminClass\47\76\n\74a expr:href\75\47data:post.editUrl\47 expr:title\75\47data:top.editPostMsg\47\76\n\74img alt\75\47\47 class\75\47icon-action\47 height\75\04718\47 src\75\47http://www.blogger.com/img/icon18_edit_allbkg.gif\47 width\75\04718\47/\76\n\74/a\76\n\74/span\76\n\74/b:if\076'}, 'commentDeleteIcon': {'varName': 'comment', 'template': '\74span expr:class\75\47\46quot;item-control \46quot; + data:comment.adminClass\47\76\n\74a expr:href\75\47data:comment.deleteUrl\47 expr:title\75\47data:top.deleteCommentMsg\47\76\n\74img src\75\47http://www.blogger.com/img/icon_delete13.gif\47/\76\n\74/a\76\n\74/span\076'}, 'backlinkDeleteIcon': {'varName': 'backlink', 'template': '\74span expr:class\75\47\46quot;item-control \46quot; + data:backlink.adminClass\47\76\n\74a expr:href\75\47data:backlink.deleteUrl\47 expr:title\75\47data:top.deleteBacklinkMsg\47\76\n\74img src\75\47http://www.blogger.com/img/icon_delete13.gif\47/\76\n\74/a\76\n\74/span\076'}, 'comments': {'varName': 'post', 'template': '\74div class\75\47comments\47 id\75\47comments\47\76\n\74a name\75\47comments\47\76\74/a\76\n\74b:if cond\75\47data:post.allowComments\47\76\n\74h4\76\n\74b:if cond\75\47data:post.numComments \75\75 1\47\76\n          1 \74data:commentLabel\76\74/data:commentLabel\76:\n        \74b:else\76\74/b:else\76\n\74data:post.numComments\76\74/data:post.numComments\76\n\74data:commentLabelPlural\76\74/data:commentLabelPlural\76:\n        \74/b:if\76\n\74/h4\76\n\74dl id\75\47comments-block\47\76\n\74b:loop values\75\47data:post.comments\47 var\75\47comment\47\76\n\74dt class\75\47comment-author\47 expr:id\75\47\46quot;comment-\46quot; + data:comment.id\47\76\n\74a expr:name\75\47\46quot;comment-\46quot; + data:comment.id\47\76\74/a\76\n\74b:if cond\75\47data:comment.authorUrl\47\76\n\74a expr:href\75\47data:comment.authorUrl\47 rel\75\47nofollow\47\76\74data:comment.author\76\74/data:comment.author\76\74/a\76\n\74b:else\76\74/b:else\76\n\74data:comment.author\76\74/data:comment.author\76\n\74/b:if\76\n\74data:commentPostedByMsg\76\74/data:commentPostedByMsg\76\n\74/dt\76\n\74b:if cond\75\47data:comment.author \75\75 data:post.author\47\76\n\74dd class\75\47comment-body-author\47\76\n\74p\76\74data:comment.body\76\74/data:comment.body\76\74/p\76\n\74/dd\76\n\74b:else\76\74/b:else\76\n\74dd class\75\47comment-body\47\76\n\74b:if cond\75\47data:comment.isDeleted\47\76\n\74span class\75\47deleted-comment\47\76\74data:comment.body\76\74/data:comment.body\76\74/span\76\n\74b:else\76\74/b:else\76\n\74p\76\74data:comment.body\76\74/data:comment.body\76\74/p\76\n\74/b:if\76\n\74/dd\76\n\74/b:if\76\n\74dd class\75\47comment-footer\47\76\n\74span class\75\47comment-timestamp\47\76\n\74a expr:href\75\47\46quot;#comment-\46quot; + data:comment.id\47 title\75\47comment permalink\47\76\n\74data:comment.timestamp\76\74/data:comment.timestamp\76\n\74/a\76\n\74b:include data\75\47comment\47 name\75\47commentDeleteIcon\47\76\74/b:include\76\n\74/span\76\n\74/dd\76\n\74/b:loop\76\n\74/dl\76\n\74p class\75\47comment-footer\47\76\n\74a expr:href\75\47data:post.addCommentUrl\47 expr:onclick\75\47data:post.addCommentOnclick\47\76\74data:postCommentMsg\76\74/data:postCommentMsg\76\74/a\76\n\74/p\76\n\74/b:if\76\n\74div id\75\47backlinks-container\47\76\n\74div expr:id\75\47data:widget.instanceId + \46quot;_backlinks-container\46quot;\47\76\n\74b:if cond\75\47data:post.showBacklinks\47\76\n\74b:include data\75\47post\47 name\75\47backlinks\47\76\74/b:include\76\n\74/b:if\76\n\74/div\76\n\74/div\76\n\74/div\076'}, 'comment-form': {'varName': 'post', 'template': '\74div class\75\47comment-form\47\76\n\74a name\75\47comment-form\47\76\74/a\76\n\74h4 id\75\47comment-post-message\47\76\74data:postCommentMsg\76\74/data:postCommentMsg\76\74/h4\76\n\74p\76\74data:blogCommentMessage\76\74/data:blogCommentMessage\76\74/p\76\n\74data:blogTeamBlogMessage\76\74/data:blogTeamBlogMessage\76\n\74a expr:href\75\47data:post.commentFormIframeSrc\47 id\75\47comment-editor-src\47\76\74/a\76\n\74iframe allowtransparency\75\47true\47 class\75\47blogger-iframe-colorize blogger-comment-from-post\47 frameborder\75\0470\47 height\75\047410\47 id\75\47comment-editor\47 name\75\47comment-editor\47 src\75\47\47 width\75\047100%\47\76\74/iframe\76\n\74data:post.friendConnectJs\76\74/data:post.friendConnectJs\76\n\74data:post.cmtfpIframe\76\74/data:post.cmtfpIframe\76\n\74script type\75\47text/javascript\47\76\n      BLOG_CMT_createIframe(\46#39;\74data:post.appRpcRelayPath\76\74/data:post.appRpcRelayPath\76\46#39;, \46#39;\74data:post.communityId\76\74/data:post.communityId\76\46#39;);\n    \74/script\76\n\74/div\076'}, 'backlinks': {'varName': 'post', 'template': '\74a name\75\47links\47\76\74/a\76\74h4\76\74data:post.backlinksLabel\76\74/data:post.backlinksLabel\76\74/h4\76\n\74b:if cond\75\47data:post.numBacklinks !\75 0\47\76\n\74dl class\75\47comments-block\47 id\75\47comments-block\47\76\n\74b:loop values\75\47data:post.backlinks\47 var\75\47backlink\47\76\n\74div class\75\47collapsed-backlink backlink-control\47\76\n\74dt class\75\47comment-title\47\76\n\74span class\75\47backlink-toggle-zippy\47\76\46#160;\74/span\76\n\74a expr:href\75\47data:backlink.url\47 rel\75\47nofollow\47\76\74data:backlink.title\76\74/data:backlink.title\76\74/a\76\n\74b:include data\75\47backlink\47 name\75\47backlinkDeleteIcon\47\76\74/b:include\76\n\74/dt\76\n\74dd class\75\47comment-body collapseable\47\76\n\74data:backlink.snippet\76\74/data:backlink.snippet\76\n\74/dd\76\n\74dd class\75\47comment-footer collapseable\47\76\n\74span class\75\47comment-author\47\76\74data:post.authorLabel\76\74/data:post.authorLabel\76\n\74data:backlink.author\76\74/data:backlink.author\76\74/span\76\n\74span class\75\47comment-timestamp\47\76\74data:post.timestampLabel\76\74/data:post.timestampLabel\76\n\74data:backlink.timestamp\76\74/data:backlink.timestamp\76\74/span\76\n\74/dd\76\n\74/div\76\n\74/b:loop\76\n\74/dl\76\n\74/b:if\76\n\74p class\75\47comment-footer\47\76\n\74a class\75\47comment-link\47 expr:href\75\47data:post.createLinkUrl\47 expr:id\75\47data:widget.instanceId + \46quot;_backlinks-create-link\46quot;\47 target\75\47_blank\47\76\74data:post.createLinkLabel\76\74/data:post.createLinkLabel\76\74/a\76\n\74/p\076'}, 'feedLinks': {'varName': '', 'template': '\74b:if cond\75\47data:blog.pageType !\75 \46quot;item\46quot;\47\76\n\74b:if cond\75\47data:feedLinks\47\76\n\74div class\75\47blog-feeds\47\76\n\74b:include data\75\47feedLinks\47 name\75\47feedLinksBody\47\76\74/b:include\76\n\74/div\76\n\74/b:if\76\n\74b:else\76\74/b:else\76\n\74div class\75\47post-feeds\47\76\n\74b:loop values\75\47data:posts\47 var\75\47post\47\76\n\74b:if cond\75\47data:post.allowComments\47\76\n\74b:if cond\75\47data:post.feedLinks\47\76\n\74b:include data\75\47post.feedLinks\47 name\75\47feedLinksBody\47\76\74/b:include\76\n\74/b:if\76\n\74/b:if\76\n\74/b:loop\76\n\74/div\76\n\74/b:if\076'}, 'feedLinksBody': {'varName': 'links', 'template': '\74div class\75\47feed-links\47\76\n\74data:feedLinksMsg\76\74/data:feedLinksMsg\76\n\74b:loop values\75\47data:links\47 var\75\47f\47\76\n\74a class\75\47feed-link\47 expr:href\75\47data:f.url\47 expr:type\75\47data:f.mimeType\47 target\75\47_blank\47\76\74data:f.name\76\74/data:f.name\76 (\74data:f.feedType\76\74/data:f.feedType\76)\74/a\76\n\74/b:loop\76\n\74/div\076'}, 'status-message': {'varName': '', 'template': '\74b:if cond\75\47data:navMessage\47\76\n\74div class\75\47status-msg-wrap\47\76\n\74div class\75\47status-msg-body\47\76\n\74data:navMessage\76\74/data:navMessage\76\n\74/div\76\n\74div class\75\47status-msg-border\47\76\n\74div class\75\47status-msg-bg\47\76\n\74div class\75\47status-msg-hidden\47\76\74data:navMessage\76\74/data:navMessage\76\74/div\76\n\74/div\76\n\74/div\76\n\74/div\76\n\74div style\75\47clear: both;\47\76\74/div\76\n\74/b:if\076'}}, document.getElementById('Blog1'), {'showBacklinks': true, 'postId': '709159788087409157'}, 'displayModeFull'));
Mobile Opportunity: The iPhone SDK: Apple gets it right
 date: 	Fri, 18 Dec 2009
   id: 	15934
 href: 	http://mobileopportunity.blogspot.com/2008/03/iphone-sdk-apple-gets-it-right.html