0:00:00- Welcome to Under the Radar,
0:00:02a show about independent iOS app development.
0:00:04I'm Marco Arment.
0:00:05- And I'm David Smith.
0:00:06Under the Radar is never longer than 30 minutes,
0:00:08so let's get started.
0:00:10- So continuing our spring quiet period of developer news,
0:00:13I figured, we figured that we would do a little more Q&A,
0:00:16'cause when we asked for questions a couple weeks ago,
0:00:19we got tons of really good ones.
0:00:22And we have enough now for one or two more episodes,
0:00:24so we're gonna try to knock these out,
0:00:27and some of them are really good questions
0:00:29that I really wanted to address.
0:00:30So, we're gonna start with Boz the Developer, who asks,
0:00:35if you start working on a new app,
0:00:36what do you do before you start writing any code?
0:00:40So for instance, do you write out all the classes
0:00:42and details on paper, or do you just draft
0:00:45a general overview of how all the classes
0:00:48relate to each other?
0:00:49So, what do you do for this, Dave?
0:00:51- Very little, if anything.
0:00:57So I have done the kind of project,
0:01:01I mean, this was, and it's literally academic for me,
0:01:04where in school, I would have to do, build the big,
0:01:07what's it, UML diagrams of your classes
0:01:10and your class hierarchies and all that type of thing
0:01:14beforehand, and I've only ever done it
0:01:16in an academic setting.
0:01:17And in a practical setting, what I find is most useful
0:01:21is to get something working more,
0:01:24as quickly as you possibly can.
0:01:26And for me, that means to just start writing code.
0:01:29And I worry less about having things structured
0:01:33or organized in this most optimized way possible,
0:01:38or anything like that, at the start.
0:01:41Because the reality is, I know the least
0:01:44about the problem I'm trying to solve
0:01:47when I sit down to write for the first time.
0:01:50And so, any decisions or choices or structures
0:01:54that I'm going to create at that point
0:01:56are sort of necessarily the least informed
0:01:59and probably worst versions of that that I could.
0:02:02And so, I'd rather dive into the problem,
0:02:05start trying to solve it as best I can,
0:02:08and from there, as I develop more and more,
0:02:10from understanding of the problem domain,
0:02:12understanding how things are actually gonna work
0:02:14in practice, that's when I start to have a bit,
0:02:18not ever formal in my sort of class hierarchy or structure,
0:02:22but as I go, I will develop and move things
0:02:25to the structure that makes sense for the long term.
0:02:29The initial kind of quick spurt, maybe not necessarily,
0:02:32is even as worried about following good practices
0:02:36and structure around the way I'm relating things
0:02:39or those types of things.
0:02:41I'm just trying to get something working
0:02:42so I can better understand the problem.
0:02:44And once I understand the problem,
0:02:45then I can actually make choices about how to do things.
0:02:48But I never really write it all down.
0:02:50I mean, the only thing I've heard sometimes
0:02:51that I'll write down ahead of time
0:02:53is gonna be like sketching out a UI quickly
0:02:55or something like that, just to play with it.
0:02:57But I never really get into the sense of,
0:02:59writing things down on the code side,
0:03:02I've never really found to be particularly useful.
0:03:05- All this time, I thought I was just lazy and undisciplined,
0:03:09but you've now given me justification
0:03:11for why I also don't do any of these things.
0:03:15I think your point is excellent about how
0:03:18when you design on paper, you know the least
0:03:21about what it's actually going to take, really.
0:03:24To me, software development is a really big field,
0:03:28and there's lots of different ways to do it.
0:03:30There's lots of different situations
0:03:31in which you might want or need to do things
0:03:34in a more formal or planned-ahead way than others.
0:03:37I don't think iOS app development is one of those things.
0:03:41I don't think you need this level of formality I'm planning
0:03:44for what most people listening to the show
0:03:46are actually working on.
0:03:48I think you can build software like you build a bridge,
0:03:53like you design the entire thing first,
0:03:57and people have built lots of bridges before,
0:03:59so they have a really good idea
0:04:00of what it takes to build bridges these days,
0:04:02and you can sketch it all out,
0:04:05and then build it from the ground up,
0:04:06and then you reach the top,
0:04:07and then you can drive a car over it,
0:04:09and you know it'll work, because you plan everything out,
0:04:11and everything is like known problems,
0:04:13known conditions, known requirements.
0:04:17Software is rarely that way,
0:04:19and especially the kind of software that we write.
0:04:21It is rarely that established, that known in advance,
0:04:26or that repetitive.
0:04:29What makes software planning so hard
0:04:31is that most of the time,
0:04:32no one has ever done what you're doing
0:04:34in the exact way you're doing it before,
0:04:36and that's why it's so hard to estimate time,
0:04:39and estimate budget, and everything.
0:04:41And so the way I build software
0:04:44is not the way you build a bridge,
0:04:46where you sketch everything out first.
0:04:48The way I build software is how you would build
0:04:50the most dangerous, worst bridge project in the world,
0:04:52which is like you have somebody hold a board
0:04:55across the water first,
0:04:57and somebody rides a tricycle over it,
0:04:58and sees if it works,
0:05:00and then slowly you replace the temporary parts
0:05:03that you've made with the real thing
0:05:05that could actually be a little bit better,
0:05:07and support things properly.
0:05:09That's kind of how I make my software,
0:05:10is I try to get something working as quickly as possible
0:05:14that's terrible,
0:05:15and then if it's a thing that I think is a good idea,
0:05:18or that has legs, no pun intended,
0:05:20then I will start making it correct,
0:05:24and start building it right,
0:05:26and build out parts of it that were special case
0:05:29just to get the prototype working,
0:05:30and add UI, and polish things,
0:05:32and make it more robust.
0:05:34That's how I build software,
0:05:36and all of that is happening just by doing the code.
0:05:39It's all jumping right in and starting right in the code.
0:05:41There's no planning or anything,
0:05:43and I don't think,
0:05:45I mean, in an academic sense,
0:05:47certainly I would like to be more disciplined,
0:05:50and more planned, and everything like that,
0:05:53but A, I can't do that,
0:05:56and just my personality and my work style is not that,
0:05:59and B, I don't think for the kinds of apps
0:06:01that most of us write,
0:06:02that that level of formality is necessary.
0:06:05To me, that's a lot,
0:06:06it's just a lot of overhead,
0:06:08and you know, for the way I work.
0:06:11If the way that you work is more that way,
0:06:14if you benefit from designing things ahead of time,
0:06:19writing things ahead of time,
0:06:19that's a different story.
0:06:21That's a different work style,
0:06:22but for me, I have never found that useful.
0:06:25- Yeah, and I think what you just said there, though,
0:06:26is a very important point,
0:06:27that I have worked with people back
0:06:29when I used to work in a more,
0:06:31in an actual office environment,
0:06:32and I had a good friend of mine who,
0:06:35the way that I think about a problem
0:06:37is that I write code to explore it.
0:06:40That was the way that I do it.
0:06:42That initial 20, 30% of the work
0:06:45is me in Xcode writing code,
0:06:47and that's how I think a problem through.
0:06:50I had a friend who,
0:06:51he would think a problem through
0:06:53by exploring it on a whiteboard,
0:06:56and he would draw class diagrams,
0:06:57and that was, you know,
0:06:59that initial bit of time,
0:07:02that's how he could think through the problem best
0:07:04and understand it most.
0:07:06He wasn't coming at it from a sense of,
0:07:08he wasn't trying to be academic about it.
0:07:10He wasn't trying to be complete or comprehensive,
0:07:13but there is certainly,
0:07:15finding whatever is that best tool for you
0:07:17to gather as quickly as possible
0:07:19the maximum amount of information about the problem,
0:07:22and you're understanding
0:07:23what you think your solution to it might be.
0:07:26Whatever that form that takes, that's great,
0:07:28but I think it's probably important,
0:07:29moreover, to just remember that
0:07:32that initial work is entirely speculative,
0:07:35and you are trying to understand something better
0:07:39so that you can make better choices down the road,
0:07:41rather than trying to make a lot of choices upfront
0:07:45and then sort of holding yourself to those
0:07:47or expecting those choices to be good down the road.
0:07:51- Lou Brothers asks,
0:07:53"How do you decide which ideas you won't work on?"
0:07:57- In some ways, it's--
0:08:00- I love this question.
0:08:01- It's like, I think,
0:08:04so it's a decision,
0:08:05I think we have to make a lot, is something.
0:08:08I think one of the,
0:08:09as soon as you find yourself in a position
0:08:13where you're self-employed,
0:08:14suddenly you have the blessing and the curse of having,
0:08:18you can work on anything you want, basically.
0:08:21You can be like a little bumblebee,
0:08:22just flitting from flower to flower to flower if you want.
0:08:25You can dive into one thing and only work on that.
0:08:27You're now in a position that you have to make that choice.
0:08:30You have to decide what you're gonna work on,
0:08:33and then I think the harsh reality
0:08:35that you have to come to grips with
0:08:36is the fact that any time you say yes to one project,
0:08:40you are implicitly saying no to 100 other projects,
0:08:45that your time is a finite resource,
0:08:46and so you are going to have to decide,
0:08:50you can't do everything,
0:08:52and every day you're saying no
0:08:55to way more things than you're saying yes to.
0:08:58And so I think primarily the way that I tend to focus
0:09:00in terms of answering the ideas that I won't work on
0:09:04are the ideas, my focus tends to be on
0:09:07what are the ideas that I am excited to work on,
0:09:10and I just keep a running list of the ideas
0:09:13that I have otherwise, and that list will grow,
0:09:17and sometimes things will fall off of it.
0:09:20Sometimes I'll pick things up from that
0:09:21and start working on them,
0:09:23but I find that the most constructive thing I've found
0:09:26is to just focus on what am I excited about?
0:09:29What do I think would have the best impact on my business
0:09:31financially?
0:09:33What do I think is a nice quick win?
0:09:35Those are the things that I tend to decide about,
0:09:37what I want to work on,
0:09:40and then the things that I won't work on
0:09:41are just everything else,
0:09:43which is this gigantic pile of other apps that I have,
0:09:46other ideas that I have to work on things,
0:09:49and it's impossible for me, I find,
0:09:52to manage too much about that.
0:09:53I mean, there's a little bit of maybe,
0:09:55there are some times I have an idea,
0:09:57and then the important exercise of trying to honestly
0:10:01and genuinely think it through,
0:10:03where it's like, "Oh, that's a great idea,"
0:10:04and then sometimes you'll sit down for a little bit
0:10:06and just kind of think about it,
0:10:08or you'll have it on your back burner
0:10:10as you're going about your daily life,
0:10:11and all of a sudden you're like, "Wait a second.
0:10:12Yeah, I know. That's a terrible idea,"
0:10:14and it'll just kind of like, you can discount it,
0:10:16but otherwise I just tend to focus on
0:10:18what am I excited to work on?
0:10:19I'll go work on that,
0:10:21and I'm implicitly saying,
0:10:24anything that isn't that idea,
0:10:25I'm not gonna work on right now.
0:10:28- Yeah, for me, there's a lot of business considerations
0:10:32that go into it, and a lot of this just comes down to,
0:10:35you have a limited amount of time, really, in the day,
0:10:39and you have a limited amount of focus
0:10:40of how many things you can focus on at once
0:10:43and how many things you can maintain at once,
0:10:45and so it's very much a question of business needs
0:10:50and priorities, and then mostly it's a question
0:10:53of time management, and so the things
0:10:57I won't work on are typically things that I think one day,
0:11:02oh, wouldn't it be cool if this,
0:11:04or some opportunity comes up,
0:11:05or like, oh, that would actually be kind of cool to work on,
0:11:08or that might be successful,
0:11:10but where the amount of time it would take
0:11:13is disproportionate to its benefit in my life,
0:11:18and it weighs too much on the cost side, mainly of time,
0:11:23where any new thing I take on
0:11:26is going to have to find time to be done
0:11:30from the things I currently do with my time.
0:11:32You know, time is a zero-sum game.
0:11:35Like, it has to, any time that you invest in something new
0:11:38has to come from something else.
0:11:39This is opportunity cost, you know,
0:11:40so if something sounds really cool
0:11:44and it doesn't have that much business upside,
0:11:47and maybe it doesn't have any kind of like, you know,
0:11:49synergy with anything else I'm doing
0:11:51or doesn't have much to do with anything else I'm doing,
0:11:53but it's only gonna take a little bit of time,
0:11:55then I might do it as a fun side thing.
0:11:57Like, if I wanted to make a game,
0:11:59and which I've had game ideas before, they're terrible,
0:12:02but if I wanted to make a game,
0:12:04and for some reason I had a good idea,
0:12:06and it was only gonna take like a week to make,
0:12:08and by the way, it never takes just a week to do anything,
0:12:10but assume that you had something
0:12:12that had like a really short time commitment,
0:12:14and then you were done.
0:12:16There was no ongoing maintenance, no ongoing support,
0:12:18no ongoing updates.
0:12:20Again, never happens,
0:12:21but suppose you had something like that.
0:12:24I'd be more likely to consider doing that
0:12:27as a fun side thing, or as an experiment to learn
0:12:30new technology or whatever.
0:12:33But if I look at bigger projects,
0:12:35things that require ongoing commitments,
0:12:37so anything that requires updates, support,
0:12:40new podcasts that I do, you know,
0:12:41'cause that's like, oh, you gotta start recording this thing
0:12:43every week or two or three.
0:12:45And so like, you know, new things like that,
0:12:48new commitments, or just new apps
0:12:50that will require ongoing work,
0:12:53I really have to be very harsh with that, with myself,
0:12:57and I have to say like,
0:12:59what happens if this succeeds, first of all?
0:13:03Like, it's easy when you have a cool idea,
0:13:04oh, let's try this.
0:13:06But what happens if it succeeds?
0:13:09Then you have to maintain it.
0:13:10Then you're in the business of X, right?
0:13:13This is how I accidentally became
0:13:15the owner of a magazine or an ad blocker.
0:13:17(laughs)
0:13:18Like, I wanted to do the cool thing
0:13:20of making the new project
0:13:22that had nothing to do with everything else
0:13:24I was doing at the time,
0:13:25and then it turned out, you know,
0:13:28I had to run that after that, and it became just a job.
0:13:31And I didn't want those jobs, it turns out.
0:13:34Or they weren't what I thought they would be, you know?
0:13:36So now I try to focus a lot more.
0:13:39Anything that's going to be requiring ongoing work for me,
0:13:44I try to make it
0:13:46related to or beneficial to my main businesses,
0:13:51which are Overcast and being a tech podcaster.
0:13:55Like, those are my two main sources of income,
0:13:57those are my two main focus areas.
0:14:00Anything that is not related to those things
0:14:03has to be really, really awesome
0:14:05and also require really little time for me to do it.
0:14:09So, you know, I'm working on multiple audio tools
0:14:13and everything, nothing big, don't worry,
0:14:14but just like small audio tools and stuff,
0:14:18like Forecast and some other stuff like that.
0:14:21'Cause those are all kind of in the service
0:14:22of both Overcast and my job as a podcaster.
0:14:26Other things that come up, like I wanted to,
0:14:29you know, I talked the other day about,
0:14:31oh, if I brought back my ad blocker,
0:14:33then I would do it in this way, right?
0:14:36But I'm not gonna do that
0:14:37because that's a whole different business.
0:14:39It has nothing to do with my main stuff
0:14:41and would require maintenance.
0:14:43So it's not worth it, it's not a good idea.
0:14:45I have had, yeah, this is a game ideas,
0:14:47but I'm not a game developer,
0:14:49and I don't really want to become one.
0:14:52That's a whole different skillset that, first of all,
0:14:54I don't think I'd be very good at,
0:14:56but second of all, it's totally different
0:14:59and it has no overlap really with what I do today.
0:15:01And so it would require, I think, a lot of overhead,
0:15:04a lot of shifting, and I don't think the outcome
0:15:07would be worth it enough for me.
0:15:09So that's kind of how I decide.
0:15:11Just like, you know, big picture,
0:15:14it's a lot about looking forward
0:15:17about what happens if what I'm doing actually succeeds
0:15:22and this has to become a part of every week of my life now
0:15:26for the next indefinite number of years.
0:15:28Is that actually the outcome I want?
0:15:32And if it isn't, I probably shouldn't do that idea.
0:15:35On a smaller scale, on the idea of features
0:15:38or aspects of the apps that I am working on,
0:15:42how do I decide what ideas of the apps that I work on?
0:15:47What features of the apps that I work on?
0:15:50That is a lot of the same logic
0:15:53that would go into the bigger decisions
0:15:55of basically like, do I want to be supporting this forever?
0:15:59And by the way, I don't get this right every time.
0:16:01I mean, that's why I had a magazine and an ad blocker
0:16:03and that's why there's features in my apps
0:16:05that I am dying to remove at all times.
0:16:08Like, any time you ask me, there's always some feature
0:16:11of whatever app I'm primarily working on at that point
0:16:13that I'm like, man, I wish, if I did it over,
0:16:15I would never do this feature.
0:16:16I would never add this thing.
0:16:18For Overcast, that's probably the episode limit.
0:16:20I hate that feature.
0:16:21Oh, and definitely Play Next by Priority.
0:16:24That is a huge pain. (laughs)
0:16:26But other than those two things,
0:16:28for the most part, I decide when I'm adding a feature,
0:16:32is this something I want to support forever?
0:16:35Is this something that I want to, in the future,
0:16:40not have to worry about people withholding
0:16:44their star reviews because I removed it and they were mad?
0:16:47Like, stuff like that.
0:16:48You have to predict this forward.
0:16:50If it's something that has a server side component,
0:16:52what happens if everyone starts using this feature?
0:16:55Like, I did file uploads for premium members.
0:16:58What happens if tons of people sign up for that?
0:17:01Do I want to be in that business?
0:17:03Also think about the needs that these features might have.
0:17:06So, for instance, people have often requested
0:17:09some kind of written review or comment system for podcasts
0:17:13where people could, similar to what iTunes has,
0:17:17where people could review podcasts or add their commentary
0:17:20that's visible to the public or anything like that.
0:17:23Problem with that is once you have users inputting text
0:17:27that's visible to other users,
0:17:29you need to have basically community management
0:17:32and spam control and abuse control
0:17:35and ways people can file complaints
0:17:37and policies around how you deal with that.
0:17:39You have to be able to do that in multiple languages
0:17:41because people will write things that you can't read.
0:17:43So it becomes a much bigger problem
0:17:47than just like, oh, wouldn't it be nice
0:17:49to have a few comments on a podcast?
0:17:52And so stuff like that, you gotta look at
0:17:55what it actually needs to do it right,
0:17:58and if it's too burdensome, then no way, not worth it.
0:18:02- Yeah, and I think too, it's interesting
0:18:05when you take that question and focus it on features
0:18:08that you won't work on rather than just like
0:18:10new opportunities that you'll pursue.
0:18:12'Cause I think something I also think about
0:18:14is how I tend to make sure that an idea or a feature
0:18:19is going to benefit most of my users.
0:18:23Is a filter, I think, more recently
0:18:26that I've started adopting that I won't work on,
0:18:29I try to avoid ideas that only benefit
0:18:33very small audiences or subsets of my app.
0:18:37And that's not universal, sometimes I certainly
0:18:40will have features that are not quite so universal,
0:18:44but I find that it's so easy sometimes
0:18:49to focus in on kind of this really interesting,
0:18:52tricky problem or something kind of really,
0:18:55like it's ostensibly a really cool feature to add.
0:18:59But one of the filters I apply to it now
0:19:01is I always ask myself, is this going to improve
0:19:05the use of the app for 80%, 90% of my users?
0:19:10And if it doesn't, then it has to be a feature
0:19:14that I feel really strongly about otherwise.
0:19:17Or at the very least, it's a feature that I'll push down
0:19:20at the priority of that feature and try and pull up
0:19:24anything where I think this will impact a lot of people.
0:19:27Because I think it's so easy to just want to solve
0:19:28the interesting problem and focus on that side of things
0:19:32rather than viewing it from the user's perspective.
0:19:35'Cause I think you, and it's also probably also important
0:19:37to remember that the users you hear from
0:19:40are such a teeny proportion of your user base typically,
0:19:44that it's so easy to get a distorted view
0:19:47of what people are actually using in practice
0:19:49and trying to keep that mindset that like a lot of ideas
0:19:52you probably shouldn't work on are these ideas
0:19:55that are kind of pet features and would really only affect
0:19:58a few people and then you're spending all this time
0:20:01and getting a relatively small return from it,
0:20:04even just from a purely pragmatic perspective.
0:20:07- We are brought to you this week by Linode.
0:20:09With Linode, you will have access to a suite
0:20:11of powerful hosting options.
0:20:13With prices starting at just $5 a month,
0:20:16you can be up and running with your own virtual server
0:20:18in the Linode cloud in under a minute.
0:20:21Linode offers industry leading performance
0:20:23with native SSD storage, a 40 gigabit network,
0:20:26and Intel E5 Xeon processors.
0:20:29They have 10 data centers now spread across the world
0:20:32so you can serve your customers even quicker than before.
0:20:34There's also an API at Linode that allows you
0:20:36to easily automate tasks or develop custom applications
0:20:39in the cloud and everything is manageable
0:20:41via the command line.
0:20:43All of Linode's pricing tiers feature hourly billing
0:20:45and then they have a monthly cap so that way
0:20:48you don't end up paying more than the monthly rate
0:20:49for any of the services.
0:20:51And Linode offers now additional storage too.
0:20:54They have block storage now out of beta
0:20:56and that's available in Fremont and Newark so far
0:20:58and they will be expanding it to all their data centers
0:21:01by June.
0:21:02Linode is great for things like hosting web apps
0:21:05like what we do.
0:21:06Dave and I are both long time Linode customers.
0:21:09We love them, they're just fantastic.
0:21:12So you can host app back ends like we do,
0:21:14you can host websites, large databases, mail servers,
0:21:16VPNs, Docker containers, private Git servers,
0:21:19and so much more.
0:21:21And Linode is hiring right now.
0:21:23So if that interests you, go to linode.com/careers.
0:21:27So Linode has fantastic pricing options available,
0:21:29plans start at just $5 a month,
0:21:31that gets you one gig of RAM,
0:21:33and they offer lots of plans going up from there
0:21:35for your various needs including high memory plans.
0:21:38As a listener of this show,
0:21:39if you sign up at linode.com/radar,
0:21:42you will be supporting us and you will get $20
0:21:44towards any Linode plan.
0:21:45So if you wanna use that one gig plan,
0:21:47that's four months free.
0:21:49And with a seven day money back guarantee,
0:21:51there's nothing to lose.
0:21:52So go to linode.com/radar to learn more,
0:21:56sign up and take advantage of that $20 credit
0:21:58or use promo code radar2018 at checkout.
0:22:01Thank you so much to Linode for supporting this show.
0:22:04Mark Siri asks, "How would a converged Marzipan world
0:22:10"change your approach to app development?"
0:22:12And this is of course referring to the rumored
0:22:16cross Mac iOS app development framework,
0:22:20code name Marzipan that Apple is allegedly working on
0:22:22according to all the rumor sites right now.
0:22:24So how, if we get that,
0:22:27if you can make iOS apps that also work on the Mac
0:22:30with minimal changes presumably,
0:22:33and of course this is a lot of speculation,
0:22:35but in that world where that happens,
0:22:38how would that change your approach to app development?
0:22:41- I struggle a bit with this question
0:22:43'cause I look at my app portfolio
0:22:46and there's a couple of my apps
0:22:49that could sort of maybe work on the Mac
0:22:54as a, like I have a recipe organizer and that's an app
0:22:57that could certainly benefit from being on a Mac.
0:23:01But by and large, I think that the awkward thing
0:23:04or the tricky thing about this kind of
0:23:07grand unified approach,
0:23:08I think the biggest change it would honestly have
0:23:10is that I think it might be,
0:23:13it isn't so much that it allows me to build Mac apps,
0:23:16but it may indicate what the future of apps in general
0:23:21that Apple is heading towards might be.
0:23:24That if there's a new,
0:23:26in the same way that when size classes became a thing,
0:23:30it started to indicate a year or two ahead
0:23:33of when we finally got things like,
0:23:35so we have the iPad Pro where you can have
0:23:38two side-by-side apps or skinny slide-over apps
0:23:41or multiple-sized iPhones or any of those types of things.
0:23:44I think what I would be most interested to see here
0:23:48is probably not,
0:23:49there's gonna be some opportunities for sure
0:23:51that now it makes it slightly easier for iOS developers
0:23:54to move their apps to the Mac.
0:23:55And that's great.
0:23:56But the reality is I think in the scope of
0:24:00the size of iOS as a user base and as a marketing base,
0:24:04the Mac is vanishingly small.
0:24:09I don't think that is gonna have a material impact
0:24:11on my business in that way.
0:24:13And so I think it is interesting, certainly,
0:24:16and I would explore potentially adopting
0:24:19some of those paradigms and certainly if they do it
0:24:21in a way that is very straightforward.
0:24:24But I think the biggest changes that it might make
0:24:26is it may tweak how I think about
0:24:29the way I should structure my apps
0:24:30in a way that like, for example, now all my apps
0:24:33are flexible in their layout.
0:24:35I don't do any fixed layout apps anymore
0:24:37because Apple has sort of indicated
0:24:39that that's where we should be heading.
0:24:41And I'd be very curious in this world
0:24:43where they're kind of creating this more unified,
0:24:48I don't know, this unified framework
0:24:51for going from the smallest iPhone to a 27-inch iMac.
0:24:56Like, I think they're going to be indicating to us
0:24:59some kind of broad lessons or goals that we should make.
0:25:03And if that's what they do, then I think
0:25:05that's the approach I'd take and just kind of
0:25:06keep that in the back of my mind.
0:25:07But beyond that, probably not too much.
0:25:10- Yeah, I think that pretty much covers it.
0:25:12I mean, on the code side, yeah, I agree.
0:25:15I think layout would be one of the biggest challenges
0:25:18because right now we have size classes
0:25:21that basically tell you whether something
0:25:23is tiny or massive, and that's it.
0:25:25That is not a very granular approach.
0:25:29It's nothing like what you have with CSS media queries
0:25:31and stuff like that.
0:25:32So on a code level, I think it would be challenging
0:25:36to make apps that actually scaled well
0:25:38to all the various sizes and aspect ratios
0:25:41and situations and things like that.
0:25:43From a design side, that really depends
0:25:46on a lot of how it's done.
0:25:49What kind of form does this framework take?
0:25:53How do iOS apps look on the Mac?
0:25:57How do they work?
0:25:58How is navigation done?
0:25:59Stuff like that.
0:26:00From a business side, which I think is the more,
0:26:04probably the only one we can really
0:26:06easily speculate on right now,
0:26:08I think it's very likely that the app store side of it
0:26:13would not be a separate purchase,
0:26:15that they would probably update the Mac app store
0:26:18for the first time ever to probably have
0:26:22iOS apps that could basically opt into being on it,
0:26:25and it would be one unified listing,
0:26:27just like it is between iOS,
0:26:29between the iPhone and the iPad.
0:26:30And even, and the TV app store kind of does this.
0:26:34So I feel like if you're still relying
0:26:38on one time purchase, that's probably not gonna
0:26:42go well in your favor here.
0:26:43It's probably gonna be like one purchase
0:26:45gets you the same app on all the platforms.
0:26:47So be prepared for that.
0:26:49Otherwise, for me, where I currently have
0:26:52no presence on the Mac, so I'd be starting from zero there
0:26:55and wouldn't be cannibalizing anything,
0:26:57it's kind of great because I could have
0:27:01a Mac version of my app which so far
0:27:04has just not been worth the time to make
0:27:06that so different and it would have relatively low usage.
0:27:09So it's not worth it right now,
0:27:11but it would become worth it probably
0:27:14if it's not that much work to basically port my app
0:27:18to the Mac in some kind of reasonable way.
0:27:21That would be awesome, and it would open up
0:27:23new market share, new usage.
0:27:25My app is at least half ad revenue based,
0:27:29so that's more people looking at the ads
0:27:32more of the time so that I get more revenue from that.
0:27:34So I think it could be a really good thing.
0:27:38All right, and finally, if we can do this quickly,
0:27:41any hot tips on accessibility?
0:27:43This is a question from Benjamin Jex.
0:27:45How do you make accessibility part of your workflow
0:27:48and how has it helped improve your projects?
0:27:51- So I think at its simplest, the best way to improve
0:27:55your accessibility workflow is just to keep it
0:27:57in the back of your mind as you're developing.
0:28:00This is just, and I find that it is useful
0:28:03and it helps improve my projects, I think,
0:28:05because when I think about how I would express,
0:28:09and usually when I, accessibility is a very wide
0:28:12and far-reaching topic, and I think it gets into things
0:28:14like use of color, use of white space,
0:28:18how large your fonts are, how flexible your layout is
0:28:20for different size fonts, but often what I find,
0:28:23what I find really useful is even just to think about
0:28:25my UI from a voiceover perspective.
0:28:29And there is something very useful about making sure
0:28:34that your UI would make sense for somebody using voiceover,
0:28:38and if it doesn't, there's a good chance it's also
0:28:41gonna be confusing or cumbersome for somebody
0:28:43who will be using it in a traditional visual medium.
0:28:48Because I think there is something good about,
0:28:51like it forces you to think about,
0:28:55is there a hierarchy to my information?
0:28:57Is there a clear separation between different parts
0:29:00of my app?
0:29:01Am I making too many assumptions?
0:29:04And so I think accessibility is something
0:29:06that you just have to, it's just try and keep in your mind
0:29:09and have in the back of your mind
0:29:10as you're working on projects.
0:29:11And then the other thing I'd say too,
0:29:13in terms of the best tip I ever have about accessibility
0:29:16is listen, anytime you get a user who gives you feedback
0:29:21on an accessibility issue, address that, work on that,
0:29:24and that's how best I have learned how to be good
0:29:27at accessibility, is you just, by actually listening
0:29:31to people who use apps in a way that is different than mine,
0:29:34I learned so much, and that's how I've gotten better at it.
0:29:37So anytime you have an opportunity to do that,
0:29:39dive in and do it right away.
0:29:40- Yeah, I think we should probably do a whole episode
0:29:42on some more detailed accessibility work,
0:29:44so we'll do that in the future.
0:29:46But for now, we will talk to you next week.
0:29:49- Bye.