PodSearch

Under the Radar

129: Lightning Round IV

 

00:00:00 ◼   ► - Welcome to Under the Radar,

00:00:02 ◼   ► a show about independent iOS app development.

00:00:04 ◼   ► I'm Marco Arment.

00:00:05 ◼   ► - And I'm David Smith.

00:00:06 ◼   ► Under the Radar is never longer than 30 minutes,

00:00:08 ◼   ► so let's get started.

00:00:10 ◼   ► - So continuing our spring quiet period of developer news,

00:00:13 ◼   ► I figured, we figured that we would do a little more Q&A,

00:00:16 ◼   ► 'cause when we asked for questions a couple weeks ago,

00:00:19 ◼   ► we got tons of really good ones.

00:00:22 ◼   ► And we have enough now for one or two more episodes,

00:00:24 ◼   ► so we're gonna try to knock these out,

00:00:27 ◼   ► and some of them are really good questions

00:00:29 ◼   ► that I really wanted to address.

00:00:30 ◼   ► So, we're gonna start with Boz the Developer, who asks,

00:00:35 ◼   ► if you start working on a new app,

00:00:36 ◼   ► what do you do before you start writing any code?

00:00:40 ◼   ► So for instance, do you write out all the classes

00:00:42 ◼   ► and details on paper, or do you just draft

00:00:45 ◼   ► a general overview of how all the classes

00:00:48 ◼   ► relate to each other?

00:00:49 ◼   ► So, what do you do for this, Dave?

00:00:51 ◼   ► - Very little, if anything.

00:00:57 ◼   ► So I have done the kind of project,

00:01:01 ◼   ► I mean, this was, and it's literally academic for me,

00:01:04 ◼   ► where in school, I would have to do, build the big,

00:01:07 ◼   ► what's it, UML diagrams of your classes

00:01:10 ◼   ► and your class hierarchies and all that type of thing

00:01:14 ◼   ► beforehand, and I've only ever done it

00:01:16 ◼   ► in an academic setting.

00:01:17 ◼   ► And in a practical setting, what I find is most useful

00:01:21 ◼   ► is to get something working more,

00:01:24 ◼   ► as quickly as you possibly can.

00:01:26 ◼   ► And for me, that means to just start writing code.

00:01:29 ◼   ► And I worry less about having things structured

00:01:33 ◼   ► or organized in this most optimized way possible,

00:01:38 ◼   ► or anything like that, at the start.

00:01:41 ◼   ► Because the reality is, I know the least

00:01:44 ◼   ► about the problem I'm trying to solve

00:01:47 ◼   ► when I sit down to write for the first time.

00:01:50 ◼   ► And so, any decisions or choices or structures

00:01:54 ◼   ► that I'm going to create at that point

00:01:56 ◼   ► are sort of necessarily the least informed

00:01:59 ◼   ► and probably worst versions of that that I could.

00:02:02 ◼   ► And so, I'd rather dive into the problem,

00:02:05 ◼   ► start trying to solve it as best I can,

00:02:08 ◼   ► and from there, as I develop more and more,

00:02:10 ◼   ► from understanding of the problem domain,

00:02:12 ◼   ► understanding how things are actually gonna work

00:02:14 ◼   ► in practice, that's when I start to have a bit,

00:02:18 ◼   ► not ever formal in my sort of class hierarchy or structure,

00:02:22 ◼   ► but as I go, I will develop and move things

00:02:25 ◼   ► to the structure that makes sense for the long term.

00:02:29 ◼   ► The initial kind of quick spurt, maybe not necessarily,

00:02:32 ◼   ► is even as worried about following good practices

00:02:36 ◼   ► and structure around the way I'm relating things

00:02:39 ◼   ► or those types of things.

00:02:41 ◼   ► I'm just trying to get something working

00:02:42 ◼   ► so I can better understand the problem.

00:02:44 ◼   ► And once I understand the problem,

00:02:45 ◼   ► then I can actually make choices about how to do things.

00:02:48 ◼   ► But I never really write it all down.

00:02:50 ◼   ► I mean, the only thing I've heard sometimes

00:02:51 ◼   ► that I'll write down ahead of time

00:02:53 ◼   ► is gonna be like sketching out a UI quickly

00:02:55 ◼   ► or something like that, just to play with it.

00:02:57 ◼   ► But I never really get into the sense of,

00:02:59 ◼   ► writing things down on the code side,

00:03:02 ◼   ► I've never really found to be particularly useful.

00:03:05 ◼   ► - All this time, I thought I was just lazy and undisciplined,

00:03:09 ◼   ► but you've now given me justification

00:03:11 ◼   ► for why I also don't do any of these things.

00:03:15 ◼   ► I think your point is excellent about how

00:03:18 ◼   ► when you design on paper, you know the least

00:03:21 ◼   ► about what it's actually going to take, really.

00:03:24 ◼   ► To me, software development is a really big field,

00:03:28 ◼   ► and there's lots of different ways to do it.

00:03:30 ◼   ► There's lots of different situations

00:03:31 ◼   ► in which you might want or need to do things

00:03:34 ◼   ► in a more formal or planned-ahead way than others.

00:03:37 ◼   ► I don't think iOS app development is one of those things.

00:03:41 ◼   ► I don't think you need this level of formality I'm planning

00:03:44 ◼   ► for what most people listening to the show

00:03:46 ◼   ► are actually working on.

00:03:48 ◼   ► I think you can build software like you build a bridge,

00:03:53 ◼   ► like you design the entire thing first,

00:03:57 ◼   ► and people have built lots of bridges before,

00:03:59 ◼   ► so they have a really good idea

00:04:00 ◼   ► of what it takes to build bridges these days,

00:04:02 ◼   ► and you can sketch it all out,

00:04:05 ◼   ► and then build it from the ground up,

00:04:06 ◼   ► and then you reach the top,

00:04:07 ◼   ► and then you can drive a car over it,

00:04:09 ◼   ► and you know it'll work, because you plan everything out,

00:04:11 ◼   ► and everything is like known problems,

00:04:13 ◼   ► known conditions, known requirements.

00:04:17 ◼   ► Software is rarely that way,

00:04:19 ◼   ► and especially the kind of software that we write.

00:04:21 ◼   ► It is rarely that established, that known in advance,

00:04:26 ◼   ► or that repetitive.

00:04:29 ◼   ► What makes software planning so hard

00:04:31 ◼   ► is that most of the time,

00:04:32 ◼   ► no one has ever done what you're doing

00:04:34 ◼   ► in the exact way you're doing it before,

00:04:36 ◼   ► and that's why it's so hard to estimate time,

00:04:39 ◼   ► and estimate budget, and everything.

00:04:41 ◼   ► And so the way I build software

00:04:44 ◼   ► is not the way you build a bridge,

00:04:46 ◼   ► where you sketch everything out first.

00:04:48 ◼   ► The way I build software is how you would build

00:04:50 ◼   ► the most dangerous, worst bridge project in the world,

00:04:52 ◼   ► which is like you have somebody hold a board

00:04:55 ◼   ► across the water first,

00:04:57 ◼   ► and somebody rides a tricycle over it,

00:04:58 ◼   ► and sees if it works,

00:05:00 ◼   ► and then slowly you replace the temporary parts

00:05:03 ◼   ► that you've made with the real thing

00:05:05 ◼   ► that could actually be a little bit better,

00:05:07 ◼   ► and support things properly.

00:05:09 ◼   ► That's kind of how I make my software,

00:05:10 ◼   ► is I try to get something working as quickly as possible

00:05:14 ◼   ► that's terrible,

00:05:15 ◼   ► and then if it's a thing that I think is a good idea,

00:05:18 ◼   ► or that has legs, no pun intended,

00:05:20 ◼   ► then I will start making it correct,

00:05:24 ◼   ► and start building it right,

00:05:26 ◼   ► and build out parts of it that were special case

00:05:29 ◼   ► just to get the prototype working,

00:05:30 ◼   ► and add UI, and polish things,

00:05:32 ◼   ► and make it more robust.

00:05:34 ◼   ► That's how I build software,

00:05:36 ◼   ► and all of that is happening just by doing the code.

00:05:39 ◼   ► It's all jumping right in and starting right in the code.

00:05:41 ◼   ► There's no planning or anything,

00:05:43 ◼   ► and I don't think,

00:05:45 ◼   ► I mean, in an academic sense,

00:05:47 ◼   ► certainly I would like to be more disciplined,

00:05:50 ◼   ► and more planned, and everything like that,

00:05:53 ◼   ► but A, I can't do that,

00:05:56 ◼   ► and just my personality and my work style is not that,

00:05:59 ◼   ► and B, I don't think for the kinds of apps

00:06:01 ◼   ► that most of us write,

00:06:02 ◼   ► that that level of formality is necessary.

00:06:05 ◼   ► To me, that's a lot,

00:06:06 ◼   ► it's just a lot of overhead,

00:06:08 ◼   ► and you know, for the way I work.

00:06:11 ◼   ► If the way that you work is more that way,

00:06:14 ◼   ► if you benefit from designing things ahead of time,

00:06:19 ◼   ► writing things ahead of time,

00:06:19 ◼   ► that's a different story.

00:06:21 ◼   ► That's a different work style,

00:06:22 ◼   ► but for me, I have never found that useful.

00:06:25 ◼   ► - Yeah, and I think what you just said there, though,

00:06:26 ◼   ► is a very important point,

00:06:27 ◼   ► that I have worked with people back

00:06:29 ◼   ► when I used to work in a more,

00:06:31 ◼   ► in an actual office environment,

00:06:32 ◼   ► and I had a good friend of mine who,

00:06:35 ◼   ► the way that I think about a problem

00:06:37 ◼   ► is that I write code to explore it.

00:06:40 ◼   ► That was the way that I do it.

00:06:42 ◼   ► That initial 20, 30% of the work

00:06:45 ◼   ► is me in Xcode writing code,

00:06:47 ◼   ► and that's how I think a problem through.

00:06:50 ◼   ► I had a friend who,

00:06:51 ◼   ► he would think a problem through

00:06:53 ◼   ► by exploring it on a whiteboard,

00:06:56 ◼   ► and he would draw class diagrams,

00:06:57 ◼   ► and that was, you know,

00:06:59 ◼   ► that initial bit of time,

00:07:02 ◼   ► that's how he could think through the problem best

00:07:04 ◼   ► and understand it most.

00:07:06 ◼   ► He wasn't coming at it from a sense of,

00:07:08 ◼   ► he wasn't trying to be academic about it.

00:07:10 ◼   ► He wasn't trying to be complete or comprehensive,

00:07:13 ◼   ► but there is certainly,

00:07:15 ◼   ► finding whatever is that best tool for you

00:07:17 ◼   ► to gather as quickly as possible

00:07:19 ◼   ► the maximum amount of information about the problem,

00:07:22 ◼   ► and you're understanding

00:07:23 ◼   ► what you think your solution to it might be.

00:07:26 ◼   ► Whatever that form that takes, that's great,

00:07:28 ◼   ► but I think it's probably important,

00:07:29 ◼   ► moreover, to just remember that

00:07:32 ◼   ► that initial work is entirely speculative,

00:07:35 ◼   ► and you are trying to understand something better

00:07:39 ◼   ► so that you can make better choices down the road,

00:07:41 ◼   ► rather than trying to make a lot of choices upfront

00:07:45 ◼   ► and then sort of holding yourself to those

00:07:47 ◼   ► or expecting those choices to be good down the road.

00:07:51 ◼   ► - Lou Brothers asks,

00:07:53 ◼   ► "How do you decide which ideas you won't work on?"

00:07:57 ◼   ► - In some ways, it's--

00:08:00 ◼   ► - I love this question.

00:08:01 ◼   ► - It's like, I think,

00:08:04 ◼   ► so it's a decision,

00:08:05 ◼   ► I think we have to make a lot, is something.

00:08:08 ◼   ► I think one of the,

00:08:09 ◼   ► as soon as you find yourself in a position

00:08:13 ◼   ► where you're self-employed,

00:08:14 ◼   ► suddenly you have the blessing and the curse of having,

00:08:18 ◼   ► you can work on anything you want, basically.

00:08:21 ◼   ► You can be like a little bumblebee,

00:08:22 ◼   ► just flitting from flower to flower to flower if you want.

00:08:25 ◼   ► You can dive into one thing and only work on that.

00:08:27 ◼   ► You're now in a position that you have to make that choice.

00:08:30 ◼   ► You have to decide what you're gonna work on,

00:08:33 ◼   ► and then I think the harsh reality

00:08:35 ◼   ► that you have to come to grips with

00:08:36 ◼   ► is the fact that any time you say yes to one project,

00:08:40 ◼   ► you are implicitly saying no to 100 other projects,

00:08:45 ◼   ► that your time is a finite resource,

00:08:46 ◼   ► and so you are going to have to decide,

00:08:50 ◼   ► you can't do everything,

00:08:52 ◼   ► and every day you're saying no

00:08:55 ◼   ► to way more things than you're saying yes to.

00:08:58 ◼   ► And so I think primarily the way that I tend to focus

00:09:00 ◼   ► in terms of answering the ideas that I won't work on

00:09:04 ◼   ► are the ideas, my focus tends to be on

00:09:07 ◼   ► what are the ideas that I am excited to work on,

00:09:10 ◼   ► and I just keep a running list of the ideas

00:09:13 ◼   ► that I have otherwise, and that list will grow,

00:09:17 ◼   ► and sometimes things will fall off of it.

00:09:20 ◼   ► Sometimes I'll pick things up from that

00:09:21 ◼   ► and start working on them,

00:09:23 ◼   ► but I find that the most constructive thing I've found

00:09:26 ◼   ► is to just focus on what am I excited about?

00:09:29 ◼   ► What do I think would have the best impact on my business

00:09:31 ◼   ► financially?

00:09:33 ◼   ► What do I think is a nice quick win?

00:09:35 ◼   ► Those are the things that I tend to decide about,

00:09:37 ◼   ► what I want to work on,

00:09:40 ◼   ► and then the things that I won't work on

00:09:41 ◼   ► are just everything else,

00:09:43 ◼   ► which is this gigantic pile of other apps that I have,

00:09:46 ◼   ► other ideas that I have to work on things,

00:09:49 ◼   ► and it's impossible for me, I find,

00:09:52 ◼   ► to manage too much about that.

00:09:53 ◼   ► I mean, there's a little bit of maybe,

00:09:55 ◼   ► there are some times I have an idea,

00:09:57 ◼   ► and then the important exercise of trying to honestly

00:10:01 ◼   ► and genuinely think it through,

00:10:03 ◼   ► where it's like, "Oh, that's a great idea,"

00:10:04 ◼   ► and then sometimes you'll sit down for a little bit

00:10:06 ◼   ► and just kind of think about it,

00:10:08 ◼   ► or you'll have it on your back burner

00:10:10 ◼   ► as you're going about your daily life,

00:10:11 ◼   ► and all of a sudden you're like, "Wait a second.

00:10:12 ◼   ► Yeah, I know. That's a terrible idea,"

00:10:14 ◼   ► and it'll just kind of like, you can discount it,

00:10:16 ◼   ► but otherwise I just tend to focus on

00:10:18 ◼   ► what am I excited to work on?

00:10:19 ◼   ► I'll go work on that,

00:10:21 ◼   ► and I'm implicitly saying,

00:10:24 ◼   ► anything that isn't that idea,

00:10:25 ◼   ► I'm not gonna work on right now.

00:10:28 ◼   ► - Yeah, for me, there's a lot of business considerations

00:10:32 ◼   ► that go into it, and a lot of this just comes down to,

00:10:35 ◼   ► you have a limited amount of time, really, in the day,

00:10:39 ◼   ► and you have a limited amount of focus

00:10:40 ◼   ► of how many things you can focus on at once

00:10:43 ◼   ► and how many things you can maintain at once,

00:10:45 ◼   ► and so it's very much a question of business needs

00:10:50 ◼   ► and priorities, and then mostly it's a question

00:10:53 ◼   ► of time management, and so the things

00:10:57 ◼   ► I won't work on are typically things that I think one day,

00:11:02 ◼   ► oh, wouldn't it be cool if this,

00:11:04 ◼   ► or some opportunity comes up,

00:11:05 ◼   ► or like, oh, that would actually be kind of cool to work on,

00:11:08 ◼   ► or that might be successful,

00:11:10 ◼   ► but where the amount of time it would take

00:11:13 ◼   ► is disproportionate to its benefit in my life,

00:11:18 ◼   ► and it weighs too much on the cost side, mainly of time,

00:11:23 ◼   ► where any new thing I take on

00:11:26 ◼   ► is going to have to find time to be done

00:11:30 ◼   ► from the things I currently do with my time.

00:11:32 ◼   ► You know, time is a zero-sum game.

00:11:35 ◼   ► Like, it has to, any time that you invest in something new

00:11:38 ◼   ► has to come from something else.

00:11:39 ◼   ► This is opportunity cost, you know,

00:11:40 ◼   ► so if something sounds really cool

00:11:44 ◼   ► and it doesn't have that much business upside,

00:11:47 ◼   ► and maybe it doesn't have any kind of like, you know,

00:11:49 ◼   ► synergy with anything else I'm doing

00:11:51 ◼   ► or doesn't have much to do with anything else I'm doing,

00:11:53 ◼   ► but it's only gonna take a little bit of time,

00:11:55 ◼   ► then I might do it as a fun side thing.

00:11:57 ◼   ► Like, if I wanted to make a game,

00:11:59 ◼   ► and which I've had game ideas before, they're terrible,

00:12:02 ◼   ► but if I wanted to make a game,

00:12:04 ◼   ► and for some reason I had a good idea,

00:12:06 ◼   ► and it was only gonna take like a week to make,

00:12:08 ◼   ► and by the way, it never takes just a week to do anything,

00:12:10 ◼   ► but assume that you had something

00:12:12 ◼   ► that had like a really short time commitment,

00:12:14 ◼   ► and then you were done.

00:12:16 ◼   ► There was no ongoing maintenance, no ongoing support,

00:12:18 ◼   ► no ongoing updates.

00:12:20 ◼   ► Again, never happens,

00:12:21 ◼   ► but suppose you had something like that.

00:12:24 ◼   ► I'd be more likely to consider doing that

00:12:27 ◼   ► as a fun side thing, or as an experiment to learn

00:12:30 ◼   ► new technology or whatever.

00:12:33 ◼   ► But if I look at bigger projects,

00:12:35 ◼   ► things that require ongoing commitments,

00:12:37 ◼   ► so anything that requires updates, support,

00:12:40 ◼   ► new podcasts that I do, you know,

00:12:41 ◼   ► 'cause that's like, oh, you gotta start recording this thing

00:12:43 ◼   ► every week or two or three.

00:12:45 ◼   ► And so like, you know, new things like that,

00:12:48 ◼   ► new commitments, or just new apps

00:12:50 ◼   ► that will require ongoing work,

00:12:53 ◼   ► I really have to be very harsh with that, with myself,

00:12:57 ◼   ► and I have to say like,

00:12:59 ◼   ► what happens if this succeeds, first of all?

00:13:03 ◼   ► Like, it's easy when you have a cool idea,

00:13:04 ◼   ► oh, let's try this.

00:13:06 ◼   ► But what happens if it succeeds?

00:13:09 ◼   ► Then you have to maintain it.

00:13:10 ◼   ► Then you're in the business of X, right?

00:13:13 ◼   ► This is how I accidentally became

00:13:15 ◼   ► the owner of a magazine or an ad blocker.

00:13:17 ◼   ► (laughs)

00:13:18 ◼   ► Like, I wanted to do the cool thing

00:13:20 ◼   ► of making the new project

00:13:22 ◼   ► that had nothing to do with everything else

00:13:24 ◼   ► I was doing at the time,

00:13:25 ◼   ► and then it turned out, you know,

00:13:28 ◼   ► I had to run that after that, and it became just a job.

00:13:31 ◼   ► And I didn't want those jobs, it turns out.

00:13:34 ◼   ► Or they weren't what I thought they would be, you know?

00:13:36 ◼   ► So now I try to focus a lot more.

00:13:39 ◼   ► Anything that's going to be requiring ongoing work for me,

00:13:44 ◼   ► I try to make it

00:13:46 ◼   ► related to or beneficial to my main businesses,

00:13:51 ◼   ► which are Overcast and being a tech podcaster.

00:13:55 ◼   ► Like, those are my two main sources of income,

00:13:57 ◼   ► those are my two main focus areas.

00:14:00 ◼   ► Anything that is not related to those things

00:14:03 ◼   ► has to be really, really awesome

00:14:05 ◼   ► and also require really little time for me to do it.

00:14:09 ◼   ► So, you know, I'm working on multiple audio tools

00:14:13 ◼   ► and everything, nothing big, don't worry,

00:14:14 ◼   ► but just like small audio tools and stuff,

00:14:18 ◼   ► like Forecast and some other stuff like that.

00:14:21 ◼   ► 'Cause those are all kind of in the service

00:14:22 ◼   ► of both Overcast and my job as a podcaster.

00:14:26 ◼   ► Other things that come up, like I wanted to,

00:14:29 ◼   ► you know, I talked the other day about,

00:14:31 ◼   ► oh, if I brought back my ad blocker,

00:14:33 ◼   ► then I would do it in this way, right?

00:14:36 ◼   ► But I'm not gonna do that

00:14:37 ◼   ► because that's a whole different business.

00:14:39 ◼   ► It has nothing to do with my main stuff

00:14:41 ◼   ► and would require maintenance.

00:14:43 ◼   ► So it's not worth it, it's not a good idea.

00:14:45 ◼   ► I have had, yeah, this is a game ideas,

00:14:47 ◼   ► but I'm not a game developer,

00:14:49 ◼   ► and I don't really want to become one.

00:14:52 ◼   ► That's a whole different skillset that, first of all,

00:14:54 ◼   ► I don't think I'd be very good at,

00:14:56 ◼   ► but second of all, it's totally different

00:14:59 ◼   ► and it has no overlap really with what I do today.

00:15:01 ◼   ► And so it would require, I think, a lot of overhead,

00:15:04 ◼   ► a lot of shifting, and I don't think the outcome

00:15:07 ◼   ► would be worth it enough for me.

00:15:09 ◼   ► So that's kind of how I decide.

00:15:11 ◼   ► Just like, you know, big picture,

00:15:14 ◼   ► it's a lot about looking forward

00:15:17 ◼   ► about what happens if what I'm doing actually succeeds

00:15:22 ◼   ► and this has to become a part of every week of my life now

00:15:26 ◼   ► for the next indefinite number of years.

00:15:28 ◼   ► Is that actually the outcome I want?

00:15:32 ◼   ► And if it isn't, I probably shouldn't do that idea.

00:15:35 ◼   ► On a smaller scale, on the idea of features

00:15:38 ◼   ► or aspects of the apps that I am working on,

00:15:42 ◼   ► how do I decide what ideas of the apps that I work on?

00:15:47 ◼   ► What features of the apps that I work on?

00:15:50 ◼   ► That is a lot of the same logic

00:15:53 ◼   ► that would go into the bigger decisions

00:15:55 ◼   ► of basically like, do I want to be supporting this forever?

00:15:59 ◼   ► And by the way, I don't get this right every time.

00:16:01 ◼   ► I mean, that's why I had a magazine and an ad blocker

00:16:03 ◼   ► and that's why there's features in my apps

00:16:05 ◼   ► that I am dying to remove at all times.

00:16:08 ◼   ► Like, any time you ask me, there's always some feature

00:16:11 ◼   ► of whatever app I'm primarily working on at that point

00:16:13 ◼   ► that I'm like, man, I wish, if I did it over,

00:16:15 ◼   ► I would never do this feature.

00:16:16 ◼   ► I would never add this thing.

00:16:18 ◼   ► For Overcast, that's probably the episode limit.

00:16:20 ◼   ► I hate that feature.

00:16:21 ◼   ► Oh, and definitely Play Next by Priority.

00:16:24 ◼   ► That is a huge pain. (laughs)

00:16:26 ◼   ► But other than those two things,

00:16:28 ◼   ► for the most part, I decide when I'm adding a feature,

00:16:32 ◼   ► is this something I want to support forever?

00:16:35 ◼   ► Is this something that I want to, in the future,

00:16:40 ◼   ► not have to worry about people withholding

00:16:44 ◼   ► their star reviews because I removed it and they were mad?

00:16:47 ◼   ► Like, stuff like that.

00:16:48 ◼   ► You have to predict this forward.

00:16:50 ◼   ► If it's something that has a server side component,

00:16:52 ◼   ► what happens if everyone starts using this feature?

00:16:55 ◼   ► Like, I did file uploads for premium members.

00:16:58 ◼   ► What happens if tons of people sign up for that?

00:17:01 ◼   ► Do I want to be in that business?

00:17:03 ◼   ► Also think about the needs that these features might have.

00:17:06 ◼   ► So, for instance, people have often requested

00:17:09 ◼   ► some kind of written review or comment system for podcasts

00:17:13 ◼   ► where people could, similar to what iTunes has,

00:17:17 ◼   ► where people could review podcasts or add their commentary

00:17:20 ◼   ► that's visible to the public or anything like that.

00:17:23 ◼   ► Problem with that is once you have users inputting text

00:17:27 ◼   ► that's visible to other users,

00:17:29 ◼   ► you need to have basically community management

00:17:32 ◼   ► and spam control and abuse control

00:17:35 ◼   ► and ways people can file complaints

00:17:37 ◼   ► and policies around how you deal with that.

00:17:39 ◼   ► You have to be able to do that in multiple languages

00:17:41 ◼   ► because people will write things that you can't read.

00:17:43 ◼   ► So it becomes a much bigger problem

00:17:47 ◼   ► than just like, oh, wouldn't it be nice

00:17:49 ◼   ► to have a few comments on a podcast?

00:17:52 ◼   ► And so stuff like that, you gotta look at

00:17:55 ◼   ► what it actually needs to do it right,

00:17:58 ◼   ► and if it's too burdensome, then no way, not worth it.

00:18:02 ◼   ► - Yeah, and I think too, it's interesting

00:18:05 ◼   ► when you take that question and focus it on features

00:18:08 ◼   ► that you won't work on rather than just like

00:18:10 ◼   ► new opportunities that you'll pursue.

00:18:12 ◼   ► 'Cause I think something I also think about

00:18:14 ◼   ► is how I tend to make sure that an idea or a feature

00:18:19 ◼   ► is going to benefit most of my users.

00:18:23 ◼   ► Is a filter, I think, more recently

00:18:26 ◼   ► that I've started adopting that I won't work on,

00:18:29 ◼   ► I try to avoid ideas that only benefit

00:18:33 ◼   ► very small audiences or subsets of my app.

00:18:37 ◼   ► And that's not universal, sometimes I certainly

00:18:40 ◼   ► will have features that are not quite so universal,

00:18:44 ◼   ► but I find that it's so easy sometimes

00:18:49 ◼   ► to focus in on kind of this really interesting,

00:18:52 ◼   ► tricky problem or something kind of really,

00:18:55 ◼   ► like it's ostensibly a really cool feature to add.

00:18:59 ◼   ► But one of the filters I apply to it now

00:19:01 ◼   ► is I always ask myself, is this going to improve

00:19:05 ◼   ► the use of the app for 80%, 90% of my users?

00:19:10 ◼   ► And if it doesn't, then it has to be a feature

00:19:14 ◼   ► that I feel really strongly about otherwise.

00:19:17 ◼   ► Or at the very least, it's a feature that I'll push down

00:19:20 ◼   ► at the priority of that feature and try and pull up

00:19:24 ◼   ► anything where I think this will impact a lot of people.

00:19:27 ◼   ► Because I think it's so easy to just want to solve

00:19:28 ◼   ► the interesting problem and focus on that side of things

00:19:32 ◼   ► rather than viewing it from the user's perspective.

00:19:35 ◼   ► 'Cause I think you, and it's also probably also important

00:19:37 ◼   ► to remember that the users you hear from

00:19:40 ◼   ► are such a teeny proportion of your user base typically,

00:19:44 ◼   ► that it's so easy to get a distorted view

00:19:47 ◼   ► of what people are actually using in practice

00:19:49 ◼   ► and trying to keep that mindset that like a lot of ideas

00:19:52 ◼   ► you probably shouldn't work on are these ideas

00:19:55 ◼   ► that are kind of pet features and would really only affect

00:19:58 ◼   ► a few people and then you're spending all this time

00:20:01 ◼   ► and getting a relatively small return from it,

00:20:04 ◼   ► even just from a purely pragmatic perspective.

00:20:07 ◼   ► - We are brought to you this week by Linode.

00:20:09 ◼   ► With Linode, you will have access to a suite

00:20:11 ◼   ► of powerful hosting options.

00:20:13 ◼   ► With prices starting at just $5 a month,

00:20:16 ◼   ► you can be up and running with your own virtual server

00:20:18 ◼   ► in the Linode cloud in under a minute.

00:20:21 ◼   ► Linode offers industry leading performance

00:20:23 ◼   ► with native SSD storage, a 40 gigabit network,

00:20:26 ◼   ► and Intel E5 Xeon processors.

00:20:29 ◼   ► They have 10 data centers now spread across the world

00:20:32 ◼   ► so you can serve your customers even quicker than before.

00:20:34 ◼   ► There's also an API at Linode that allows you

00:20:36 ◼   ► to easily automate tasks or develop custom applications

00:20:39 ◼   ► in the cloud and everything is manageable

00:20:41 ◼   ► via the command line.

00:20:43 ◼   ► All of Linode's pricing tiers feature hourly billing

00:20:45 ◼   ► and then they have a monthly cap so that way

00:20:48 ◼   ► you don't end up paying more than the monthly rate

00:20:49 ◼   ► for any of the services.

00:20:51 ◼   ► And Linode offers now additional storage too.

00:20:54 ◼   ► They have block storage now out of beta

00:20:56 ◼   ► and that's available in Fremont and Newark so far

00:20:58 ◼   ► and they will be expanding it to all their data centers

00:21:01 ◼   ► by June.

00:21:02 ◼   ► Linode is great for things like hosting web apps

00:21:05 ◼   ► like what we do.

00:21:06 ◼   ► Dave and I are both long time Linode customers.

00:21:09 ◼   ► We love them, they're just fantastic.

00:21:12 ◼   ► So you can host app back ends like we do,

00:21:14 ◼   ► you can host websites, large databases, mail servers,

00:21:16 ◼   ► VPNs, Docker containers, private Git servers,

00:21:19 ◼   ► and so much more.

00:21:21 ◼   ► And Linode is hiring right now.

00:21:23 ◼   ► So if that interests you, go to linode.com/careers.

00:21:27 ◼   ► So Linode has fantastic pricing options available,

00:21:29 ◼   ► plans start at just $5 a month,

00:21:31 ◼   ► that gets you one gig of RAM,

00:21:33 ◼   ► and they offer lots of plans going up from there

00:21:35 ◼   ► for your various needs including high memory plans.

00:21:38 ◼   ► As a listener of this show,

00:21:39 ◼   ► if you sign up at linode.com/radar,

00:21:42 ◼   ► you will be supporting us and you will get $20

00:21:44 ◼   ► towards any Linode plan.

00:21:45 ◼   ► So if you wanna use that one gig plan,

00:21:47 ◼   ► that's four months free.

00:21:49 ◼   ► And with a seven day money back guarantee,

00:21:51 ◼   ► there's nothing to lose.

00:21:52 ◼   ► So go to linode.com/radar to learn more,

00:21:56 ◼   ► sign up and take advantage of that $20 credit

00:21:58 ◼   ► or use promo code radar2018 at checkout.

00:22:01 ◼   ► Thank you so much to Linode for supporting this show.

00:22:04 ◼   ► Mark Siri asks, "How would a converged Marzipan world

00:22:10 ◼   ► "change your approach to app development?"

00:22:12 ◼   ► And this is of course referring to the rumored

00:22:16 ◼   ► cross Mac iOS app development framework,

00:22:20 ◼   ► code name Marzipan that Apple is allegedly working on

00:22:22 ◼   ► according to all the rumor sites right now.

00:22:24 ◼   ► So how, if we get that,

00:22:27 ◼   ► if you can make iOS apps that also work on the Mac

00:22:30 ◼   ► with minimal changes presumably,

00:22:33 ◼   ► and of course this is a lot of speculation,

00:22:35 ◼   ► but in that world where that happens,

00:22:38 ◼   ► how would that change your approach to app development?

00:22:41 ◼   ► - I struggle a bit with this question

00:22:43 ◼   ► 'cause I look at my app portfolio

00:22:46 ◼   ► and there's a couple of my apps

00:22:49 ◼   ► that could sort of maybe work on the Mac

00:22:54 ◼   ► as a, like I have a recipe organizer and that's an app

00:22:57 ◼   ► that could certainly benefit from being on a Mac.

00:23:01 ◼   ► But by and large, I think that the awkward thing

00:23:04 ◼   ► or the tricky thing about this kind of

00:23:07 ◼   ► grand unified approach,

00:23:08 ◼   ► I think the biggest change it would honestly have

00:23:10 ◼   ► is that I think it might be,

00:23:13 ◼   ► it isn't so much that it allows me to build Mac apps,

00:23:16 ◼   ► but it may indicate what the future of apps in general

00:23:21 ◼   ► that Apple is heading towards might be.

00:23:24 ◼   ► That if there's a new,

00:23:26 ◼   ► in the same way that when size classes became a thing,

00:23:30 ◼   ► it started to indicate a year or two ahead

00:23:33 ◼   ► of when we finally got things like,

00:23:35 ◼   ► so we have the iPad Pro where you can have

00:23:38 ◼   ► two side-by-side apps or skinny slide-over apps

00:23:41 ◼   ► or multiple-sized iPhones or any of those types of things.

00:23:44 ◼   ► I think what I would be most interested to see here

00:23:48 ◼   ► is probably not,

00:23:49 ◼   ► there's gonna be some opportunities for sure

00:23:51 ◼   ► that now it makes it slightly easier for iOS developers

00:23:54 ◼   ► to move their apps to the Mac.

00:23:55 ◼   ► And that's great.

00:23:56 ◼   ► But the reality is I think in the scope of

00:24:00 ◼   ► the size of iOS as a user base and as a marketing base,

00:24:04 ◼   ► the Mac is vanishingly small.

00:24:09 ◼   ► I don't think that is gonna have a material impact

00:24:11 ◼   ► on my business in that way.

00:24:13 ◼   ► And so I think it is interesting, certainly,

00:24:16 ◼   ► and I would explore potentially adopting

00:24:19 ◼   ► some of those paradigms and certainly if they do it

00:24:21 ◼   ► in a way that is very straightforward.

00:24:24 ◼   ► But I think the biggest changes that it might make

00:24:26 ◼   ► is it may tweak how I think about

00:24:29 ◼   ► the way I should structure my apps

00:24:30 ◼   ► in a way that like, for example, now all my apps

00:24:33 ◼   ► are flexible in their layout.

00:24:35 ◼   ► I don't do any fixed layout apps anymore

00:24:37 ◼   ► because Apple has sort of indicated

00:24:39 ◼   ► that that's where we should be heading.

00:24:41 ◼   ► And I'd be very curious in this world

00:24:43 ◼   ► where they're kind of creating this more unified,

00:24:48 ◼   ► I don't know, this unified framework

00:24:51 ◼   ► for going from the smallest iPhone to a 27-inch iMac.

00:24:56 ◼   ► Like, I think they're going to be indicating to us

00:24:59 ◼   ► some kind of broad lessons or goals that we should make.

00:25:03 ◼   ► And if that's what they do, then I think

00:25:05 ◼   ► that's the approach I'd take and just kind of

00:25:06 ◼   ► keep that in the back of my mind.

00:25:07 ◼   ► But beyond that, probably not too much.

00:25:10 ◼   ► - Yeah, I think that pretty much covers it.

00:25:12 ◼   ► I mean, on the code side, yeah, I agree.

00:25:15 ◼   ► I think layout would be one of the biggest challenges

00:25:18 ◼   ► because right now we have size classes

00:25:21 ◼   ► that basically tell you whether something

00:25:23 ◼   ► is tiny or massive, and that's it.

00:25:25 ◼   ► That is not a very granular approach.

00:25:29 ◼   ► It's nothing like what you have with CSS media queries

00:25:31 ◼   ► and stuff like that.

00:25:32 ◼   ► So on a code level, I think it would be challenging

00:25:36 ◼   ► to make apps that actually scaled well

00:25:38 ◼   ► to all the various sizes and aspect ratios

00:25:41 ◼   ► and situations and things like that.

00:25:43 ◼   ► From a design side, that really depends

00:25:46 ◼   ► on a lot of how it's done.

00:25:49 ◼   ► What kind of form does this framework take?

00:25:53 ◼   ► How do iOS apps look on the Mac?

00:25:57 ◼   ► How do they work?

00:25:58 ◼   ► How is navigation done?

00:25:59 ◼   ► Stuff like that.

00:26:00 ◼   ► From a business side, which I think is the more,

00:26:04 ◼   ► probably the only one we can really

00:26:06 ◼   ► easily speculate on right now,

00:26:08 ◼   ► I think it's very likely that the app store side of it

00:26:13 ◼   ► would not be a separate purchase,

00:26:15 ◼   ► that they would probably update the Mac app store

00:26:18 ◼   ► for the first time ever to probably have

00:26:22 ◼   ► iOS apps that could basically opt into being on it,

00:26:25 ◼   ► and it would be one unified listing,

00:26:27 ◼   ► just like it is between iOS,

00:26:29 ◼   ► between the iPhone and the iPad.

00:26:30 ◼   ► And even, and the TV app store kind of does this.

00:26:34 ◼   ► So I feel like if you're still relying

00:26:38 ◼   ► on one time purchase, that's probably not gonna

00:26:42 ◼   ► go well in your favor here.

00:26:43 ◼   ► It's probably gonna be like one purchase

00:26:45 ◼   ► gets you the same app on all the platforms.

00:26:47 ◼   ► So be prepared for that.

00:26:49 ◼   ► Otherwise, for me, where I currently have

00:26:52 ◼   ► no presence on the Mac, so I'd be starting from zero there

00:26:55 ◼   ► and wouldn't be cannibalizing anything,

00:26:57 ◼   ► it's kind of great because I could have

00:27:01 ◼   ► a Mac version of my app which so far

00:27:04 ◼   ► has just not been worth the time to make

00:27:06 ◼   ► that so different and it would have relatively low usage.

00:27:09 ◼   ► So it's not worth it right now,

00:27:11 ◼   ► but it would become worth it probably

00:27:14 ◼   ► if it's not that much work to basically port my app

00:27:18 ◼   ► to the Mac in some kind of reasonable way.

00:27:21 ◼   ► That would be awesome, and it would open up

00:27:23 ◼   ► new market share, new usage.

00:27:25 ◼   ► My app is at least half ad revenue based,

00:27:29 ◼   ► so that's more people looking at the ads

00:27:32 ◼   ► more of the time so that I get more revenue from that.

00:27:34 ◼   ► So I think it could be a really good thing.

00:27:38 ◼   ► All right, and finally, if we can do this quickly,

00:27:41 ◼   ► any hot tips on accessibility?

00:27:43 ◼   ► This is a question from Benjamin Jex.

00:27:45 ◼   ► How do you make accessibility part of your workflow

00:27:48 ◼   ► and how has it helped improve your projects?

00:27:51 ◼   ► - So I think at its simplest, the best way to improve

00:27:55 ◼   ► your accessibility workflow is just to keep it

00:27:57 ◼   ► in the back of your mind as you're developing.

00:28:00 ◼   ► This is just, and I find that it is useful

00:28:03 ◼   ► and it helps improve my projects, I think,

00:28:05 ◼   ► because when I think about how I would express,

00:28:09 ◼   ► and usually when I, accessibility is a very wide

00:28:12 ◼   ► and far-reaching topic, and I think it gets into things

00:28:14 ◼   ► like use of color, use of white space,

00:28:18 ◼   ► how large your fonts are, how flexible your layout is

00:28:20 ◼   ► for different size fonts, but often what I find,

00:28:23 ◼   ► what I find really useful is even just to think about

00:28:25 ◼   ► my UI from a voiceover perspective.

00:28:29 ◼   ► And there is something very useful about making sure

00:28:34 ◼   ► that your UI would make sense for somebody using voiceover,

00:28:38 ◼   ► and if it doesn't, there's a good chance it's also

00:28:41 ◼   ► gonna be confusing or cumbersome for somebody

00:28:43 ◼   ► who will be using it in a traditional visual medium.

00:28:48 ◼   ► Because I think there is something good about,

00:28:51 ◼   ► like it forces you to think about,

00:28:55 ◼   ► is there a hierarchy to my information?

00:28:57 ◼   ► Is there a clear separation between different parts

00:29:00 ◼   ► of my app?

00:29:01 ◼   ► Am I making too many assumptions?

00:29:04 ◼   ► And so I think accessibility is something

00:29:06 ◼   ► that you just have to, it's just try and keep in your mind

00:29:09 ◼   ► and have in the back of your mind

00:29:10 ◼   ► as you're working on projects.

00:29:11 ◼   ► And then the other thing I'd say too,

00:29:13 ◼   ► in terms of the best tip I ever have about accessibility

00:29:16 ◼   ► is listen, anytime you get a user who gives you feedback

00:29:21 ◼   ► on an accessibility issue, address that, work on that,

00:29:24 ◼   ► and that's how best I have learned how to be good

00:29:27 ◼   ► at accessibility, is you just, by actually listening

00:29:31 ◼   ► to people who use apps in a way that is different than mine,

00:29:34 ◼   ► I learned so much, and that's how I've gotten better at it.

00:29:37 ◼   ► So anytime you have an opportunity to do that,

00:29:39 ◼   ► dive in and do it right away.

00:29:40 ◼   ► - Yeah, I think we should probably do a whole episode

00:29:42 ◼   ► on some more detailed accessibility work,

00:29:44 ◼   ► so we'll do that in the future.

00:29:46 ◼   ► But for now, we will talk to you next week.

00:29:49 ◼   ► - Bye.

00:29:51 ◼   ► [