#172: Going Global.
00:00:00
◼
►
Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing
00:00:04
◼
►
news of note in iOS development, Apple and the like. I'm your host, David Smith. I'm
00:00:08
◼
►
an independent iOS and Mac developer based in Herner, Virginia. This is show number 172.
00:00:12
◼
►
And today is Monday, February 3rd. Developing Perspective is never longer than 15 minutes.
00:00:18
◼
►
So let's get started. All right, so I've got a couple of different things I want to talk
00:00:21
◼
►
about today. I'm starting to start off by talking a little bit about how the launch
00:00:25
◼
►
last Friday of Pedometer++'s big update went.
00:00:28
◼
►
I think there were a couple interesting lessons to learn from that
00:00:30
◼
►
that I thought were worth sharing,
00:00:32
◼
►
and then we'll see how much time I have left for other topics.
00:00:34
◼
►
All right, so I launched Pedometer++'s big update on Tuesday--
00:00:38
◼
►
or, sorry, on Friday.
00:00:40
◼
►
This was version two of the application
00:00:42
◼
►
that basically just was a complete overhaul of the application
00:00:45
◼
►
in terms of its UI and some of its functionality,
00:00:48
◼
►
as well as localizing the application with those two things.
00:00:51
◼
►
And as a bit of an aside,
00:00:53
◼
►
I wanted to mention something that I've increasingly sort of--a philosophy I've started to have,
00:00:58
◼
►
where I feel like in--people who come from box software, the box software world, or from
00:01:05
◼
►
pre-app store days, are often very conservative about their version numbers. And increasingly,
00:01:10
◼
►
I'm less conservative about version numbers than I used to be, where, you know, this is--I
00:01:14
◼
►
call this version 2.0, and it has some big changes, and it has some, you know, some major
00:01:17
◼
►
updates to it. There's often--I think people have kind of this weird hang-up with calling
00:01:23
◼
►
things major updates.
00:01:24
◼
►
That it's like, oh, it has to be this major thing.
00:01:26
◼
►
And I think a lot of that's coming from a world where
00:01:29
◼
►
it was part of the marketing system of paid updates, where
00:01:34
◼
►
you would-- essentially, users would get free for bug fix
00:01:37
◼
►
and minor version updates.
00:01:38
◼
►
But major versions were paid updates.
00:01:40
◼
►
And so you had to have something compelling in there, something
00:01:43
◼
►
that you really would want to-- a user would want
00:01:45
◼
►
to feel compelled to update.
00:01:47
◼
►
That's not really the way it works in the App Store,
00:01:49
◼
►
it seems as much these days.
00:01:51
◼
►
You know, this app isn't getting paid updates,
00:01:54
◼
►
and really you can't do paid updates very well in the app
00:01:57
◼
►
So that part doesn't matter.
00:01:59
◼
►
If you give it a major version bump
00:02:01
◼
►
and you have something to point to that would be a major--
00:02:04
◼
►
some major improvements and changes that aren't just
00:02:06
◼
►
bug fixes, then maybe you'll get a little PR,
00:02:08
◼
►
maybe you'll get a few bumps, maybe
00:02:09
◼
►
you'll get some interest from that.
00:02:10
◼
►
So don't be too conservative about it.
00:02:12
◼
►
It's just kind of where I've come down to.
00:02:14
◼
►
You know, if something is major and you put a lot of work
00:02:16
◼
►
into it, and you want to call it a 2.0 or a 3.0
00:02:19
◼
►
or whatever it is, great.
00:02:21
◼
►
And if anything, it's kind of nice,
00:02:22
◼
►
because I think a lot of users, when they look at an application
00:02:25
◼
►
and they see that it's a one-point something versus it's
00:02:27
◼
►
a two-point something, I think there's a-- calling something
00:02:30
◼
►
a 2.0 or 2.0, especially even when it's like 2.1.2
00:02:34
◼
►
or something, it shows that the app is active,
00:02:36
◼
►
that it's worked on, that people are-- the developers
00:02:39
◼
►
are engaged in working on it.
00:02:40
◼
►
So don't be too hung up on exactly what
00:02:44
◼
►
you call your version numbers.
00:02:46
◼
►
I think some of the old rules from back in the--
00:02:49
◼
►
sort of back in the past days of development, sort of apply, but in general, do what makes
00:02:54
◼
►
sense for you. In this case, I was like, "Oh, it's a big visual update. Let's call it 2.0."
00:02:58
◼
►
And it seems to work. It had a fair bit of press.
00:03:01
◼
►
Before I get into that, I wanted to talk about a bit of a -- one of the little hiccups that
00:03:05
◼
►
you can run into as a developer that I just wanted to mention. So hopefully you don't
00:03:08
◼
►
get caught up on it in quite the same way. So the app was approved. I -- actually, it
00:03:14
◼
►
was kind of an interesting story. I submitted it about two weeks ago, and I went through
00:03:17
◼
►
normal App Review timeline and got rejected, which kind of surprised me.
00:03:22
◼
►
And it turned out that App Review caught a kind of horrific bug where under certain,
00:03:26
◼
►
you know, with certain circumstances on a fresh install, the app would basically not
00:03:32
◼
►
show any data on first launch.
00:03:34
◼
►
If you relaunched it, it would work correctly and so on.
00:03:36
◼
►
And it turns out this was because I'd done most of my testing with existing databases.
00:03:40
◼
►
Obviously, all my beta testers had existing databases.
00:03:43
◼
►
So I hadn't done quite as much testing as I should have on the first run, first install
00:03:47
◼
►
all experience and that's the one thing that App Review is great at catching. So thank
00:03:51
◼
►
you App Review. That's just one of the things that's worth mentioning I think because often
00:03:57
◼
►
we can think of App Review as kind of a burden, as a thing that holding us back is kind of
00:04:01
◼
►
annoying, but sometimes it's actually really helpful and this is not the first time that
00:04:04
◼
►
they've caught kind of a horrific bug that, honestly I shouldn't have let, you know, should
00:04:09
◼
►
have let out the door, but I did. I didn't catch it and they found it, which is pretty
00:04:13
◼
►
pretty awesome. Alright, so the tricky thing though is I went through and it got approved
00:04:18
◼
►
after the second submission, after I fixed that bug, and the approval came very late
00:04:24
◼
►
on Thursday night. And so I was like, "I'm not going to release that in the middle of
00:04:27
◼
►
the night." I'd done the update with hold for developer release thing where the app's
00:04:31
◼
►
approved, it doesn't immediately go out to the store, you have to wait for it. It waits
00:04:36
◼
►
for me to hit a button that says go. And so I did that and woke up on Friday morning and
00:04:41
◼
►
I was like, I don't know how great it is to launch an app on a Friday.
00:04:45
◼
►
In some ways it's good because weekends are often high traffic days.
00:04:48
◼
►
So if I can have a big update out before that, that's great.
00:04:51
◼
►
And that's usually why a lot of apps launch on Thursdays,
00:04:53
◼
►
because they get-- that's part of the feature cycle with Apple,
00:04:57
◼
►
where the apps they feature often come out on Thursdays.
00:05:00
◼
►
But also, you can be set and established going into the weekend,
00:05:04
◼
►
which is usually very busy.
00:05:06
◼
►
I was like, well, let me go ahead and hit it now, though.
00:05:09
◼
►
And it'll be out early on Friday morning.
00:05:11
◼
►
I have all of Friday to draw some attention to it,
00:05:15
◼
►
get things going, make sure everything's happy for the weekend.
00:05:17
◼
►
And I hit go.
00:05:18
◼
►
It took about 13 hours, I think it was,
00:05:20
◼
►
from when I released the App Store to when it actually
00:05:25
◼
►
started to appear in the store.
00:05:27
◼
►
It was in processing for App Store for about four or five hours.
00:05:30
◼
►
And then it was a couple of hours again on top of that
00:05:32
◼
►
before it actually would show up.
00:05:34
◼
►
The whole day I was sitting there opening my phone
00:05:36
◼
►
or refreshing things on iTunes to see if there was going to update.
00:05:39
◼
►
and it never did.
00:05:40
◼
►
And ultimately it got released about 4 p.m. Eastern on Friday,
00:05:44
◼
►
which is probably the worst time I could launch a new app.
00:05:47
◼
►
I mean, everyone's wrapping up their days at work.
00:05:50
◼
►
I guess I still have a few people on the, you know,
00:05:51
◼
►
sort of West Coast Central Mountain time
00:05:53
◼
►
who are still at work.
00:05:55
◼
►
But, you know, it's a bit annoying
00:05:56
◼
►
that that's the way it ended up happening.
00:05:58
◼
►
And I mention that mostly just as it's something to keep in mind
00:06:00
◼
►
that those durations and those times
00:06:04
◼
►
aren't things that you can easily control,
00:06:06
◼
►
aren't things that you can easily manage necessarily.
00:06:09
◼
►
And so be thoughtful about that.
00:06:10
◼
►
In retrospect, what I probably should have done
00:06:12
◼
►
is before I went to bed on Thursday night,
00:06:16
◼
►
I should have just hit release to App Store.
00:06:19
◼
►
Not announcing it, not publicizing it, not sort of pushing it out there,
00:06:22
◼
►
just having it in the store.
00:06:23
◼
►
And then first thing Friday morning, I can start publicizing it and running it.
00:06:28
◼
►
Or I should have just not worried quite as much about getting it out right away
00:06:33
◼
►
and just done it on, say, like Monday.
00:06:35
◼
►
If I'd done it right now and it took 13 hours to get released,
00:06:38
◼
►
it wouldn't have been a big deal. I would have just sort of done my publicity run tomorrow.
00:06:42
◼
►
But anyway, that was just a lesson I learned. I kind of gotten used to the fact that some
00:06:45
◼
►
of those things, you know, you hit a button and then it was, you know, maybe an hour later,
00:06:48
◼
►
maybe half an hour later, it would be in the store. That isn't always something that you
00:06:51
◼
►
can rely on. So be careful if you're kind of planning attention and publicity and things
00:06:57
◼
►
that you make sure you leave a nice big wide buffers about that. All right, so the main
00:07:02
◼
►
thing I was going to talk about a little bit today is a follow up on last show about localization.
00:07:08
◼
►
And mostly I wanted to talk a little bit about the effect of it that it seemed to have had
00:07:11
◼
►
on Podometer++, as well as a few thoughts and things that have come up related to it.
00:07:17
◼
►
So this is sort of like localization part two.
00:07:19
◼
►
And this isn't about the actual process of doing that.
00:07:22
◼
►
If you're -- this is your first episode and you haven't listened to 171, I talk in great
00:07:25
◼
►
detail about the process of localization, why you should do it, and some of those kinds
00:07:30
◼
►
So localization is taking the app and making it work in a lot of different countries.
00:07:34
◼
►
And so for this update, I did that for an additional nine languages, or additional eight
00:07:39
◼
►
languages to bring it up to nine in total.
00:07:43
◼
►
And I was, my previous experience localizing apps has not been great.
00:07:47
◼
►
The only other app that I've really done it for was an app called Check the Weather, which
00:07:50
◼
►
is a weather app, that broadly, the fact that it was localized, maybe only attributed seemed
00:07:56
◼
►
to maybe an additional 5% or so in sales.
00:07:58
◼
►
really didn't take off in a major way or do things that, you know, that justify the effort
00:08:05
◼
►
and the time that it put into it. And I think the only country that seemed to really justify
00:08:09
◼
►
its value was Germany, which is interesting because the same thing that happened in pedometer++,
00:08:15
◼
►
but or as the biggest country that were it seems to have had a big uptick. So apparently
00:08:19
◼
►
the Germans love apps. But the I was kind of sour on it. It wasn't something that I
00:08:24
◼
►
necessarily wanted to do because it has a lot of burden in terms of the way you structure
00:08:27
◼
►
your app, in terms of the way you have to test it, your uploads and managing metadata
00:08:32
◼
►
and all these types of things.
00:08:33
◼
►
It's kind of annoying.
00:08:34
◼
►
And so I was kind of reticent to do it, but I wanted to try it again to make sure I had
00:08:38
◼
►
two data points at least rather than just one.
00:08:41
◼
►
And the nice thing with Pedometer++ is so far the result has been incredibly promising.
00:08:45
◼
►
It's only because the app's only been in the App Store for about two days.
00:08:49
◼
►
But in those two days, I've gone from a world where the app was getting about 60 to 65 percent
00:08:55
◼
►
of its downloads were in the United States, and probably about 70 to 80% of its downloads
00:09:00
◼
►
were in English speaking countries, you know, so the United Kingdom, Australia, New Zealand,
00:09:05
◼
►
etc. To a world where over the weekend, those numbers were almost sort of very strongly
00:09:11
◼
►
flipped, where about only about 40% of users are English speaking. And the majority of
00:09:17
◼
►
the you know, sort of the majority of users now are speaking a language other than English.
00:09:20
◼
►
You know, Germany I said was the biggest.
00:09:23
◼
►
That's actually on Sunday was actually the largest language group of the app.
00:09:29
◼
►
I think it was about 46 percent or something of people were downloading from Germany.
00:09:33
◼
►
And then France made a good, has started increasing dramatically from about 1 percent of downloads
00:09:39
◼
►
to now about 7 to 8 percent.
00:09:42
◼
►
It's kind of dramatic across the board.
00:09:43
◼
►
And like I said, it's early going.
00:09:44
◼
►
It could just be things about publicity or whatever.
00:09:46
◼
►
But so far, I'm kind of encouraged that the app is getting traction in places it wasn't
00:09:53
◼
►
And that's kind of exciting.
00:09:54
◼
►
And who knows what that's going to do, too, in terms of if it's popular and interesting
00:10:00
◼
►
in these locales, then it also potentially could get Apple's attention in those locales.
00:10:04
◼
►
Maybe now in Germany it's going to be featured, which it wouldn't have necessarily have been
00:10:07
◼
►
able to attract that attention before.
00:10:10
◼
►
And so I've been kind of encouraged by that.
00:10:11
◼
►
And it's something I wanted to mention because, like I said, I think generally there's a very
00:10:18
◼
►
high proportion of the developer community, at least that I'm aware of, who are in the
00:10:21
◼
►
United States, who are very English focused and don't really think about localization.
00:10:27
◼
►
And it's not a panacea.
00:10:29
◼
►
It's not something that would solve all your problems.
00:10:31
◼
►
But what it is, is an interesting tool that might allow you to broaden your thing.
00:10:35
◼
►
And as one example, after two days, it seems promising in that way.
00:10:39
◼
►
And I'll probably have, at the end of the week, I'll probably do a follow-up blog post
00:10:42
◼
►
about this where I kind of break it down in the actual numbers after I have a reasonable
00:10:46
◼
►
amount of data to actually compare before and after.
00:10:48
◼
►
But so far, very promising.
00:10:51
◼
►
One other thing I wanted to talk about a little bit is something that I've kind of been struggling
00:10:55
◼
►
And it's related to localization, but it deals with one of the funny aspects of localization,
00:11:01
◼
►
which once you start localizing things, the two things that seem to happen a lot.
00:11:06
◼
►
is you'll sort of get a lot of feedback from native speakers saying, "This part isn't great.
00:11:10
◼
►
You should change this. You should--" You know, "This word doesn't really mean what
00:11:13
◼
►
you think they--" you know, "You want it to mean." And this feedback is great. It's something
00:11:16
◼
►
that is very difficult as a developer. You know, you send your translations off to a
00:11:21
◼
►
service, they translate it, and they come back. I don't--I have no way of really validating
00:11:25
◼
►
whether that translation is useful and good in a way that is, you know, is as functional.
00:11:31
◼
►
I can take it and put it back in Google Translate, but it's going to sort of give me what I want
00:11:35
◼
►
the translation is accurate, but it might not necessarily be meaningful. And so I've
00:11:40
◼
►
been getting a lot of feedback like that. And if it's one of the things that is great,
00:11:42
◼
►
I mean, especially when you get a couple people saying the same thing, it's like, for example,
00:11:47
◼
►
apparently in my French translation, where in the tip jar, I have, you know, the word
00:11:53
◼
►
they gave me for tip is actually something that really has more of a connotation of like
00:11:57
◼
►
tips and tricks, rather than a gratuity, which is really what it's supposed to mean. And
00:12:01
◼
►
someone gave me a correction and says, "Hey, maybe you should use this word instead." Perfect.
00:12:06
◼
►
That's one of those things that I wouldn't necessarily be able to catch myself, and that's
00:12:09
◼
►
great to get that feedback. It's a little tricky, of course, to manage if you have two
00:12:12
◼
►
people who say two different things, like, "Who's the winner here? What's the right way
00:12:17
◼
►
to do it?" But in general, that's been kind of helpful to me. But the one thing that I've
00:12:23
◼
►
been struggling with a little bit, though, is you start to get a lot of people who are
00:12:26
◼
►
being like, "Hey, let me know if you want help translating it into another language,
00:12:30
◼
►
what length of translating it into Norwegian Portuguese. I've
00:12:34
◼
►
had all kinds of offers from all kinds of different countries and
00:12:36
◼
►
languages. And for free, usually they're like, I'd love to help.
00:12:39
◼
►
You know, I love the app, I'd love to translate it. I really,
00:12:42
◼
►
I struggle with this because in some one hand, I'd like to do
00:12:45
◼
►
that I'd like to have the app in as many languages as possible,
00:12:48
◼
►
just from a marketing perspective, and so on. But I
00:12:51
◼
►
feel weird about it doing it in a couple of ways. One, it always
00:12:55
◼
►
feels weird taking, allowing someone to do something for free
00:12:58
◼
►
that is typically something that I would pay for. It kind of reminds me of people doing
00:13:05
◼
►
spec work or a lot of the things that are just kind of, you know, I don't sit well with
00:13:11
◼
►
me, right? You know, if someone's doing a job that I would usually pay for, I'd like
00:13:14
◼
►
to pay them. And so I may contact some of these people and pay them what I would pay
00:13:17
◼
►
a service to do, expecting that I'd likely get a reasonably pretty good translation,
00:13:22
◼
►
because they understand the app and they use it. And so they're unable to translate it
00:13:26
◼
►
in a way that's better. And that's probably the approach I'll take. And also, there's
00:13:30
◼
►
a kind of a tricky thing of understanding how broad of a market the use, you know, the
00:13:36
◼
►
App Store actually is and how useful some of the smaller languages are. And there's
00:13:41
◼
►
a couple that I missed that are big ones that I expect to go back and correct. Like, for
00:13:45
◼
►
example, Portuguese is a language that I expect to do because, you know, it's used fairly
00:13:50
◼
►
broadly in the world. You know, there's more than one country where it's spoken. But you
00:13:52
◼
►
start to get more and more specific, it becomes a harder thing to justify.
00:13:57
◼
►
And the thing that's tricky is that getting a new translation isn't just a question of
00:14:02
◼
►
taking it, throwing in the strings and shipping it.
00:14:04
◼
►
I suppose I could do that.
00:14:05
◼
►
But really, if I'm going to do it, I want to support it properly.
00:14:07
◼
►
I want to have good screenshots localized to the application.
00:14:10
◼
►
I want to upload those to the store, updated the description and all those kinds of things.
00:14:15
◼
►
And so I'm going to be fairly careful about which localizations in which countries and
00:14:19
◼
►
languages I go to.
00:14:20
◼
►
And so if you're somebody who suggests one of these,
00:14:22
◼
►
and I haven't gotten back to you,
00:14:23
◼
►
or if I end to ultimately come back and say,
00:14:25
◼
►
you know, I'm not sure I want to expand quite that broadly
00:14:28
◼
►
within languages yet, that's kind of where I'm coming from.
00:14:31
◼
►
And I really appreciate the offer, and it's great.
00:14:33
◼
►
And there will be a couple of people
00:14:34
◼
►
I'll be following up with and working with to get
00:14:36
◼
►
some expanded a little bit.
00:14:38
◼
►
But it is a tricky thing, and it's
00:14:39
◼
►
something that I worry about overextending myself.
00:14:41
◼
►
Because in general, the biggest problem I have right now
00:14:44
◼
►
as a developer is being overextended.
00:14:46
◼
►
All right, that's it for today's show.
00:14:48
◼
►
As always, if you have questions, comments, concerns,
00:14:49
◼
►
complaints. I'm on Twitter @_DavidSmith, David@DevelopingPerspective.com. Otherwise,
00:14:52
◼
►
I hope you have a great week. Happy coding and I'll talk to you soon. Bye.