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   [