Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-settings.php on line 512

Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-settings.php on line 527

Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-settings.php on line 534

Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-settings.php on line 570

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1244

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/classes.php on line 1442

Strict Standards: Redefining already defined constructor for class wpdb in /home/martingo/martingordon.org/blog/wp-includes/wp-db.php on line 306

Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-includes/cache.php on line 103

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/martingo/martingordon.org/blog/wp-includes/cache.php on line 431

Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-includes/query.php on line 61

Deprecated: Assigning the return value of new by reference is deprecated in /home/martingo/martingordon.org/blog/wp-includes/theme.php on line 1109

Strict Standards: Declaration of Walker_Comment::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/martingo/martingordon.org/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/martingo/martingordon.org/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::start_el() should be compatible with Walker::start_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_el() should be compatible with Walker::end_el(&$output) in /home/martingo/martingordon.org/blog/wp-includes/comment-template.php on line 1266

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /home/martingo/martingordon.org/blog/wp-includes/class.wp-dependencies.php on line 31

Strict Standards: Redefining already defined constructor for class WP_Http in /home/martingo/martingordon.org/blog/wp-includes/http.php on line 61

Strict Standards: Non-static method unfancy_quote::init() should not be called statically in /home/martingo/martingordon.org/blog/wp-content/plugins/sem-unfancy-quote/sem-unfancy-quote.php on line 55
<br /> <b>Strict Standards</b>: call_user_func_array() expects parameter 1 to be a valid callback, non-static method unfancy_quote::strip_quotes() should not be called statically in <b>/home/martingo/martingordon.org/blog/wp-includes/plugin.php</b> on line <b>166</b><br /> Martin Gordon's Blog / iphone

On Podcaster and App Store Rejections

Podcaster, an iPhone app that downloads podcasts over-the-air, was rejected from the App Store this past Friday on account of it "duplicating iTunes functionality." The Mac community is justifiable upset, with at least one developer refusing to develop any more apps, and others looking to coordinate some form of organized protest. I think that many are confounding two separate issues that the Podcaster rejection raises. First, that there are App Store approval guidelines that extend being what is listed in the developer agreement, and second, that Apple has seemingly decided to not allow any third party applications to compete with their own.

The first issue is not new. I wrote about it in my post about Flickup being rejected and we've seen it many times of the past couple of months. This incident just gives us yet another item to add to our unofficial approval guidelines. That these guidelines are (1) not published provided by Apple, and (2) a result of trial and error on the part of many very frustrated developers is inexcusable and irresponsible. As both Fraser Speirs and Paul Kafasis mention, development takes time, effort and money, and without a reasonable expectation that an app will be approved makes the App Store that much more unappealing to develop for, scares away developers and undermines Apple's goal of building a long-lasting ecosystem around its mobile operating system.

The solution, of course, is simple. Apple needs to release an all-inclusive set of guidelines. Knowing what is off-limits cuts developers off from the get go instead of forcing them to develop an app and spin the roulette wheel. Developers may not be happy that they can't release an app that does X, but at least they'll know before pouring weeks into development. A scary, but entirely possible situation is that Apple hasn't released such a document because even they aren't sure exactly what's in it.

The second issue is the anti-competitive nature of this specific rejection. I don't want to spend too much time extrapolating meaning from this specific rejection, particularly the common view that this rejection indicates that Apple won't allow any application into the store that competes with *any* of its products. I don't see Apple being stupid enough to actually have an explicit non-complete policy in place, so my view is that this is simply a case of a reviewer not fully understanding Apple's (currently nonpublic) approval guidelines and I fully expect Apple to correct this mistake. Until we see more cases of this anti-competitive policy being applied, I don't think we should go running for the hills just yet.

Technorati Tags: , , , , ,

Crazy Easy

Merlin Mann on iPhone development (from the SF iPhone Dev Camp):

Think about having the courageousness to make an app that is crazy easy. Instead of making a circus that’s really fun to play in, just make something that’s easy to get in and out of quickly without hassle.

Yes! This is exactly what I'm going for with Flickup. I wanted it to be dead simple to post photos to Flickr and I think I've gotten pretty close. While I don't want to add frivolous features, there are some that are reasonable to consider - uploading to a set, security settings, etc. I struggled to fit the metadata view onto one screen and now I'm faced with the challenge of adding these new features without undermining the simplicity that I was going for in 1.0.

Technorati Tags: , , , , , ,

Flickup 1.0 Is Out!

A few hours after my post about being rejected from the App Store, Flickup was approved. If that was all there was to the story then I would have posted about it immediately. Sadly, however, it took nine days from the time Flickup was approved until the time it was actually available for sale on the App Store.

In preparing the now-defunct demo version of Flickup, I stumbled across the contracts page on iTunes Connect and realized that my Paid Applications Contract wasn't complete. I completed it on July 17th and incessantly refreshed the contracts page to see if it had been approved yet. When Flickup was finally approved hours after my last blog post, I was met with the status of "Pending Contract" and frustration returned. I would have thought that three days would have been enough time for someone to review the contract, but apparently that wasn't the case. Having given Apple some breathing room, I finally sent them an email on the 24th asking how long the process would take. Their response? Nothing.

I didn't hear anything from Apple until the contract was approval last Monday, July 28th and the status changed to "Ready For Sale." When I finally got tired of searching the App Store every few minutes to see if Flickup was listed, I sent Apple another email. Again I received no response. It wasn't until I saw a tweet from Jon that I learned that Flickup had finally been posted and that the three week ordeal was finally over.

When I first started working on Flickup I set a lifetime sales goal ("If only X number of people ever buy the app, I would be satisfied"). I'm happy to say that I reached 10% of that target in the first full day alone. Since the app went live, I've been answering support emails (already!), pushed out (well, submitted to Apple anyway) a new version with some bug fixes, and already started working on some new features.

Now go out and buy it!

Technorati Tags: , , , , ,

Rejected (Twice!) From the App Store

I am now a proud member of the elite group of developers who have had applications rejected from the iPhone App Store.

The application I have been working on since a few weeks after the SDK came out is Flickup, a simple Flickr uploader. When Apple announced the July 7th deadline, I pulled an all-nighter that day to finish it up and submitted the app to Apple around 6am in order to meet the 3pm deadline for inclusion in the App Store at launch. When the App Store is launched on Thursday/Friday, my app is nowhere to be found and the status remains "In Review". I sent an email on Saturday to Apple asking why Flickup was still in review and I received a non-response three days later telling me that "In Review" means my application is being reviewed by Apple. I responded immediately clarifying my inquiry and I finally received this response yesterday:

At this time, Flickup cannot be posted to the App Store because it does not allow the user to logout or change the Flickr account that they are using.

In order for your application to be reconsidered for the App Store, please resolve this issue and upload your new binary to iTunes Connect.

This is a perfectly valid critique, and an oversight on my part, but did it really take them two weeks to tell me about it? Would they have even told me had I not emailed them about my app's status? In any case, the time it took to get a decision on Flickup gave me time to fix some bugs, and of course add the required logout functionality.

As an aside, the Flickr Authentication API's Implementation Guidelines merely states, "Users must be provided with 'logout' functionality." The API documentation does not provide any way to revoke tokens and log users out. I had to resort to directing users to their revoke permissions page instead.

In the mean time, the App Store turned one week old and gripes about the review functionality sprouted everywhere, particularly with regard to the ability for people to review an app without actually having used it. This "feature" of the App Store prompted the cheapskates out there to use reviews as a medium to complain about price. Taking this to heart, I spent some time last week preparing a demo version of Flickup that would allow people to sample the app before dropping two Washingtons on the full version. I submitted the demo version on Friday and received a decision today:

Flickup Demo cannot be posted to the App Store because it is a beta or feature-limited version. Any reference to demo or beta needs to be removed from the binary and metadata. Free or "Lite" versions are acceptable, however the application must be a fully functional app and cannot reference features that are not implemented or up-sell to the full version.

In spite of the lightning fast turnaround time, I am still just as angry about this rejection than the last one since there was no prior warning (in program agreements or otherwise) that demo versions would not be allowed. It's hard to believe that Apple isn't aware that people are crying out for demos and trials; going as far as explicitly prohibiting them (while letting all other sorts of crap through) is nothing short of infuriating.

Technorati Tags: , , , ,

Lifehacker Condones Software Piracy

It always infuriates me when large tech blogs have seemingly innocuous posts on how to get "free" applications or violate EULAs (like CrunchGear did back when Leopard was released by telling advising readers to split a copy of the OS to get it for half off).

It happened again yesterday when Lifehacker linked to an article instructing users on how to get the apps included in the iPod touch's $20 January update for free. Whether or not you agree with Apple's decision to charge $20 for apps that came for "free" on the iPhone, stealing the apps is wrong. If you don't feel $20 is worth it, you aren't entitled to get the apps for free. It's as simple as that.

Technorati Tags: , , , , ,

iPhone App Gold Rush

With 100,000 iPhone SDK downloads, the relative simplicity of the platform and the popularity of the iPhone, there's no doubt we'll be seeing tons of iPhone applications being released as soon as the App Store goes live. But will those apps be any good?

Brent Simmons, author of NetNewsWire, thinks we'll see a ton of to-do lists and Twitter clients. He's right: Apple has failed to provide a to-do list app for iPhone OS (or Mac OS X, for that matter) and people have complained about it since June 29, 2007. Twitter is also the love du jour of techies everywhere and an iPhone app would be much better than the web interface (look no further than Iconfactory's Twitterrific on the desktop for proof). I am personally working on an app that combines the two ;-)

Brent also thinks that the money is in the Cloud. He states that standalone iPhone apps are easy and cheap enough to write and too boring to use. The most interesting apps will be those that sync to the cloud. It's the development, maintenance and scaling of the server apps that will be expensive, and that's where he sees much of the iFund money going. Time to become an expert on NSURLConnection!

I can't help but agree. One app I'm working for will tie into a web app we've written internally - the API isn't currently there, but it will be. Blossom (as we call it) won't be the most revolutionary iPhone app out there, but it is a good testing ground for client-server iPhone apps. I've got ideas for other apps too, and the thing they have in common is that they all tie back into the Cloud. The 1st iPhone "SDK" (web apps) was far from perfect, but if it did anything, it helped developers focus their attention on where it should be - the Cloud.

Technorati Tags: , , , , , , , , , ,

The MacBook Air's Emotional Specs

The MacBook Air is selling well, Ars Technica reports, with many stores reporting stock shortages and long lead times.

As Railsdaddy David Heinemeier Hansson mentions, this probably comes as a surprise to geeks all over the blogosphere, who were largely focused on the shortcomings of the tech specs - the relatively slow processor, shortage of ports, etc, and not focusing enough on the design and feel of it. Whether it takes 20 minutes or 30 minutes to convert a movie to iPod format is largely irrelevant, what is more noticeable (and therefore more important) is the general feeling of delight (or despair) one feels when using any device. Remember the awe people experienced when flicking images back and forth on the iPhone? Similar experiences abound on the MacBook Air - the feeling of not feeling like you're carrying a laptop, the feeling of not feeling like there's a computer under your keyboard - these are the specs, emotional specs, if you will, that are causing people to buy MacBooks Air. Indeed, the MacBook Air is just another in the long list of examples that prove that Apple is destroying the competition when it comes to emotional specs.

Technorati Tags: , , , , ,

Apple Bumps iPhone, iPod touch Storage

In a stealth update this morning, Apple introduced new models of the iPhone and iPod touch with increased storage. Both lines received new models priced at $499, the new iPhone having 16GB of storage (double the previously available 8GB) and the new iPod touch having 32GB of storage (double the previously available max of 16GB). None of the other specifications have changed.

Introducing new models with increased storage space seems like a logical move on Apple's part. The new models have practically no R&D costs and might bump up demand for the devices while Apple prepares the 2nd generation iPhone, which many speculate will be released this summer. Of course, Apple hopes that the 8GB iPhone will go the way of the 4GB iPhone. That is, that almost everyone will be willing to spend the extra $100 to double the capacity of their phones.

Something interesting to note is that the iPod touch now has the same storage capacity as the low-end 5G iPods that were discontinued last September (albeit at double the price) and that the price points and storage amounts echo that of the 3rd generation iPods, which came in at 10/15/30 GB for $299-$399. Given another doubling of storage and the iPod touch will be closing in on the iPod classic's storage capacity. Meanwhile, Apple has kept around the $299 8GB iPod touch, most likely in an effort to hit all types of iPod buyers and signaling that the touch is definitely set to become the mainstream iPod sooner or later.

Technorati Tags: , , ,

Custom iPhone Web Clip Icons

I was planning on writing about the Apple TV that I'm planning on buying soon, but instead I got caught up on iPhone Web Clips. Right after I installed the new iPhone update, I went to add my three favorite mobile sites, Twitter, Google Reader, and Facebook to my home screen. Suffice it to say that I was pretty disappointed when the three icons looked like white squares with some specks of dirt, thanks to their mobile-optimized design. I tried for about 10 minutes to come up with a way to write a page that will prepend the icon link to the mobile sites and give me custom icons, but nothing came out of that exercise.

Today, I came across a post by Paul Robinson linking to a solution to this by Matt McInerney. The solution is rather simple, and involves a few lines of Javascript to redirect visitors to the intended site after 2 seconds, enough time to hit the "+" button in MobileSafari and bookmark the page. I created pages for the three sites noted above, bookmarked them and then changed the redirect timeout to 0 seconds and voila, custom icons!

Technorati Tags: , , , , ,

Jailbreakers Fix iPhone TIFF Exploit

Enabling third-party applications on your iPhone has never been easier. Just visit jailbreakme.com on your iPhone/iPod touch (hereafter "iPhone"), and thanks to a TIFF exploit in MobileSafari, the website will jailbreak the phone and install Installer.app. As an added bonus, the process will patch the exploit it used to hack your iPhone in the first place. And who said all hackers were bad?

Technorati Tags: , , , , , ,