It is 1 a.m. Wednesday/Thursday night. The iPad will be released Saturday. I am about to go to sleep as I hear the notorious “Ding” from my inbox. It is an email from Apple’s app review team. I have been working hard the last couple of weeks trying to finish an update of our app Strip Designer [iTunes Store] with support for the iPad in time for the iPad launch. The email is an unpleasant surprise; Apple could not accept the update of Strip Designer because it crashed on some of their devices. If I want to be part of the grand opening of the iPad app store, I have to fix the crash and resubmit the update before 2 a.m. local time.
I look at the crash reports I got from Apple. “1 hour left”. Not much time. I cannot understand why the app had crashed. The crash report doesn’t make sense. Does it crash on any of my devices? No, it doesn’t. 50 minutes left. My heart starts to beat faster. The app was pre-approved before. What has changed? What is wrong? I look at the crash reports again. Still not making sense. I search the internet and Apple’s developer forums. Still no luck. 30 minutes.
Could something have gone wrong with the build I sent to Apple? I take a chance. I rebuild everything and submit. “After all, the worst that can happen is that they reject it again, right?”.
Thursday evening iPad capable apps start appearing on the app store. I am out enjoying a few beers after an already long week. Finally, at 1 a.m. Thursday/Friday night, I get the email from Apple. The app has been approved and will appear shortly. Sure enough there it is: A universal app with a nice little ‘+’ icon next to it. I go to sleep hoping that everything will be OK.
5 a.m. Friday morning. Why did I wake up now? Something feels wrong? I check my email. 15 emails from people complaining that the update doesn’t work. Oh, no. What happened? Apple approved it, so why doesn’t it work then? I download the app from the app store. Sure enough that version crashes on launch, but the one I installed directly from my Mac doesn’t. This update goes out to many thousands of users. I cannot cancel it. What can I do? Why does it crash?
I look in the project settings in XCode. Something must be different between the release build and distribution build. Yes, distribution has “Compile for Thumb” enabled, my own build doesn’t. That doesn’t explain the crash though, so I add checks at various spots in the code.
After 2 hours I realize that, in thumb mode the compiler generates some code that calls a function, which is expected in a dynamic link library. The function doesn’t exist in iPhone OS prior to 3.2 which is the target OS for the iPad, so the app crashes when it cannot find that function. Also, the compiler doesn’t generate the same code for the armv7 version of the app, so it should still work on the iPad, iPhone 3GS, and newer iPods, but will crash on all other devices. That’s why Apple caught the first time and not the second — They didn’t test the app with an iPhone 3G the second time.
I try different ways to fix it. The only one that looks like it works is to disable “Compile for Thumb”. This will make the app run faster and it should have been disabled anyway, but I don’t know why this works or if it will cause other bugs. I have to do something, so I resubmit to Apple. I hope the review team gives this high priority somehow, but I know from experience that they probably cannot.
9. a.m. I have uploaded the new version to Apple’s review system. I check the iTunes app store. Already ten negative reviews and fourteen 1 star ratings for the update. That’s terrible, but no surprise given that a lot of people can no longer use the app at all. At the time, it is in the top 100 list on the Australian app store because it got featured under New and Noteworthy there. I have at least 100 new Australian users a day and many many more in the rest of the world. Only those of them with an iPhone 3GS or newer version of the iPod will be able to even start the app. I have to do something. I cannot remove it from the app store, because I don’t know what the ramifications of that will be. What if that makes it impossible for people to get the fixed update I just submitted? I change the availability date to sometime in the future and write a warning message to people on the iTunes store. I also start replying all the emails I have received.
11 a.m. changing the availability date worked. The app has disappeared from the iTunes app store, so at least people cannot buy it anymore. Now I just have to wait for Apple to approve the update so my old customers can get the fixed update? Sometimes that takes less than 24 hours, but it could take days. Even weeks if I am very unlucky. I cross my fingers hoping that the app will be approved in time for the iPad launch.
It is 10 p.m. Friday evening. I haven’t heard anything all day, but suddenly it is there; The email I have been waiting for from Apple. It isn’t what I wanted though. It is a rejection. Apparently the review team decided that the app they had previously approved twice didn’t follow the UI design guidelines on the iPad; Something about the popovers not rotating with the device and appearing in the wrong locations. I thought the iPad SDK would do that automatically. I get cracking.
1 a.m. I submit again. Wonder when I’ll hear from them this time.
Saturday/Sunday night 12.02 a.m., 23 hours later, I hear from them. The same popover can appear multiple times at the same time. Whoops. Why didn’t I test it? I fix it and resubmit within 20 minutes.
Next day is Sunday. Does Apple’s review team work on Sundays? I check all emails I have ever received from them. Never received anything from them on a Sunday. I search on the Internet. Nothing about the review team working on Sundays. There is something about the review team only consisting of 40 people. I can’t believe it. Some say they get flooded with 8000 new apps a week. It must be really hard work.
I hear nothing Sunday. Then suddenly Monday evening at 8.30 p.m. I get an email from them:”The review will take additional time”. Oh, no. Why? I write a frustrated email back to them about how important it is to get this app out for all my users.
11.16 p.m. I get an email from someone at Apple. “Call me at this number …”. I call her. She says I am violating the human interface guidelines with some of my custom UI. I try to explain her that really I am not and I technically I cannot even do that, because of such and such. She talks to her boss and calls me back. “Sorry, I doesn’t matter if those are custom views. They cannot look like they do.” I ask her what they are allowed to look like, but she cannot help. Frustrated I change the look of my views, and resubmit.
Wednesday 4.46 p.m. I get the email from Apple that I have been waiting for for almost a week. The app is now ready for sale.
Thursday 11 a.m. FedEx ring my doorbell. It is my new iPad. I can finally test the app myself on the real hardware for the first time. I immediately start working on the next update.
Now, why did I get so worked up over all of this and waited in standby-mode entire days for emails from Apple’s review team, so that I could fix problems instantly and in the middle of the night? Because I knew I could make many users happy. While I know that my apps have reached tens of thousands (and in one instance hundreds of thousands) of users, I really take great pleasure in every single customer email I get (good or bad), because that means someone out there really cares about what I do. While I got a lot of emails about the failed update, most users were quick to write that they liked the app, and that they were very disappointed that it was broken. This is the kind of feedback that makes the hard work worthwhile. Getting feedback, is something that you rarely experience as a software developer working in a large cooperation.
However, success on the app store is really really hard. The competition is immense. Unless you have an awesome and ingenious idea for an app, this is not the place for a single developer, or a large team for that matter. You either need a lot of luck, or you have to make something extraordinary so that Apple will give you a push in the right direction. We have had three apps featured on the US store, either as staff favorites or in the New and Noteworthy section. This is what you need in order to get a large customer base. Without that, your app will likely get lost among the 180,000 other apps. We didn’t exactly get rich but I cannot really complain either. Anyway, this isn’t about the money, it is about doing something that you like.
Apple’s excellent and inspiring SDK makes it easy and a joy to develop for their touch based devices. It is simply a pleasure to write code for this platform. Of course, Apple’s review process can be a bit annoying from time to time. Recently, we had the iPad version of Strip Designer rejected because a background looked too much like the one Apple uses in their iPad apps’ or because we violated their human interface guidelines — And here I thought guidelines were supposed to be guiding not defining. On the other hand, Apple’s review team has caught a couple of nasty bugs in our apps in the past, and I am grateful for that. Generally, I actually think getting apps on the app store is a pretty smooth ride.
At the same time, Apple has redefined consumer computing and made it easy to reach many thousands of customers that wouldn’t even know how to, or even want to, buy, download, or install applications on regular computers. There is nothing more gratifying for a software developer than to know that your code is being run by many thousands of users all over the world.
Then there is the hardware. Make no mistake. While they look nice, and the touch screen makes them exciting devices to use, the iPhone and now the iPad are also quite capable computers. I think that as soon as we developers get a little bit better feel for the graphics and CPU capabilities of the iPad, you’ll see many more “real” applications that are exciting touch-based counterparts of otherwise boring desktop applications. Apple’s three iWork applications are just the beginning. The original iPhone was as capable as a PC or Mac from 2001; an extremely powerful device in your pocket. The iPad has an even more powerful processor and a larger screen. I only wish, it had a bit more memory, but this is no toy computer or photo frame.
Finally, everything you could do on a Mac or PC 5-10 years ago, you can theoretically do on the iPhone, iPod touch, and now the iPad — And because of the touch screen, and because the iPhone OS is a redesigned and rethought OS without all the baggage that the desktop operating system have, we now have a chance to make it better.
This is the most exciting place to be in software development today. That’s why I am here!