Under the Radar

26: Wading Slowly Into AppKit


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:04   I'm Marco Arment. And I'm David Smith. Under the Radar is never longer than

00:00:08   30 minutes, so let's get started. You almost said 15, didn't you? I did.

00:00:12   We're going to keep doing that forever. Long habit. Very long habit.

00:00:16   So today, we're going to, in some ways, we're celebrating something.

00:00:20   So one of us did something that perhaps isn't all that unusual.

00:00:24   We spent a couple of weeks putting together an application and then released it.

00:00:28   What is perhaps very surprising is that that person was you and not me.

00:00:33   Yes, I mean for you that's like every month you do something like that.

00:00:36   That's Tuesday for me, but for you this is quite something.

00:00:39   So the app we're referring to is Quitter, which is a Mac app for making you waste less

00:00:46   time I guess you could say.

00:00:48   Is that a good characterization of it?

00:00:50   Yeah, I mean basically the very short version of the story is I was using Twitter and Slack

00:00:56   and RSS readers too much on my Mac.

00:00:59   And I'm using an app called Rescue Time for years

00:01:02   that kind of tracks what apps you're using

00:01:04   and how much time you spend on them.

00:01:05   And it was just showing me like I was spending

00:01:07   way too much time in mostly Twitter

00:01:10   and then some slack towards more recent months.

00:01:13   And so I made an app that would automatically quit

00:01:17   those apps, any targeted apps,

00:01:19   it would automatically quit them

00:01:20   after a user-defined period of inactivity.

00:01:24   So if I didn't click on the Twitter app window

00:01:27   for up to, say, 10 minutes,

00:01:29   it would just automatically quit the app.

00:01:31   So it's out of sight, out of mind,

00:01:32   and it makes it easier for me to focus on my work

00:01:35   rather than having this window that's kinda constantly

00:01:37   always in the corner of my screen and bringing in new stuff

00:01:40   and tempting me with its distraction.

00:01:42   And yes, self-control would be a better way to solve this,

00:01:45   but I lack that in this regard, so here we are using tools.

00:01:48   So I made this Mac app called Quitter

00:01:50   that does a very, very simple thing,

00:01:52   and just sits in the menu bar and I released it.

00:01:56   And because it can't be sandboxed,

00:01:58   which we'll get to shortly,

00:01:59   but because it can't be sandboxed,

00:02:01   I had to release it directly

00:02:03   because it won't be allowed in the Mac App Store

00:02:05   'cause it can't be sandboxed

00:02:06   because you can't quit other apps from the sandbox.

00:02:10   As a brief aside, I tried making it sandboxable

00:02:13   'cause I honestly just wanted to put it in the App Store

00:02:17   because I just didn't wanna have to deal with

00:02:19   direct distribution.

00:02:20   and all the not trivial but not massively complicated

00:02:25   things that come along with that.

00:02:26   Things like you have to build in a version updater,

00:02:28   like build in Sparkle and have it automatically

00:02:30   manage version, you have to deal with installation,

00:02:32   the installation process somehow and things like that.

00:02:35   And there's all sorts of, not to mention,

00:02:37   if I ever wanna charge money for something.

00:02:39   So I put this up there for free.

00:02:41   But the reason, I wanted to be in the App Store

00:02:44   because I thought wouldn't it be great

00:02:47   if I could maybe charge a dollar for this

00:02:48   or charge $5 for this or whatever I would charge,

00:02:50   you know, some reasonable price probably.

00:02:52   But it's like, I tried so hard to make it sandboxable.

00:02:57   I tried so many different approaches

00:03:00   to doing what it's doing, which is watching,

00:03:03   getting the current app, being notified

00:03:05   when the currently focused app changes,

00:03:07   all those things are sandboxable and totally fine.

00:03:11   But you can't quit other apps from a sandbox.

00:03:14   And there are like six different ways

00:03:17   that you could maybe try to do it.

00:03:18   I tried all six of them.

00:03:20   All sorts of different high level, low level ways

00:03:23   to do this, having like a separate process that you,

00:03:26   like a utility thing that you bundle with your app

00:03:28   that's not sandboxed and have that, quit things,

00:03:31   and there was no combination of ways I could do this

00:03:34   in which I could have a sandboxed app

00:03:36   that was able to quit arbitrary other apps.

00:03:39   It just was not possible.

00:03:41   - Which is probably a good thing.

00:03:42   - Yeah, I mean, if you think about how the sandbox

00:03:44   is supposed to work, that makes sense.

00:03:46   But I do kind of feel burned by the idea of sandboxing

00:03:51   because I wasted so much time trying to get it to work

00:03:55   just to get myself permitted in the Mac App Store.

00:03:59   And I am kind of negative feeling on the App Store

00:04:01   as a result of that because if I just started out

00:04:04   not even trying to be compatible with the App Store,

00:04:07   I would have had this out in half the time.

00:04:09   - Sure.

00:04:10   - But that's a little frustrating.

00:04:11   But otherwise, so once I resigned myself to,

00:04:14   well I guess this can't be in the App Store.

00:04:17   Then I had to do some minor setup to do things

00:04:18   like get Sparkle bundled in and have some kind of

00:04:21   build process where I could semi automate a release

00:04:24   if I, you know, rather than having to like

00:04:25   generate the XML file manually and stuff like that

00:04:28   for Sparkle.

00:04:29   But yeah, for the most part, you know,

00:04:30   after a couple of weeks I had this thing all set up

00:04:33   and it, obviously an experienced Mac developer

00:04:37   could have done it in way less time,

00:04:38   but I'm not an experienced Mac developer.

00:04:40   This was, you know, I've made a handful of Mac apps

00:04:44   over the years of attempted Mac apps,

00:04:48   but none of them have ever actually gotten

00:04:49   to like releasable quality until now.

00:04:53   And I might argue it's not actually releasable quality yet,

00:04:56   but it's at least a lot closer.

00:04:59   So I released it anyway.

00:05:00   And it's a kind of a remarkable difference

00:05:04   between having something in an app store run by Apple,

00:05:07   whether it's iOS or Mac, having something in an app store

00:05:10   and having something that you're directly distributing

00:05:12   in so many ways in which, like ways it works better,

00:05:15   ways it's simpler, ways where you're not getting something

00:05:18   that the App Store gave you kind of for free,

00:05:20   or well, for 30%.

00:05:22   You know, so it's interesting kind of to see

00:05:25   the other side of the world here

00:05:27   and to see what it's like distributing software directly

00:05:30   in so many levels, and this is just the beginning.

00:05:33   I mean, this is still day three of an app

00:05:38   that I released for free that, you know,

00:05:40   so there's still a lot of missing here.

00:05:42   But I did issue one quick update to it. Then I released it and that was just amazing to

00:05:48   just build the release and run a shell command that uploaded it and updated the sparkle file.

00:05:56   And then it was just out. There was no app review. There was no delay. There was no processing

00:06:01   the build for hours. It was just done and out and customers could get it. And that's

00:06:06   a little bit scary in some ways. I'm a little afraid like, "Well, I better be really

00:06:11   careful like it'd be really easy to accidentally just release a bug that I

00:06:14   didn't test it for long enough but also it was very freeing in a number of ways

00:06:19   to be like if I do release a bug I don't have to wait a week to fix it so you

00:06:27   know it's this is the beginning of what's probably going to be a big

00:06:31   learning experience for me as I very slowly wade into other ideas for Mac

00:06:37   apps that I have which honestly probably won't include overcast but we'll see so

00:06:41   So coming to the Mac, what are the things that you found? I've toyed with making Mac

00:06:47   apps and I've done a few little things. Almost always I'd end up making essentially iOS

00:06:54   apps in the menu bar. Somehow that seems like a much more natural thing for me, like the

00:07:00   concept of not having a big window that you can resize and all these things that, coming

00:07:05   from iOS, we're just more complicated, but having something about the size of an iOS

00:07:12   app that pops up when you hit a menu bar, that sort of is terrible in some ways, but

00:07:17   that works for me.

00:07:18   Well, that's honestly roughly what Quitter is. That's basically what I made. What I

00:07:23   made is not that much. It's slightly more advanced than that in that it has a separate

00:07:27   window and a menu, but the window is only resizable in one dimension, and it's a table

00:07:32   view with a few rows in it. So I basically made an iOS-style app for the Mac.

00:07:38   Did you find that the things that you, the skills you have from iOS helped in terms of

00:07:46   was it a big learning process? Because admittedly I don't have much experience with AppKit.

00:07:51   I always hear of all the things that AppKit's so crazy and it's kind of wild and iOS is

00:07:58   AppKit with all the problems solved or whatever, and these things are very unsubstantiated,

00:08:02   but I was curious what you found. Was it nice? Was it familiar? Was it totally foreign?

00:08:10   So learning curve and familiarity-wise, I'll get to it in a second. First, my opinion of

00:08:16   the quality of AppKit, whether UIKit is AppKit with all the problems solved. I think UIKit

00:08:22   is very clearly done in part as a response to AppKit

00:08:27   from people who would use AppKit forever.

00:08:30   And this was kind of like their attempt

00:08:31   to solve all the problems of AppKit.

00:08:34   And I think UIKit did solve many obvious shortcomings

00:08:38   and it got rid of a lot of legacy stuff.

00:08:40   'Cause the thing is AppKit is really old.

00:08:42   And so you feel that in a lot of the things about it,

00:08:46   there's a lot of things in there that just feel like

00:08:49   dealing with a lot of legacy stuff

00:08:51   that you shouldn't have to deal with.

00:08:53   And so there is a lot of truth to the idea

00:08:56   that UIKit is like the better AppKit,

00:08:59   but also AppKit solves a bunch of problems

00:09:01   that UIKit doesn't have to solve

00:09:03   because the environments are so different.

00:09:05   So AppKit is, in many ways,

00:09:08   it is as complicated as it is for good reason.

00:09:11   But obviously in some ways, you can just feel the legacy

00:09:16   and you can see, and they do keep it moving, slowly,

00:09:20   but they do keep it moving like, you know,

00:09:22   like table views moved a few years ago

00:09:24   from being cell-based and cells are like,

00:09:28   they weren't quite views, it was kind of like a view,

00:09:31   but you couldn't do as much as you could

00:09:32   with like a proper NS or UI view.

00:09:34   And then in recent years, you can now do tables

00:09:37   with NS views as the rows and so stuff like that,

00:09:40   like they've updated it slowly over time,

00:09:43   but you know, you still do feel a lot of that legacy stuff.

00:09:45   But I think ultimately, what I've found so far with it,

00:09:48   And granted, I'm still in my very, very early days

00:09:52   of using AppKit, so huge warning there.

00:09:54   But what I found so far is it is not as scary

00:09:59   as I thought it was for the first few days of using it.

00:10:02   Like after the few days of like,

00:10:03   oh, everything's different and weird, I don't like this.

00:10:05   Once I got a little bit more comfortable with some of it,

00:10:09   I started to seeing, oh, I see why they do it that way.

00:10:12   Or that's actually really smart.

00:10:14   Or you know, I'm really getting a lot of functionality here

00:10:17   for free that I didn't need to code manually.

00:10:21   And simple things like responding to the system

00:10:23   standard keyboard commands and stuff like that.

00:10:26   You get a lot of that basically for free

00:10:28   if you do things in the templated expected way.

00:10:32   So there's all sorts of things that you have to consider

00:10:37   and be compatible with on the Mac

00:10:39   that you don't have to consider on iOS.

00:10:40   And the opposite is true also.

00:10:42   iOS has a whole bunch of stuff you have to think about

00:10:43   there too, but I think AppKit does so far from the,

00:10:48   admittedly, very little I've seen of it so far,

00:10:51   I think I can say that it's done the way it's done

00:10:54   for good reason.

00:10:55   And there might be better ways to do it if we rewrote it

00:10:58   from scratch today, but, well, they haven't,

00:11:00   so here we are.

00:11:02   - Yeah, and I think that's fair.

00:11:04   And it's interesting 'cause there is certainly,

00:11:06   as the business of making iOS apps becomes ever more

00:11:12   complicated. I'll, you know, inevitably what happens is I'll go to a conference and I'll

00:11:17   run into some of the people who have been making Mac apps for years and I'll talk to

00:11:21   them about their experiences there. And there is definitely a grass is greener problem in

00:11:25   terms of, but there's definitely a sense that there is a certain amount for certain types

00:11:29   of apps of a very different market for selling software on the Mac where most Mac apps seem

00:11:38   like their base price is maybe $9 or somewhere in that ballpark rather than 99 cents or free

00:11:46   in a purchase isn't the thing that tends to drive Mac apps. So there's certainly these things that

00:11:50   I keep in the back of my mind that like, huh, like maybe one day I should go and dive into that more

00:11:56   fully. But I keep, there's definitely a part of me that keeps waiting for the like this much sort

00:12:02   of like mythical, at some point iOS and Mac will merge and there will be like an easier

00:12:10   way for someone like myself, who is very comfortable on iOS, to make things on the Mac. And I have

00:12:16   no idea if that will ever actually happen, but it is very interesting in so far as having

00:12:21   like, it's like learning a new platform that isn't that new. You know, it's like I could

00:12:25   make Android apps, and I have tried that. But it's much more difficult for me to wrap

00:12:30   wrap my head around because it's a totally new paradigm

00:12:34   and a totally new language,

00:12:35   rather than starting with something that at least,

00:12:38   like the code is still Objective-C,

00:12:40   - Or Swift. - And foundation

00:12:41   is still foundation, or Swift, well.

00:12:43   - Not for us, but yeah.

00:12:44   - Did you write Quitter and Swift?

00:12:46   - I have a surprise for you, David.

00:12:48   No, of course not. - No, no, of course not.

00:12:50   - No, I wanted to get it done very quickly.

00:12:52   (laughing)

00:12:53   'Cause this is the kind of thing,

00:12:54   like whenever I mention the idea of this app

00:12:56   to other people, everyone hated it.

00:12:59   everyone's like, why would I want my Twitter app

00:13:02   to just disappear while I'm using it?

00:13:05   Nobody liked the idea of this app.

00:13:06   I got the impression from talking to people beforehand

00:13:09   that I would probably be the only person ever to use it.

00:13:12   So spending any effort on it,

00:13:14   especially, and because I released it for free,

00:13:17   spending any effort on it does not seem like

00:13:19   a very good use of my time.

00:13:22   So I basically wanted to spend the minimum amount of effort

00:13:24   to just get this app to a workable, presentable state,

00:13:29   And there's so many possible features

00:13:31   that I could add to it that I'm just like,

00:13:33   nope, nope, nope, like I'll,

00:13:34   if there turns out to be tons of demand, maybe version two.

00:13:36   But version one has to be really basic

00:13:38   because I have to get back to everything else

00:13:40   I have to work on.

00:13:42   So I didn't want to do it in Swift

00:13:45   purely because I knew that would make it take a lot longer

00:13:48   and it just wasn't, it didn't seem worth it.

00:13:51   Plus, I was already learning AppKit

00:13:54   and it's like, let me learn one massive shift at a time,

00:13:57   Maybe, so like, let me figure out AppKit a little bit

00:14:00   in the language I'm already familiar with.

00:14:02   And then, you know, my first Swift experiments

00:14:05   will probably be iOS apps, because I'm way more familiar

00:14:08   with the frameworks there, so I can focus more

00:14:09   on learning the language.

00:14:11   So I don't know if that makes sense or not,

00:14:12   but that's just how I usually tend to do things.

00:14:14   - I think it makes sense.

00:14:15   I mean, as someone who has made a lot of little apps,

00:14:19   - Yeah.

00:14:19   - That makes perfect sense to me.

00:14:21   That is exactly, in many ways, why I continue to make,

00:14:25   Like, in some ways you could say it's a bit foolish that, so, since Swift was introduced,

00:14:31   like Swift 1 was introduced, I've launched at least three new apps.

00:14:39   Like whole cloth, like, go into Xcode, file new project, like, apps.

00:14:44   And in some ways you could say it's a bit foolish that none of those have been written

00:14:47   in Swift because it's probably easier to in some ways start from scratch with something

00:14:53   rather than like having, inserting Swift

00:14:55   into an existing project.

00:14:57   - Sure.

00:14:58   - And, but it's always, there's this big hump

00:15:01   that I have to overcome of, I can do this,

00:15:03   like at some point I'm gonna have to bite the bullet,

00:15:05   and who knows, maybe this summer will, you know,

00:15:06   like my, some of the app, inevitably I'm gonna make an app

00:15:09   this summer with something new in iOS 10.

00:15:11   - Breaking news.

00:15:12   - Breaking news, yeah.

00:15:14   Inevitably it's gonna happen,

00:15:15   and maybe this will be the year that I do that,

00:15:17   but where I just like, okay, I need to bite the bullet,

00:15:20   I just need to get over this hump and learn Swift, and the best way to do that is to actually

00:15:25   build something with it. But it's always so hard when you're looking at these kind of

00:15:29   side project things, and it's like, or I could just bang this out in a predictable, reliable

00:15:35   amount of time. I can, you know, and honestly, in some ways, that's the biggest thing that

00:15:40   I worry about when I think of something like Swift, is I can't estimate how long it'll

00:15:44   take to build, whereas with an iOS app, I know how long it takes for me to do something,

00:15:49   So when I'm trying to decide, is it worth my time,

00:15:52   is it worthwhile, I can say, yeah, I know,

00:15:55   there'll be a week or two, there'll be three weeks,

00:15:57   there'll be about a month, because I've done it

00:15:59   so many times, but who knows?

00:16:02   - I mean, eventually we will have to bite the bullet,

00:16:03   and I think for me that time will probably be this summer,

00:16:06   where I finally have to start using Zwift,

00:16:09   because the longer we wait, it really is a form

00:16:12   of technical debt, that we are kind of intentionally

00:16:16   not using this language that is obviously the future

00:16:19   of a platform we work on, and the present, honestly,

00:16:22   of the platform we work on,

00:16:24   we really should be migrating to Swift now,

00:16:27   and the longer we wait to do that,

00:16:30   to migrate both our skills and our ongoing code bases,

00:16:33   the more pain we're gonna have down the road

00:16:35   when there's some stronger motivating reason

00:16:38   why we have to do that.

00:16:39   So this is obviously something that we should do soon.

00:16:43   - Hey, maybe that's what we'll do this summer.

00:16:46   via an interesting and terrifying experience

00:16:50   for us both, I'm sure.

00:16:51   - Exactly.

00:16:52   This episode of Under the Radar

00:16:53   is brought to you by Hover.

00:16:55   Quite simply, Hover is the best way

00:16:57   to buy and manage domain names.

00:16:58   When you have an idea for a project,

00:17:00   naming it can be difficult.

00:17:01   Now with Hover, you can search,

00:17:03   you can get lots of keywords,

00:17:04   you can figure out what domains are available

00:17:06   through all the different domain extensions.

00:17:08   Once you finally get that name,

00:17:09   you'll be able to quickly and easily

00:17:11   buy the domains that you need.

00:17:13   They have a simple, fast, and hassle-free method

00:17:15   buying domain names at Hover. You don't want to be faced with like a thousand screens,

00:17:19   a thousand add-ons, confusing add-ons with high prices, like do I need that or not? Or

00:17:24   things that seem really obvious like, do I want privacy? Well, yes, of course I want

00:17:28   privacy. Hover give you that stuff for free. They're really user friendly, very well designed,

00:17:34   it's really, really easy to use and they don't believe in heavy handed up selling or cross

00:17:37   selling or confusing packages that are just, you know, really overpriced to make you buy

00:17:41   things that you didn't really need, just kind of fool you into it. They don't believe in

00:17:44   and all that stuff.

00:17:45   Hover has great prices.

00:17:47   Now they have over 400 domain name extensions out there.

00:17:51   They also have fantastic customer support

00:17:53   if you ever need any help.

00:17:54   They have core, you can, you know,

00:17:55   of course you can email them and everything,

00:17:57   but they also have phone support.

00:17:59   And if you call them up, they have a policy of no hold,

00:18:02   no wait, and no transfer, which means you call them

00:18:05   and a human being picks up the phone immediately,

00:18:08   no menus, nothing, and they don't have to transfer you

00:18:10   to five different departments to help you.

00:18:11   The person who picks up, they can help you.

00:18:14   It's really quite amazing.

00:18:15   And of course, you know, email if you want it

00:18:17   and everything else.

00:18:17   They have so much more great stuff.

00:18:18   They have volume discounts, they have custom email addresses,

00:18:21   storage and forwarding, so much more.

00:18:24   They even have a new feature called Hover Connect,

00:18:26   which makes it easy to get your new domain name connected

00:18:28   with popular hosting services and other things

00:18:30   you might need if you're buying a domain name.

00:18:32   Things like Squarespace, Tumblr, Shopify, many more.

00:18:34   They have automatic configuration for all these things.

00:18:37   And of course, if you need any help, use that support.

00:18:39   It's amazing.

00:18:39   So go right now to hover.com and try them out.

00:18:41   Use coupon code this week.

00:18:43   WWDC at checkout to get 10% off your first purchase at hover.com and show your support

00:18:49   for Under the Radar and all of Relay FM. Thank you to Hover for sponsoring the show and all

00:18:53   of Relay FM.

00:18:54   So what I thought might be an interesting thing to dive into for the second half of

00:18:59   this episode is your experience building a Mac app reminded me of something that is a

00:19:05   pattern that I found that keeps cropping up in being an indie where being open to doing

00:19:13   doing little side projects and gradually extending out my skill set has come back to reinforce

00:19:22   itself and pay for itself so often that now it is something that when I see an opportunity

00:19:27   to do something new and interesting, more often than not I will say yes to it and justify

00:19:33   the time for it because it just sort of keeps happening that by being an independent, by

00:19:38   by definition in some ways,

00:19:40   we have to be a Jack or Jill of all trades.

00:19:42   We have to be able to do so many things

00:19:46   because we're just one person or two people,

00:19:49   and so we have to be able to do all these things

00:19:51   that a lot of, if you work in a bigger company,

00:19:53   that other people would be able to do for you,

00:19:54   or you'd be able to outsource or contract for,

00:19:57   and being independent, you tend to do these things yourself.

00:20:01   And so I think about things like,

00:20:02   probably about a year ago,

00:20:05   I did a series of YouTube videos

00:20:08   about how, at the time it was learning WatchKit,

00:20:12   and I did like a few YouTube videos.

00:20:13   It never really went anywhere,

00:20:14   like they didn't get too much traction or interest,

00:20:16   but I went through the process

00:20:18   of learning how to make a video.

00:20:21   And that turned out, then Apple introduced app previews,

00:20:26   and I was like, oh, great,

00:20:29   I actually know how to use Final Cut Pro.

00:20:31   I'd learned it from this project that never went anywhere,

00:20:34   but now I found this thing that was more core to my business

00:20:36   that I needed to know how to do,

00:20:38   and I could now edit video at least well enough

00:20:40   to make an app preview.

00:20:41   Or I started a podcast.

00:20:43   Back in the day it was developing perspective,

00:20:45   and for years and years it never really went anywhere,

00:20:48   but I developed this discipline and this habit

00:20:51   of thinking through my ideas,

00:20:53   which helped me have better ideas,

00:20:55   and then also introduced me to a lot of new people.

00:20:58   And it's helped give me an audience to do things with.

00:21:01   And it's something that I just wanted to explore

00:21:05   a little bit, because I feel like in many ways

00:21:07   an important thing for being, if you want to be an independent businessman, that you

00:21:11   have to be multidimensional. Like, you have to keep adding these little skills to your

00:21:16   skill set. And one of the best ways to do that, in my experience, is these little side

00:21:19   projects. And so, like, now, you know how to make, or at least you've gone through

00:21:23   the process of actually releasing a Mac app. And so if you ever want to release another

00:21:27   Mac app, you have that skill. Or even more importantly, if you consider making a Mac

00:21:33   for say, for Overcast, like your main product.

00:21:35   You can look at it and say,

00:21:37   I actually kind of have a sense of what that would be like,

00:21:39   and whether that would be a good idea,

00:21:41   and you're not just guessing.

00:21:43   - That's the big thing is like,

00:21:44   you know, like as you mentioned,

00:21:45   like you were hesitant about Swift

00:21:46   'cause you don't know how to estimate it.

00:21:48   Now I know to some degree, not a huge degree,

00:21:51   'cause you know, like porting Overcast would be

00:21:54   very little low-end work,

00:21:56   and a whole bunch of interface work.

00:21:58   You know, and that's,

00:21:59   and dealing with UI kits, various interface,

00:22:03   I mean dealing with AppKits, various interface complexity

00:22:06   is the area in which I have the least experience on AppKit

00:22:09   because Quitter is one screen

00:22:10   and it's a really simple screen.

00:22:12   So dealing with things like complex table view layouts

00:22:16   and resizing and all this stuff,

00:22:18   there's a lot that I haven't tackled yet

00:22:20   that I'm not familiar with yet.

00:22:21   So it would still be tricky for me to figure out

00:22:24   how to do that and also just a podcast app is a lot of UI.

00:22:28   It's a lot of screens.

00:22:30   It's a lot of widgets and buttons and gestures

00:22:33   and there's a lot there.

00:22:35   So the scope of that problem would be very large.

00:22:38   And I think one of the main reasons why I'm not rushing

00:22:42   to make overcast for the Mac is, you know, you mentioned,

00:22:47   before the break, you mentioned how you've been tempted

00:22:50   to try the Mac for things like the different business models

00:22:53   that are possible or the different customer pricing

00:22:55   expectations that are there.

00:22:56   And those are very valid, but I think the best justification

00:22:59   to whether you should make a Mac app

00:23:02   or whether you shouldn't make a Mac app for something,

00:23:04   is where are the customers for that app?

00:23:07   And for Overcast, I have Overcast on the web,

00:23:11   I have Overcast on the iPhone,

00:23:13   and I have Overcast on the iPad.

00:23:15   The iPad version was mostly a waste of time,

00:23:19   and all the work that I put into it was mostly a waste,

00:23:23   because among my active users,

00:23:25   I'm running something like 96% iPhone and 2% iPod Touch,

00:23:31   So it's like two or three percent iPad use

00:23:34   among active users.

00:23:36   And the app had to take on a lot of complexity

00:23:39   with things like the adaptive split view

00:23:40   for adaptive layout, and now the new iPad resizing

00:23:43   with multitasking, which kind of uses that.

00:23:45   And there's so many weird little hacks in the app

00:23:48   and complexity in the UI structure

00:23:51   in order to enable iPad universal support.

00:23:53   And I did all that for three percent of users.

00:23:58   And that 3% might have been okay

00:24:01   if it was just a blown up iPhone app

00:24:02   on the few times I had to use it on the iPad.

00:24:04   I don't know.

00:24:05   I guess I have no way of knowing that.

00:24:07   But all the effort I put into the iPad port

00:24:11   probably was not worth it in the grand scheme of things.

00:24:14   And I'm not gonna take it out now

00:24:15   'cause it's there now,

00:24:17   but if I could go back and spend that time

00:24:20   on features that would benefit all the iPhone users,

00:24:23   also I think that would be time better spent.

00:24:26   With the Mac app, I'm not rushing to make a Mac app

00:24:29   for Overcast primarily because I don't think

00:24:31   it would do much better than the iPad app.

00:24:33   I think there are some people asking for it, no question.

00:24:35   Some people want a Mac app.

00:24:37   First and foremost though, I don't.

00:24:39   I would never use it because I don't listen to podcasts

00:24:41   while I'm working and that's the thing like,

00:24:43   people would say either you do or you don't

00:24:44   and I'm not one of those people so I don't even know

00:24:46   what a Mac app would really be like to be good

00:24:49   and I wouldn't be motivated to make it for myself

00:24:52   so that's gonna hurt the chance of it being made.

00:24:53   But also, I just think that there aren't that many people

00:24:56   looking for a podcast app on the Mac.

00:24:59   It's a way smaller market than the iPhone,

00:25:02   and so for the amount of effort it would take,

00:25:04   which is a non-trivial, like a large amount of effort

00:25:08   to build enough UI to make it useful,

00:25:10   I don't think that's, it's unlikely, I think,

00:25:13   to be worthwhile in the long run.

00:25:15   Whereas like, Quitter solves a problem.

00:25:18   It took very little effort,

00:25:19   and it solves a big problem that I was having,

00:25:21   and it's already paid for itself in efficiency gains for me,

00:25:25   So that makes sense.

00:25:27   Something else I was thinking about doing

00:25:29   is utilities for podcast production,

00:25:31   which I have tons of shell scripts

00:25:33   and little hacky apps that I use to help me produce podcasts,

00:25:37   help me edit and publish them,

00:25:38   and the obvious next step is to make those for the Mac.

00:25:42   And I've also had this lofty goal in my head,

00:25:45   maybe someday it would be cool to make a podcast editor

00:25:48   to replace Logic, and I thought for a while,

00:25:51   maybe I should do that on the iPad,

00:25:52   because it would be a great use of the iPad Pro.

00:25:54   You have this nice big screen,

00:25:55   You have the pencil for precision editing and everything.

00:25:57   It sounds like a great use for the iPad Pro,

00:25:59   but where are people actually editing podcasts?

00:26:01   And my entire workflow is in the Mac,

00:26:05   and if I made this tool for the iPad,

00:26:07   it would be great, I could do it really quickly

00:26:09   'cause I'm more familiar with UIKit,

00:26:11   but it would also be the entire ecosystem

00:26:15   around the editing of the podcast.

00:26:16   Everything else I use and that everyone else I know uses

00:26:20   to edit podcasts, it's all these Mac utilities

00:26:23   and Mac needs, you know?

00:26:25   So like, it seemed like that would be a waste

00:26:27   to make that for iPad when most of the action

00:26:31   in that space really happens on the Mac.

00:26:33   So it's kinda like, you have to like kinda go

00:26:34   to where the people are for that thing, for the most part.

00:26:37   And there's, you know, consideration for things

00:26:39   like level of competition and everything

00:26:41   that might sway you one direction or the other,

00:26:42   but like, it should be clear from the kind of app

00:26:45   you're making which platform is the more likely platform

00:26:49   for success.

00:26:50   And I think things like podcast production utilities,

00:26:54   that's the Mac.

00:26:55   Things like consumption of media, that's iOS for sure.

00:27:00   And that's not to say that nobody works on iOS

00:27:03   or nobody consumes media on the Mac,

00:27:04   but it's a matter of what's way more popular

00:27:07   or easier to do on these platforms.

00:27:09   And so I think that is the more responsible way

00:27:12   to choose which platform you use.

00:27:13   It's just like, where's the audience for this really?

00:27:16   - Sure.

00:27:17   And I think it's also worth a sort of understanding too

00:27:21   that the thing that's also so difficult

00:27:23   about something like doing Quitter,

00:27:25   doing a side project on the Mac versus doing Overcast

00:27:30   is what's great, what works out to be a wonderful thing

00:27:34   is if your side projects are kind of low risk,

00:27:37   low commitment, that you can partition them off

00:27:40   from your main work because the difficulty

00:27:43   with something like Overcast, I imagine, in some ways

00:27:45   that the stakes are so high and people's expectations are so high versus a random app that if they've

00:27:52   quittered, no one had downloaded it. It's like that doesn't really impact you in a way

00:27:56   that if you launch on day one and you have, you know, like if your entire user base downloads

00:28:02   the Mac app and starts using it, that's a non-trivial number of people. And so it's

00:28:07   a dangerous thing for like an exploratory or side project or something you're new at

00:28:13   to just sort of take on versus something where, yeah,

00:28:17   like a podcast utility rather than a full-blown podcast editor,

00:28:21   it's like, sure, it's low commitment, low risk.

00:28:23   If it doesn't work out, it's not that big of a deal,

00:28:27   and you can hopefully just have learned from it.

00:28:28   And eventually, over time, building up the skills

00:28:32   from smaller things that are low risk, low commitment,

00:28:35   maybe something bigger makes sense.

00:28:38   But that is certainly something that I

00:28:40   know I've had to learn for myself,

00:28:41   of being able to think through the level of commitment

00:28:44   something is going to require beforehand,

00:28:48   rather than discovering at the end,

00:28:50   you look back and you're like, huh,

00:28:52   this is actually a lot more work

00:28:53   than I thought it was gonna be,

00:28:54   or requires a lot more maintenance or attention

00:28:57   than I thought it would be, and that's very problematic,

00:29:00   and sort of becomes not a helpful side project.

00:29:03   - Exactly.

00:29:04   All right, well, we're out of time this week.

00:29:06   I think there's lots of things here

00:29:07   we can talk about more, though,

00:29:08   so we probably will in future episodes.

00:29:10   So we're out of time this week.

00:29:11   you everybody for listening. Thanks to our sponsor Hover and we will see you

00:29:14   guys next week. Bye.