So you’re a full-time independent developer, and you’ve had an app in the store for four years, for which you’ve released regular free updates. Revenue for the app has dried up, because everyone who has ever bought a copy can’t buy it again. You have ongoing costs; servers to run, mouths to feed. You decide it’s time to be ‘greedy’ and ask your customers for more money. This is exactly where we at Shifty Jelly found ourselves with our flagship product ‘Pocket Weather AU’. First released in 2008, it’s been the lifeblood of our company, oustripping the earnings of all our other apps by a large amount. It’s basically keeping the lights on here at the 3 man Shifty Jelly Office.
At this point you have two choices: release new features via an in-app purchase, or create an entirely new app to sell. To us, an in-app purchase was not really feasible because we wanted to start again on the application, hooking it up to a brand new server, use brand new code, write brand new controls and frameworks for it. Offering this update as an in-app purchase would mean trying to ship the old code and old image assets along side the new code and new images. If you’re not a developer, you’ll have to trust us when we tell you this is nigh-on impossible.
So we were left with only one choice: release a paid update, as a brand new app. The problem is Apple don’t give you a way to do this, and if I’m being cynical I’d say they don’t want you to do this. Their goal is to sell iPhones, and I think that deep down they know that if people feel apps are free or cheap and updated forever, Apple will sell more iPhones.
So what do you do? Well here’s what we did, hopefully you can learn from it.
- We created our new application and submitted that to Apple for approval, setting the release date to the future so it wouldn’t go live in the store until we were ready.
- Once it was approved we removed our old app from sale and left things for a few hours. This is because the App Store takes a while for changes like that to propagate.
- When we were ready to release the new one, we set the release date to now. Again we didn’t promote it straight away giving it a few hours to propagate through the store. Even when you see it in the store, you still might not be able to download it, we’d recommend 4 hours minimum here. Even after 4 hours a small amount of people still couldn’t download the app, but eventually that sorted itself out.
Now we had to figure out phase 2 of our master plan, how to tell people beyond those who read our blog and follow us on Twitter? In the past it appears like you may have been able to update apps that are not for sale in any country (see this blog post, which has since been updated after the author and I chatted on twitter). Unfortunately this is no longer the case. So let me explain how we found this out, and what other tests we did. In our case we had 2 existing free versions (one for iPad and iPhone) that we could play with (both removed from sale about a week before our new app went live), so here’s what we did:
- Created an update for these apps, linking to the new paid version and also telling our customers there was an update.
- Released the update to Apple which they approved.
- We waited 2 days to see if it became available as an update to people’s phones. 2 days later it still hadn’t.
- Then we tried putting the free Apps back in the store (by ticking the countries in iTunes Connect) and bam, an hour later they became available as updates.
- To test another theory, we un-ticked the countries again the next day, and an hour later the update once again disappeared.
The simple conclusion: The ONLY way to update apps not for sale in the App Store, is to put them back into the App Store until everyone that wants to update to them has. The one minor exception to this is that when a customer tries to re-download an app from their ‘Purchased’ section, they will get the most up to date version, regardless of whether you’ve put it back in the store or not. It should be noted that the ‘Purchased’ section of the App Store is horribly broken. The search feature in it simply doesn’t work. If you’ve bought 500 apps like I have, scrolling through it while it lags, jitters, and keeps jumping back to the top will make you want to poke your eyes out.
Update: A helpful developer on Twitter pointed out that you can actually still link to apps in the purchased section, like this (this confused us at first, because it only works on the device, not on a desktop):
So yes, paid updates are possible, but you’ll have to work hard to get it to happen, and there’s no such thing as a perfect transition. As a developer I can’t tell you how much I’d like Apple to support this, because if they did it would be better for us and users alike. Imagine having your favourite app release a massive update, offer you an upgrade price, and you having the option to accept or decline. Imagine if you decline still getting bug fixes for your current app, and one day rewarding the developer by buying the app.
So finally to show that I’m young and hip, here is my TL;DR:
- There’s no way to release a paid update on the iOS App Store, you have to release a new app.
- You can’t pull the old app from the store, and provide future updates for it. If you want to update it, the old version must also be in the store, and remain in the store.
- Apple will probably never support this, and it’s time as developers we stopped this crazy ‘race to the bottom free updates for ever’ mentality, and start restoring the notion that developers also need to get paid, and there’s no inherent weirdness or shame in that.
Pocket Weather Au, our very first serious app in the Apple App Store was released in September of 2008. Since then it’s been an amazing journey for us and we’re really glad that you came along for the ride. We went straight to the #1 spot in the store, and stayed there for well over 3 weeks. The thank you and suggestions have flooded our inbox ever since. Overall we couldn’t be more proud of what we built back then, and the many, many updates we’ve issued for it since (25 updates, over 4 years: view graphical history).
The astute among you will note that in January of this year the updates stopped. That was when we decided, after 4 years and so much hard work that poor old Pocket Weather Au was starting to look a bit tired. We have learnt an amazing amount since 2008, about development, weather and had so many great suggestions from you, our fans and customers.
So today we present to you, Pocket Weather Australia, version 3.0!
Now we know some of you well, and instead of reading the rest you’re just looking for the buy link, HERE YOU GO!
Finally, we’d like to answer a few common questions that our current customers will no doubt have:
Is this a free update?
No, it’s a brand new app that costs $1.99 and runs on your iPhone and iPad. We’ve released 4 years worth of free updates to the previous version, and when making such a drastic change we decided to build a brand new application. One of the main reasons for this was to not force an entirely new app onto people who might not want it.
I’ve been waiting for ages to give you guys more money, why only $1.99?
We get offers all the time from people wanting to donate to us, or get us to charge more for our applications. We feel that for now $1.99 is fair price for an app you use everyday, and we don’t take additional donations. If you really feel strongly about giving us more money, convince a friend or family member to buy our application instead 🙂
I like the current version, do I have to update?
No. We intend to keep the weather servers that these are connected to running for at least another year, probably much longer. We have no way to update the app itself though, so should it break in future versions of iOS then there’s not a lot we can do about that.
I bought your app just recently…
We removed our old app for sale before posting this one, so there should be very, very few of you that fall into this category. If however you did buy our app within the last few weeks, and feel like you’ve been wronged, please email us, we’ll look after you 🙂
I have an Android phone, don’t you guys love us?
Of course we do, Pocket Weather Australia 3 is also available from Google Play here.
We are very proud and excited here in the office today, and we hope you are too. Our goal (we always set one of these before releasing a new app) is to reach the #1 spot in the App Store. We’re not bothered by whether that’s for 2 seconds or 2 years…we just want to show Apple, Australia and everyone that apps still matter, and it’s not all about games! So come on Australia, get into the Olympic spirit, and let’s get Pocket Weather Australia to that #1 gold medal winning position!
Today Apple released their own podcasting application for iOS. This was widely rumoured, though it still seems to have taken a lot of people by surprise. Naturally a lot of people have asked us about how we feel about being ‘sherlocked’ (a fun term dating back to an app called ‘Watson’ which Apple copied, and bundled into Max OS X as ‘Sherlock’). Our reaction to the rumours was of course trepidation and fear, since Apple can play ‘dirty’ and do all sorts of things with iOS apps that we as third-party developers are not allowed to do. The app that they released today though, made us very happy.
Apple’s app is quite pretty to look at, and it does a nice job of separating podcasts out of iTunes so in that sense they’ve done the podcasting community a great service. Once you play with their app for more than 5 minutes though, you realise it’s little more than that. It’s literally the features they once had inside the Music and iTunes applications bundled into iOS, moved into their own application. As the maker of a podcasting app, we realise this sounds dis-ingenious, so please, allow us to elaborate.
Let’s pretend that I’m a podcast fan (which I am, so that part is easy) and I’m out to find a podcasting application. Logically (for me at least) I’d try the free Apple one first. Here are some of the things that are immediately annoying about it:
- There’s a 50MB limit on downloads over 3G. Case in point Macbreak Weekly came out today, it was 50.3MB. Can I download it?
- When I play a podcast, I like to be able to see where I’m up to. The now playing screen Apple has is pretty, but doesn’t tell me that. You can tap the artwork to get a progress bar but even that doesn’t have times on it, you actually have to start scrubbing to get them. Once you do the times stay, but they don’t update at all…which seems a bit silly.
- I like to be able to skip adverts really quickly. Apple has a skip back 10 seconds, skip forward 30 seconds. That part would keep me reasonably happy, except the buttons are too close together, and I’d struggle to hit them accurately in my car, which is where I listen to podcasts for over an hour a day.
- I also listen to podcasts that don’t come out on a regular basis, and I’d like the app to send me updates when a new episode comes out, the Apple app can’t do that, I have to open it to get it to refresh.
Now I know what you’re thinking. “You’re purposely focussing on all the things you’re app does well, because you want to point out how great it is. That’s not fair”. You’re right, and you’re wrong. We built our app because we’re avid podcasts fans. We spent a long time agonising over all the little details that we wanted in an application to make our podcast experience pleasurable, rather than painful. So yes, the Apple app is missing things our app has, and yes I’ve pointed out some of them, but for good reason: these are all features we wanted, nay, demanded.
So why would you buy our app over the Apple one? Do you even need to? If you’re a person who listens to only a few podcasts every now and again, you can probably get by with the Apple app just fine. It’s very capable, it’s nicely designed, it’s clean, it’s minimal. But if you want more, here’s the things you’d get with our app:
- Push notifications when new episodes comes out, handy if like me you can’t keep track of when new shows are meant to come out:
- Giant skip buttons (hidden by default, come up when you tap them) for easy skipping in the car. Also handy is the amount back and forward is configurable. Personally I prefer 45 seconds forward, 10 back. Two taps when Tech News Today starts gets me straight to the content every time 🙂
- Server side podcast parsing. Now this is something as a user I wouldn’t think I’d need, but being able to update all 30 of my podcasts in 1 second, vs 1 minute for Apple’s app saves me bandwidth and time. We’re also the only app in iOS to do this.
- Being able to play a video podcast, as audio. All to often I download a video podcast, but then want to play it while doing something else on my phone. The Apple app stops the video the second you back out of it or press your home button. Pocket Casts automatically switches to playing the audio from the video file, allowing you to keep listening.
- Being able to play a podcast while it’s downloading is also very handy, it means you get the best of streaming and downloading. So this morning I was dropping my son off at school, and a new Macbreak Weekly came out. I was out on 3G, so I just tapped download before I hopped back in the car, about 20 seconds later it’s ready to play, and I get to keep the file afterwards so I don’t need a network connection next time I go to play it. Update: I’m told Apple’s app actually supports a slight hybrid of this mode. Where it will stream and download at the same time, then switch to the downloaded version when the download is done. I can’t confirm this, but you’d still be out of luck if it’s over 50MB and you’re on 3G, just like I was in the example below.
I could literally go on all day, but here’s a few more of my favourite features of our app:
- Variable playback speeds (1x, 1.2x, 1.5x, 2x) – Apple has just slow, normal and fast.
- Playlist, choose the order in which you want to play your episodes. Handy when you’re on a plane. Queue up some episodes in the order you want, put your headphones in and your phone never needs to leave your pocket.
- Show notes, one of the most crucial parts of listening to any podcast, and yet as far as I can tell Apple has left them out completely.
- Handy Settings: want to delete a podcast automatically when you’re done. No sweat. Want to configure how your headphones should work with the app, Pocket Casts can do that too. Apple’s app is locked into triple tap to jump back 10 seconds, double tap to skip to the next podcast. In Pocket Casts we have the more sane default of having double-tap skip forward, which is a lifesaver for skipping adverts when you’re phone is in your pocket and should you choose you can have the headphones skip whole episodes instead.
- Manually add shows: every now and again you’ll come across a podcast that isn’t in iTunes. In Apple’s app your out of luck but in ours you can paste in the feed URL and be on your way.
We’re proud to announce the availability of Pocket Casts 3.0, for iOS: http://itunes.apple.com/au/app/pocket-casts/id414834813?mt=8
Over 3 months ago we took a long, hard look at Pocket Casts. It was by far our favourite app, yet it was selling really badly. So we had a decision to make: let it go and move on to something else, or double down and work on making it better. We loved it too much to let it go, I for one use it twice a day, if not more. So we made a decision that’s not easy as a small developer with very tight cash flow…we decided to spend whatever it took on getting the app right. ‘Whatever it took’ turned out to be 3 months. That’s a huge risk, but we think it was worth it.
New Look, New Layout, New Flow
The first thing you’ll notice when you open version 3.0 is that everything has changed. The look, the feel, the flow of the entire app. There are many reasons for this, but the main one for us was always about making the app more usable and more friendly. For long time users of our application, we realise this can be quite jarring at first but give it a few days we think you’ll love it. We can’t explain every single change we made, but we’d like to cover a few.
When we first created Pocket Casts, we came up with the concept of the updates tab. New episodes stayed there, until you either downloaded or deleted them. We loved this, but it confused people to no end. Some people don’t like deleting, others were confused when after a podcast was downloaded, it would disappear from the updates tab. Where did it go, what did I do…they didn’t know. So the concept of ‘Recent’ and the Episodes page was born:
The way it works now is that episodes that you’re phone has found out about recently, appear in the ‘recent’ page. Downloading them leaves them there, but also places them in the ‘downloaded’ page (which also flashes briefly when you download something. This makes it clearer where your podcasts are, and how to get to them. Another new feature is that the app will now download 2 podcasts at once, which is handy when one podcast authors site is screamingly fast, while the other is slow.
Cloud Power! (Notifications, Speed, Data Use)
Pocket Casts is the only podcast application for iOS (as far as we know) that does all its podcast processing on a server. What this means is that when your phone needs to see what’s new, instead of downloading individual podcast feeds (which can be very large), it just calls our server once “hey what’s new” it says. “Here are 3 episodes that are new since the last time you checked” says our server. That’s about 10kb’s worth of data, vs potentially many megabytes worth. Also worth noting is it’s a lot faster.
Talk is cheap though. Let’s compare Pocket Casts with the highest ranking of our competitors. I installed both apps cleanly, and imported my OPML file with the 27 podcasts that I subscribe to. I let both do their first refresh/setup without timing. Next I quit both apps, and performed a refresh in each one in turn, measuring the amount of data used, and the time taken. The results might surprise you:
Pocket Casts took 1 second to refresh all 27 of my podcasts. Our competitor took almost 2 minutes (105 seconds). That’s about 70x longer. It’s worth noting here that I could have been really mean and added 100 podcasts. Pocket Casts would still do those in 1 second, while the competing app (without a server) could take up to 10 minutes. It’s not rocket science, their app has to go off and look at every single RSS feed for every single podcast and see what’s new. That’s where our server comes in, it refreshes podcast feeds at a rate of about one million per day! All this so that your phone doesn’t have to.
Time aside, I decided to monitor the data use. To refresh 27 podcasts Pocket Casts sends 5kb to our server, and receives 3kb, for a total of 8kb. That’s tiny. The competing app sent 69kb and received 2252kb for a total of 2321kb (2.3 megabytes). In this case the competing app uses 290x more data than Pocket Casts. Note that we’re not deriding our competitor in any way, you can’t do any better than that, since you have to parse the feeds from the phone. That’s why we designed our app to have a server, because we wanted fast refreshes with minimal data use. And not just any old server, we currently run 11 high-end servers, that plow through many, many gigabytes worth of data each and every day. Yes, we do take this very, very seriously.
Speed, and bandwidth aside, having a server also adds one more benefit, the ability to do push notifications. Something we’ve expanded quite a lot in the new version:
You can now opt to receive text notifications, along with a sound when new podcasts are released. You can even turn this on or off per podcast, if you like some more than others. What it means is that you’re always notified about what’s new, even if you have the app closed.
The old now playing screen was ok, but there were a few things that bothered us. Firstly the progress bar was too close to the top of the screen, which didn’t work well with iOS 5 and its new notification pull down. Secondly the controls were a bit small, and felt cramped down the bottom. Lastly there didn’t seem to be any consistency as to how we placed these controls on the page. In the new version we’ve fixed all that, while retaining the ability to see all the podcast artwork by tapping in the middle of the screen. The show notes are now much more accessible as well, just swipe to the right to see them. We also download the show notes when the podcast is downloaded, so no more having to have an internet connection to read them. On the list screens, you can now see exactly where you are up to in each podcast (and it updates if the podcast is playing) as well as being able to pause and play right from those screens. Lastly (and this is one of our favourite features) you can now start playing a podcast while it’s downloading.
New to Pocket Casts v3.0 is the Podcast Settings page. We realised fairly early on that some podcasts have really terrible album artwork. Others have long and cumbersome names. Well worry about those things no longer:
Now you can change the name of a podcast, or its artwork at any time. We may have accidentally also created a way to listen to more…how shall we say…’risque’ podcasts with this feature, but that wasn’t our intention. Honest.
The Small Things
We could go on for hours (quite literally) about all the things we’ve changed, but we’ll leave you with a few extra things:
- You can stop an episode from playing (or streaming) by long pressing on the now playing tab icon.
- We now have podcast chapter support, swipe to the left to see all the chapters, tap on one to play it
- You can now export your subscriptions to an OPML file, for backup and to use in other podcasting apps
- You can now turn our giant skip buttons off, handy for people that want to listen to advertising
- You can now check out the podcast description, and visit the podcasts website from the podcast page
- You can tap on the first podcasting tab to switch from the tile view to the episode view
- You can now add videos into your playlist as well. By default they’ll play as audio, but one tap and you can be watching the video instead.
In our previous post we lost our minds and decided to make Pocket Weather World and Pocket Weather World HD free for a day (normally USD$1.99) . How did it go? Well we’re glad you asked…
In terms of raw download numbers: 32,978 new Pocket Weather World users, and 23,104 HD, for a total of 56,082 new users!
I freely admit, we didn’t expect that many before the sale! I guessed 26,000, Philip 8000 (yeah, who da man!). We didn’t bother to try and optimise our server because our Australian one already supports 400,000+ users, so we figured we could add thousands of people without breaking a sweat. Boy were we wrong:
It turns out there’s one key difference in Pocket Weather World, in that searches for new locations used to take 600ms. No big deal you say, that’s reasonably snappy! True, until 50,000 new people download your app and all go to search at once! Needless to say we went into a mad scramble, and 2 hours later we got that search query down to 6ms (props to Philip on that one). Still the fact remains, thousands of new customers had just been exposed to an app that didn’t work.
By the time the sale was over, the server was under control, and we even added more memory to it just for good measure, but the damage had been done. A lot of 1 star reviews, and a lot of people that now associate ‘Shifty Jelly’ with ‘stuff that doesn’t work’.
So with that in mind, let’s get to the juicy bits, after all at least half of those new people got a working app, not a broken one. So when the sale ended did they tell all their friends? Did sales skyrocket? Pocket Weather World averages about $20 a day in sales, it shot up to $427 on the first day, and we got all giddy with excitement, but it rapidly dropped off in the following two days. Our hope is that people who heard about the sale, missed out, and then bought it anyway, but it could also have been people that thought it was free, ignored the button, and just clicked buy. We haven’t received any complaint emails, but you just never know.
Pocket Weather World HD is similar, except it averages closer to $10 a day on the app store, and it’s post sale sales were much more measured.
So what did we learn from all this?
- If you make a paid app free, expect a lot of downloads!
- If you’re app has a server component to it, be sure to test the hell out of it first, and not just assume it will be ok.
- Free app sales will get you a lot of eyeballs, but who knows if they are the right ones, or if there’s any long term affect from doing it.
Today we’re proud to announce our latest app Pocket Casts, for Android:
Which begs the obvious question: Have we gone mad, two Android apps in the space of a month? Have we abandoned iOS for greener pastures? The simple answer to which would be: no, we’ve always been mad, but we’re still committed to iOS development.
The longer answer is that currently we have two programmers at Shifty Jelly: Philip and Russell. Out of those two only one coded all our iOS apps, Russell. Philip focussed on the server side of things, which pretty much all of our apps rely on, and which has always been a full time job on it’s own. Since resigning from our full time jobs in September of 2010 Philip has been optimising the heck out of our servers, to ensure that each day he has less and less maintenance that he has to do on them. This frees him up to do some front-end development, which is something he’s always wanted to do. Combine that with his 10 years of experience in Java, and Androids rise in the mobile world, and you have a pretty good match. If you’ll endulge us a second, let’s rephrase it as a computer hardware analogy: in essence we’re a dual core machine, capable of working on iOS apps on one core, and Android apps on the other, while taking advantage of our design co-processor across both.
In many ways the Android side of things is still an experiment, a way of putting a toe into the water to see what happens. So far we’re pleased with the results, but it’s early days. We’re going to be writing a series of blog posts over the next few weeks about the experience, should be quite interesting!
So what can you expect from the Shifties over the next few months? Here’s our current plan:
- New version of Pocket Weather AU for iPhone (hopefully released to Apple today)
- New versions of Pocket Casts for iOS and Android (hint: we’re building a platform here, not a podcasting app as such…there’s a LOT more in the pipeline for Pocket Casts)
- New version of Pocket Weather AU HD for iPad
- New versions of our world weather apps
- New versions of Pocket Weather AU for Android to slowly build up the feature list to match the iPhones
- What, that’s not enough for you? 😉
So let’s put aside the iPhone vs Android war, it’s pointless, both platforms have their merits and neither one is really superior to the other. It all depends on your preference, and having a choice is a good thing as far as we’re concerned. But more importantly, you can enjoy the benefits of Shifty Jelly on both…now isn’t that a load off your minds? Now go be good little boys and girls and buy up all our apps so we can eat for another week! No really…I’m hungry…
There are times in everyones lives, where you stand at a fork in the road, looking at two differing directions, and having to choose one. ShiftyJelly found itself at just such a point a month or so ago. We have been in the App Store now for two years, working on our apps in our ‘spare time’ while all working full time jobs. The problem is that we don’t really have spare time, that’s just a euphemism for time that we really want to be spending with our families, friends and having fun. Sure we’ve had fun doing this, but it was really starting to wear us down. The last few releases of our products have contained some fairly obvious bugs and it was getting harder and harder to maintain the motivation to open the laptop at 11pm at night and start coding. We are insanely passionate about quality, so this was really starting to get to us.
Introduction aside, we stood at a fork. In one direction was either selling or shutting down ShiftyJelly, in the other was resigning from our full time jobs and taking the leap into doing this full time. In truth there was only one option, but it was not an easy one. To those of you who think we sold out or were going to shut down, shame on you! We resigned our jobs, and it’s full steam ahead!
So what does this mean? Initially it means that we’ll be busy looking for office space, sorting out legal documents, registering various bits and pieces, so we’ll be distracted for a little while. Once the transition period is over though, it means that ShiftyJelly is about to bring it’s A game. No more late night rushed releases, no more cutting corners, just pure unadulterated awesomeness. If you’re one of our competitors, consider yourself on notice. If you’re one of the many companies we turned project work down for, we will now consider it. Best of all, if you’re one of the people that has purchased one of our applications, or supported us, we’re finally going to be able to devote 100% of our time and energy into making products that blow your mind. We’ll also be updating all of our existing products to finally make them what we’ve always wanted them to be, not just what we had time for them to be.
We’ll be keeping you up to date over the next few weeks as we make the transition, but for now we leave you with this teaser image. Who could that be in the shadows…
We’ve had a lot of email recently. Probably because some genius thought it would be a good idea to start putting email us buttons into all of our applications. While it has increased our workload a bit, we’d prefer that to people just getting frustrated, deleting our application then telling all their friends how bad it is. The emails vary from ones that are quite funny to ones that are quite angry. I’d estimate that 9 times out of 10 the answer is very simple, and people normally walk away (assuming that’s what you do after reading an email) very happy. It’s funny, sometimes it almost seems that people are happier to get a buggy application that you then fix (after they find the bug) than to receive a perfect, bug free application. In quite possibly the longest segue in ever, that’s what I want to talk about: Quality, Features and how shiftyjelly applications are made. Possibly unicorns and rainbows too, I haven’t decided.
Most people assume that we’re some large-ish corporation, which I’d like to put down to the amazing quality of our applications, and the fact that ‘shiftyjelly’ is a very serious business like company name. I can see the latest IBM board meeting: “Who did we outsource all our IT work this year Bob?”. “Why shiftyjelly Frank, who else? Dependable chaps the lot of them.”. In truth a typical day in the life of a shiftyjelly goes something like this (there are 3-4 of us btw, depending on who’s counting and how, you can read more about that here):
- Wake up
- Eat breakfast
- Go to our full time jobs (which have nothing to do with shiftjelly)
- Come home
- Eat dinner
- Be social
- Put the kids/wife/dogs to bed
- Decide whether to code like a mad monkey or just crash into bed
There’s a point here right? If you’re still reading my guess is that’s what you’re wondering. Well the point is this: we’re just 3-4 part timers working in the wee hours from our couches. It might sound more glamorous if I told you my couch is leather, but really, sometimes it’s just hard work. We make a little money, ’tis true. When split 3-4 ways it’s not a lot though, which you can probably guess by the fact that we still all work full time elsewhere. But we don’t do this for the money. If we did we would have been much better off working the graveyard shift at a service station (gas station for the Americans out there). It would pay more, and I hear the employee discounts are really awesome. No we do this because we love it. Not always, not every day, but we really do love it. Some days we hate it, we chase down excruciating painful bugs for hours on end, sometimes in circles. Some nights you end up giving up and just reverting all the changes you made (thank goodness for source control). But most times it just seems cool. We’re making applications that people use every day. Roofers, tradies, fishermen, office workers, cyclists…even grandma. We’re also motivated by our competitors, perhaps because we’re all alpha males, but every time one of them creeps above us in the charts the coding nights become more frantic, the features get more elaborate, the whole virtual office (we’re separated by many kilometres) hums. All this just for the pure fact that we refuse to be beaten.
So on to the point (yes I know I promised it paragraphs ago): we love you guys, we really do. We love hearing from you. It pains us that we cannot add features faster than we do, but we’re trying. Some days we feel like we’re working 2 jobs. So yes we’re upgrading all our apps to support that fancy new iPhone 4 display, yes we’ll keep adding features to our new iPad versions, yes we’ll never forget about the old iPhone apps, yes we’ll fix all those little annoying bugs that slip through our 2am testing…but it will take time. And until someone comes along and hands us a million dollars (I know, we’re cheap, right?) we’ll probably stay at our day jobs, and it will always take time.
A wise man once said ‘never pen a word in anger’, he was going to say more, but I punched him in the face. Years later I realised his advice was straight and true, unlike his nose. Jokes aside I thought I’d give a quick update on the My Frame situation, and also what our plans are for the future. Since some people are confused by the hierarchy of Shiftyjelly, Groundhog Software, and myself, allow me to explain. I work at Groundhog Software as my full time job, we do custom software solutions for almost any environment (be it Enterprise Java, SOA integration or iPhone applications). Shiftyjelly is just a part time company I run with 3 other mates (a programmer and 2 designers) That history lesson is important in understanding that each of us is going to respond to Apple differently. So My Frame and Tennis Stats are Groundhog Software products, while things like Pocket Weather HD were made by Shiftyjelly.
In terms of My Frame Apple has now contacted Groundhog via email and we are setting up a phone call so we can discuss the situation and come to an amicable conclusion. While that doesn’t excuse them for how they treated us, we are glad to see that they are taking steps to address it, and they’ve even allowed us to submit a modified version of My Frame back to the store. We hope that they’ll give us enough clear guidance so that we can develop future version of My Frame without fear of wasting valuable time and effort. Only time will tell, but these are certainly some positive steps.
In terms of Shiftyjelly our Pocket Weather AU HD product skyrocketed up to be the #1 paid app here in the Australian app store. That’s not us bragging, but it’s an important consideration in what we’re going to do going forward. I freely admit I considered pulling all of our Shiftyjelly applications from the store out of protest, and throwing in the towel. Having taken a few days to cool down though, I realised that wouldn’t be fair to all our customers who have supported us over the years by buying our products, and helping us improve them. You have to go where your customers are, and it would be naive of us to think that anything we did would convince many of them to switch their phones. In all fairness we make money off those products as well, which while it’s not our primary concern or goal, certainly helps when you have 2 kids in nappies. So we’re not changing our development strategy, but we have made one key decision: we are going to try our best to bring Pocket Weather AU to the Android platform. Partly out of protest, but also because Android is growing (albeit slowly) here in Australia. We’re not going to make anywhere near the money we do on our iPhone product (we may not even pay back the costs of buying development handsets) but it’s something we feel is the right thing to do. There will be some hurdles to overcome, like the fact that Google currently doesn’t allow Australians to sell paid apps in it’s store, and the fact that the Android handset market is a lot more fragmented, but we don’t care, we’re going to try it anyway 🙂
So in short all our iPhone/iPad customers can relax, we’re not leaving you, and all those who have emailed us about Android we are listening, and hope to bring you something this year. If you’re an Australian Android user, how about helping us out by participating in this forum: http://forums.whirlpool.net.au/forum-replies.cfm?t=1432091
Update 3 June 2010: To those of you reading this post for the first time, it’s over month old. Pointing out the irony of it to me may seem novel to you, but it’s obvious. I even refer to it myself in the post about Apple removing our application. I leave it here as a piece of history, this is how I felt at the time. Those of you that want to argue with my former self can build a time machine.
As you were:
I received an email in my inbox from someone reporting on Apple and their Policies. They were basically asking about how I feel about Apple being so closed and evil…here was my response:
If there’s one thing I like doing, it’s commenting on Apple’s approval process. I have always been amused by the amount of media hype and attention that goes with it, and how people just assume that we developers must be such an oppressed people, and isn’t it terrible dealing with Apple? Do we have to check our souls at the door? How can we possible approve of and work for such a tyrannical regime? Even the questions in your email are, to be fair, quite leading.
My high level summary would be: I love the app store and the amazing hassle-free distribution it provides and I only really have a few niggling concerns with how Apple has dealt with us, as developers.
So allow me to start with my concerns. My one biggest concern is that it’s never easy having a middle man between you and your customer. If you have a critical bug in your code, it can take days (or longer) for Apple to approve, and all the while your customers are becoming angry and frustrated because they feel you’re not acting urgently on a issue that affects them. My other concern is that there’s no one to call if things go bad, you send email to an address and just hope that one day you might receive a response. So let’s say they closed my account for example, who would I call? Where would I call…I would just send emails into the void. My only other concern is that sometimes Apple let’s through things in one review, and picks them up in later ones. That can be annoying, but they are people after all.
But more importantly, let me cover the things that don’t concern me. I don’t think Apple is a ‘prude’ and I was all for removing all the spam (I love how the media referred to them as porn) apps in the store. There were developers releasing app, after app, after app with nothing but pictures of bikini clad women in them. One such developer had over 100 versions of the same thing. I’m not on some moral crusade against porn, what you do in the privacy of your own home is your own business. Safari will get all you all the porn you could ever dream of, do I want it blocked? No. If Apple runs a retail store and doesn’t want to sell bikini’s in there, I say fine, I agree with them that it ruins the look of their store. Imagine if you’re a woman, and you browse the lifestyle section, and all you see are bikini apps in there, I don’t think you’re going to be too impressed. I think trying to turn this into an Apple is restricting your freedom argument is wrong. It’s like Stephen Conroy saying we should censor the internet and if you don’t agree you are for child porn. I’m not for restricting freedom, any more than I’m in favour of child porn, but I think Apple should be free to reject applications from coming into the store in the same way I believe the Australian government should never implement mandatory filtering.
I don’t think there’s that much that is ‘murky’ about their approval process, every time our apps have been rejected it has been for a reason that is documented in either an interface guidelines document, or some other part of their documentation. In my experience (and that’s all I can comment on) it’s extremely well documented as to what you can and can’t do. I’ve seen lots of complaints from developers who were rejected for using private APIs for example, as if they stumbled into them and didn’t know better. Private APIs are something you have to hunt for, you have to dig through header files and classes that are not meant for development, looking for a call to make that does what you want. They aren’t documented and you have to try pretty darn hard to find them. They are private for a reason, because Apple may change them at any time, and there’s no way you can call them by accident. The rules clearly state that you can’t call these APIs.
Perhaps I’m in the minority, but other developers I’ve talked to all agree, the app store is an unprecedented way for developers to distribute applications worldwide. There has never been anything like it in the history of mobile development, and I know, I used to develop for Pocket PC on Windows…and…well let’s not even go there. Apple’s tools, development environment and platform stability are second to none. For me it’s a pleasure to develop for their platform. It doesn’t surprise me that there aren’t more headlines that read “Apple’s Development Environment a Joy to Use” & “Apple Offers Developers Unprecedented Ease of Deployment Worldwide”, because as you well know, calling Apple ‘Evil’ sells 😉
So to sum up, I love being an Apple developer, and I think all the hype about them being somehow ‘Evil’ is just that, hype. If you consider their actions as a company trying to ensure (where possible) that their App Store is a great place to get quality apps, then everything the’ve done makes perfect sense. Sure you can say they did it to be ‘Evil’ and ‘restrict freedom’ but that’s a much harder sell to me. The most obvious reason, while not always headline worthy, is often the most likely one to be true. Have they made mistakes? Sure. But they are making clear and obvious efforts to correct those mistakes. I’ve developed for the App Store since almost day 1, and Apple has been constantly improving things that most people would never even see.
Sorry for the long email, happy to answer any more questions you may have 🙂