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