Under the Radar 98: The Accidental Episode
00:00:00
◼
►
welcome to under the radar a show hood
00:00:01
◼
►
independent iOS app development I'm
00:00:03
◼
►
Marco Arment and I'm David Smith under
00:00:05
◼
►
the radar is never longer than 30
00:00:06
◼
►
minutes so let's get started
00:00:08
◼
►
so we want to record a regular episode
00:00:10
◼
►
this week and in our preamble where we
00:00:11
◼
►
just kind of casually talk with each
00:00:13
◼
►
other before we record we ended up
00:00:14
◼
►
having a better discussion than whatever
00:00:16
◼
►
we were gonna talk about so we're we're
00:00:18
◼
►
gonna use that as the episode this week
00:00:20
◼
►
just some some context here I've been
00:00:23
◼
►
thinking about trying various ways to
00:00:25
◼
►
bring back watch offline audio playback
00:00:29
◼
►
for overcast you can play a background
00:00:32
◼
►
audio if you're a workout app so one
00:00:34
◼
►
option I'm considering is just making
00:00:36
◼
►
overcast a workout app on the watch
00:00:38
◼
►
where it would have to start its own
00:00:39
◼
►
workouts manage them in the overcast
00:00:42
◼
►
interface and then you know you could
00:00:44
◼
►
you can play the stuff in the background
00:00:46
◼
►
offline as long as they workout is
00:00:48
◼
►
running in the overcast app and as it
00:00:50
◼
►
has all sorts of problems and everything
00:00:52
◼
►
but it would work you know you you are
00:00:55
◼
►
the audio and watch expert I don't know
00:00:59
◼
►
nearly as much about the watch OSAP eyes
00:01:01
◼
►
as you do so you know I've been bouncing
00:01:03
◼
►
questions off of you of like can I do
00:01:04
◼
►
this can I do this like what are the
00:01:06
◼
►
downsides of this you also know a lot
00:01:07
◼
►
about health kit and dealing with health
00:01:08
◼
►
care which I have no experience with so
00:01:10
◼
►
I'm asking I've been asking you
00:01:11
◼
►
questions like you know what are the
00:01:13
◼
►
downsides of being a workout app and
00:01:15
◼
►
having to save data to health kit and
00:01:17
◼
►
work with health kit and how all the
00:01:18
◼
►
permissions for that and you've been
00:01:21
◼
►
experimenting with a project to have a
00:01:24
◼
►
workout audio player on the watch right
00:01:26
◼
►
yeah and so I've been playing since the
00:01:30
◼
►
LTE watch was announced I was like well
00:01:31
◼
►
maybe I need to try this and that it
00:01:33
◼
►
because as we get into and the
00:01:36
◼
►
discussion you know here it's a lot of
00:01:38
◼
►
things become pump more possible on the
00:01:39
◼
►
watch if you are a workout app I was
00:01:41
◼
►
like well I have a workout app I have
00:01:42
◼
►
workouts plus plus and the point of
00:01:44
◼
►
workouts opposed plus is to be this sort
00:01:46
◼
►
of super user like lots of customization
00:01:49
◼
►
kind of you know power app and so maybe
00:01:53
◼
►
adding podcasts playback to that
00:01:55
◼
►
wouldn't be crazy and so I've been
00:01:56
◼
►
experimenting with it and kind of
00:01:57
◼
►
building this out and it's in the II
00:02:00
◼
►
like working prototype stage at this
00:02:02
◼
►
point and it's kind of interesting to
00:02:03
◼
►
see you know is this a viable thing does
00:02:05
◼
►
it make sense and do we want to take it
00:02:08
◼
►
yeah hopefully you enjoy the discussion
00:02:10
◼
►
it's I personally I think I like these
00:02:13
◼
►
kinds of discussions where because like
00:02:14
◼
►
Marco and I we do this a lot it's
00:02:16
◼
►
probably fair to say like where it's
00:02:18
◼
►
useful to think through something out
00:02:20
◼
►
loud where there's you you're dealing
00:02:23
◼
►
with all these problems sequentially and
00:02:25
◼
►
you're able to benefit from each other's
00:02:26
◼
►
experience and just kind of see how
00:02:28
◼
►
these things evolve and you often end up
00:02:30
◼
►
in a place that's so different than what
00:02:32
◼
►
you may have thought you would when you
00:02:33
◼
►
were starting all right so with that
00:02:35
◼
►
here's our discussion we were having
00:02:36
◼
►
about these crazy things enjoy the
00:02:38
◼
►
episode and right before we start we are
00:02:40
◼
►
brought to you this week by Linode fast
00:02:42
◼
►
powerful web hosting options you can set
00:02:45
◼
►
up in just seconds and plans start at
00:02:47
◼
►
just five dollars a month for a Linux
00:02:49
◼
►
server with one gigabyte or
00:02:52
◼
►
industry-leading performance with native
00:02:55
◼
►
SSD storage user enterprise grade SSDs
00:02:57
◼
►
and access to before two gigabit network
00:02:59
◼
►
and intel xeon e5 processors these are
00:03:01
◼
►
the fastest processors available in the
00:03:02
◼
►
cloud market they have nine datacenters
00:03:04
◼
►
all over the world an API lets you
00:03:07
◼
►
easily automate tasks if you want with
00:03:08
◼
►
super simple scaling and hourly or
00:03:11
◼
►
monthly billing options they a fantastic
00:03:13
◼
►
pricing again all this starts with just
00:03:14
◼
►
$5 a month for one gig of ram about
00:03:17
◼
►
twice the amount of ram that you will
00:03:19
◼
►
get in other hosts like this I think
00:03:21
◼
►
it's the best deal of my posting I use
00:03:23
◼
►
it David uses it we lovely note it's
00:03:25
◼
►
wonderful as a listener of this show if
00:03:27
◼
►
you sign up at lynda.com slash radar you
00:03:30
◼
►
will support us and get $20 towards any
00:03:32
◼
►
Linode plan and with a 7 day money back
00:03:34
◼
►
guarantee there is nothing to lose so go
00:03:37
◼
►
to lynda.com slash radar to learn more
00:03:39
◼
►
sign up and take advantage of that $20
00:03:42
◼
►
credit or use promo code radar 2017 at
00:03:44
◼
►
checkout thank you so much to Linode for
00:03:46
◼
►
supporting this show I've made a lot of
00:03:51
◼
►
progress in workouts plus plus podcast
00:03:54
◼
►
player that's good it's just so slow to
00:03:56
◼
►
download and that it works like it's
00:03:59
◼
►
just it makes me feel like I'm down like
00:04:01
◼
►
downloading these files on a like a
00:04:04
◼
►
dial-up modem and so that makes me like
00:04:06
◼
►
I'm very curious to see what like an 80%
00:04:08
◼
►
faster Wi-Fi chip and the new watch will
00:04:12
◼
►
be and and I forget so last time when
00:04:15
◼
►
you were talking about this and telling
00:04:17
◼
►
me all the wonderful things you were
00:04:18
◼
►
finding the conclusion I believe you
00:04:21
◼
►
it's pretty much impossible to do it
00:04:23
◼
►
right without an active workout running
00:04:25
◼
►
so you're like if you're just using
00:04:26
◼
►
audio file player in the background and
00:04:28
◼
►
you're not doing a workout
00:04:30
◼
►
what do the main is the main problem
00:04:32
◼
►
still that like it doesn't wake your app
00:04:33
◼
►
up when somebody hits the end and stuff
00:04:35
◼
►
like that I think it is it's along those
00:04:38
◼
►
lines yeah like a you'll have weird
00:04:40
◼
►
issues for example around interaction
00:04:43
◼
►
with the now playing control for example
00:04:46
◼
►
and things because in order to interact
00:04:47
◼
►
correctly with an out playing control
00:04:49
◼
►
you have to be running because you need
00:04:50
◼
►
to be constantly monitoring the status
00:04:53
◼
►
of the cue player because when they hit
00:04:57
◼
►
it's obviously you're not actually it's
00:04:59
◼
►
not skipping the file forward it's it's
00:05:00
◼
►
doing a next track and so you need to
00:05:02
◼
►
intercept that and override it there's a
00:05:05
◼
►
lot of things like that that if you're
00:05:07
◼
►
not doing a workout you won't have the
00:05:10
◼
►
ability to to do that interception like
00:05:13
◼
►
you'll get your little background you
00:05:15
◼
►
because as far as its concerned you've
00:05:17
◼
►
said play this file and it'll just
00:05:19
◼
►
merrily play it to the end or are they
00:05:21
◼
►
hitting it there are they hit next and
00:05:23
◼
►
then it would just stop I wish they
00:05:24
◼
►
would just wake you up in the background
00:05:26
◼
►
whenever like an event like that
00:05:28
◼
►
happened either somebody reaches the end
00:05:30
◼
►
or somebody advances to the next thing
00:05:31
◼
►
in the queue like sure I mean I mean
00:05:33
◼
►
they should and they're like I'm gonna
00:05:35
◼
►
up now playing side there's a ton of
00:05:36
◼
►
stuff that you really should do there
00:05:38
◼
►
yeah I rather than just like doing craze
00:05:41
◼
►
doing whatever to the file it should
00:05:42
◼
►
probably be in the same way that on iOS
00:05:44
◼
►
it does like you get a like an app
00:05:47
◼
►
delegate callback that says this button
00:05:50
◼
►
was pressed and then leave it up to me
00:05:52
◼
►
to do whatever I want to do with that I
00:05:54
◼
►
mean they probably don't do that because
00:05:56
◼
►
if they're gonna suspend you you
00:05:57
◼
►
probably can't be resumed fast enough to
00:05:59
◼
►
be responsive fund fundamentally the
00:06:01
◼
►
architecture is intended to be that if
00:06:04
◼
►
you are running that like it's this
00:06:05
◼
►
fire-and-forget kind of a thing that you
00:06:07
◼
►
say like play this file and then you can
00:06:11
◼
►
kill the app and it would be fine
00:06:13
◼
►
whereas in order to really do it
00:06:16
◼
►
properly you need to always be running
00:06:17
◼
►
which in the current form means you
00:06:19
◼
►
neither need to be a turn-by-turn
00:06:21
◼
►
navigation app or you need to be a
00:06:22
◼
►
workout app and also there's a bunch of
00:06:25
◼
►
other just like things that seem like if
00:06:27
◼
►
you're like keeping track of how far
00:06:30
◼
►
they've gotten for like bookmarking
00:06:31
◼
►
reasons and things
00:06:33
◼
►
um being a workout app is also something
00:06:35
◼
►
that seems somewhat important to be able
00:06:37
◼
►
to in the same way like I mean
00:06:39
◼
►
functionally the way I've built it now
00:06:40
◼
►
it just once a second I have the timer
00:06:44
◼
►
going and I'm just keeping track of how
00:06:46
◼
►
far they got and then also seeing has
00:06:49
◼
►
the cue changed and if it has adjusted
00:06:52
◼
►
you know she's restarting it thirty
00:06:54
◼
►
seconds ahead essentially you know it's
00:06:57
◼
►
mostly I do the back button still
00:06:58
◼
►
doesn't work but as far as I can tell I
00:07:01
◼
►
can't fix that because with a cue like
00:07:05
◼
►
the cue is strictly forward moving it
00:07:08
◼
►
doesn't go backwards because I get first
00:07:10
◼
►
what I was good at first what I did is I
00:07:11
◼
►
I set the cue up as play thirty seconds
00:07:14
◼
►
of silence played the podcast play
00:07:16
◼
►
thirty seconds of silence in the hope
00:07:18
◼
►
that if you hit back it would go back to
00:07:21
◼
►
the first thirty seconds of silence I
00:07:24
◼
►
can detect that you've jumped backward
00:07:25
◼
►
and then readjust play accordingly but
00:07:30
◼
►
that didn't work because hitting back
00:07:31
◼
►
just does nothing it just stops so this
00:07:35
◼
►
is I can tell there's nothing to be done
00:07:36
◼
►
there like it when you're playing the
00:07:39
◼
►
file the back button is like meaningless
00:07:42
◼
►
there's no like all it does is stop
00:07:44
◼
►
playback so I don't know that seems like
00:07:47
◼
►
that's just a bug and or a limitation of
00:07:50
◼
►
how he's implemented yes afford works
00:07:52
◼
►
and play pause works and now you're
00:07:55
◼
►
making me do this cuz like I figure I
00:07:57
◼
►
pretty much have the file transfer side
00:07:59
◼
►
of it solved I have my transcoding
00:08:01
◼
►
engine trend it makes it lower bitrate a
00:08:03
◼
►
base in smart speed if I do it again
00:08:05
◼
►
what I'm gonna do basically is just have
00:08:07
◼
►
it automatically sync stuff over
00:08:09
◼
►
overnight is there our background app
00:08:11
◼
►
refresh for the main extension like
00:08:14
◼
►
could I wake up them like periodically
00:08:16
◼
►
throughout the night and like cue up a
00:08:18
◼
►
back you a URL task or something like is
00:08:21
◼
►
that a thing I can do you you could you
00:08:23
◼
►
could ask to send the file to the watch
00:08:27
◼
►
but you would have no visibility as to
00:08:30
◼
►
when or if that is actually going to
00:08:32
◼
►
happen right there's no way for the user
00:08:36
◼
►
to prioritize or activate that so like
00:08:42
◼
►
you could in your app overnight say hey
00:08:44
◼
►
here's this file when
00:08:46
◼
►
when when it's convenient please
00:08:48
◼
►
transfer it to the watch and that would
00:08:50
◼
►
work but you don't know when and like
00:08:52
◼
►
that's the part of it like for when I
00:08:54
◼
►
was thinking through on my side of
00:08:56
◼
►
things I was like I needed up I'm just
00:08:59
◼
►
going to do it that it downloads using
00:09:01
◼
►
you know nsurl connection or nsurl
00:09:04
◼
►
session because it that way at least I
00:09:06
◼
►
can show the user what's going on by
00:09:09
◼
►
giving them that sense of feedback at
00:09:11
◼
►
least it's not frustrating for like well
00:09:13
◼
►
where's my file yeah I and it's like I
00:09:16
◼
►
see where you're going that I think it
00:09:17
◼
►
works in so far as like if you can do it
00:09:20
◼
►
when they're not when they're not paying
00:09:21
◼
►
attention and it works well enough then
00:09:23
◼
►
that may be good enough and you think
00:09:25
◼
►
that overnight if you play like if your
00:09:28
◼
►
watch is plugged in and your phone is
00:09:30
◼
►
plugged in that it would be use that as
00:09:33
◼
►
a good opportunity to move things across
00:09:35
◼
►
unless it needs for them to be unlocked
00:09:38
◼
►
yeah like I wonder like it is the
00:09:40
◼
►
session even active if they're both
00:09:42
◼
►
locked sitting on the table yeah that's
00:09:44
◼
►
a weird question because I don't know if
00:09:45
◼
►
it would say that hey this is a great
00:09:47
◼
►
opportunity to do it right or it would
00:09:49
◼
►
say the watch is off the wrist I'm not
00:09:51
◼
►
gonna do anything is the watch connected
00:09:55
◼
►
in the same way like is it in a like I'm
00:09:58
◼
►
asleep state because I'm not connected
00:10:00
◼
►
to a wrist anymore I don't know yeah so
00:10:03
◼
►
it's a bit of a mess I think I think
00:10:05
◼
►
first I will try the file transfer thing
00:10:08
◼
►
I'll just like set it up and just you
00:10:10
◼
►
know just but I don't have any playback
00:10:11
◼
►
you I just to see like is it able to
00:10:13
◼
►
stay on top of things that could
00:10:15
◼
►
automatically transferred overnight my
00:10:16
◼
►
idea is just like an automatically sync
00:10:18
◼
►
over like your whole queue and then you
00:10:20
◼
►
know once you finish that like you know
00:10:21
◼
►
basically try to sync overlay 24 hours
00:10:23
◼
►
of audio that's like you know finish the
00:10:26
◼
►
cue and then start just pulling new
00:10:28
◼
►
podcasts that have come in that aren't
00:10:31
◼
►
yet there and just just have tried to
00:10:32
◼
►
sink as much as possible if the workout
00:10:34
◼
►
hack is a way to simulate a decent or
00:10:37
◼
►
semi decent podcast audio player I'm
00:10:40
◼
►
going to go through all that all that
00:10:41
◼
►
hassle if it can be an overall good
00:10:44
◼
►
experience for the people who choose to
00:10:45
◼
►
go all-in on it so if you're willing to
00:10:47
◼
►
do a workout while you're playing things
00:10:50
◼
►
on your watch which I think most people
00:10:51
◼
►
are probably going to be doing one
00:10:52
◼
►
anyway during those times I'm willing to
00:10:54
◼
►
have this work again if everything else
00:10:57
◼
►
can be good like if the transfer
00:10:58
◼
►
experience can be good if the playback
00:11:00
◼
►
can be you know passable the awkward
00:11:04
◼
►
thing is just it's just so hard to know
00:11:05
◼
►
like the reason you ended up pulling it
00:11:07
◼
►
is because it worked but it didn't work
00:11:10
◼
►
well yeah and I suspect you will still
00:11:14
◼
►
have that same experience of like it'll
00:11:16
◼
►
work but it won't work well yeah and
00:11:19
◼
►
then you get into is it the same reason
00:11:21
◼
►
for the same reason that you pulled it
00:11:23
◼
►
last time is it better to just wait and
00:11:25
◼
►
hope that 4.1 or something will make it
00:11:29
◼
►
better and like ship it when it really
00:11:32
◼
►
works rather than it it's kind of a
00:11:35
◼
►
bundle of hacks in a lot of ways and the
00:11:38
◼
►
way I'm thinking about that now is like
00:11:40
◼
►
first of all like things have changed
00:11:42
◼
►
now with the release of the LTE watch
00:11:44
◼
►
demand is now going to be way higher so
00:11:46
◼
►
that changes the calculus a little bit
00:11:48
◼
►
because now all of a sudden like there's
00:11:49
◼
►
way more people who are going to be
00:11:51
◼
►
wanting standalone playback also if I
00:11:55
◼
►
make it a workout app that also solves
00:11:57
◼
►
the other purpose of just being
00:11:58
◼
►
convenient when you're working out like
00:12:01
◼
►
that that's gonna be the app that's
00:12:02
◼
►
gonna pop up first when your watch
00:12:03
◼
►
screen wakes up that you're gonna be
00:12:05
◼
►
able to see everything on just one
00:12:07
◼
►
screen instead of having to like pay
00:12:08
◼
►
between two things in the watch app
00:12:10
◼
►
horse or swap between two apps with like
00:12:12
◼
►
the rapid swapping features or like it
00:12:14
◼
►
can be better in these ways beyond what
00:12:17
◼
►
it was before if that makes sense
00:12:19
◼
►
oh sure I mean then you're thinking if
00:12:21
◼
►
you're a workout app then it's just you
00:12:23
◼
►
need to do all the health stuff yeah but
00:12:26
◼
►
but like so so what are the repos
00:12:28
◼
►
already have a privacy policy what else
00:12:31
◼
►
do I need I mean I think the biggest
00:12:32
◼
►
things is you look these easy ones like
00:12:35
◼
►
you have to add a disclaimer to your
00:12:36
◼
►
apps or description saying that you
00:12:37
◼
►
integrate with health that's all right I
00:12:39
◼
►
already have a big pile of those for
00:12:40
◼
►
subscriptions yeah it's like you need to
00:12:41
◼
►
have we need to do that and then it's
00:12:43
◼
►
just you'll need to add some at some
00:12:45
◼
►
point you'll need to throw up
00:12:48
◼
►
the health prompt requesting access on
00:12:51
◼
►
the phone to their health data like a
00:12:54
◼
►
very common thing that'll happen is they
00:12:56
◼
►
will gather that they'll not acted
00:12:59
◼
►
they'll not turn them all on and then be
00:13:01
◼
►
like why isn't my data there or the
00:13:02
◼
►
permissions won't sync correctly and so
00:13:04
◼
►
you have to tell them to go to the
00:13:06
◼
►
health app go to sources click your app
00:13:08
◼
►
turn them all off turn them all on
00:13:10
◼
►
Oh usually that resets it these are just
00:13:15
◼
►
like from a support perspective that
00:13:17
◼
►
come up with the health frameworks
00:13:19
◼
►
because there is such a like all of the
00:13:22
◼
►
permissions and privacy stuff that you
00:13:24
◼
►
then have to navigate just is a bit more
00:13:27
◼
►
tricky I don't think there's that you
00:13:29
◼
►
have to deal with people getting annoyed
00:13:30
◼
►
if you're for whatever reason you don't
00:13:32
◼
►
save the data correctly but I mean
00:13:34
◼
►
that's just like people people keep CC
00:13:36
◼
►
there they're very precious about their
00:13:38
◼
►
workouts of course so like if the app
00:13:40
◼
►
crashes during the workout they're very
00:13:42
◼
►
upset because they're like I'm working
00:13:43
◼
►
hard to earn this stat and you stole it
00:13:45
◼
►
from me that is worth a joke and
00:13:47
◼
►
actually how they feel like it feels
00:13:50
◼
►
like I took something from them that
00:13:51
◼
►
they worked towards when I suppose it's
00:13:53
◼
►
true in some ways but yeah I mean those
00:13:56
◼
►
are the big things I mean it's just it's
00:13:58
◼
►
just one other it's one other Avenue for
00:14:00
◼
►
things too that you have to now manage
00:14:02
◼
►
in terms of be like both the user
00:14:05
◼
►
experience which is a little awkward as
00:14:08
◼
►
well as I mean in general the confound
00:14:11
◼
►
haven't had too many issues on like the
00:14:13
◼
►
compliance or worry about people's data
00:14:15
◼
►
because I don't actually store any of
00:14:16
◼
►
their data all their data is in the
00:14:19
◼
►
health app if the only thing I'd be
00:14:21
◼
►
doing here is activating a workout
00:14:23
◼
►
session displaying its data on the
00:14:24
◼
►
screen during it and then saving it to
00:14:27
◼
►
health care that's it the other thing
00:14:29
◼
►
you'll have to navigate on your side
00:14:31
◼
►
that's related to that is Deakin I think
00:14:33
◼
►
you will have a fair bit of confusion
00:14:35
◼
►
around needing to have a workout active
00:14:39
◼
►
to start offline playback yeah and then
00:14:43
◼
►
that they need like if you send the
00:14:44
◼
►
workout the playback will stop will
00:14:47
◼
►
likely be more confusing because when
00:14:48
◼
►
you're playing from your phone that's
00:14:51
◼
►
not the case like you use the watch app
00:14:53
◼
►
while you're playing from your phone you
00:14:56
◼
►
there's no connection whatsoever and so
00:14:58
◼
►
I think they'll likely be confusing as
00:15:02
◼
►
to want I think why do I need to why do
00:15:06
◼
►
I need to start a workout I'm not
00:15:07
◼
►
working out to her I don't want to drain
00:15:11
◼
►
my battery with the heart rate monitor
00:15:13
◼
►
all the time I just want to listen to a
00:15:14
◼
►
podcast it's like well you need to
00:15:16
◼
►
because the primary purpose is to look
00:15:18
◼
►
for your app is to listen to the podcast
00:15:20
◼
►
not to do a workout I imagine there will
00:15:23
◼
►
be a dissidence there
00:15:24
◼
►
that's oh definitely yeah and that's
00:15:27
◼
►
that's the main argument for whether I
00:15:28
◼
►
should or shouldn't do this or not is
00:15:30
◼
►
like how bad is that basically yeah like
00:15:33
◼
►
how bad is combining these things and
00:15:36
◼
►
then what happens like if watch OS 5
00:15:39
◼
►
gives me the ability to do it without a
00:15:40
◼
►
workout then do I remove all these
00:15:42
◼
►
features that like yeah you are taking
00:15:45
◼
►
on the people's expectation that oh this
00:15:47
◼
►
is the app I use for a workout now yeah
00:15:49
◼
►
and so you are you then becoming a
00:15:51
◼
►
workout app forever and if they have
00:15:53
◼
►
Apple changes the way workouts can do or
00:15:55
◼
►
adds capabilities for workouts will you
00:15:58
◼
►
then have the problem of people being
00:16:00
◼
►
like oh I want you going to support the
00:16:02
◼
►
new something something workout system
00:16:04
◼
►
it but it may not really besides it's
00:16:06
◼
►
not really at all aligned with the core
00:16:08
◼
►
goal of the app I guess the advantage
00:16:09
◼
►
there is like they don't add new workout
00:16:11
◼
►
types that often usually it's like it's
00:16:13
◼
►
once a year it's you know during the
00:16:14
◼
►
watch OS update they'll add a few new
00:16:15
◼
►
ones so like it and the way I'm
00:16:17
◼
►
picturing the UI is like I replace the
00:16:18
◼
►
star button with a workout start/stop
00:16:20
◼
►
button and it pops up a tableview list
00:16:22
◼
►
that just says like alright pick your
00:16:24
◼
►
workout type and and you know it can't
00:16:25
◼
►
be smart and like you know sort the last
00:16:27
◼
►
ones you've used on top just throw that
00:16:29
◼
►
with the same the system workout app
00:16:30
◼
►
does yeah but like it doesn't matter how
00:16:32
◼
►
long that list is and then the API for
00:16:34
◼
►
all of them is the same so it wouldn't
00:16:36
◼
►
add like I think it would only add
00:16:38
◼
►
elements to that list as the workload
00:16:41
◼
►
right sure I mean necessarily I might
00:16:43
◼
►
just like workout types I think that's
00:16:45
◼
►
like so there's an example the recent
00:16:48
◼
►
addition in this I can watch OS 4 you
00:16:50
◼
►
can now do location tracking so you can
00:16:53
◼
►
get the map of where you walked while
00:16:55
◼
►
you went for your walk but in order to
00:16:57
◼
►
do that you need to implement all the
00:16:59
◼
►
core location stuff yourself oh I didn't
00:17:02
◼
►
know that wait so if I just start a
00:17:04
◼
►
workout and I do like just record like
00:17:07
◼
►
you know like I saw the this code sample
00:17:08
◼
►
online when I looked at it like last
00:17:10
◼
►
month and so if I just do like you know
00:17:12
◼
►
saving like the samples or whatever that
00:17:15
◼
►
does it it doesn't keep a GPS map no oh
00:17:19
◼
►
god so you have to implement that
00:17:21
◼
►
otherwise you lose the ability to have
00:17:23
◼
►
your GPS maps oh that's really bad so
00:17:26
◼
►
this is the this is that's more what I
00:17:28
◼
►
mean where it's really uh it's like as
00:17:30
◼
►
people's expectations for what a workout
00:17:32
◼
►
like because then if all of the overcast
00:17:34
◼
►
workouts don't have location data
00:17:37
◼
►
then is that gonna be annoying and
00:17:38
◼
►
frustrating and know what we want not
00:17:41
◼
►
what they want and do you want to go
00:17:42
◼
►
down the road for now implementing core
00:17:44
◼
►
location tracking and so on so that's
00:17:48
◼
►
more what I mean conceptually what
00:17:52
◼
►
you're sort of herders it's like having
00:17:53
◼
►
a workout app that's super minimal I
00:17:56
◼
►
mean maybe you could even just like all
00:17:58
◼
►
I can do is runs and walks right like
00:18:00
◼
►
even if you just said that that's what
00:18:01
◼
►
it does it's like it's just four runs
00:18:03
◼
►
and walks it's the purpose of any sort
00:18:05
◼
►
of like pedometer plus plus is workout
00:18:07
◼
►
app we're on the on the watch you can
00:18:09
◼
►
say like start a walk which for
00:18:12
◼
►
pedometer plus plus kind of it's like
00:18:14
◼
►
outdoor walk is the only workout type
00:18:15
◼
►
yeah because it's it's a pedometer like
00:18:18
◼
►
that's what it's it's four counting
00:18:19
◼
►
steps so narrowing it in that way it
00:18:22
◼
►
doesn't limit it too much but is it
00:18:25
◼
►
because you know your core purpose is
00:18:28
◼
►
not specific in fact it has nothing to
00:18:30
◼
►
do with working out it may be something
00:18:32
◼
►
that people do while they work out but
00:18:34
◼
►
it's got nothing to do with working out
00:18:35
◼
►
like it's I don't know and of course
00:18:39
◼
►
they have to worry about your cards that
00:18:40
◼
►
you're still worrying about your card
00:18:41
◼
►
API and your massive redesign and so who
00:18:45
◼
►
knows maybe you've got time you get
00:18:46
◼
►
finished with your cards watch it was a
00:18:48
◼
►
five will have come out and then it will
00:18:50
◼
►
all be a mute you know who all be fixed
00:18:52
◼
►
at that point so you don't even have to
00:18:53
◼
►
worry about it oh man alright so if I
00:18:56
◼
►
wanted to do this right I would have to
00:18:58
◼
►
not only have all the workout stuff
00:19:00
◼
►
starting and stopping the workout have
00:19:02
◼
►
that being basically tied to the
00:19:04
◼
►
play/pause button where they would like
00:19:05
◼
►
disable it when you're not running a
00:19:06
◼
►
workout but also have location tracking
00:19:10
◼
►
in my Abdur in the workout presumably
00:19:12
◼
►
I'd have to just like you know do
00:19:14
◼
►
continuous monitoring save the samples
00:19:16
◼
►
yep can you give location access with a
00:19:19
◼
►
prompt that only appears in the watcher
00:19:21
◼
►
does it prompt you on the phone I think
00:19:22
◼
►
it'll still show up on the phone they've
00:19:25
◼
►
made it anyone watch was for a couple of
00:19:27
◼
►
the prompts are now on the like the
00:19:30
◼
►
motion and Fitness one which is the one
00:19:31
◼
►
that I'd like interact with a lot is now
00:19:33
◼
►
possible to used to use to have to do it
00:19:35
◼
►
on the phone
00:19:36
◼
►
now it'll pop up and say you can approve
00:19:39
◼
►
it from the watch but yes I think health
00:19:42
◼
►
ones still require that you go to the
00:19:44
◼
►
phone which makes sense because they're
00:19:46
◼
►
so much more complicated
00:19:47
◼
►
and I don't know about location it
00:19:50
◼
►
wouldn't surprise me if you can do it on
00:19:52
◼
►
the watch now just because they did it
00:19:54
◼
►
for a look motion and fitness as well
00:19:55
◼
►
but I don't know that for sure this is
00:19:58
◼
►
just adding more and more clunkiness
00:20:00
◼
►
sure it does right and now all in any of
00:20:05
◼
►
the same thing it's like now you have a
00:20:06
◼
►
question of you need to have navigate
00:20:09
◼
►
people with location privacy or people
00:20:12
◼
►
come like try it looks like why does my
00:20:15
◼
►
podcast player need to know where I am
00:20:16
◼
►
and those types of questions which are
00:20:19
◼
►
enough attack both because if you want
00:20:21
◼
►
your workout map then I have to do this
00:20:24
◼
►
but all right so what if so what if I
00:20:28
◼
►
don't do workout stuff at all
00:20:29
◼
►
and I and just to recap so if I go back
00:20:32
◼
►
if I if I do wk audiophile player
00:20:35
◼
►
yeah I'm sure like what's the best I
00:20:38
◼
►
could do so like the bet that the
00:20:40
◼
►
problems that so now we know the
00:20:41
◼
►
problems of doing a workout at all this
00:20:42
◼
►
confusion all this overhead all this you
00:20:44
◼
►
know additional having to prompt for
00:20:45
◼
►
permissions and manage those permissions
00:20:47
◼
►
and everything maybe involving the phone
00:20:49
◼
►
and so ok if I go back to not having a
00:20:52
◼
►
workout go back to the way I was doing
00:20:54
◼
►
it before just this time with dub UK
00:20:56
◼
►
audio file player instead of AP audio
00:20:58
◼
►
ap file play whatever it is the main
00:21:00
◼
►
downsides to that is if somebody hits
00:21:03
◼
►
next track or previous track on their
00:21:04
◼
►
pods playback will stop and it will it
00:21:07
◼
►
won't be able to be restarted until they
00:21:09
◼
►
you know go to my app again and you
00:21:11
◼
►
won't know where they left off so what
00:21:14
◼
►
so if they got alright so fundamentally
00:21:18
◼
►
like the problem is that it's like you
00:21:19
◼
►
if you if you go down that road like the
00:21:22
◼
►
issue is it changes it from being able
00:21:26
◼
►
to like be the basic expectation with a
00:21:28
◼
►
podcast that you have a bookmark where
00:21:29
◼
►
you're keeping track and you like are
00:21:32
◼
►
offsetting from that doesn't work unless
00:21:35
◼
►
you can keep track of that bookmark
00:21:36
◼
►
right so if the user so let's say you
00:21:39
◼
►
know they they get back to their house
00:21:40
◼
►
they end the workout and they turn off
00:21:42
◼
►
their headphones or whatever it is like
00:21:44
◼
►
they they stop playback somehow and I'm
00:21:47
◼
►
not notified of that at all right not at
00:21:49
◼
►
all or at least you are almost certainly
00:21:53
◼
►
not like your app theoretically could be
00:21:54
◼
►
in the like if it was the last thing
00:21:58
◼
►
they had running you may be in the not
00:22:00
◼
►
fully background
00:22:01
◼
►
but not for grounded state so you may
00:22:04
◼
►
have some visibility but you have no
00:22:07
◼
►
guarantees of that or no expectation of
00:22:10
◼
►
of getting that event because it's not
00:22:12
◼
►
an event that you get like you know you
00:22:14
◼
►
would get the event when they finish it
00:22:16
◼
►
you'll get the like did finish to end
00:22:18
◼
►
notification the next time your app was
00:22:20
◼
►
for grounded but but it won't wake me up
00:22:23
◼
►
in the background and tell me it love
00:22:24
◼
►
these events as they happen oh I don't
00:22:25
◼
►
believe so now this I hate this so much
00:22:30
◼
►
why isn't this easy yeah
00:22:33
◼
►
our engineers they're our job is to
00:22:35
◼
►
solve hard problems because like
00:22:37
◼
►
literally like every day I'm gonna be
00:22:40
◼
►
getting questions from people every
00:22:41
◼
►
single day with LTE watches saying why
00:22:45
◼
►
haven't you done this yet why is there
00:22:46
◼
►
no podcast Apple I haven't you'd like
00:22:48
◼
►
and the worst thing is if Apple does it
00:22:50
◼
►
if Apple does their version of podcasts
00:22:53
◼
►
if they bring it to the watch they're
00:22:56
◼
►
gonna use real api's that I can't use
00:22:58
◼
►
and so that's gonna just make me look
00:23:01
◼
►
bad and make my user to complain and I'm
00:23:03
◼
►
gonna lose users for that because
00:23:05
◼
►
they're gonna be like well y-you know
00:23:07
◼
►
what if Apple can do it why can't you do
00:23:09
◼
►
it you know they're already oh also
00:23:11
◼
►
while I have you here talking about
00:23:13
◼
►
audio api's is there any streaming API
00:23:15
◼
►
that we can use on the watch said the
00:23:18
◼
►
only way to do streaming as best I can
00:23:19
◼
►
tell would be to so it would be to do
00:23:24
◼
►
the crazy hack saying I mentioned before
00:23:25
◼
►
I used to do in the first version of
00:23:27
◼
►
audio books back in iPhone OS - yeah
00:23:30
◼
►
where I would download mp3 files
00:23:32
◼
►
sequentially and after I had like the
00:23:35
◼
►
first the first two Meg's of it
00:23:37
◼
►
I would tell to give hand give that
00:23:39
◼
►
those two Meg's to the player and then
00:23:41
◼
►
have it start playing those and then
00:23:44
◼
►
keep backfilling like the you know it's
00:23:47
◼
►
like I'm on a train trying to build the
00:23:49
◼
►
tracks as I go yeah which is not
00:23:53
◼
►
straight it's like is is streaming in so
00:23:56
◼
►
far as most people's definition of
00:23:58
◼
►
streaming is just instant playback
00:24:01
◼
►
technically streaming is a different
00:24:03
◼
►
thing than fast start for most user
00:24:05
◼
►
expectation perspective streaming is
00:24:07
◼
►
fast start so as long as you could do
00:24:12
◼
►
something like that you would from a
00:24:14
◼
►
user's perspective it would base
00:24:15
◼
►
they'd be streaming and I mean you'd
00:24:17
◼
►
hope like if the watch is fast enough
00:24:19
◼
►
and the network connection is fast
00:24:20
◼
►
enough like if the download completes in
00:24:23
◼
►
you know ten seconds
00:24:25
◼
►
it doesn't really matter like the fact
00:24:28
◼
►
that it you have to wait ten seconds
00:24:30
◼
►
like that's not a huge killer like even
00:24:32
◼
►
if you're streaming there's usually like
00:24:33
◼
►
a buffering interval so yeah but yeah
00:24:36
◼
►
there's no there's not a strict
00:24:38
◼
►
streaming interface in the same way that
00:24:39
◼
►
like AV player you can just pass an HD
00:24:41
◼
►
HTTP URL and it takes care of it for you
00:24:45
◼
►
everything has to be file based yeah and
00:24:47
◼
►
we don't have the kind of low-level
00:24:48
◼
►
access that I could like do my own thing
00:24:51
◼
►
like I do in the phone version like cuz
00:24:52
◼
►
I don't use AV player but like I just I
00:24:54
◼
►
used raw audio playback API is that I I
00:24:57
◼
►
download the files and chunks myself I
00:25:00
◼
►
pass them as I have them to you know
00:25:01
◼
►
it's like but I can't do any of that on
00:25:03
◼
►
the watch because there's no core audio
00:25:04
◼
►
right or at least not not for not enough
00:25:06
◼
►
for background and playback yeah you
00:25:08
◼
►
would have the same problem you would
00:25:09
◼
►
have the same problem of using AV AV
00:25:11
◼
►
audio player where you can use AV audio
00:25:14
◼
►
player if you're a workout app but then
00:25:16
◼
►
you don't integrate with the now playing
00:25:18
◼
►
in or the now playing they're not
00:25:21
◼
►
playing app and you also can't control
00:25:23
◼
►
audio volume as a result so if the
00:25:28
◼
►
Bluetooth volume on the headsets is set
00:25:31
◼
►
there's no way to raise it up right yes
00:25:34
◼
►
I had that problem dramatically it's
00:25:36
◼
►
like at least if you use the file player
00:25:38
◼
►
API or the cue player API then you can
00:25:41
◼
►
change its correctly ties into it and so
00:25:44
◼
►
then you could say if you like I'm
00:25:45
◼
►
expecting to have a little I can detect
00:25:48
◼
►
what the current system audio is is that
00:25:51
◼
►
I can detect what the system volume is
00:25:53
◼
►
at least so I can tell you if it's if I
00:25:56
◼
►
can I know if it's low like if the
00:25:58
◼
►
system volume is like 0.2 then I can at
00:26:01
◼
►
least know that and pop up a thing that
00:26:03
◼
►
says please adjust your volume in the
00:26:05
◼
►
now playing app or something like that
00:26:07
◼
►
like I can at least tell you I can't I
00:26:09
◼
►
can't do it for you yeah that still
00:26:11
◼
►
sucks like it's it still sucks that like
00:26:13
◼
►
the experience of this will suck but at
00:26:14
◼
►
least it's better than like it just
00:26:16
◼
►
being super low and the user of not
00:26:18
◼
►
really knowing why or having any idea of
00:26:20
◼
►
how to change the yeah and having no no
00:26:23
◼
►
mechanism for I want so badly for these
00:26:27
◼
►
like I would just
00:26:29
◼
►
the phone audio api is on the lawyers
00:26:32
◼
►
like why why don't we have I mean I mean
00:26:35
◼
►
I will say it reminds me in the best
00:26:38
◼
►
possible like both in a lovely and in a
00:26:40
◼
►
terrible way of all the development I
00:26:42
◼
►
did for with audio api's in an iPhone OS
00:26:46
◼
►
2 like way back what is that eight years
00:26:48
◼
►
ago like I was dealing with back then I
00:26:52
◼
►
mean I remember it was a massive deal
00:26:54
◼
►
like huge like applause during the
00:26:57
◼
►
keynote when when Steve Jobs was playing
00:27:01
◼
►
and playing of playing us playing a
00:27:03
◼
►
track in Pandora and then he hit the
00:27:06
◼
►
home button and it didn't stop playing
00:27:08
◼
►
yeah that was like rip-roaring applause
00:27:12
◼
►
for something that now seems like
00:27:15
◼
►
completely foolish like and I remember
00:27:16
◼
►
having to build all these crazy like
00:27:19
◼
►
there's still a setting in audio books
00:27:21
◼
►
auto resume playback on launch which at
00:27:26
◼
►
the time I was an important feature
00:27:27
◼
►
right now I get some people being like
00:27:29
◼
►
why would I want to do that like when I
00:27:31
◼
►
open the app why should just like
00:27:33
◼
►
immediately start playing it's like well
00:27:35
◼
►
back in the day you'd get a text message
00:27:37
◼
►
and you'd quit the app and it would stop
00:27:39
◼
►
playing your audio and you know you'd
00:27:41
◼
►
apply to your text message and you'd
00:27:42
◼
►
come back to the app and you have to
00:27:44
◼
►
respring the whole thing because there
00:27:45
◼
►
wasn't multitasking so it would restart
00:27:48
◼
►
the app from scratch and then you'd want
00:27:50
◼
►
to keep playing I'm like that was that
00:27:52
◼
►
was the world in which I had to be I had
00:27:54
◼
►
to build things and like for the phone
00:27:56
◼
►
Fiat the watch feels like the phone did
00:27:58
◼
►
you know eight years ago in the same
00:28:01
◼
►
room in that way yeah except by year
00:28:02
◼
►
three of the phone we had multitasking
00:28:07
◼
►
maybe this June maybe next year you know
00:28:09
◼
►
we just need to wait one recycle or 4.1
00:28:12
◼
►
maybe or 4.2 I don't know
00:28:14
◼
►
so this is show I think we just made a
00:28:17
◼
►
show an intentionally the accidental the
00:28:22
◼
►
accidental technical podcast I hear
00:28:25
◼
►
accidental podcasts are very successful
00:28:27
◼
►
so yeah maybe it's a good it's a good
00:28:29
◼
►
pivot for us Wow well thanks for
00:28:31
◼
►
listening everybody and we'll talk to
00:28:32
◼
►
you next week