PodSearch

Under the Radar

Under the Radar 108: Punch-List Mode

 

00:00:00 ◼   ► welcome to under the radar show but

00:00:02 ◼   ► independent iOS app development I'm

00:00:04 ◼   ► Marco Arment and I'm David Smith under

00:00:06 ◼   ► the radar is never longer than 30

00:00:08 ◼   ► minutes so let's get started so today I

00:00:11 ◼   ► want to be a fun topic for us to talk

00:00:15 ◼   ► about finishing up a project or like

00:00:18 ◼   ► doing that last 1% that definitely

00:00:21 ◼   ► doesn't take 1% of the time you spend in

00:00:24 ◼   ► a project like the VB energy and the

00:00:27 ◼   ► effort and the willpower it takes to

00:00:29 ◼   ► just get over that last little bit is

00:00:31 ◼   ► definitely you know massively

00:00:33 ◼   ► disproportionate for launching a

00:00:35 ◼   ► software product and you get better at

00:00:38 ◼   ► it the more you do it which i think is

00:00:39 ◼   ► something hopefully that I can say that

00:00:41 ◼   ► is if I found my own experience and is

00:00:43 ◼   ► hopefully encouraging if this is if

00:00:45 ◼   ► you're coming to development you know

00:00:48 ◼   ► Furley you're fairly new to this that

00:00:50 ◼   ► it's totally normal for that fit that

00:00:52 ◼   ► last a little bit of a project where

00:00:54 ◼   ► it's like it's almost done but isn't

00:00:56 ◼   ► quite done isn't quite released to feel

00:00:59 ◼   ► like it takes forever and and part of it

00:01:01 ◼   ► I think in the weird way is it's like

00:01:02 ◼   ► the term software release is very aptly

00:01:06 ◼   ► named because software isn't so much

00:01:08 ◼   ► finished as it is like slowly tugged out

00:01:11 ◼   ► of our hand and eventually we just

00:01:12 ◼   ► release our grip and it flies out into

00:01:14 ◼   ► the world like it is never this thing

00:01:17 ◼   ► where at least I've never had the

00:01:18 ◼   ► experience where I feel like I have

00:01:20 ◼   ► created this perfectly formed this

00:01:24 ◼   ► perfectly formed thing that I am NOT

00:01:25 ◼   ► presenting out into the world it's like

00:01:27 ◼   ► at some point you just have to say this

00:01:29 ◼   ► is good enough I'm gonna put this out

00:01:31 ◼   ► and I will fix all the bugs or are the

00:01:34 ◼   ► issues of the problems later and I think

00:01:36 ◼   ► we've talked many times in episodes

00:01:38 ◼   ► previous about the importance of getting

00:01:39 ◼   ► something out into the world because you

00:01:42 ◼   ► can get feedback you can validate your

00:01:43 ◼   ► the idea make sure that you're actually

00:01:45 ◼   ► building something people want or not

00:01:47 ◼   ► missing like whole aspects of the sort

00:01:51 ◼   ► of the problem domain that you're trying

00:01:52 ◼   ► to solve that you're just unaware of

00:01:54 ◼   ► because you're stuck in your own little

00:01:55 ◼   ► world but I do but more importantly I

00:01:58 ◼   ► think whatever Suvi interesting to focus

00:01:59 ◼   ► on for today is some of the little

00:02:01 ◼   ► aspects of doing that of the thing that

00:02:03 ◼   ► you have to do in that last that last 1%

00:02:06 ◼   ► and the first thing that I think is

00:02:08 ◼   ► worth talking about is deadlines this is

00:02:12 ◼   ► especially complicated

00:02:13 ◼   ► being if you're doing this project by

00:02:16 ◼   ► yourself or we just know one or two

00:02:17 ◼   ► other people and this isn't something

00:02:20 ◼   ► where you have an externally imposed

00:02:21 ◼   ► deadline it's not that you're doing

00:02:24 ◼   ► consulting for a client and the client

00:02:26 ◼   ► has said you know by the state you need

00:02:28 ◼   ► to have done this or you know you won't

00:02:31 ◼   ► get paid or you'll have there'll be some

00:02:32 ◼   ► kind of penalty like there's if there's

00:02:34 ◼   ► an external deadline you that sort of

00:02:36 ◼   ► takes care of itself but if you don't

00:02:38 ◼   ► have one of those and I'm but I found

00:02:41 ◼   ► for myself is that if I don't have some

00:02:45 ◼   ► kind of deadline in mind and maybe it's

00:02:47 ◼   ► slightly squishy but it shouldn't be so

00:02:49 ◼   ► squishy that it's not a deadline like it

00:02:51 ◼   ► still should have some some weight

00:02:52 ◼   ► behind it I find it very hard to really

00:02:56 ◼   ► get there because there is something I

00:02:58 ◼   ► think it's Parkinson's law it's one of

00:03:01 ◼   ► those like management laws where it's

00:03:03 ◼   ► like work will expand to fill the time

00:03:05 ◼   ► allotted to it basically so if you give

00:03:08 ◼   ► yourself another month you will find a

00:03:11 ◼   ► month's worth of work to fill that with

00:03:12 ◼   ► and if you give yourself another two

00:03:13 ◼   ► months you will it'll fill indefinitely

00:03:15 ◼   ► if you don't have a deadline like you

00:03:16 ◼   ► would just keep filling with work

00:03:17 ◼   ► forever it's this never-ending like

00:03:20 ◼   ► inflating balloon and so you have to at

00:03:23 ◼   ► some point put a line on it and say you

00:03:24 ◼   ► know I'm gonna get it done by here

00:03:27 ◼   ► something that I found really helpful

00:03:29 ◼   ► with this is to start to try and talk to

00:03:34 ◼   ► other outside people about your launch

00:03:37 ◼   ► so whether this be someone in the press

00:03:39 ◼   ► with friends whoever it is and like

00:03:40 ◼   ► start talking around a date like I have

00:03:44 ◼   ► December 12th as the date that I'm gonna

00:03:46 ◼   ► launch workouts plus plus 2.0 like

00:03:48 ◼   ► that's something that I've started to

00:03:50 ◼   ► you know sort of socialize and talk to

00:03:51 ◼   ► talk about to different people and now

00:03:54 ◼   ► that that's a thing in the world like it

00:03:57 ◼   ► changes it from this vague amorphous

00:03:58 ◼   ► thing to something that I have this like

00:04:00 ◼   ► personal ownership of making happen and

00:04:03 ◼   ► if I didn't have that I feel like I

00:04:05 ◼   ► would just keep working on this app

00:04:06 ◼   ► forever which is not good for anybody

00:04:08 ◼   ► it's far better to draw a line you know

00:04:11 ◼   ► to cut what I need to cut narrow it down

00:04:13 ◼   ► so that I can get it to get it out there

00:04:15 ◼   ► and then start you know iterating on the

00:04:18 ◼   ► version that's out in the world rather

00:04:19 ◼   ► just getting stuck with it without a

00:04:21 ◼   ► deadline without it without any sense of

00:04:23 ◼   ► you know end in mind

00:04:25 ◼   ► yeah I mean I have found that most of my

00:04:28 ◼   ► releases have basically been I have

00:04:31 ◼   ► basically been working you know all

00:04:34 ◼   ► month or a year or six months or

00:04:37 ◼   ► whatever working for a very long span on

00:04:39 ◼   ► a kind of unending list of features that

00:04:44 ◼   ► that like everything is like oh I it

00:04:47 ◼   ► would be nice if I had time I can do

00:04:49 ◼   ► this and very few the features are

00:04:51 ◼   ► actually required and so the amount of

00:04:54 ◼   ► time that I'm working on these releases

00:04:56 ◼   ► is pretty open-ended and without any

00:04:59 ◼   ► kind of external deadline imposing on me

00:05:02 ◼   ► like the release of a new version of iOS

00:05:03 ◼   ► or a new Apple hardware or something

00:05:05 ◼   ► like that they would just go on forever

00:05:07 ◼   ► and usually when I do finally release

00:05:10 ◼   ► something it is planned almost no time

00:05:13 ◼   ► in advance and it's one day I just kind

00:05:16 ◼   ► of I'm like you know what I'm just I'm

00:05:17 ◼   ► done I just want this to be out there

00:05:19 ◼   ► I'm I'm tired of it not being released

00:05:22 ◼   ► so I'm just going to recently tomorrow

00:05:24 ◼   ► or something like that like you know

00:05:26 ◼   ► just a kind of arbitrary decision of

00:05:28 ◼   ► okay I just need to get this out there

00:05:30 ◼   ► you know enough is enough

00:05:31 ◼   ► but but a lot of times that you know it

00:05:33 ◼   ► takes me a long time to get to do you

00:05:36 ◼   ► think that kind of slightly

00:05:38 ◼   ► arbitrariness to it works in your favor

00:05:41 ◼   ► or is it like a problematic like it

00:05:44 ◼   ► seems like it could go both ways that in

00:05:46 ◼   ► some in some ways it's helpful because

00:05:48 ◼   ► you're not creating this sort of any

00:05:50 ◼   ► internal stress that about something

00:05:53 ◼   ► you're just kind of working working and

00:05:54 ◼   ► at some point you're just like you know

00:05:55 ◼   ► this is good and just ship it like is

00:05:57 ◼   ► that do you find that to be helpful or

00:06:00 ◼   ► is that problematic it's one of the many

00:06:03 ◼   ► ways that I think and work that are

00:06:07 ◼   ► probably not ideal but that also I

00:06:10 ◼   ► probably will never change about myself

00:06:12 ◼   ► so I just have to basically you know

00:06:14 ◼   ► take the good in the bad that comes with

00:06:16 ◼   ► it I think that there's a lot of things

00:06:18 ◼   ► that are bad about this this kind of

00:06:20 ◼   ► capricious or rash decision making

00:06:23 ◼   ► sometimes it's not a good time to

00:06:25 ◼   ► release that thing it turns out which I

00:06:26 ◼   ► find out later or sometimes you know it

00:06:29 ◼   ► would have benefited from a stronger and

00:06:32 ◼   ► more considered marketing push maybe but

00:06:35 ◼   ► the reality is that I also then

00:06:38 ◼   ► I'm rarely in the position where I have

00:06:41 ◼   ► to wait forever I'm rarely in the

00:06:43 ◼   ► position of designing myself into such a

00:06:46 ◼   ► corner or having such a huge list of

00:06:48 ◼   ► what needs to be done by before the

00:06:50 ◼   ► release that it never comes out like no

00:06:53 ◼   ► one's ever waiting years for an overcast

00:06:55 ◼   ► update though the way I work

00:06:57 ◼   ► ensures that something will get released

00:07:00 ◼   ► on a fairly regular interval and I will

00:07:03 ◼   ► never know until it's actually released

00:07:05 ◼   ► what features you know will end up

00:07:07 ◼   ► making it before that before that

00:07:09 ◼   ► deadline comes or not the be

00:07:10 ◼   ► self-imposed arbitrary you know deadline

00:07:12 ◼   ► that was declared in two days ago yeah

00:07:14 ◼   ► because I think that I was I think it I

00:07:17 ◼   ► find that I need something a bit more

00:07:19 ◼   ► than that there's certainly small like

00:07:21 ◼   ► small feature updates or bug fixes and

00:07:22 ◼   ► stuff for yeah it's not there's not a

00:07:25 ◼   ► sense of kind of planned fulness with it

00:07:27 ◼   ► but I think the something that I would

00:07:29 ◼   ► struggle with with your approach is the

00:07:31 ◼   ► sense of like I find my apps whenever

00:07:36 ◼   ► like when I start to work on anything

00:07:37 ◼   ► big the overall quality of the app from

00:07:40 ◼   ► a stability or a bugginess perspective

00:07:43 ◼   ► like drops somewhat precipitously and

00:07:46 ◼   ► then it'll gradually work its way back

00:07:49 ◼   ► up to good again you know over the over

00:07:52 ◼   ► the course of time and I feel like I for

00:07:55 ◼   ► me anyway I find it's important to have

00:07:56 ◼   ► something in mind that I know like how

00:07:59 ◼   ► much time do I have to keep breaking

00:08:02 ◼   ► things before I have to switch things

00:08:05 ◼   ► around to just fixing things and it

00:08:08 ◼   ► might just be the way that I develop

00:08:09 ◼   ► that like I tend to you know break but I

00:08:12 ◼   ► tend to sort of take everything apart

00:08:14 ◼   ► and then put it back together again

00:08:16 ◼   ► rather than be fixing things it's in a

00:08:18 ◼   ► way that is probably a bit more elegant

00:08:22 ◼   ► or straightforward where you know if

00:08:24 ◼   ► something isn't done it could just be

00:08:26 ◼   ► left out or I'd know at any point you

00:08:29 ◼   ► know I know you this happens all you

00:08:31 ◼   ► hear about this a lot with web

00:08:33 ◼   ► development type of things where you

00:08:34 ◼   ► know sort of everything that's in your

00:08:36 ◼   ► master branch is always ready for

00:08:38 ◼   ► production and nothing that touches that

00:08:40 ◼   ► is you know should ever not be be ready

00:08:42 ◼   ► for that which is like the opposite of

00:08:44 ◼   ► what I do I just have you know a things

00:08:46 ◼   ► go go go from great horribly broken back

00:08:49 ◼   ► to great back to horribly broke

00:08:51 ◼   ► for me and so I need that some sense of

00:08:54 ◼   ► the some sense of end point that I'm

00:08:57 ◼   ► aiming at in order to get things turned

00:08:59 ◼   ► around and fixed otherwise I'd find

00:09:02 ◼   ► myself in a lot of problem if I was like

00:09:03 ◼   ► you need to release this in two days

00:09:05 ◼   ► it's like I know I needed like a week to

00:09:07 ◼   ► put it all back together again

00:09:09 ◼   ► you know I've that's but that's should

00:09:10 ◼   ► provide just be the way that I work yeah

00:09:13 ◼   ► I do the exact same thing that but like

00:09:15 ◼   ► you know it basically like when I decide

00:09:18 ◼   ► enough is enough I need to release this

00:09:21 ◼   ► that just becomes my my number one to-do

00:09:24 ◼   ► item is just let's close all this back

00:09:25 ◼   ► up again let's fix what's broken I mean

00:09:27 ◼   ► you know if too much is broken and I

00:09:29 ◼   ► can't do that quickly then okay I won't

00:09:30 ◼   ► release it yet you know but usually the

00:09:33 ◼   ► things that I break horribly are the

00:09:35 ◼   ► first things that I fix in in the middle

00:09:37 ◼   ► you know it during a during a

00:09:39 ◼   ► development cycle for release and then

00:09:41 ◼   ► everything after that is either minor

00:09:43 ◼   ► polish items which are easy to basically

00:09:46 ◼   ► like knock them all out and clean it up

00:09:48 ◼   ► like in one or two days at the end once

00:09:49 ◼   ► you decide you're done or additional

00:09:52 ◼   ► features that aren't really necessary or

00:09:54 ◼   ► that are more self-contained so that

00:09:56 ◼   ► like if I have to disabled entire

00:09:58 ◼   ► feature for release and just ship it

00:09:59 ◼   ► later

00:10:00 ◼   ► you know I can do that fairly easily

00:10:02 ◼   ► with like you know pre process or macro

00:10:04 ◼   ► definitions are commenting out some

00:10:06 ◼   ► things or or things like that

00:10:07 ◼   ► but that it just doesn't usually come to

00:10:10 ◼   ► that for me for whatever reason usually

00:10:12 ◼   ► whatever I make I ship soon afterwards

00:10:17 ◼   ► because I've gotten pretty good at like

00:10:19 ◼   ► the mad rush at the end to just polish

00:10:21 ◼   ► all the rough edges and fix the

00:10:23 ◼   ► remaining bugs of what I have and then

00:10:24 ◼   ► just ship what I have but it's it's more

00:10:27 ◼   ► of a mode of a mode switch for me to

00:10:30 ◼   ► stop making new stuff at that point and

00:10:34 ◼   ► to just only focus on making what I have

00:10:37 ◼   ► releasable yeah and I think it sounds

00:10:40 ◼   ► like we there's this there's a

00:10:41 ◼   ► similarity that I have where as I'm

00:10:44 ◼   ► developing I tend to have like a very

00:10:48 ◼   ► high level sort of feature list of kind

00:10:50 ◼   ► of the things that I'm trying to

00:10:51 ◼   ► accomplish in an update or in a release

00:10:53 ◼   ► and then at a certain point I switch

00:10:59 ◼   ► from that kind of a sort of to-do list

00:11:02 ◼   ► to what I call kind of a punch

00:11:04 ◼   ► which i think is a like term from

00:11:06 ◼   ► construction yeah and they're like when

00:11:09 ◼   ► you're kind of finished finishing up a

00:11:11 ◼   ► house but you switch to this kind of

00:11:14 ◼   ► this different mode where the only

00:11:16 ◼   ► things that are on your list are things

00:11:19 ◼   ► that need to be fixed you're no longer

00:11:21 ◼   ► creating anything all you're doing is

00:11:24 ◼   ► fixing things that are broken and so it

00:11:27 ◼   ► changes the nature of it because that

00:11:30 ◼   ► list hopefully anyway should have bite

00:11:33 ◼   ► but my necessity will shrink to zero

00:11:36 ◼   ► over time whereas your feature list or

00:11:39 ◼   ► your idea list or your kind of you more

00:11:42 ◼   ► creative list can grow indefinitely and

00:11:45 ◼   ► probably should grow indefinitely in

00:11:47 ◼   ► some ways like it's great when you can

00:11:48 ◼   ► have come up with new ideas for your app

00:11:51 ◼   ► when you can come up with like you know

00:11:52 ◼   ► it's awesome that when you you start

00:11:54 ◼   ► using something for a while then you're

00:11:55 ◼   ► like hey what if it did this what if it

00:11:57 ◼   ► did that like those are awesome

00:11:58 ◼   ► but I have to force myself to start like

00:12:02 ◼   ► right now I have two lists in my search

00:12:05 ◼   ► to do list manager I have one for the

00:12:07 ◼   ► punch list for workouts plus plus 2.0

00:12:09 ◼   ► and then I have the like everything else

00:12:11 ◼   ► list and any any idea or feature

00:12:15 ◼   ► anything that I have that's an idea for

00:12:17 ◼   ► work as opposed to us at this point

00:12:19 ◼   ► that isn't fictive ly fixing a problem

00:12:21 ◼   ► in the app right now goes on to the

00:12:23 ◼   ► second list and won't be looked at until

00:12:25 ◼   ► I get this release out the only thing

00:12:27 ◼   ► that's on my list now is B all these

00:12:30 ◼   ► sort of broken items anything that needs

00:12:31 ◼   ► to be dealt with and you tend to get

00:12:35 ◼   ► into a nice sort of cycle with those

00:12:37 ◼   ► where I'll sit down I'll try and knock

00:12:39 ◼   ► out you know three or four of those I'll

00:12:41 ◼   ► do it's just sort of do a either an

00:12:44 ◼   ► internal beta or you know maybe send it

00:12:47 ◼   ► out to a few people go through the app

00:12:49 ◼   ► see if anything's broken and repeat and

00:12:51 ◼   ► it tends to in a good way

00:12:54 ◼   ► sort of narrow in nicely where you know

00:12:57 ◼   ► you may be the first when I first

00:12:59 ◼   ► started when I first switch over from

00:13:00 ◼   ► feature to punch list maybe you know

00:13:03 ◼   ► have 40 items on my punch list like lots

00:13:06 ◼   ► of things were broken and then you know

00:13:08 ◼   ► you sort of do do a cycle through now

00:13:11 ◼   ► there's 20 things and now there's ten

00:13:13 ◼   ► things now there's five things

00:13:15 ◼   ► now there's three things I'm just going

00:13:16 ◼   ► to have to live

00:13:17 ◼   ► those in a ship like that pattern seems

00:13:20 ◼   ► to work pretty well for me and it's an

00:13:23 ◼   ► important I think more importantly

00:13:24 ◼   ► rather than like how you do that because

00:13:26 ◼   ► having that mindset switch where at the

00:13:28 ◼   ► end you have to have the discipline to

00:13:31 ◼   ► say I'm not gonna add any more features

00:13:33 ◼   ► at this point like it it's now it's just

00:13:36 ◼   ► fixing stuff because if you don't draw

00:13:38 ◼   ► that line at some point like it just

00:13:40 ◼   ► sort of it just expands forever but if

00:13:43 ◼   ► you but it having that mindset switch to

00:13:45 ◼   ► is this broke is it broken or is it if

00:13:47 ◼   ► is it an enhancement and if it's an

00:13:48 ◼   ► enhancement it goes in the next bucket

00:13:50 ◼   ► and it's important I think to have that

00:13:52 ◼   ► other bucket like I would drive myself

00:13:54 ◼   ► crazy if I didn't have a place that I

00:13:56 ◼   ► knew I was going to look at that idea in

00:13:58 ◼   ► the future because I want to build that

00:14:02 ◼   ► I want to do that but it's like I need

00:14:04 ◼   ► to have a place to say you will look at

00:14:06 ◼   ► that you know whatever in my case like

00:14:08 ◼   ► on December 13th you may can look at

00:14:10 ◼   ► that feature you can look at that idea

00:14:13 ◼   ► and work out if it's a good idea but for

00:14:14 ◼   ► right now if it isn't broken then it's

00:14:18 ◼   ► not gonna get fixed

00:14:19 ◼   ► speaking of knowing when things were

00:14:20 ◼   ► broken our sponsor this week is Kingdom

00:14:23 ◼   ► you can monitor your web sites and

00:14:25 ◼   ► servers start today at Pingdom comm

00:14:27 ◼   ► slash relay FM you'll get a 14-day free

00:14:30 ◼   ► trial when you enter offer code radar at

00:14:33 ◼   ► checkout you get 30% off your first

00:14:35 ◼   ► invoice Pingdom is focused on making the

00:14:37 ◼   ► web faster and more reliable for

00:14:38 ◼   ► everybody by offering powerful and easy

00:14:41 ◼   ► to use monitoring tools and services for

00:14:43 ◼   ► example you can monitor the availability

00:14:45 ◼   ► of performance of your server database

00:14:47 ◼   ► or website by using more than 70 global

00:14:50 ◼   ► test servers that emulate visits to your

00:14:51 ◼   ► site checking its availability as often

00:14:53 ◼   ► as once every minute websites are so

00:14:55 ◼   ► sophisticated and potentially

00:14:58 ◼   ► complicated these days and very often

00:15:00 ◼   ► includes several different dependencies

00:15:01 ◼   ► or just contact forms ecommerce

00:15:03 ◼   ► checkouts login search so much more and

00:15:05 ◼   ► Pingdom makes it possible to monitor the

00:15:07 ◼   ► availability and performance of all

00:15:09 ◼   ► these key interactions people have with

00:15:11 ◼   ► your site because stuff breaks on the

00:15:13 ◼   ► internet all the time every month they

00:15:15 ◼   ► detect 13 million outages at Pingdom

00:15:17 ◼   ► that is more than 400,000 outages a day

00:15:19 ◼   ► so whether you have a small site or

00:15:21 ◼   ► you're managing a pleat infrastructure

00:15:23 ◼   ► it is very important to monitor its

00:15:25 ◼   ► availability and performance and Pingdom

00:15:27 ◼   ► is great I have used Pingdom since long

00:15:30 ◼   ► for they were a sponsor I used them all

00:15:31 ◼   ► the way back at tumblr and I when I

00:15:34 ◼   ► assumed they said up instapaper I said

00:15:36 ◼   ► at Pingdom immediately that I went soon

00:15:38 ◼   ► as I said up over catch I said it

00:15:39 ◼   ► Pingdom there it is wonderful I've used

00:15:42 ◼   ► it all this time because it is great I

00:15:44 ◼   ► love knowing when stuff is slowing down

00:15:47 ◼   ► or broken or down it is very very useful

00:15:50 ◼   ► to know because you want to know before

00:15:52 ◼   ► all your customers or your audience

00:15:54 ◼   ► finds out you want to know that first

00:15:56 ◼   ► you can go fix it before too many people

00:15:57 ◼   ► see it so all you do is give Pingdom a

00:15:59 ◼   ► URL and monitor if you want any kind of

00:16:01 ◼   ► custom conditions or login you can do

00:16:03 ◼   ► that too but you don't need to they take

00:16:05 ◼   ► care of the rest you are immediately

00:16:07 ◼   ► notified whatever means you want SMS

00:16:09 ◼   ► push notification email and you can fix

00:16:12 ◼   ► the error before too many people see it

00:16:14 ◼   ► check about today Pingdom comm relay FM

00:16:17 ◼   ► for a 14-day free trial and use a code

00:16:20 ◼   ► radar at checkout to get 30% off your

00:16:22 ◼   ► first invoice thank you to Pingdom for

00:16:24 ◼   ► supporting this show and relay FM so as

00:16:27 ◼   ► you're recording you just released

00:16:30 ◼   ► forecast your mp3 encoder metadata

00:16:34 ◼   ► manager chapter maker tool to the world

00:16:38 ◼   ► finally and I know this has been a long

00:16:41 ◼   ► time coming I don't know exactly when

00:16:43 ◼   ► you started working on this tool but it

00:16:44 ◼   ► seems like it was forever ago and I was

00:16:47 ◼   ► curious if you had any thoughts about

00:16:49 ◼   ► what got you through that last 1% to

00:16:52 ◼   ► finally actually ship it put it out in

00:16:55 ◼   ► the world and you know sort of start

00:16:57 ◼   ► that next phase of its life stick

00:16:58 ◼   ► lifespan I wanted to release forecast

00:17:02 ◼   ► for a while and I had waited in part for

00:17:06 ◼   ► the mp3 patents to expire the last of

00:17:09 ◼   ► which expired this past spring so I

00:17:11 ◼   ► could have released it really any time

00:17:12 ◼   ► after that safely and I intended to but

00:17:16 ◼   ► then basically throughout the summer and

00:17:20 ◼   ► fall over cash was basically on fire

00:17:23 ◼   ► you know between iOS 11 and drag and

00:17:27 ◼   ► drop and then the iPhone 10 overcast has

00:17:31 ◼   ► been consuming almost all of my

00:17:34 ◼   ► development time I have I have touched

00:17:36 ◼   ► forecast very little in the last year

00:17:37 ◼   ► just because overcast just was was

00:17:40 ◼   ► needier than I expected

00:17:42 ◼   ► and so what finally pushed me to release

00:17:45 ◼   ► this I mean I've been using this you

00:17:47 ◼   ► know both myself and in in a small

00:17:49 ◼   ► private beta with some of our friends

00:17:50 ◼   ► who are also podcasters for like two

00:17:52 ◼   ► years and and so I knew like the the

00:17:56 ◼   ► functionality of it worked the app still

00:17:58 ◼   ► had a rough edge you know a bunch of

00:18:00 ◼   ► rough edges and it still does because

00:18:01 ◼   ► it's a Mac app and I am terrible at

00:18:04 ◼   ► making mac apps I'm very very new to it

00:18:06 ◼   ► app kit is very little like UI kit it's

00:18:10 ◼   ► very different and and it's there's

00:18:14 ◼   ► still a lot of legacy to be aware of a

00:18:17 ◼   ► lot of rough edges a lot of things you

00:18:19 ◼   ► have to consider a lot of functionality

00:18:21 ◼   ► that is simply just doesn't work and and

00:18:25 ◼   ► and iOS has a lot of this too but I know

00:18:27 ◼   ► what it is and I have been there for so

00:18:29 ◼   ► long you know I have a lot of experience

00:18:30 ◼   ► there on the Mac it's all new to me it's

00:18:33 ◼   ► all unfamiliar and the amount of

00:18:35 ◼   ► available help on the Mac is way smaller

00:18:38 ◼   ► you can't just like you know do a web

00:18:40 ◼   ► search for some problem you're having

00:18:42 ◼   ► and get a thousands you know Stack

00:18:44 ◼   ► Overflow results about the answer's no

00:18:45 ◼   ► like well for mac problems you're lucky

00:18:47 ◼   ► to get one you know me you might even

00:18:49 ◼   ► get you might get two maybe but you're

00:18:52 ◼   ► probably only get zero or one answer to

00:18:54 ◼   ► what you're looking for and it might be

00:18:56 ◼   ► on some ancient mailing list that's

00:18:57 ◼   ► impossible to skim or or find so Mac

00:19:00 ◼   ► development is very slow going so part

00:19:03 ◼   ► of why I haven't released it yet is

00:19:06 ◼   ► because it wasn't the app wasn't very

00:19:09 ◼   ► pretty or you know polished and so I I

00:19:13 ◼   ► was afraid to release it you know

00:19:14 ◼   ► because I was afraid that people would

00:19:16 ◼   ► judge it on these superficial but still

00:19:19 ◼   ► important qualities that I'm just not

00:19:21 ◼   ► very good on the Mac yet and I might

00:19:23 ◼   ► never be so that was part of it but you

00:19:26 ◼   ► know our conversation last week was a

00:19:28 ◼   ► pretty big motivator for me to go into

00:19:30 ◼   ► let's just release this mode because you

00:19:34 ◼   ► know last week we basically you know I

00:19:36 ◼   ► talked with you about how it how I

00:19:39 ◼   ► decided basically that it should be free

00:19:41 ◼   ► because it has benefits to me beyond

00:19:45 ◼   ► just money like it benefits overcast it

00:19:49 ◼   ► benefits podcasts as a whole you know it

00:19:52 ◼   ► saves people time and it can generate a

00:19:54 ◼   ► lot of goodwill for overcast so

00:19:55 ◼   ► I figured like based on that rationale

00:19:59 ◼   ► if it's gonna be free then I don't I

00:20:03 ◼   ► have a lot less to worry about I can

00:20:04 ◼   ► pull out a lot of like weird license

00:20:06 ◼   ► checking code and I don't have to worry

00:20:07 ◼   ► about like in-app purchases or the Mac

00:20:09 ◼   ► App Store or anything badly or some kind

00:20:12 ◼   ► of storefront for the website and then

00:20:14 ◼   ► supporting paid like the number of

00:20:16 ◼   ► things you have to do and worry about

00:20:18 ◼   ► and manage if it's free drops down

00:20:21 ◼   ► tremendously and then also I figured

00:20:23 ◼   ► like well I want to start accruing those

00:20:25 ◼   ► benefits now all those benefits is gonna

00:20:27 ◼   ► have to overcast and to podcasting

00:20:29 ◼   ► everything

00:20:30 ◼   ► why keep this private any longer like

00:20:32 ◼   ► this is probably good enough to release

00:20:34 ◼   ► for free right now and so I basically

00:20:36 ◼   ► went into you know punch list mode as

00:20:38 ◼   ► you said like I fixed the few remaining

00:20:42 ◼   ► bugs I cleaned up I disabled some

00:20:44 ◼   ► experimental stuff that that I decided

00:20:46 ◼   ► was a dead end

00:20:46 ◼   ► I you know polished up some of the wrote

00:20:50 ◼   ► some of the rough edges and I released

00:20:53 ◼   ► it now the process of releasing a Mac

00:20:55 ◼   ► app when you've mostly not released a

00:20:57 ◼   ► Mac at before I did release quitter

00:20:59 ◼   ► before I so I have one Mac app that

00:21:02 ◼   ► doesn't even have a window really I know

00:21:05 ◼   ► it does I guess the Preferences window

00:21:06 ◼   ► but yeah like it's one very small Mac

00:21:08 ◼   ► app that lives in the menu bar and does

00:21:09 ◼   ► very little so that was a little bit

00:21:11 ◼   ► easier but when you release apps outside

00:21:14 ◼   ► of the Mac App Store and and I you know

00:21:15 ◼   ► I don't want to get too much into that

00:21:17 ◼   ► but once I decided that this was not

00:21:19 ◼   ► going to be paid the Mac apps the

00:21:24 ◼   ► argument to be in the Mac App Store

00:21:25 ◼   ► basically evaporated because it's you

00:21:27 ◼   ► know the complexity of doing that and

00:21:29 ◼   ► maintaining a different version that was

00:21:31 ◼   ► sandbox versus not sandboxed for the you

00:21:34 ◼   ► know it was it was not gonna it was not

00:21:36 ◼   ► worth it and maybe down the road it will

00:21:38 ◼   ► be but right now it's not so I decide

00:21:41 ◼   ► but when you when you're not in the Mac

00:21:43 ◼   ► App Store you basically have to build

00:21:46 ◼   ► iTunes Connect from scratch for yourself

00:21:48 ◼   ► like I think us iOS developers have have

00:21:52 ◼   ► we take a lot of things for granted like

00:21:55 ◼   ► things like updates like how do you how

00:21:59 ◼   ► does your app update itself if it's not

00:22:00 ◼   ► in an app store and so you know what Mac

00:22:03 ◼   ► apps do is they had this framework

00:22:04 ◼   ► called sparkle usually that that is like

00:22:07 ◼   ► the Ottawa gating framework that

00:22:08 ◼   ► everyone has seen

00:22:09 ◼   ► the windows of but maybe do you maybe to

00:22:11 ◼   ► know what is called but almost all has

00:22:13 ◼   ► to use this on the Mac but you have to

00:22:15 ◼   ► then have an RSS feed on your server

00:22:17 ◼   ► that tells the app installations like

00:22:20 ◼   ► what version is available you have to

00:22:21 ◼   ► have have a like signature workflow on

00:22:24 ◼   ► it to sign your updates to make sure

00:22:26 ◼   ► that it's coming from you and and then

00:22:29 ◼   ► you have to have some kind of way to

00:22:30 ◼   ► manage these builds and validate them

00:22:32 ◼   ► and and so before when I was just doing

00:22:34 ◼   ► the forecast beta and when I and for

00:22:36 ◼   ► quitter I just have a couple of local

00:22:38 ◼   ► shell scripts that do all this and it's

00:22:40 ◼   ► kind of it's it's pretty crappy but it's

00:22:42 ◼   ► pretty basic needs on those for forecast

00:22:45 ◼   ► it's an overcast product so that's why I

00:22:47 ◼   ► decided it should be part of the

00:22:48 ◼   ► overcast website and that I wanted some

00:22:52 ◼   ► kind of web management panel to do these

00:22:55 ◼   ► things so I so I so like basically

00:22:57 ◼   ► yesterday I built all of this I

00:22:59 ◼   ► basically built myself a a crappy small

00:23:02 ◼   ► limited version of iTunes Connect that

00:23:04 ◼   ► like I upload a build it reads the plist

00:23:08 ◼   ► it you know pulls out the keys for like

00:23:10 ◼   ► build number and version number and

00:23:12 ◼   ► everything and it sticks it all in

00:23:14 ◼   ► database and I can edit the release

00:23:16 ◼   ► notes which is also good because then I

00:23:17 ◼   ► can provide a version history on the

00:23:19 ◼   ► website very very easily cuz it's all in

00:23:20 ◼   ► the database so you know edit the

00:23:22 ◼   ► release notes for it be able to publish

00:23:24 ◼   ► it or have it not be published yet I'm

00:23:27 ◼   ► going to next I'm going to create a beta

00:23:29 ◼   ► channel which I haven't done yet

00:23:30 ◼   ► basically just you know and not even to

00:23:33 ◼   ► the to the level of sophistication I

00:23:34 ◼   ► just got just like a granularity of like

00:23:36 ◼   ► is this version on the beta train or not

00:23:39 ◼   ► and then have a separate feed for that

00:23:41 ◼   ► then it's all in the overcast site and

00:23:43 ◼   ► then it runs to you have cache CDN so I

00:23:45 ◼   ► don't to worry about like download you

00:23:46 ◼   ► know overloads or overages so I it was a

00:23:51 ◼   ► lot of work to build all that and this

00:23:54 ◼   ► is like it's one of those things like

00:23:55 ◼   ► the first time you make a mac app you

00:23:57 ◼   ► learn all this crazy stuff just like you

00:23:59 ◼   ► know I guess similarly the first time

00:24:00 ◼   ► somebody makes an iOS app and learn

00:24:02 ◼   ► about like all the provisioning stuff

00:24:04 ◼   ► that you have to do and certificates and

00:24:06 ◼   ► everything else so I guess it isn't it

00:24:07 ◼   ► isn't that different of an amount of

00:24:10 ◼   ► work but you know certainly the first

00:24:13 ◼   ► time you build all this it's it's a lot

00:24:14 ◼   ► and and this is all even easier because

00:24:15 ◼   ► it's free like if it was actually paid

00:24:18 ◼   ► and I had my own storefront on my

00:24:21 ◼   ► website I had to build

00:24:22 ◼   ► and manage that and that's not a small

00:24:25 ◼   ► thing either so there's a lot that you

00:24:28 ◼   ► have to do in the Macworld that you

00:24:30 ◼   ► don't do in iOS at least if you don't do

00:24:32 ◼   ► the App Store and it's kind of made me

00:24:34 ◼   ► appreciate like oh this is why people

00:24:37 ◼   ► still use the App Store like not

00:24:38 ◼   ► everyone uses it a lot of big developers

00:24:40 ◼   ► don't because they have the resources

00:24:42 ◼   ► not to but certainly if you if you are a

00:24:46 ◼   ► small developer and you just want to put

00:24:47 ◼   ► something up charge a few bucks for

00:24:49 ◼   ► whatever the app store is way easier

00:24:50 ◼   ► than doing it yourself it's not even

00:24:52 ◼   ► close you know the I guess they they get

00:24:55 ◼   ► that 30% for a reason

00:24:56 ◼   ► so ultimately it was a ton of work

00:24:59 ◼   ► almost none of which was the forecast

00:25:02 ◼   ► app itself like almost all of it was

00:25:04 ◼   ► putting together the infrastructure

00:25:06 ◼   ► making a page for it on the site writing

00:25:09 ◼   ► what's on the page taking a screenshot

00:25:11 ◼   ► putting that on the page like it's all

00:25:14 ◼   ► this and all this work that we have when

00:25:17 ◼   ► we release a new app especially if it's

00:25:18 ◼   ► the first app for a certain platform

00:25:20 ◼   ► that we've released there's so much work

00:25:23 ◼   ► to do that you know it's like that last

00:25:25 ◼   ► 1% is usually the last 1% is ridiculous

00:25:28 ◼   ► when it's like you were very first Mac

00:25:30 ◼   ► app that you've ever made like you make

00:25:31 ◼   ► this happen somehow like it's so much

00:25:33 ◼   ► work and it's nowhere near you know

00:25:36 ◼   ► polished or done but it's it's close

00:25:38 ◼   ► enough it's functional and so I guess

00:25:40 ◼   ► shipped it and I think do there's a more

00:25:42 ◼   ► general point that I hear are you saying

00:25:44 ◼   ► is it's it's important to remember too

00:25:46 ◼   ► that there may be a lot of things that

00:25:49 ◼   ► you have to do before you even when you

00:25:52 ◼   ► finally gets the point that you let go

00:25:54 ◼   ► and say yep this is good enough I'm

00:25:56 ◼   ► gonna put this into the store like

00:25:57 ◼   ► there's still like not that the work is

00:25:59 ◼   ► not done at that point like you the work

00:26:02 ◼   ► may be done in Xcode like you may have

00:26:04 ◼   ► you know finally uploaded your binary to

00:26:07 ◼   ► iTunes Connect or in your case like

00:26:09 ◼   ► overcast Connect but like then you have

00:26:14 ◼   ► all these other stuff that you have to

00:26:15 ◼   ► do like are you gonna do send any kind

00:26:17 ◼   ► of frequently asked questions or get to

00:26:18 ◼   ► build a website for it are you the

00:26:21 ◼   ► things like there's any kind of

00:26:22 ◼   ► marketing materials even just the iTunes

00:26:24 ◼   ► Connect kind of screenshotting and all

00:26:27 ◼   ► that kind of stuff like if you have a

00:26:28 ◼   ► localized set of screenshots like it can

00:26:30 ◼   ► take it takes a good day for whenever I

00:26:32 ◼   ► need to update my screenshots even when

00:26:34 ◼   ► I automate a lot of it

00:26:36 ◼   ► like just because I you know I think

00:26:37 ◼   ► pedometer plus plus is localized into

00:26:41 ◼   ► ten languages or something like that and

00:26:44 ◼   ► so if I have you know multiple five

00:26:47 ◼   ► screenshots times ten times ten

00:26:49 ◼   ► languages times multiple devices like it

00:26:52 ◼   ► just it just goes crazy and it's

00:26:54 ◼   ► important I think to keep it in mind to

00:26:56 ◼   ► that if you have set a deadline and you

00:26:59 ◼   ► have communicated that that you need to

00:27:01 ◼   ► leave buffer in your workflow so that

00:27:04 ◼   ► you have time to do all this stuff that

00:27:07 ◼   ► is that you either serve that has

00:27:09 ◼   ► nothing to do with finishing the app

00:27:10 ◼   ► that you finally got your punch list

00:27:11 ◼   ► down to you know good enough you're done

00:27:14 ◼   ► it's like you still have a bunch of

00:27:16 ◼   ► other stuff that you're gonna have to do

00:27:17 ◼   ► and so just like leaving enough buffer

00:27:19 ◼   ► in your schedule to actually do that is

00:27:21 ◼   ► important like I know I've gotten caught

00:27:23 ◼   ► out for iOS updates where it's like I

00:27:27 ◼   ► feel like you know I'm working towards

00:27:29 ◼   ► making it so that you know as soon as

00:27:31 ◼   ► the gold master version of Xcode comes

00:27:33 ◼   ► out and as soon as iTunes Connect opens

00:27:35 ◼   ► up I'm ready to go and then I forgotten

00:27:37 ◼   ► that I'm like I'm gonna need a whole new

00:27:38 ◼   ► set of screenshots and so rather than

00:27:40 ◼   ► you know submitting right that moment

00:27:41 ◼   ► I'm submitting like a day later and so

00:27:44 ◼   ► that's just entirely poor planning on my

00:27:46 ◼   ► part

00:27:47 ◼   ► yeah screenshots - are are my Achilles

00:27:49 ◼   ► heel they always take me for like I

00:27:51 ◼   ► always forget that have to do them and

00:27:52 ◼   ► then the very last minute I'm like oh

00:27:53 ◼   ► crap I need to make 40 screenshots this

00:27:57 ◼   ► is bad and then you know then I have to

00:27:58 ◼   ► figure out some way to try to automate

00:28:00 ◼   ► some of it I know those tools out there

00:28:01 ◼   ► to help with this but I've never

00:28:02 ◼   ► bothered to set one up and so it's it's

00:28:05 ◼   ► that's a big deal this is one of the

00:28:08 ◼   ► reason why I've made a preview videos

00:28:09 ◼   ► yet I probably should make videos just

00:28:11 ◼   ► to try them out but I haven't yet in

00:28:14 ◼   ► part because that's a massive

00:28:16 ◼   ► undertaking to add to this like to add

00:28:20 ◼   ► like the production of an entire video

00:28:22 ◼   ► to the list of things have to do every

00:28:24 ◼   ► time your your your UI changes that's or

00:28:28 ◼   ► every time you a new device comes out

00:28:29 ◼   ► that's a that's a large amount of work

00:28:32 ◼   ► and so you know it has to be pretty

00:28:34 ◼   ► compelling and I just I haven't had the

00:28:36 ◼   ► time to do it yet but you know now you

00:28:38 ◼   ► know forecast is out you know it's

00:28:41 ◼   ► mostly stable you know I don't think I

00:28:43 ◼   ► need to do a whole lot of work on it

00:28:44 ◼   ► release wise overcast is pretty stable

00:28:47 ◼   ► so I'm back in a good place now but the

00:28:49 ◼   ► man

00:28:50 ◼   ► last one percent on both of those things

00:28:51 ◼   ► was was killer yeah and I think the

00:28:54 ◼   ► thing that's fun is like now you're in

00:28:55 ◼   ► the place that is at least if any if

00:28:57 ◼   ► you're anything like me is the best part

00:28:58 ◼   ► right now you can look at your big long

00:29:00 ◼   ► feature list and you like the reward for

00:29:03 ◼   ► for battling through that last 1% is

00:29:05 ◼   ► that you now have the opportunity to

00:29:08 ◼   ► look at your like fun feature list and

00:29:10 ◼   ► you know decide what's fun to work on

00:29:12 ◼   ► next and like that's in a weird way it's

00:29:14 ◼   ► like as an engineer like the best reward

00:29:17 ◼   ► for preferred for lots of hard work is

00:29:19 ◼   ► more hard work but at least it's like

00:29:21 ◼   ► the fun work that I enjoy doing rather

00:29:23 ◼   ► than the hard like they the grunt work

00:29:25 ◼   ► that I don't enjoy doing as much exactly

00:29:28 ◼   ► alright we're out of time this week

00:29:30 ◼   ► thanks listening everybody and we'll

00:29:32 ◼   ► talk to you next week bye