#135: Choices.
00:00:00
◼
►
Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing
00:00:04
◼
►
news of note and 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 Herne, Virginia. This is show number 135.
00:00:12
◼
►
Today is Friday, July 26th. Developing Perspective is never longer than 15 minutes, so let's
00:00:18
◼
►
get started.
00:00:19
◼
►
All right, I think this week is going to be a bit of a grab bag episode, whatever you
00:00:23
◼
►
want to say, like a series of short topics that I'll just dive right into. The first
00:00:28
◼
►
First I'm going to talk about briefly is the, I guess the iOS Dev Center down, downtime
00:00:33
◼
►
outage, whatever you want to call it.
00:00:36
◼
►
As if, unless you're living under a rock, if you're in this community, you probably
00:00:39
◼
►
are aware that the iOS developer portal has been down for a little over a week.
00:00:43
◼
►
I think we're coming about eight days right now.
00:00:46
◼
►
And it's essentially was taken down as a result or in response to a security breach threat,
00:00:53
◼
►
whatever you want to call it.
00:00:54
◼
►
who is a security researcher, apparently logged into the system, stole a bunch of information
00:01:01
◼
►
essentially and then publicized that and responds, "Apple has taken it all down, is rebuilding,
00:01:07
◼
►
is working hard, is doing a whole variety of things in theory to make it better."
00:01:11
◼
►
And that's a bit complicated. It's a bit frustrating as a developer, especially as someone who
00:01:15
◼
►
makes my living from the developer portal, to have someone sort of, or a research experiment
00:01:20
◼
►
impact me in such a direct way.
00:01:24
◼
►
Generally speaking, I don't think--
00:01:26
◼
►
the impact is one of these things where it's very frustrating,
00:01:29
◼
►
but it's not necessarily damaging, at least in my case
00:01:33
◼
►
and for most people I know.
00:01:34
◼
►
In the sense of I have updates that I can't submit until it
00:01:36
◼
►
comes back up because I need provisioning
00:01:39
◼
►
profiles that have expired or those types of things.
00:01:41
◼
►
And it's kind of annoying to not be
00:01:43
◼
►
able to access the dev forms.
00:01:44
◼
►
It's kind of annoying to not be able to access
00:01:46
◼
►
the pre-release stuff in the dev portal.
00:01:49
◼
►
But at the end of the day, I'm just hoping that Apple is taking their time, making sure
00:01:55
◼
►
they do it right the first time, which seems to be their usual way of operating.
00:01:59
◼
►
And hopefully it will be up soon.
00:02:01
◼
►
In the meantime, it's definitely kind of one of those funny things that it's sometimes
00:02:04
◼
►
a little bit nice in some ways to have a situation like this come up where you can, it slows
00:02:10
◼
►
you down a little bit.
00:02:11
◼
►
And sometimes that can be a good thing.
00:02:12
◼
►
And I've definitely been spending some time on kind of maybe some more designing things
00:02:16
◼
►
on some more secondary things that I may not have had time for,
00:02:21
◼
►
or that I may not have thought I had time for,
00:02:23
◼
►
if I had just been full steam ahead like I had been.
00:02:25
◼
►
So make lemonade from the lemons.
00:02:27
◼
►
Definitely a bit frustrating.
00:02:28
◼
►
And hopefully, maybe even by the time many of you
00:02:30
◼
►
listen to this, it'll be up.
00:02:32
◼
►
They've published a new status page,
00:02:34
◼
►
which I'll have a link in the show notes too,
00:02:36
◼
►
where they talk about-- you can sort of keep-- follow along,
00:02:40
◼
►
keep track of whenever the various systems are
00:02:43
◼
►
going to come up.
00:02:43
◼
►
So hopefully that will be soon.
00:02:46
◼
►
All right, next, I published a fairly well received article
00:02:52
◼
►
I was going to elaborate on it slightly.
00:02:53
◼
►
It was talking about in-app purchase,
00:02:55
◼
►
and specifically some of the concerns and challenges
00:02:58
◼
►
that I think the current in-app purchase system in the App
00:03:01
◼
►
Store is causing.
00:03:03
◼
►
And these are the kind of challenges and problems
00:03:05
◼
►
that aren't things that are going to manifest themselves
00:03:08
◼
►
in the near term.
00:03:08
◼
►
These aren't things that I think--
00:03:10
◼
►
something like one of these Apple
00:03:12
◼
►
is doomed kind of scenarios.
00:03:14
◼
►
It's one of these things that I worry about having the slow,
00:03:18
◼
►
kind of more like a slow rot, rotting effect on the App Store.
00:03:23
◼
►
And it's the nature of, I think, tremendous amounts of money
00:03:26
◼
►
now is at stake in the App Store and is
00:03:32
◼
►
changing hands between customers and developers
00:03:34
◼
►
through consumable in-app purchase.
00:03:36
◼
►
And the nature of a way that a lot of these consumable
00:03:39
◼
►
in-app purchases especially-- I mean, in-app purchase
00:03:42
◼
►
in general is generating a lot of money.
00:03:44
◼
►
But the thing that I'm most worried about
00:03:46
◼
►
is the consumable side of things,
00:03:47
◼
►
because there's kind of no limit to what a customer can end up
00:03:50
◼
►
putting into an app, is the intentional and proactive way
00:03:56
◼
►
that developers are employing those in ways that
00:03:59
◼
►
are sort of intended to sort of addict,
00:04:03
◼
►
coerce, whatever you want to say, kind of their customers
00:04:07
◼
►
into putting more and more money into it.
00:04:09
◼
►
This is something that has clearly been working,
00:04:11
◼
►
is something that is effective for the same reasons that casinos are effective. It's for
00:04:17
◼
►
the same reason that, you know, a lot of things are where if you give somebody a taste of
00:04:22
◼
►
something, and kind of can manipulate them psychologically into, you know, having loss
00:04:29
◼
►
aversion to having all kinds of things in different kind of feelings and emotions. In
00:04:34
◼
►
response to something, they are more willing to give you money than they would just in
00:04:37
◼
►
a normal, straightforward, you know, business transaction where I create something, I put
00:04:41
◼
►
put it out there, I give it a price, and you can decide,
00:04:43
◼
►
is that worth it to me or not?
00:04:44
◼
►
And there's various virtues on back and forth in that.
00:04:46
◼
►
And I made a few suggestions in my article,
00:04:48
◼
►
showing the cumulative total that someone
00:04:50
◼
►
has spent in an app and being a bit more upfront in the store
00:04:53
◼
►
about what a typical user would be.
00:04:55
◼
►
But there's one area in the article
00:04:56
◼
►
that I intentionally avoided, especially
00:04:58
◼
►
in the written word.
00:05:00
◼
►
It's very hard to get across maybe some more squishy
00:05:04
◼
►
subjects and topics and how more things make you feel.
00:05:08
◼
►
And I stayed away from what I think
00:05:09
◼
►
what I refer to in the article as the more moral side of this kind of question about
00:05:13
◼
►
whether this kind of business model is something that is good for what everyone defined good.
00:05:22
◼
►
I wanted to elaborate on that slightly here because I think it's a slightly better venue,
00:05:26
◼
►
trying to explain out loud.
00:05:27
◼
►
I'll go a little bit abstract, but I think hopefully address where I'm heading.
00:05:33
◼
►
I think everybody has to decide for themselves what kind of a business they want to be in.
00:05:39
◼
►
you're going to make your you're making your living, I think, you know, pretty much everybody
00:05:42
◼
►
who is an independently wealthy, I suppose, has it makes her makes her living somehow, you know,
00:05:47
◼
►
they're, they're going to do something on a regular basis that is going to generate their
00:05:51
◼
►
income. And the question is, is sort of what are you going to do? And how proud are you? Are you
00:05:57
◼
►
going to be at the end of the day of that work that you do? And for me, when I look at that kind
00:06:03
◼
►
of that model, where you're intentionally trying to manipulate customers into giving you money,
00:06:08
◼
►
That is the kind of thing that I would avoid at all costs, I think, in terms of that's
00:06:13
◼
►
not the way that I'd like to make my living.
00:06:16
◼
►
That's the kind of thing where I would rather be able to make less money but be proud of
00:06:20
◼
►
the way that I make it than to make more money in a context or in a way that I wasn't proud
00:06:24
◼
►
of, that I wouldn't be able to talk about in a way that didn't feel slimy, that felt
00:06:30
◼
►
like I was being honest and upfront and clear with people about exactly what they're doing.
00:06:35
◼
►
And I make a substantial amount of my income from in-app
00:06:38
◼
►
All my in-app purchases are clear purchases.
00:06:42
◼
►
You're buying a year subscription
00:06:44
◼
►
to Feed Wrangler in its syncing service.
00:06:46
◼
►
You're buying content in my audiobooks app,
00:06:48
◼
►
or whatever it is.
00:06:49
◼
►
Or you're eliminating ads, or those types of things.
00:06:52
◼
►
And I like that kind of a thing.
00:06:54
◼
►
It's a straightforward process.
00:06:55
◼
►
What I don't like is this kind of amorphous, intentionally
00:06:59
◼
►
vague, and intentionally manipulative process
00:07:03
◼
►
I think you see a lot of apps these days. It just worries me and I hope Apple takes
00:07:07
◼
►
at least baby steps towards making sure that this doesn't get out of control. Because at
00:07:12
◼
►
the end of the what I really fear is that at the end of the day, it could damage the
00:07:16
◼
►
reputation of the store. That if you have a sort of the classic example would be if
00:07:23
◼
►
during a you have kind of the nightly news expose with you know, like talking, you know,
00:07:29
◼
►
newsman's going and talking to the family, you know, where the son or the father, the
00:07:33
◼
►
mother, daughter, whoever it is, you know, has, you know, lost all their money on buying
00:07:38
◼
►
Smurf berries or something like that. And it can, you could have those kind of scenarios
00:07:43
◼
►
where someone gets too, gets too addicted to something and ends up putting too much
00:07:48
◼
►
of their money in there, then it would be wise and can have very negative effects. And
00:07:51
◼
►
certainly they have a personal responsibility for making those choices. And in that way,
00:07:58
◼
►
It's not entirely on the developer.
00:08:00
◼
►
Those individuals still have a responsibility
00:08:02
◼
►
to make good choices for themselves.
00:08:04
◼
►
But I think it's up to Apple to be careful about making sure
00:08:06
◼
►
they're protecting the store, protecting its reputation,
00:08:09
◼
►
and trying to avoid those situations where customers
00:08:11
◼
►
can make choices that they're going to regret later.
00:08:16
◼
►
The next thing I was going to talk about
00:08:17
◼
►
is learning from past lessons.
00:08:19
◼
►
And this is something that I've been running into a lot recently
00:08:22
◼
►
and I just wanted to touch on it briefly.
00:08:25
◼
►
One of the things that I've noticed,
00:08:26
◼
►
having been a developer now for a long time,
00:08:29
◼
►
or almost as long as you could be doing for iOS stuff,
00:08:32
◼
►
is so much of what I think being able to be fast,
00:08:35
◼
►
being able to be effective, and to be able to be productive,
00:08:39
◼
►
comes from being able to learn from mistakes you've
00:08:45
◼
►
made in the past, from problems you've solved.
00:08:47
◼
►
Because I find what happens most often
00:08:49
◼
►
is that whenever I'm building a new app,
00:08:52
◼
►
or I'm building something totally from scratch,
00:08:54
◼
►
there's some amount of it that's new,
00:08:56
◼
►
And there's some benefit that's old.
00:08:58
◼
►
And by old, I mean these are problems
00:08:59
◼
►
that I've solved before.
00:09:01
◼
►
These are things that I have learned a best practice for,
00:09:04
◼
►
that I've done, I've solved once, twice, three times
00:09:08
◼
►
from the past.
00:09:09
◼
►
And being able to access those in a constructive way
00:09:14
◼
►
really can accelerate your development cycle
00:09:16
◼
►
and your development process.
00:09:18
◼
►
And so for example, what I think is very important
00:09:21
◼
►
is for you to be able to organize those in a way
00:09:23
◼
►
that you can access.
00:09:24
◼
►
either if you're good at remembering it, then great.
00:09:27
◼
►
For me, I tend to have a fairly good memory on this.
00:09:29
◼
►
And so I'm very able to be like, I
00:09:31
◼
►
think I've solved this before.
00:09:32
◼
►
I think that was in this project.
00:09:33
◼
►
Let me go find that project.
00:09:34
◼
►
Let me go find that code.
00:09:36
◼
►
Remember what I did, and then do it again.
00:09:38
◼
►
And the second time you do it, it
00:09:39
◼
►
will be much quicker, typically.
00:09:41
◼
►
If that's not you, then trying to organize that
00:09:43
◼
►
in however way it makes sense topically, keeping notes,
00:09:46
◼
►
trying to make sure that you can reuse past lessons that you've
00:09:50
◼
►
Because I think so much of development,
00:09:52
◼
►
especially in situations like right now,
00:09:54
◼
►
where we're working with new betas, where we're solving kind of-- there will be bugs
00:09:57
◼
►
that you'll run into that are totally new because either it's an unproven API, it's
00:10:01
◼
►
a new API, or those types of things. You want to make sure that you're being able to focus
00:10:05
◼
►
on those types of problems, the ones that are much more intractable and not things that
00:10:08
◼
►
you've already solved before. And I find, especially to another degree, you can take
00:10:13
◼
►
this to make it a bit more formal, is the more that you can sort of make libraries out
00:10:17
◼
►
of your code that are even just internal things. Not even-- I'm not someone who tends to open
00:10:21
◼
►
source a lot of my stuff because it creates a lot of cognitive load, I think, for publishing
00:10:25
◼
►
an open source project that I just really don't have the time and energy to support.
00:10:28
◼
►
But I try and kind of librotize my code internally so that I have these things that I can pull
00:10:34
◼
►
into all of my different projects that help me sort of rapidly accelerate.
00:10:38
◼
►
And really, my goal in this, and this is sort of like the take-home that I wanted to press
00:10:42
◼
►
on, is you want to eliminate as much as possible the boilerplate code that a project will almost
00:10:47
◼
►
or certainly have, that you can focus on the important stuff.
00:10:50
◼
►
So this is taking your library and your database,
00:10:53
◼
►
some of your graphics stuff, your UI kit management stuff,
00:10:56
◼
►
and turning it into something that you can reuse over and over
00:10:59
◼
►
again so that you have all these new custom subclasses,
00:11:01
◼
►
or whatever it is that you can just use and really speed
00:11:05
◼
►
your development along.
00:11:07
◼
►
The next one is I'm going to talk a little bit
00:11:09
◼
►
about one of the challenges I've been having recently
00:11:12
◼
►
that I think is worth just voicing.
00:11:14
◼
►
And I've voiced it, I think, a few times before.
00:11:16
◼
►
but it's the nature of tenacity and staying at something.
00:11:20
◼
►
And even in the face of things being really difficult,
00:11:22
◼
►
like sometimes actually today and today especially,
00:11:25
◼
►
I've been, it's sometimes it's very hard
00:11:28
◼
►
to really get into a problem and start working on it.
00:11:30
◼
►
You kind of start picking at the edges,
00:11:32
◼
►
you start doing all the easy stuff,
00:11:33
◼
►
you kind of avoid all the tricky problems.
00:11:35
◼
►
I mean, you kind of get stuck.
00:11:39
◼
►
And it's one of these things that you kind of wish
00:11:41
◼
►
that there was some magic wand that you could wave.
00:11:43
◼
►
And sometimes there's little tricks,
00:11:45
◼
►
I think I've had an episode where I talked about that where there's kind of like, sometimes
00:11:48
◼
►
some people have different tricks, like you can put on a certain kind of music or drink
00:11:51
◼
►
a certain kind of drink, and kind of get into a certain mindset to try and sort of jumpstart
00:11:56
◼
►
But the reality is, you just need to understand that we all have off days.
00:12:00
◼
►
And what I often find the best thing to do is sometimes I'll use my tricks, sometimes
00:12:04
◼
►
I'll try other things.
00:12:05
◼
►
And sometimes you just have to say, you know what, it's not working today.
00:12:08
◼
►
And I need to take a break.
00:12:09
◼
►
And I need to come back and I need to work on it.
00:12:12
◼
►
Take a nap, go for a walk, whatever it is, and understand that that happens to everybody.
00:12:17
◼
►
I've never met a single developer who doesn't have those days.
00:12:20
◼
►
And at the time and the moment, and maybe that's you today or tomorrow, you have these
00:12:24
◼
►
days where you just can't get into the zone.
00:12:26
◼
►
You can't work.
00:12:27
◼
►
You can't focus.
00:12:28
◼
►
Just sort of rather than going crazy about it, just focus on what you can do.
00:12:32
◼
►
Make those changes.
00:12:34
◼
►
Make those improvements and then hope for the best.
00:12:36
◼
►
So it's a little bit hand-wavy, but it was just something that I always liked to voice
00:12:40
◼
►
whenever I have struggles and challenges on the show. Because I hear from a lot of people
00:12:45
◼
►
that it's encouraging to hear that other people have those same challenges. And then lastly,
00:12:51
◼
►
I just wanted to mention that the Singleton Symposium registration is going to be coming
00:12:58
◼
►
soon for some definition of soon. The Singleton Symposium is a conference in Montreal every
00:13:04
◼
►
fall. I was able to go last year. And I would definitely encourage people who, the kind
00:13:10
◼
►
who listen to the show, I think you'd really enjoy Singleton.
00:13:12
◼
►
It's one of the best conferences I've ever been to,
00:13:14
◼
►
both in terms of the way that it's run,
00:13:16
◼
►
the kind of speakers it has, and honestly, in a lot of ways,
00:13:20
◼
►
just the kind of people who are there.
00:13:22
◼
►
It's very typically pretty hard to get tickets.
00:13:24
◼
►
It's a very small conference intentionally.
00:13:26
◼
►
It's I think only maybe 100, 150 people.
00:13:30
◼
►
And as a result, it's because whenever
00:13:32
◼
►
you make something like that, hard to get tickets to.
00:13:34
◼
►
In a way that's even-- you can imagine
00:13:36
◼
►
something like WWDC was hard to get tickets to.
00:13:38
◼
►
Singleton's very hard to get tickets to.
00:13:41
◼
►
It means the kind of people that are going to be there are probably one of three things.
00:13:44
◼
►
They're either exceptionally lucky, they're just exceptional people in general, or they're
00:13:49
◼
►
exceptionally devoted to getting a ticket.
00:13:51
◼
►
And if they're either of those three people, if they're amazing, amazingly lucky, or amazingly
00:13:56
◼
►
fanatical about it, they're probably people you want to spend a weekend with in Montreal
00:14:00
◼
►
and Canada, talking about your craft and encouraging you for heading into the fall.
00:14:06
◼
►
I'll have a link in the show notes to this, or just go to Singleton.com.
00:14:11
◼
►
That's with a C, or with a C with a curly thing, whatever you call that.
00:14:15
◼
►
And you sign up, you put your email address in, you'll get an invitation, and you may
00:14:20
◼
►
or may not get a ticket.
00:14:21
◼
►
It's a bit complicated, but something that I just really would encourage a lot of you
00:14:26
◼
►
to think about going to.
00:14:27
◼
►
It's a really good conference that I've enjoyed in the past.
00:14:29
◼
►
I'm not really connected with it or affiliated with it in any way, but it's just something
00:14:32
◼
►
that I really enjoy.
00:14:33
◼
►
So if you are looking for something to do this fall to kind of improve your craft and
00:14:37
◼
►
get motivated, Singleton last year was that for me.
00:14:40
◼
►
All right, that's it for today's show.
00:14:42
◼
►
As always, if you have questions, comments, concerns, complaints, I'm on Twitter @_DavidSmith,
00:14:45
◼
►
David@DevelopingPerspective.com if you have email questions.
00:14:48
◼
►
And otherwise, we have a great weekend.
00:14:50
◼
►
Happy coding, and I'll talk to you soon.