#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: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: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: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: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: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: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: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.