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: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: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: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: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