Developing Perspective

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

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:20   Go for it.

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:29   of things.

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:52   before.

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:54   with.

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.