PodSearch

Under the Radar

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:07 ◼   ► on

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:20 ◼   ► came to was

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:56 ◼   ► forward

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 ◼   ► yourself

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 ◼   ► too low

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