PodSearch

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.