PodSearch

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.