PodSearch

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.