August 3, 2014

The Indie Dev Debate

There have been a lot of blog posts and discussions about being an Indie dev and where App Store development might be headed, recently. I certainly don’t belong in the Indie dev category – at least according to Brent Simmons’ definition. But since opinion is free, I thought I’d add my two cents to the discussion 🙂

Since others are discussing their revenue figures, I thought I’d also offer a look at what I’ve made in developing for the Apple App Store. But before I do that, some background might be in order.

I started as a developer close to 25 years ago. I did a lot of work originally on databases and then moved to Windows development around ’98 or ’99. I wasn’t very interested in making money at first and released several apps as freeware. In fact, one of my first apps was a blogging application which allowed you to blog from your desktop and this was back in the days when Blogger and Greymatter were first starting out, in the very early days of blogging.

Time passed and I continued to develop my freeware applications. I moved from the US, where I’d been when I originally started doing my freeware, back to my native Sri Lanka. I eventually thought about charging for my apps, but back then it was impossible to do so from Sri Lanka. In fact, I don’t think you still can do that easily from Sri Lanka, but I don’t know for sure since I’m no longer in Sri Lanka.

Then, while I was still in Sri Lanka, I read about the Apple App Store and how people were earning thousands of dollars a month in revenue on the App Store. I had used Macs before but my main development platform had been Windows up to that point. I decided to try my luck on the App Store and after some discussions with my wife, went out and bought a MacBook, downloaded Xcode and started development. I have not looked back on Windows since then 🙂

I think my first app was submitted to the App Store sometime back in March of 2009. It was a basic nursery rhyme app to keep little kids entertained. It didn’t have good artwork or music since I was relying on what was available in the public domain – I was doing an experiment after all. I believe I coded the app in around two weeks and submitted it.

Of course, I wasn’t expecting to be rolling in money 🙂 In fact, I had no huge expectations at all. I simply wanted to see how things would work out. But I wasn’t going to twiddle my thumbs and wait to see the fate of my first app – I was already working on my second app. However, I wasn’t relying on the income from my apps at all – I was doing other consulting work (not iOS development related) too. The App Store revenue, if any came at all, was supposed to pay for the MacBook and for the Apple developer license. That was it.

Over the course of the next two years or so, I developed around 20 more apps. Most of them developed in about two weeks time or so. Some did well, some sank without a trace 🙂 I provided support when necessary, fixed bugs, updated some of the apps, and continued to work on new ideas and to develop new apps.

But while I did a huge number of apps in my first year and a fair number in my second year, my development pace slowed as my portfolio of iOS apps grew and I started getting consulting jobs from around the globe. Incidentally, I never did any substantial iOS projects in Sri Lanka, where I was still at that time. I think I did one app for an outsourcing company, but they complained about my rates and promised me that I would have more work if I would reduce my rates. I didn’t agree and that was that 🙂

Even then, I believed that where you were didn’t matter – you had to charge what you thought you were worth. But most of the people I talked to about work didn’t seem to believe that 🙂 Even though I delivered most projects in half (or even a quarter, in one case) of the time that it took others, I was still expected to quote the same hourly rate as others from India or Eastern Europe. So my projects were few and far between, but when I did find good clients who appreciated good work, the relationship was a long one. So I wasn’t actually doing badly.

In fact, I was steadily doing more and more contracting work and so work on my personal apps slowed. I probably did about 10 apps in the last few years and while I’m still working on a couple of apps even today, they are personal projects that I want developed for my own use. I’ll probably release them at some point when I feel they are polished enough, but I’m not rushing to release apps as I once used to.

But on to more important matters, if you are reading to find out about the money I’ve made, that is. How much have I made in around five years of App Store presence and over 25 apps submitted? The figure might surprise you (or maybe it won’t) – I only made around $8,000 in that time 🙂 (Yes, I made far more in consulting, but we’re discussing App Store revenue here.)

Here’s a chart showing the breakdown from March ’09 to April ’14. (We had to switch companies in 2014 due to us switching countries – so the revenue since then is under a different company account.)

App Store Sales 2009 - 2014

App Store Sales 2009 – 2014

As the chart above shows, in five years’ time we had over 666,000 downloads but made only about $7,800 from around 25 apps 🙂

Now I must mentions that the above figures aren’t quite accurate. Some of the apps shown above are free apps with advertising and the advertising revenue is not included here since that revenue came from AdMob. I don’t know what the figures there are but if anybody is interested, I can certainly do another post about the ad revenue figures.

But from the App Store itself, we haven’t made a lot of money. Sure, we did meet our original goal of paying for the MacBook and the Apple Developer license (and I think we paid for a few other iDevices we bought along the way too …) but that’s about it.

And the figures look even worse after we moved everything to the new company – over the past three months or so, we’ve made about $55 😀

But I’m not complaining. For one thing, the iOS apps I’ve developed have helped me create a portfolio that initially helped me in getting contract work. As others have also mentioned, each app that I’ve developed has also helped me understand more about iOS development, the App Store, and about developing and working with users in general. And can you really put a price on that kind of experience? I’m not sure you can.

So is being an Indie hard? Yes. Is it impossible? It might be if you narrow the definition of Indie to mean somebody who makes a living by just App Store sales. But even then, it probably isn’t impossible. You just have to figure out your approach, your pricing, and your strategy carefully. And create an app that you really believe in – instead of simply working on something in the hopes of sipping drinks on the beach of your own island that you’d buy with your App Store profits 🙂

But if being an Indie simply means being somebody who works for themselves, who makes their own hours and relies on the money they make from development, whether it is App Store sales or contracting work, instead of relying on a monthly salary, then it becomes much easier 🙂 You still have to work hard, but the road isn’t that difficult. At least, from where I’m standing.

What I’m trying to say is that it’s not all doom and gloom. The App Store has always been a competitive place. Sure the competition is tougher now, but that just means that your app has to be that much better. And if you are determined, I believe you can make it as an Indie whether you start today, or you started in the supposed heyday of the App Store gold rush 🙂

Posted by Fahim at 7:21 am  |  No Comments

August 22, 2009

Applying Torque to Game Development II

When I wrote my first entry about iTGB and GarageGames, I mentioned that I would do a second post detailing my actual experience using iTGB and my impressions of it. So this is where I do that 🙂

But before I get started on that, I should mention one thing – the people I talked to at GarageGames were not sales people. GG does not appear to have any sales people as such. Everybody appears to wear several hats at GG and the people I spoke to were involved in development and documentation as well as handling the workload on the support forums. This might be another reason why things were so chaotic and I, as a potential customer, wasn’t getting the answers I wanted. But then again, I heard from somebody else later who said that they got an immediate response from GG, so maybe it was just me 🙂

But enough of that, on to the actual evaluation of iTGB. Now the way GG appears to position iTGB is that anybody who can work with their demo version of TGB can get going on iTGB quite easily. Unfortunately, this is not quite the case. If you have some knowledge of XCode and know how to troubleshoot XCode projects and so on, then you can get iTGB to work after some fiddling around. The default project that they ship with iTGB is not configured correctly. If I recall correctly, it was compiling the application under one name but was trying to launch it after compilation as another name and so would always say something like “Application <name> is not found at this location” or something to that effect. This could potentially confuse a user who bought the app thinking that things just worked out of the box.

In fact, the whole feel of iTGB is that it’s not quite ready for primetime. It’ll work but only if you are willing to put the time and the work in. You might have to go trawling through the source code to figure things out. You might have to modify source code. You might have to search the GG forums till you find a solution. You might have to apply patches. And so on. It’s rather deceptive of GG to sell it as a complete product when they don’t appear to have a complete product nor are they willing to support customers who’ve purchased the product and are having trouble with it after they bought it.

For instance, there’s forum threads like this one where a customer bought iTGB based on the hype and found that the product did not work out of the box. That thread has not one but two new iTGB customers asking for help. Have any GG support folk responded there? No. At the time of this post, even a month after the original post by the customer, and despite me having pointed to that specific thread several times in my conversations with GG employees, nobody has bothered to answer their questions. The attitude at GG appears to be, “The answers are there on the forums. You just have to search for it.”

Yes, the answers are there on the forums. But there are a lot of forums to trawl through. And while some of us might do it, a lot of people will throw up their hands in disgust and move on. Given that there are no refunds for iTGB (or TGB for that matter) once you pay for it, a part of me can’t help but wonder if perhaps this is what GG wants. They might consider it an easy way to winnow the serious developers from the wannabes but it’s again not a good way to run a business and certainly not a good way to build customer loyalty.

Speaking of loyalty, there are users on the GG forums who respond to support threads more often than the GG employees do. Some of them, as I’ve seen, do take the time to answer newbie questions. Of course, some of these people also have frustrations with GG because they’re questions and comments are probably ignored for months on end. So they tend to tell you how things are when you talk to them – they’ll tell you the good and the bad. But the response of one GG employee to these comments was to say something like “I wouldn’t pay too much attention to his words – he spends so much time here dissing stuff but has does not submit any patches to fix things” or words to that effect.

Excuse me? A customer has to pay for your product and then also help you fix it because you shipped something substandard? Are you serious? Well, apparently GG is. Or at least, some of the people who work there are.

I don’t like to criticize for the sake of criticism and when I do criticize I try to also offer suggestions as to how things can be improved. I did so when I talked to GG and they did make the usual noises about “We’ll pas it on”, “This will be given serious though” etc. but nothing appears to have come of it. If this is the same treatment that the forum folks get on a day to day basis, then I can certainly understand their frustrations and anger.

But back to using iTGB. I worked out the main issues with compiling for the iPhone and managed to get their demo application working. I then started working on a project of my own. Setting things up for left-right or up-down movement and gameplay appeared fine. There were a few issues but overall it worked. And being able to set up a game scene visually was certainly a great boon. But when I wanted to get some of the physics working – such as have a cannon ball being fired from a cannon and moving according to the laws of physics, things didn’t work so smoothly. There are a lot of settings to get physics working and some of the settings would interfere with others. Sometimes I’d have things working right but at other times it wouldn’t work so well. It was a frustrating mess where I basically was reduced to changing a setting, compiling the game, running it to see how it operated, and then going back and changing another setting, and then repeating the whole process.

I finally gave up and did something I should have done in the first place before I got all caught up in the glamour of using a WYSIWYG game editor – I gave about a day of my time to cocos2D. I was able to achieve my aims quickly, in a manner which made sense and I didn’t have to go through a whole bunch of trial and error cycles. And since cocos2D is free, the price is definitely easier on the pocket than iTGB 🙂

If you are not a hard-core programmer and want something easy to work with, and don’t mind the outdated documentation, the lack of proper support, and the need to sort through various XCode issues before you can get started, iTGB still would probably work for you. But if you don’t mind working through a bit of code to get what you want and actually enjoy seeing how things work when you do your game, then cocos2D might be more your cup of tea (or coffee or brew of choice). Of course, it also depends on the kind of project you want to do … but in the end, my final conclusion has been that you just can’t beat the price of cocos2D. And as far as I can tell, it’s being developed much faster than the paid game creation solutions 🙂

Tags: , ,
Posted by Fahim at 7:08 am  |  5 Comments

August 17, 2009

Applying Torque to Game Development

I’ve done a fair number of iPhone applications over the last few months, and a few weeks ago, I decided that it was time to move on to the next level and try my hand at an iPhone game. Now, I’d done a couple of games before, but they were static board game type of games – no animation and no fancy stuff. I wanted to do a more ambitious game this time. So I began looking at the various game engines around for the iPhone to make my job easier.

My main three choices were Unity for iPhone, Torque 2D for iPhone, and cocos-2D for iPhone. Of these, I would have preferred to go with cocos-2D because it was free but at that point in time, it looked to me as if it would take me a long time to get going with cocos-2D. I wanted to get my game going quickly and so I decided to concentrate on Unity for iPhone and Torque 2D for iPhone (more commonly known as iTGB) for the time being.

What I really wanted to do was to use demos of the two programs and determine whether they would suit my needs. But it turned out that neither company had a demo for the iPhone version on their site. So I contacted the Unity folks (on a Saturday, if I’m not mistaken) and asked them if there was a way I could try out the iPhone version of Unity. I received a response within a couple of hours, if not within the hour. They were courteous, told me that they could certainly get me a demo for the application, and told me the procedure that I had to follow. I responded back and had a Unity for iPhone demo within 15 minutes. They even responded quickly to some questions I had about 2D game development for the iPhone using Unity.

As far as iTGB went, GarageGames, the company which develops and markets iTGB, didn’t have a contact e-mail address anywhere on their site. They had a contact form and I sent in a query via that but didn’t get a response even after a day. (I still haven’t received a response to that initial mail) I was already feeling a little uncomfortable with a company which didn’t seem to care too much about sales or dealing with their customers but I had gone through Unity by this time and while it’s a great development engine, I didn’t think it really worked very well as a 2D game development tool and I was interested in 2D development. Yes, the folks at Unity had explained to me how I could go about doing 2D games and they’d even pointed out a 2D game done on Unity which was doing extremely well on the app store but as I mentioned initially, I was interested in getting going quickly and Unity didn’t appear to be the route if I wanted to do a 2D game. Plus, I kind of liked the look of the graphics they had for the iTGB marketing material on the GarageGames site – and that was my undoing, pretty graphics 😀

Since I had kind of ruled out Unity and still had not heard back from GarageGames (GG), I decided to try and contact somebody at their forums. So I started this new thread on their forums. (Please note that this thread has since then been hidden by GG folks because they consider it to be uncomplimentary to the company – but it’s not been locked. At least, at the time of this blog post.) I received a response within 15 minutes from a GG employee who asked me to contact him directly. He did respond quickly to the first couple of e-mails I sent him but the GG folks appeared to consider Unity a threat and made comments like “I can chalk up Unity’s quicker response to them having less products, a smaller forum, and 4 times the amount of employees ;)” I found this kind of competitor-bashing a little unprofessional. They weren’t trying to apologize for their lack of proper pre-sales support but instead bashed their competition.

This behaviour was a bit of a red flag for me and I discussed it with Laurie. I told her that I didn’t like the behaviour of the company but I still thought the product was good. However, I wasn’t sure I wanted to deal with these people. But after some discussion, since I was still convinced that iTGB might be worth trying out, we decided to continue discussion with the GG folks. Unfortunately, discussion wasn’t very easy.

The e-mails from GG became less and less frequent. I’d respond and would have to wait a day (to account for the time difference) and then send a reminder before I’d get another response. I kept saying that I was in a hurry wanted to get things sorted out but GG (or at least the person I was talking to at the time) didn’t seem to have the time. Now in his defense, I don’t know if he was actually tasked by the company to respond to these pre-sales questions or if he was taking it up out of the goodness of his heart in his spare time. The impression I got of GG is that they really are a sort of a “garage” operation. They don’t seem to be very organized, don’t seem to have that many employees, and certainly didn’t seem very professional in their approach to things. At least, not professional in the sense I looked at business dealings.

Their offer was this. That I should purchase Torque Game Builder (TGB), their desktop game development offering, at full Indie-developer price and they’d let me evaluate iTGB, which costs $500 more, for free. Of course, if I decided that I liked iTGB and went ahead with a game, then I’d have to pay the extra $500 and buy iTGB before I released the game. I found this “solution” to be a bizarre one. I wanted to demo the product and I would have to pay for the demo? So basically, I wasn’t actually getting a demo but instead was paying for the demo. Sure, it was less than what I’d pay for the final product but if I didn’t like iTGB, then I’d be out of pocket for $250 (the price of TGB) and the only person benefitting would be GG since they got $250 out of it. I’d have nothing except for a paid version of TGB that I didn’t need since I wasn’t interested in desktop development.

I told the GG employee this. He didn’t respond back. I asked for a response in the forum thread I pointed to earlier. Still no response. I finally wrote to him and CCed every contact e-mail address he’d provided on the thread and also sent a copy to their contact form for good measure. I finally heard back from somebody else in the company. He was at least prompt in his responses and I was able to get some answers. But again, I also got a bit of Unity bashing along the lines of Unity might be good at pre-sales but they never fix their bugs etc.

And this too, I did not like. Tell me what’s good about your product. Don’t tell me what’s bad about your competition. I’m interested in learning about *your* product. Not how well you can trash that of the competition. Of course, I must admit that I never mentioned iTGB to the Unity folks (there was no need at the time) and so have no idea if they would have behaved the same way. But I do find how GG behaves in this situation a little amateurish and unprofessional.

Anyway the long and the short of it was that the person I talked to was adamant that they couldn’t give me a demo in any other form except for me ponying up $250 for the TGB Pro version. I was assured that if I could develop a game with the demo version of TGB, then iTGB would be fairly straightforward. I told them that what I was interested in was the actual deployment to iPhone since that doesn’t get covered by a TGB demo and they told me that it was very easy (it didn’t turn out to be so easy when I tried later, mind you.)

Since I was still looking at the pretty iTGB graphics and was convinced that that was the way forward (based solely on my work with the TGB demo) and since time was passing on and I wanted to get going on the game project before some other paid work I was supposed to start work on came up, I finally decided to bite the bullet and pay the $250 to get the evaluation of iTGB. At this point, the person from GG I was talking to was very responsive. He got me the iTGB evaluation within 15 minutes or so, if I recall correctly and did respond to the questions I had.

I did criticize how GG handled pre-sales and how they dealt with potential customers and I pointed out ways that they could improve the process. I asked him to forward this information to GG management so that they could try to improve things for their potential customers. Did any of this get forwarded? I have no idea. And given that corporate machinery moves very, very slowly, I probably won’t see any of it implemented for several months even if they decided to do something. But the feeling I get is that nothing will change.

But what happened with my evaluation of iTGB? That’s a tale for another blog post since this one’s getting overly long anyway 🙂 The only other thing that I have to mention is that I would be hesitant to write about a product and a company like this if they’d actually been courteous enough to provide a demo version for potential customers. But since they appear to make you pay for the demo, I consider myself a customer rather than somebody who’d received a review copy and I feel it an obligation on my part to document what happened so that perhaps other potential iTGB buyers would have all the facts at hand. To this end, I’ll add my impressions of iTGB (and the trouble I had with it) in another post.

Tags: , , ,
Posted by Fahim at 7:48 am  |  No Comments

July 31, 2009

Prisoner in a Fortune Cookie Factory

There’s an old Batman comic where Batman and Robin go for dinner and (I think) Robin receives a fortune cookie which says, “Help, I’m being held prisoner in a Chinese fortune cookie factory!”. While this is apparently a fairly well-known gag, Batman and Robin investigate (I forget why) and discover that in this case, that the message was actually true.

I’m beginning to wonder if the Apple app store reviewers are like these fortune cookie factory prisoners 🙂

I’ve blogged before about my recent troubles in getting my iPhone apps approved. That was over three weeks ago. Since then, I’ve had exactly three applications approved and all of them were updates. None of my new applications, and the list at the moment stands at five, have been approved since then. I’ve asked several times for updates from Apple but all in vain. All I’ve received has been the standard canned responses.

Last night, or early today in the morning at 4:30am, it appears that Apple called me. Of course, being asleep at the time, I never got the phone call 🙂 They did leave a message but since nobody here in Sri Lanka ever leaves a message on the answering machine (don’t ask me why – I have no idea :p), I rarely check to see if we have any messages. By a fluke I happened to notice that we had a new message around 2:30pm.

So what did the message say? They said that, “Your app’s marketing text contains pricing information. Please remove the pricing information from the text to avoid confusing potential customers.” (Please note, I’m paraphrasing here. But the gist of the message was that.) Now when we originally went into this holding pattern, that was what I’d been told by Apple and I thought I had complied. So I was puzzled as to what was going on.

So I went through my app all over again and checked all the text. Nope, no pricing information there! Then a sneaking suspicion dawned on me. My app has links (to get more information) which take the user to my own iPhone apps site. Could it be that they were talking about that? I checked and sure enough, my site does contain pricing information and it displays in an in-app browser view. Could it be that Apple reviewers were this clueless – especially given that my site has a totally different look from the in-app stuff? Perhaps they were.

I really didn’t want to go back and forth arguing about how this wasn’t in-app content and how the pricing information was on my own site, where Apple shouldn’t be able to dictate terms to me. But I didn’t want further delays and so I simply removed the link to my product pages and told Apple that I had done so.

But what has all this got to do with a fortune cookie factory prisoner? I’m getting to that 🙂 This whole set of exchanges makes me wonder why Apple couldn’t have let me know this via e-mail three weeks ago. If they’d simply said you have pricing information in your app and included a screenshot to show that they were actually talking about my site, then I would have fixed things at that point. So why did they wait three weeks to make me a call in the middle of the night?

Is it perhaps possible that the Apple app reviewers are deliberately isolated from the developers and they are not allowed any interaction with the developers? Maybe, like the prisoners of a fortune cookie factory, their means of communicating with the outside world is very limited? Perhaps they have a review submission system where they can only check boxes for accepted or rejected and a dropdown which generates a canned text response?

Yes, that’s very fanciful I know 🙂 But that’s the image that comes across my mind. Of these poor, pitiful (and gagged) reviewers toiling away at reviewing apps but being effectively muzzled by the Apple powers that be. If anything more than a canned response is required, then they have to go through special channels, which requires weeks, and results in a direct phone call to the developer by a trained specialist who knows how to keep his/her mouth shut about anything other than what strictly relates to the matter at hand.

Too paranoid? Too imaginative? Perhaps so. Perhaps not. Since I’m not privy to how Apple runs their review department, I guess I’ll never know 🙂 But in the meantime, I’ll wait again hoping that my five poor apps will finally see the light of day (or at least get released to the app store) some day soon …

Tags: , ,
Posted by Fahim at 5:40 pm  |  No Comments

July 21, 2009

Will Mobile Androids Eat Blackberries off Their Palm?

When it comes to mobile development, there are a lot of platform choices available to developers – iPhone, Android, BlackBerry, Palm Pre, Symbian, Windows Mobile … and given how many mobile platforms are out there, I might even have missed some 🙂 As a consumer, deciding what you want is simple enough – buy the applications for the platform that you use. But for a developer, the choice is a more complicated one. And I’m not sure that there are enough resources out there which cover all the relevant/important factors.

If you do a search, you’ll find that most articles are targeted towards a US audience – they talk of the mobile carrier (AT&T vs. Sprint vs. T-Mobile) or the number of handsets available for each carrier or of GSM vs. CDMA when it comes to carrier. But they leave out things like: are developers outside the US even able to get into the developer program for a specific platform? Sure, most of the consumers for mobile applications probably come from the US but developers are global. Whether you are in the US, Germany, Sudan, India, Sri Lanka, or Australia, a developer is a developer. We are a breed that likes to tinker, to experiment, to write code on platforms we haven’t explored before. So, shouldn’t somebody be considering the non-US developers as well?

Take Android, for instance. It might be hyped as the best thing since the immaculate birth of the iPhone, but for developers, as far as I can tell, Android is a closed shop – only those who can sign up for Google Checkout can get on the Android developer bandwagon and that lets out anybody who is not in the US or UK. At least, that’s what Google Checkout told me when I tried to sign up for one of their “merchant” accounts (or whatever it is that Google calls a Checkout account that is used to sell goods or services). Now I might be wrong since I haven’t done enough checking into this but the whole “US and UK” only thing puts a damper on my enthusiasm for Android development.

The iPhone on the other hand provides a developer program that you can sign up for quite easily. However, the market has been flooded with a plethora of useless apps coded in a matter of days (if not hours). Apple seems to have no real love for the developers developing for their platform, nor any desire to address any of their frequently voiced grievances. For the moment, Apple appears to be content to sit back on their laurels and play “Lord of Monopoly” with the poor deluded souls that are in search of the pot of gold at the end of the iTunes Store rainbow. So sure, you can get on the iPhone platform quite easily, but getting your app on the app store, (and making any real money) might be harder.

For some of the others, like BlackBerry, Symbian, and Windows Mobile, the whole app store concept is something that they came up with after the success of Apple’s own app store. Some are already in operation, others are planned or just getting started. However, they had other distribution mechanisms before that. So it’s not so bad for the developer in terms of how they distribute and sell their apps. Of course, again for non-US/European developers, it would be easier to have a central marketplace or store which sells their app for them and sends them the money. PayPal isn’t everywhere nor is accepting online payment as easy for developers in the rest of the world. Heck, I can’t get payment in any form except for a bank transfer over here!

So for most of us, a centralized app store which does all the e-commerce stuff is still a good idea. But of course, as I mentioned above, the playing field is never level and, ironically, if you’re not in the US, you’re usually shut out. And US developers are the one’s who least need these mechanisms since they can at least receive online payments via PayPal quite easily 🙂

But unfortunately, that’s how it is at the moment. There are those of us who would like to develop for other platforms besides the iPhone, which is becoming rather tiresome in their arbitrary (and often self-contradictory) decisions regarding what is allowed and what’s not on their app store. I wish some of the other platforms would get their act together and allow global access to their individual marketplaces as Apple does. This would at least give some of us more options and perhaps even make Apple re-consider how they administer their own app store and review apps. But for the time being, global developer choice is still a dream ….

July 7, 2009

The Wrath of Apple?

A couple of weeks back, I came across a few apps on the Apple app store which had what I thought was a neat concept – a mini-app store, or rather, a list of applications provided by the same company. Since Apple had approved these apps and they were in the Apple app store, I figured that I might as well implement the feature in my own apps that I did from then on.

I was mindful of the fact that Apple has strict guidelines (sometimes unstated ones :p) and so didn’t want to infringe any of these. However, in this case I thought I might be on solid ground since there were several other apps on the app store which already implemented the feature. I was even careful enough to do things pretty similar to how it was done by these other apps so that I wouldn’t infringe upon some unstated guideline.

So imagine my surprise when I submitted my app and almost immediately received a rejection stating:

“Thank you for submitting WordOne and WordOneLite to the App Store. We’ve reviewed WordOne and WordOneLite and determined that we cannot post this version of your iPhone application to the App Store because your applications contains pricing information in the binary and/or marketing text (Application Description / Release Notes). Providing specific pricing information in these locations may lead to user confusion because of pricing differences in countries. It would be appropriate to remove pricing information from these locations.”

Now I read elsewhere (later) that Apple indeed objects to pricing information being included in the app because they say that it will confuse users. And I can understand this. However, I had done that only because the other apps available on the app store already did this too. But I didn’t want to go through a protracted session of debating with Apple and so simply changed my application to remove the pricing information and resubmitted it.

However, I did want to know what the actual guidelines were. So I responded to Apple and asked them for a clarification on their guidelines because they already had apps on the app store which included pricing information (only in one currency mind you) in them and those had been approved. I even provided a few examples.

That might have been a mistake 😀

Because today I received not one but two responses from Apple. The first one was a reply to my question about clarifying the position on why my app was rejected while they approved other apps with pricing information. It simply said:

“Thank you for your email. Unfortunately we are unable to provide addition information at this time. Thank you for uploading a new binary. We will notify you if there are any further issues.”

So no information. Apple will do as Apple pleases. No surprises there 🙂 But the second e-mail, sent a few hours later was the dreaded, “Your application is meeting unexpected delays” one. Specifically, it said:

“Your application, WordOne and WordOneLite, are requiring unexpected additional time for review. We apologize for the delay, and will update you with further status as soon as we are able.”

Now I don’t know for a fact that my application was delayed because I questioned Apple about their decision. But on the other hand, the timing seems a little suspicious to me. I’ve never received an app review in any time longer than seven days before. Every time before, for about seven apps, I would get an update, regular as clockwork, on the seventh day. If it was rejected, and I fixed the issue, I wouldn’t hear back from Apple again till seven days had passed.

For my eight or ninth app, the delay went from seven days to nine days but that was around the height of WWDC and the release of OS 3.0. For these two specific apps, I got my first rejection in about four days and then the second notification about “unexpected delays” came three days or so after I questioned the process and right on the heels of their other response. So forgive me if I find the timing a little too pat 🙂

So what’ll happen to my app? I have no idea. I have heard of other developers who have had apps sit in the review queue for months without hearing anything back from Apple at all. Maybe that’s what’ll happen to WordOne and WordOne Lite. I don’t know. But I hope that this won’t be the case and the delay is genuine and my apps will see the light of day within the next week, especially given stupid release like this that Apple seems to let through without any thought at all. I can always hope, can’t I? 🙂

Tags: , ,
Posted by Fahim at 7:58 am  |  1 Comment

May 6, 2009

Tweets for 2009-05-06

  • Haven’t done much work on Birdie lately since I’ve been considering shifting development platforms. Wondering about Mac Twitter client … #
Tags: , ,
Posted by Fahim at 1:00 pm  |  No Comments

April 3, 2009

It’s an iPhone Life

I had heard all the horror stories about how difficult it was to develop for the iPhone and how complicated the process was before I had even begun developing for the platform. Strangely enough, I never got stuck at the points that others wrote about. Still, the process did turn out to be rather convoluted … and I’m not even through the full process yet 🙂

But I did encounter a few pitfalls and issues that others have not mentioned before – probably because these are unique to people outside the US who develop for the iPhone. So I thought I might as well blog about some of these issues so that it might help some other poor soul who is frazzled, confused, and tearing his/her hair out 😀

The development process itself is fairly easy and now that the NDA has been lifted, there are plenty of online resources which provide you with tutorials on getting started with developing for the iPhone as well as assist you when you get stuck.

But if you plan to get your app running on anything other than the iPhone simulator, you also need to join one of the Apple iPhone developer programs. (Yes, I know that there are ways to run your app on an iPhone without doing this but let’s not get into this since I’m basically focusing on developing for the Apple app store :p) The enrollment process should be fairly straightforward for most people who have an Apple iStore for their country. However, if your country doesn’t have an Apple iStore, then you run into your first hurdle – you need to make a payment but you need to so by contacting Apple instead of having the ease of paying online.

In my case, I had to contact the nearest Apple support point – which was in Singapore. They got back to me and provided me with a payment information form which had to be filled in and then faxed to Apple billing in the US. I did so immediately but given it was a fax, got no confirmation. I was also asked to inform my support contact in Singapore that I had sent out the fax and I did that. They e-mailed back and said that they’d contact Apple billing and verify.

A week went by and I heard nothing. So I contacted support in Singapore again. They said that they’d contacted Billing again. Another week goes by and still nothing. So I contacted Singapore once more. A few days after I contacted Singapore, I got a call from my bank, wanting to verify that I had indeed made an online payment to Apple. I knew that my payment had finally been processed 🙂 I heard back from both Singapore and the Apple Developer Program the same day and received the link to activate my Apple Developer Program account.

Now that I was a member of the Apple Developer Program, I had the ability to compile my applications and run them on my iPhone. I could also distribute the apps I created to up to 100 iPhones that I had to manually authorize by adding their unique iPhone ID to an internal list of authorized iPhones for my account. (I haven’t got to test this feature yet but I’m sure it’ll come in handy for beta-testing …)

So far so good. I was able to work out bugs and to test functionality on my application by testing it both on the simulator and on an actual iPhone. The iPhone Developer Program portal made the process quite easy up to this point because it had detailed step-by-step instructions on how to achieve anything I wanted from creating a certificate to adding devices to creating provisioning profiles. You really should check out the “How To” tab for any task in the iPhone Developer Program portal because it gives you extremely detailed instructions on how to proceed.

Now that the app was shaping up nicely, I decided that it was time to submit the app to the Apple app store. Of course, this was where things got a bit complicated again 🙂 First, I had to go to a new site, iTunes Connect, to submit my iPhone app to the app store. And I’m afraid iTunes Connect isn’t as user-friendly or informative as the iPhone Developer Program portal 🙁

Once you log into iTunes connect, you might wonder what you have to do next. The first thing to do is to click on “Manage Your Applications” to add a new app. And there, you run through several screens of information about your application. You also have to have various screenshots and icons ready at this point. Remember that most images accepted here are JPG or TIFF and that you can take a screenshot directly in your iPhone by pressing the “Home” button and then pressing the power/start button while keeping “Home” pressed and you should be fine 🙂 (Of course, screenshots taken this way are PNG and you’ll have to convert them to JPG or TIFF …)

The biggest issue I had at this point was that I got the dreaded “Invalid binary. The signature was invalid, or it was not signed with an Apple submission certificate.” error that you get on uploading the compiled application. This appears to be fairly common since there’s a lot of information online about this if you do a search. Some people suggest checking that the app is signed properly by running “codesign -vvvv <>” in a terminal window (where <YourAppName.App> will be replaced with the actual app name, of course). Others mention that this might be because your application icon is not named “Icon.png” (case-sesitive). I tried most suggestions but none seemed to work for me 🙁

After several hours of mucking around, I discovered that in my case, the issue was that I had set the “Code Signing Identity” property incorrectly. You can find this property by selecting your application under “Targets” in XCode and then click the “Info” button on your toolbar and then switching over to the “Build” tab of the dialog which opens. The setting is under the “Code Signing” section. In my case, I appeared to have set the first value “Code Signing Identity” as well as the next one, “Any iPhone OS Device” and this appeared to cause issues. As soon as I cleared “Code Signing Identity” (left it blank) and then set the identity I wanted under “Any iPhone OS Device”, the binary was accepted by iTunes Connect. (And remember that you can’t upload your application as a .app file, you have to ZIP it up first.)

At this point, I was informed that I didn’t have a “Paid Applications” contract in place because I wanted to sell my application on the app store. Apparently, all the previous work in faxing stuff to Apple and paying US$ 99 had been to simply get the right to distribute free apps via the Apple App Store. If I wanted to sell my apps, I had more paperwork to do 🙂 However, the process does let you finish submitting your application for the Apple review process before you have to go complete the new paperwork.

If you get through the application submission process, don’t think that that’s it and sit back and relax. You sill have to do the “Paid Applications” contract. This appears under the “Manage Your Contracts” section in iTunes Connect and will show that you now have two contract – one for free applications and one for paid. You’ll notice that the free application is complete while there’s information that you have to fill out for the paid one.

So go ahead and get going on that one. Most of the information is fairly straightforward except for a few things. They want your bank address and if you use HSBC as I do, HSBC only give s PO Box number for Sri Lanka. And Apple says that you cannot provide a PO Box 🙁 I simply put in the PO Box number since there was no other option but that might come back to haunt me.

The other issue was a US EIN. You need to obtain a US EIN or your Apple App Store income will be taxed at the standard value of 30% instead of the 10% value you’ll get as a resident of Sri Lanka (there are other places which aren’t taxed at all …). To obtain an EIN, you need to call the IRS. Yes, you need to make an international call 🙁

Actually, that’s not strictly true. If you can wait, you can also mail out the EIN request form or fax it to the IRS. If you fax it, they say that they’ll get back to you within four business days. However, if you call, you get the EIN over the phone, immediately. I opted to call and was on hold for about 25 minutes. Then I messed up in asking for the right division, got transferred and had to disconnect because the person I was transferred to refused to transfer me back. So I called again and was on hold another 20 minutes or so but finally got through and got the EIN sorted out. Total time? About an hour on the phone to the US.

Once that was done, the rest of the process was fairly easy. You have to fill in the last Apple tax form giving your EIN and a few minutes later, you receive a PDF via e-mail with the filled in information. You have to print out that form, sign it and then mail it out to Apple. If they don’t have that form on file at the time they have to make your first payment to you, they’ll deduct 30% from your payment instead of the reduced 10% deduction (for Sri Lanka).

That’s where I am at the moment. I’ll now have to wait to see how soon my application goes through the Apple application review process and whether it gets accepted or rejected. Different people seem to have different experiences at this point. Some say that their app was accepted within days. Others say that they waited weeks. There’s also a lot of noise online about how Apple is backlogged and they take about a month to approve applications. I don’t know which of these is correct. Guess I’ll just have to wait and find out 🙂

Update: Info that I discovered just a little while ago over here (and on a few other places) seems to indicate that the whole over spent on the phone with the US IRS was totally unnecessary. The information on the forum link above seems to indicate that Apple does not withhold tax either way and that you don’t really need an EIN. Of course, I don’t know for sure. So I can’t say one way or another with certainty but hopefully the information will help somebody else 🙂

Tags: ,
Posted by Fahim at 11:09 am  |  No Comments

March 27, 2009

Tweets for 2009-03-27

  • Finally got notification that my application for the Apple Developer Program went through – about three weeks after sending in the paperwork #
Tags: , ,
Posted by Fahim at 1:00 pm  |  No Comments

March 7, 2009

Scripting the Apple

As I mentioned yesterday, I wanted to find a solution for creating dynamic signatures for on my Mac. Of course, there’s a little bit more to the story. On OS X 10.5 at least, I couldn’t even seem to create a styled signature because the interface for creating a signature appeared to be very bare. There were no hyperlink, bold, italic buttons to stylize the text. However, I learnt that you could style a signature quite easily by creating the text in a mail message itself (or in some other HTML or rich-text editor) and then copying and pasting the text into the signature box 🙂

So I had a fairly OK looking signature with links to my site and to my book. Now all I needed was a way to dynamically add a witty quote to it each time I sent out a mail. I did look at a couple of Mac signature generators but those which were available simply created a sig that had to be copied and pasted into your e-mail manually and that was way too much work for me :p There were a couple of scripts which were supposed to automate the work but the sites to download those scripts appeared to have disappeared into the Internet graveyard a long time ago. So I was out of luck 🙁

Unless of course, I wrote my own solution 🙂 It was when researching how to create my own solution that I was first reminded of fortune . I’ve used this little mod in various forms over the years and once I was reminded of it, I knew I could install this under OS X and get it to provide the witty sayings for me. And that was where I came across Fink 🙂 The quaintly named (they say the name comes from the German name for Finch because finches had a connection to Darwin :p) Fink is a package manager for OS X which allows you to download and install *nix applications which had been modified to run under OS X. Fink comes with a GUI named Fink Commander, which allows you to do most of your package management using a graphical user interface.

But enough of Fink. Suffice it to say that I used Fink and was able to install fortune on my Mac and had it working fine. But now I needed Terry Pratchett quotes. I already had a file full of quotes that I had been using for ages to generate signatures but they weren’t in a format suitable for use by fortune. Fortunately, (pun not intended, honest :p) I was able to find a collection of quotes already in the right format. Once installed, I had my fill of Pratchett quotes to choose from 🙂 (I must mention here that most sites tell you only the Linux file system location to copy the quote file to. If you are on Mac and had used Fink to install fortune, you might be slightly puzzled as to where the file went. As I was. The correct location is /sw/share/fortunes – just something to keep in mind :))

Once all that was in place, it was just a matter of writing a script using AppleScript which would activate, create a new outgoing message and add a signature to that mail using both a static part (links to my site and my book) and a dynamic part (the Pratchett quote output from fortune). At first, I was simply going to generate the signature on the fly and add it to the mail message. But that was where I ran into problems 🙂

I had my pre-created static signature in showing up as nicely formatted HTML output. But when I put in HTML code via my script in to the body of the mail message, the output wasn’t formatted – it was simply HTML code! And of course, I didn’t like that 🙂

So I tried creating a signature via AppleScript. I was able to create a new signature and populate it with the dynamically generated content but that signature, when used, still came out as HTML code and not formatted text. So that was out.

My final solution was a slightly cumbersome one but one that worked 🙂 I basically created the outgoing e-mail message, and then set it to a pre-existing formatted HTML signature. I also copied the quote generated by fortune to the clipboard. Then I had my script move the cursor to the very end of the message so that it was below the signature and then pasted in the fortune. Voila! dynamic signature 🙂

I then used iKey to set up a hoteky so that I could simply run the script from my desktop any time I wanted to create a new e-mail with a dynamic signature. Simple as that 🙂

Of course, there’s one scenario that the above doesn’t cover – when I reply to an existing mail. Then I’d only get the static part of the signature. So what I did there was to create a second version of the script which didn’t create a new outgoing mail message. It simply activated thus bringing whatever window was open already to the front, and then moved the cursor to the end of that window and copied in the quote generated by fortune – problem solved 🙂

If anybody is interested, here’s the final script that I came up with. (The version I provide is the full version but it should be simple enough to modify it to get the secondary version …):

tell application "Mail"
        copy return & return to myContent
        get do shell script "/sw/bin/fortune discworld"
        copy "--" & return & ¬
                the result & return to theFortune
        set the clipboard to theFortune as text
        set mySig to signature "Signature #1"
        set myMsg to make new outgoing message
        tell myMsg
                set the content to myContent
                set visible to true
                set message signature to mySig
        end tell
        tell application "System Events"
                keystroke tab
                keystroke tab
                keystroke tab
                keystroke (ASCII character 31) using command down
                --keystroke "This is where it should go"
                keystroke "v" using command down
        end tell
end tell

The above seems fairly straightforward to me (now) but if anybody wants any clarifications as to any part of the script, I’d be happy to help 🙂

Tags: , ,
Posted by Fahim at 10:25 am  |  No Comments

Next Page »