Developing Perspective

#153: It’s beginning to look a lot like Christmas.


00:00:00   Hello and welcome to Developing Perspective. Developing Perspective is a

00:00:03   podcast discussing news of note in iOS development, Apple, and the like. I'm your

00:00:08   host, David Smith. I'm an independent iOS developer based in Herndon, Virginia. This

00:00:11   is show number 153 and today is Thursday, December 5th. Developing Perspective is

00:00:17   never longer than 15 minutes, so let's get started. Alright, a couple quick notes.

00:00:21   I just wanted to mention on the show that I will be speaking next spring at

00:00:25   two conferences, which isn't something I typically do, but it's something I'm trying

00:00:29   out, seeing how I enjoy it, how good I am at it, and so on. So I'll be speaking at NS

00:00:35   Conference, and then again at CocoaConf. NS Conference is in Leicester in the United Kingdom,

00:00:41   and CocoaConf is in Herndon, just down the road from me. So just wanted to mention that

00:00:45   on the show, if you've ever been curious what I sound like when I talk for longer than 15

00:00:48   minutes, there's two chances to hear me.

00:00:50   All right, I'm going to get into the main guts of the show. It's sort of a two-topic

00:00:54   I've attended today.

00:00:55   The first thing I'm going to talk about is Christmas,

00:00:58   and specifically about some of the things

00:01:00   that Christmas does as an app developer.

00:01:03   Just some things I wanted to think about and put it out now,

00:01:06   because some of the things have implications

00:01:10   towards the end of the month if you're

00:01:12   listening to this in real time.

00:01:13   And I want to make sure that I give you

00:01:14   enough time to react to them.

00:01:16   Just some of the things I've learned,

00:01:17   some of the things that happen over time.

00:01:19   So first, and most importantly to realize,

00:01:22   is that every year so far--

00:01:24   I've been doing this for about five years-- every year so far,

00:01:26   Christmas is by far the biggest single app sales day

00:01:29   you'll probably ever see.

00:01:31   You may have a bigger launch day, potentially,

00:01:34   but in terms of just from a calendar day in and day

00:01:36   out kind of thing, it's always been the biggest day.

00:01:39   No one really knows exactly why.

00:01:40   I mean, obviously, there's a lot of people getting new phones.

00:01:42   There are people getting gift cards.

00:01:43   There's all kinds of things that could be going into that.

00:01:45   But whatever it is, it's happening.

00:01:47   And every year, I've been pretty predictable,

00:01:51   predictably able to rely on a nice big bump in sales on Christmas Day itself. So December 25th, you'll get a nice big bump.

00:01:57   It's varied a lot from year to year in terms of exactly how large that is.

00:02:02   Sometimes I've had it as much as ten times

00:02:05   versus what a normal day would be. Some of them have had it two times. But either way, it's a nice big bump.

00:02:10   And so you want to

00:02:12   just be careful and thoughtful about it basically to make sure that you are taking full advantage of what that will be.

00:02:19   and also on the flip side is making sure you're not setting yourself up

00:02:23   for a lot of trouble, potentially, because this sort of condenses things in a way that

00:02:27   is good

00:02:28   as well as potentially bad. So first, one thing to also keep in mind is that

00:02:32   every year Apple shuts down iTunes Connect and sometimes parts of the App Store

00:02:37   things get locked sometimes, so like your ranking can be

00:02:40   static, though they've since seems to be working away from that now

00:02:44   so that, you know, things are just normal but you just can't submit updates.

00:02:47   So as a result, you always have to be very careful about exactly what you're going to

00:02:52   release in the next couple of weeks.

00:02:55   So what you don't want to do, and this is an experience that I had last year, is you

00:03:00   don't want to release an experimental update, something that is changing something, or even

00:03:06   moreover you just want to be extremely careful about what you release or what you submit

00:03:10   in the App Store.

00:03:11   You want to do extra QA.

00:03:13   Last December I submitted an update for audiobooks, which is my most successful app that provides

00:03:19   the majority of the income for my business, and I accidentally included a single line

00:03:22   of code in it that enabled my app store in a purchase debug mode, which means that it

00:03:33   doesn't actually complete purchases, essentially.

00:03:36   It's something that I have in there so I can test things more quickly, so I can say when

00:03:40   When you hit buy, it buys, but it doesn't actually

00:03:43   go through the iTunes Connect process of doing it

00:03:45   so that if I'm trying to test that things turn on correctly,

00:03:48   it's something I had in for debug

00:03:49   and ended up being included into an App Store release, which

00:03:53   was awkward because I believe this went live on-- I think

00:03:57   it was December 19th, December 20th.

00:04:00   I mean, it was down to the wire in terms of the shutdown.

00:04:04   So as soon as I realized this has happened,

00:04:06   I started having customers be like, hey, what's going on?

00:04:08   This thing's not working right.

00:04:10   I go in and I look like, oh no, this is terrible.

00:04:12   So I go in, it's a trivial fix.

00:04:15   I just commented out the one line that enabled this mode.

00:04:17   Do a redo my build, send it to Apple,

00:04:20   do an expedited review request, get pillared by them

00:04:24   and beaten up a little bit, be like, oh, expedited request,

00:04:26   huh?

00:04:27   And so the second one you've asked for in three years,

00:04:30   you're getting a little too fast and loose with that.

00:04:33   I worked through that and ultimately it was approved.

00:04:35   Just in time, I think, maybe about a day

00:04:38   before the shutdown happened.

00:04:40   It got approved.

00:04:40   So it was there for Christmas, and all

00:04:42   was well with the world.

00:04:44   But that's a cautionary tale.

00:04:45   That's what you don't want to do.

00:04:47   You don't want to be releasing updates

00:04:49   that are going to put your app into a really awkward state,

00:04:52   because come the shutdown, whenever Apple closes the door,

00:04:55   there's nothing you can do.

00:04:56   You've just got to let that ride through one

00:04:59   of the more important couple days of the App Store.

00:05:04   So be careful.

00:05:05   So if you have an experimental update,

00:05:06   updates and it's a bit aggressive and it's doing some interesting things, maybe hold

00:05:10   that back. If you're doing a nice little bug fix updates, tweaking little things, cleaning

00:05:14   stuff up, great, do it. Do an extra two or three rounds of QA to make sure everything

00:05:18   good to go. Maybe have somebody look at your commit logs, those types of things. Be very

00:05:22   confident about what you're putting out there because you can't change it, which is a little

00:05:25   awkward. Some random notes about Christmas that are just kind of interesting. If you

00:05:31   do anything advertising based, I always see a massive spike in advertising rates coming

00:05:36   up into December. I just mention that because it's kind of interesting that the advertising

00:05:40   rates go up and down. But on the flip side, in January, there's a massive fall off usually.

00:05:45   So if you launch an app in January that's ad-based, especially something like iAd, and

00:05:50   you're like, "Wow, these rates are kind of lower than I was expecting," often especially

00:05:53   at the end of financial quarters and then especially at the end of the year, you see

00:05:58   this huge run-up which I always imagine is just people, you know, kind of they have budget

00:06:02   that they need to spend and so they're spending it before the end of the year.

00:06:06   year, and then coming January 1st, no one has any budget anymore, rates start to fall

00:06:10   down a lot. So that's just an experience I had, and I just figured I'd mention it in

00:06:13   case it was useful for somebody else.

00:06:15   Alright, so those are kind of the few things about Christmas. Just something to keep in

00:06:19   mind, now's the time to be thinking about this. If you're going to do any updates, you

00:06:22   really need to get them in very soon, probably no later than the end of next week, I'd say,

00:06:26   if you have any expectation of them being there by Christmas. Review time's been pretty

00:06:30   good recently, but just be very thoughtful about this particular time. You know, it can

00:06:34   be a big deal. You can do a lot of sales. I mean, for some of my apps, they probably

00:06:38   make 20% of the revenue for a year in just a few days around Christmas, which is a big

00:06:44   deal.

00:06:45   All right. The next thing I'm going to talk about and kind of change gears a little bit

00:06:49   is I want to talk about something that I did this week and kind of the process that got

00:06:54   me there. I thought it was kind of interesting. And it's basically about just being able to

00:07:00   creative and not worrying too much about fully baking everything before you put it into the

00:07:06   world.

00:07:07   And there's a part of building good software that means that you have to really be thoughtful

00:07:12   and build things out and really roll it out in a thoughtful, strong way.

00:07:17   But sometimes you can just be a little bit more creative and a little bit more exploratory.

00:07:21   And it seems to, at least in this particular instance, it worked really well.

00:07:25   So a couple of days ago, I launched a new update for FeedWrangler/PodWrangler where I

00:07:32   took the PodWrangler backend that runs on the FeedWrangler servers, so that's my podcast

00:07:39   client and my RSS syncing client respectively, if you're not familiar with them, and I basically

00:07:45   opened up audio playback for your podcast in any browser.

00:07:49   Just, you know, you go to FeedWrangler.net and there's a little tab that you can go and

00:07:52   and click on and listen to your podcast and it syncs back and forth with the phone.

00:07:57   And the process of how I got there was kind of interesting because I initially had been

00:08:02   just working on a feature that is actually, the goal feature isn't even finished yet,

00:08:08   but what I was trying to do initially was I wanted to have a page that you could share

00:08:14   a podcast to a friend and include a bookmark to where you were in the show.

00:08:19   So that's just something that I thought would be kind of nice, kind of useful.

00:08:21   So you're listening to a show, and often, I find this for myself, where it's like, "Hey,

00:08:25   you should listen to this starting at minute 40."

00:08:27   And I have to give them a link and then give them a time code.

00:08:30   And they have to go and work that out.

00:08:32   And it's like, "Hey, what if I just..."

00:08:34   You hit pause, you hit share, and you get a page that already plays the audio starting

00:08:40   in that particular location.

00:08:41   So that's where it started off.

00:08:43   That was the concept that I was like, "That would be kind of cool."

00:08:45   And so I started building that.

00:08:46   And in order to do that, I added a web page to the feed wrangler site.

00:08:53   Initially, I thought you could even do this with a completely static page, because you

00:08:58   in theory could just give someone a URL and an offset and it just plays it.

00:09:04   But then I started to be like, well, this is a little lame.

00:09:05   It doesn't have show art, show links, all the kind of things you'd want.

00:09:09   So then I started building out more and more.

00:09:10   And as I was going, I realized what I'm building could just be used to listen to any podcast

00:09:16   that you've listened to and I have your sync information sitting in the database,

00:09:20   so maybe I'll just turn it into a player. And I just did.

00:09:24   And it didn't take very long as a result because I already had all the

00:09:28   JavaScript audio playing stuff and all these components that I've been

00:09:32   working on for the sharing feature, just like, "Hey, let's just repurpose it and play with it

00:09:36   and put it out there." And the interesting thing is that I've had a very,

00:09:40   very strong response on the positive side from this. From a lot of people who've been like, "This is great.

00:09:44   great. It's simple, it does what I need, thank you so much for doing it." Which is kind of

00:09:50   reinforcing to me about sometimes you just don't want to get too crazy about how complicated and

00:09:56   polished and refined things are. Because you can put these things out and find out if it's worth

00:10:02   pursuing. Because when I released this, I really didn't know if this would be useful for people.

00:10:08   Like for me personally, I listen to 99% of my podcasts right on my phone. It was usually in

00:10:12   in my pocket, even if I'm at my desk, sitting at my MacBook Pro.

00:10:16   I'll often be playing it from my phone, just because that's what I'm used to.

00:10:19   That's what I'm comfortable with.

00:10:21   And then if I get up and go somewhere, the sound carries with me.

00:10:25   But apparently a lot of people, especially from what I hear,

00:10:28   and a lot of people at work especially, it's like you're in your car,

00:10:31   you're commuting to work, you're listening on your phone,

00:10:33   you're listening on your phone, you get to work.

00:10:36   It's a bit more awkward sometimes to be then continuing with your phone.

00:10:40   maybe you just put it on a browser. But it's just kind of interesting how you can end up

00:10:46   at different places than where you necessarily started or where you were intending to start,

00:10:50   and just kind of enjoying that.

00:10:53   It's also an interesting thing, because it's the first time I've ever released something

00:10:56   really publicly that I would sort of have put a beta tag on. And a beta tag is always

00:11:01   kind of funny. Like, you always think of the classic example of someone like Gmail, who,

00:11:05   Gmail was in beta for years in theory, it always had that beta tag on it, when in reality

00:11:11   it was probably one of the most popular web email clients in the world, but it was still

00:11:16   a beta.

00:11:17   And so beta can mean a lot of things to a lot of different people.

00:11:20   And I think in this case, the definition that I'm using that was sort of helpful for me

00:11:24   is that it's a product that is useful and works, but I'm not sure about its future.

00:11:32   For me, that's the way I tend to try and use things that are beta in a public sense.

00:11:38   Obviously there's beta testing I'll do with friends, with people I trust, with people

00:11:41   with app reviewers, those types of things.

00:11:43   But in this case, it's like, I want to put something out there because I'm not really

00:11:46   sure what this is.

00:11:49   It's not an alpha or whatever you want to call it where it's just a vague working prototype.

00:11:54   It's like, it works.

00:11:55   It's useful.

00:11:56   It does everything that it should do or need to do.

00:11:59   But I don't know if this is what it will ultimately be.

00:12:01   And so I'm not going to commit to it necessarily going forward

00:12:05   or commit to this particular feature set, exactly how

00:12:09   it's going to look and feel.

00:12:10   And so for me, I'll put a beta on it.

00:12:12   And it's just trying to give myself a bit of an out

00:12:14   and to give my customers a bit of an expectation of things

00:12:17   might change here.

00:12:18   And I like that.

00:12:20   It's been kind of a fun process to build and to put that

00:12:23   out there.

00:12:24   And I kind of like, in some ways,

00:12:25   that it takes a bit of the pressure off me

00:12:27   for things like a Mac client, which a lot of people

00:12:29   are like, oh, you're going to have a Mac client?

00:12:31   for a pod wrangler.

00:12:33   And as much as I would love to have a Mac client,

00:12:37   it's something that I worry about because every time I've

00:12:40   tried Mac development, it's such a time sink compared to iOS.

00:12:45   I can build things so much more quickly on iOS.

00:12:47   And that's not to say Mac's bad.

00:12:50   It's just different.

00:12:50   And it's not what I'm used to.

00:12:52   And it has a lot of quirks that take a lot of time for me

00:12:54   to solve, whereas I've dealt with all the problems on iOS.

00:12:57   So I can deal with its quirks much more quickly.

00:13:00   So now I take a lot of the pressure off that just by putting it in a browser, which has

00:13:04   some benefits and pros and cons.

00:13:06   It's not great, it's not perfect, but it works.

00:13:09   And so it's something I put out there, and I think it was just an interesting lesson

00:13:11   for me.

00:13:12   This is where I took the lesson I take from it.

00:13:14   It's like, you know, sometimes you can just be a little creative and just kind of throw

00:13:17   things out there and see if other people resonate with it.

00:13:21   And in this case, they did.

00:13:22   And so that was kind of cool.

00:13:23   All right, that's it for today's show.

00:13:26   As always, if you have questions, comments, concerns, complaints, I'm on Twitter @under_scruthers.

00:13:30   David Smith. You can email me, david@developingperspective.com. And otherwise, we have a great week. Happy

00:13:35   coding and I will talk to you next week. Bye.