Developing Perspective

#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:51   this week.

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:37   purchase.

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:15   All right.

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:35   Look at it.

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:49   had.

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   All right.

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:55   it.

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.