Developing Perspective

#96: Ending Something, Splitting Something, Analyzing Something.


00:00:00   Hello and welcome to Developing Perspective.

00:00:05   Developing Perspective is a podcast discussing news of note

00:00:07   in iOS development, Apple, and the like.

00:00:10   I'm your host, David Smith.

00:00:13   I'm an independent iOS developer based in Herne, Virginia.

00:00:14   This is show number 96, and today is Tuesday, November 20th.

00:00:16   Developing Perspective is never longer than 15 minutes,

00:00:20   so let's get started.

00:00:23   All right, so three quick topics today.

00:00:25   I shouldn't take even the whole time, potentially.

00:00:25   So the first one I'm going to talk about is about finding the right time to end something.

00:00:30   And this is brought on by the sudden, or perhaps the very least unexpected end of two of my

00:00:38   favorite podcasts, Build and Analyze and Hypercritical, both of which are wrapping up in the next

00:00:43   month or so.

00:00:44   And it's one of those things that, while that certainly makes me sad, they're things I've

00:00:48   really enjoyed listening to for the last two years, I totally respect and commend them

00:00:51   both for, you know, for A, for having done the show for two years. I mean, half of everything

00:00:56   they say is half of anything is just showing up, and they've definitely been showing up

00:01:00   and doing great work for a couple of years. So, you know, in that sense, it's like, awesome.

00:01:04   I really appreciate what they've done, and, you know, thank you. That was awesome. But

00:01:09   it makes me think about how do you find the end of something? It's easy to start something.

00:01:15   You kind of have a vision in mind. It's much more difficult to often know when the right

00:01:19   time to end something is. And often the hardest part of ending something is, it's essentially

00:01:25   the fear of the unknown, I think, where you have a certain set of parameters or expectations

00:01:33   about something once you've been doing it for a while. And the hard part is knowing

00:01:37   when you stop something, you're creating space. You're creating an opportunity for something

00:01:43   else to emerge, for something else to fill whatever time or energy or focus or whatever

00:01:49   it is that that was taking in your life.

00:01:52   And that's tricky because you don't know what that necessarily is, and when you stop something

00:01:56   you may not really even have a good idea.

00:02:00   But it is also one of those things that perhaps most often I think most people, my suspicion

00:02:06   is tend to err on the side of letting something go too long because it's just so hard to wind

00:02:13   something down, even when it's not really at the level you want it to be, or is a distraction

00:02:19   or a frustration.

00:02:20   I'm going to do this a little bit with some of my apps and some of the things that I've

00:02:24   done where you start something, you create something, and at some point you just sort

00:02:29   of have to step back and say, "You know what?

00:02:31   This isn't working.

00:02:32   This isn't what I wanted it to be.

00:02:34   This isn't what I hoped it would be."

00:02:35   So I just kind of need to wind it down to stop doing it.

00:02:40   That decision's really hard.

00:02:42   I have struggled with myself a lot.

00:02:45   And I started to think about what are some of the rules,

00:02:47   or what are some of the good indications that it's

00:02:50   time to stop something.

00:02:51   And probably the simplest one is just, are you enjoying it?

00:02:54   And if you're not, then why are you doing it?

00:02:57   It sounds a little-- it may be a little bit simplistic.

00:02:59   But it was just a thought I had.

00:03:00   I was like, you know?

00:03:01   Like, for example, even if we look at developing perspective.

00:03:03   I mean, I've been doing this podcast for over a year now.

00:03:06   This is episode 96 or something.

00:03:08   I mean, I've recorded over 100 episodes

00:03:10   with all the stuff put together.

00:03:15   And I still enjoy it.

00:03:18   I still look forward, some weeks I do it

00:03:19   just because I feel like I need to,

00:03:21   because that's part of showing up.

00:03:23   But I really still enjoy it.

00:03:26   I like getting feedback from people.

00:03:27   I like hearing from the new starting out developer

00:03:28   who says, "Hey, listening to your show is really helpful.

00:03:32   I learned something."

00:03:35   That makes me feel good.

00:03:36   And so I'm going to keep doing it because of that.

00:03:38   But I think as soon as I start feeling like it's a chore,

00:03:37   As soon as I feel like, "Gosh, it's Tuesday or Thursday.

00:03:41   I really should be doing a show.

00:03:42   I don't really want to."

00:03:43   As soon as that point hits, I know it's time to stop.

00:03:48   And that's probably when I will.

00:03:49   And similarly with an application.

00:03:50   I mean, a lot of my apps either wind down or just stop developing because I don't really

00:03:56   want to anymore.

00:03:57   It doesn't give me any enjoyment.

00:03:59   It doesn't give me any fulfillment.

00:04:01   And if it doesn't do either of those things, then I'm probably just going to wind it down.

00:04:04   So just a few thoughts on that.

00:04:07   be always it's probably just good to be mindful of whether what you're doing is

00:04:10   worth continuing or not at any point. And again I just want to say thanks to

00:04:15   Marco and John for their awesome shows. I really enjoyed them and many of you I

00:04:20   know are also people who listen in the chat room, listen live,

00:04:23   and that's been one of the things I've enjoyed a lot doing so maybe I'll get a

00:04:26   bit more done in the middle of my days on Mondays and Fridays. Alright so the

00:04:30   next topic comes out of a question from Sean P Walsh on Twitter. He was

00:04:36   He was asking about different versions of the same app in the App Store.

00:04:41   And in his question, he was asking me specifically about my audiobooks apps, where I have two.

00:04:44   This is even something I can speak even more on now, in the sense of I just launched, I think yesterday,

00:04:48   the light version of Check the Weather, so I have a free version and a paid version.

00:04:54   And I think he was just asking how you manage that.

00:04:58   And for the most part, it's fairly straightforward.

00:05:00   And in the Xcode side, it's very easy.

00:05:03   You just create a new target, create a new bundle identifier.

00:05:04   basically all you have to do to actually create the new app.

00:05:08   And typically what you'll end up doing is having a slightly different feature set or

00:05:13   functionality.

00:05:14   The way I do it, actually in both of the apps really, is they're the same app with some

00:05:19   of the features not enabled on the free app.

00:05:22   Now on the paid app they exist, and on the free app there's advertising, on the paid

00:05:27   app there isn't.

00:05:28   And I just key that all off the bundle identifier, so if the bundle identifier matches the free

00:05:32   it changes some of the behaviors.

00:05:34   That's basically it. There's a few ifs in the application.

00:05:37   The rest of the logic's the same. The code base is the same.

00:05:40   And as much as you can, you're always going to want to make those things very similar.

00:05:44   The number one problem I think you'll run into if you're creating a separate app

00:05:48   is that you'll split the apps too strongly,

00:05:53   and then your functionality gets really hard to match,

00:05:56   or bugs are hard to track down, and all those kinds of things.

00:06:00   And so you definitely want to keep your functionality and your feature set as close together as possible.

00:06:05   And otherwise, on the iTunes side, it's very straightforward. You just submit it as a new app.

00:06:10   Generally speaking, Apple doesn't really mind if you do that.

00:06:13   There's a line in the developer guidelines, or the app review guidelines,

00:06:18   that says that you can't sort of spam the App Store with multiple versions of the same app.

00:06:23   And I think that's generally, in my experience, having two of something is never really considered spamming

00:06:29   or having too many versions, especially when it's a free

00:06:31   and a paid version of something.

00:06:34   So just be careful, though, if you start trying to think of many,

00:06:36   many different ways to do it and kind of get a little too cute

00:06:40   with slightly different versions of roughly the same app.

00:06:43   If I took a weather app and I started--

00:06:45   it's like New York weather, Chicago weather, Cincinnati weather,

00:06:48   LA weather--

00:06:49   they may, at that point, be not so happy and potentially

00:06:54   revoke your developer account or do all kinds of things

00:06:56   that you really wouldn't want.

00:06:57   Just don't get too cute about it, but having two versions is almost always fine.

00:07:01   Like I said, it's pretty straightforward.

00:07:03   I'm not really sure how it will go in the light version.

00:07:05   It was just something I wanted to do because I could, and it's fairly easy to do, and I've

00:07:09   had good experience with iAd in the past for advertising revenue, so we'll see.

00:07:14   But from a functional perspective, just create a new target, submit it.

00:07:18   It's not a big deal.

00:07:19   And then the last topic I want to talk about, which will fill up our time, was a question

00:07:22   I got from Lars on Twitter, who was asking about different analytics options and what

00:07:27   think about analytics in your application. This is something that I've gotten, I think

00:07:32   I may have addressed it tangentially before, but I just wanted to hit it square on. He

00:07:36   referred to a couple of packages, Flurry or Google, I think it has an SDK for analytics

00:07:42   and a few things like that. Where I come down on that is I don't really trust anybody's

00:07:47   analytics that aren't my own. And I'm taking data that belongs to my users. This is data

00:07:53   that is private, if not necessarily,

00:07:58   it may not necessarily be sensitive,

00:08:03   but it's certainly private.

00:08:05   It's information about my users,

00:08:07   about their devices they're using,

00:08:08   about when they're using it,

00:08:09   about how they're using it,

00:08:10   where they are potentially.

00:08:11   There's a lot of things in that data that are sensitive,

00:08:12   are things that I wouldn't want to take lightly.

00:08:15   And I never like the concept of taking that data

00:08:17   and sending it to someone else's servers,

00:08:19   as much as I can. I guess I do it a little bit on the web with my web analytics project,

00:08:28   but none of those things are sort of how I make my living. I have a blog, I have this

00:08:32   podcast, but those are just things that I kind of do for fun. They're things I do on

00:08:36   the side. They're not my business. But for my business, I want to take that data very

00:08:40   seriously. I want to protect it. I want to be thoughtful about how I use it. And so all

00:08:44   the analytics I've used recently has all been homegrown stuff. You'd be really surprised

00:08:49   how easy it is to just spin up a little, you know,

00:08:54   a simple Rails app with a very simple model

00:08:58   that's just recording basic information

00:09:00   if you want to collect something.

00:09:03   You know, how often a user clicks this,

00:09:04   what's the most common setting for this particular option.

00:09:06   All those things are fairly straightforward to just,

00:09:10   you know, you write a little Rails app

00:09:12   or an Ultra app or something.

00:09:14   I mean, these are very straightforward.

00:09:16   It's a simple URL that someone hits and says,

00:09:15   Because it's like record, use font A, record use font B.

00:09:20   And your web service does that and records it.

00:09:24   You can even often just use wildcard SSL to do it over SSL.

00:09:27   And you've got a nice simple, easy to manage thing

00:09:29   that you can kind of use and look at.

00:09:31   And that's the way I'd prefer to do it.

00:09:33   But it is a little bit more work.

00:09:35   I mean, I've used Flurry in the past, and it works.

00:09:37   It's great, but it really kind of just feels,

00:09:40   it makes me nervous.

00:09:41   And because it's how I make my living,

00:09:43   that's not a nervousness that makes me uneasy

00:09:45   I don't want to go there.

00:09:50   Also, one thing that I try and avoid as much as I can,

00:09:51   integrating closed source SDKs into my products.

00:09:54   It's just something that is, it just seems dangerous

00:09:58   that I have no idea necessarily what that code's doing.

00:10:01   And almost all of these products, Flurry or Google

00:10:04   or any of them are pretty much all exclusively closed source.

00:10:06   It's not something I can go and browse around and look at,

00:10:09   or if I have a weird bug, I can't track down.

00:10:12   But I always get nervous.

00:10:11   get nervous, especially in a language like Objective-C,

00:10:16   that lets you do funny things.

00:10:18   That for all I know, somewhere deep in there,

00:10:21   has some category on NSString or some category on NSArray

00:10:24   that is doing some weird behavior under very targeted situations.

00:10:27   And if that's the case, who knows what that could be doing?

00:10:33   There's all these things that are just risks

00:10:36   that are created by it.

00:10:38   And also I'd say, I found generally analytics

00:10:37   to only be vaguely useful.

00:10:39   They're useful in the sense of, you know, for collecting things like iOS versions

00:10:42   or device characteristics or those types of things,

00:10:45   which is more just helps you make decisions.

00:10:47   But a lot of the data I used to get out of something like Flurry

00:10:50   was just there's tons of data that didn't really mean anything to me.

00:10:53   You know, it's the number of app opens per day and things.

00:10:57   Like, that's great if you're trying to sell an app

00:10:59   or you're trying to, you know, pitch it to somebody

00:11:02   or tell or convince, you know, another department that your app is useful.

00:11:06   But from a functional perspective,

00:11:11   I've never found that to be particularly actionable,

00:11:13   to say the app has 6.3 opens per day,

00:11:15   or 2.8 opens per day.

00:11:18   And that varies by day of week.

00:11:20   And all this kind of like, you just go crazy looking at numbers.

00:11:22   And so I always be careful about that.

00:11:25   And only really collect data that I feel like is actionable

00:11:28   is something that is useful.

00:11:30   If I wanted to collect what the default,

00:11:31   what the most used font is in an application,

00:11:32   and say, "Maybe I should make that default."

00:11:35   Those types of questions were just actionable and useful information.

00:11:38   So that's kind of my thoughts on that.

00:11:40   All right, that's it for today's show.

00:11:42   Really, like I said, it was going to be a fairly short one, and this is going to be

00:11:44   a short week probably.

00:11:46   For those of you who are outside of the US, this Thursday is a national holiday called

00:11:51   Thanksgiving, where we'll all get together, eat a lot of turkey, and enjoy cranberry sauce

00:11:55   and pie.

00:11:56   That's what I'll be doing next Thursday, or in Thursday, so it won't be a show then, and

00:12:00   I'm going out of town with my family for the weekend, so I won't be around for the rest

00:12:04   of the week, but otherwise, hope you guys, if you're in the US, have a happy Thanksgiving,

00:12:07   and if you're not, well, I hope you have a great Thursday.

00:12:10   And as always, if you have questions, comments, concerns, or complaints, I'm on Twitter @_davidsmith,

00:12:16   and on AppNet @davidsmith, and otherwise, have a good weekend.

00:12:20   I'll talk to you next week, and happy coding.

00:12:22   Bye.