Under the Radar

Under the Radar 118: Original Research


00:00:00   welcome to under the radar a show about

00:00:01   independent iOS app development I'm

00:00:03   Marco Arment and I'm David Smith under

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

00:00:07   minutes so let's get started

00:00:09   so this week as as is often the case I

00:00:13   think when topics can come out of a

00:00:15   current work that where did that do

00:00:17   we're doing I feel like we tend to get

00:00:19   the best topics and and this week's

00:00:20   topic I think comes from work I'm doing

00:00:23   currently in my Apsley plus plus which

00:00:25   is a sleep tracker where I'm working on

00:00:28   doing automatic sleep detection and

00:00:31   sleep analysis which is a feature that

00:00:33   I've long been along been asked for by

00:00:35   my users but I've never hadn't quite

00:00:38   quite gotten to and so I'm good for the

00:00:40   last week or so this is what I've been

00:00:42   working on and the process so far has

00:00:44   been pretty promising that this is

00:00:46   something that I'm going to be able to

00:00:47   do but I think there's an interesting

00:00:49   topic and a broader thing to talk about

00:00:51   in just sort of generally talking about

00:00:54   things that are kind of feel like

00:00:55   original research or a primary research

00:00:57   you could call it so often when we're

00:01:00   developing something when we're making

00:01:02   up an app or a product it's there's much

00:01:06   of it that is is not new or novel in any

00:01:09   real sense you know if you're you know

00:01:11   the process of you know taking data

00:01:14   putting it in a database taking that

00:01:15   data out putting it in a table view like

00:01:18   that there's nothing original and

00:01:20   special there but and often if you want

00:01:24   to have something at an app that's

00:01:25   really compelling or has a hook to it

00:01:28   you're going to have to do things that

00:01:30   are beyond that and so in many ways you

00:01:33   end up kind of doing this kind of

00:01:34   research you kind of inventing something

00:01:36   in a real sense of the word invention

00:01:39   and not every app has to have this

00:01:43   certainly but it is something that I've

00:01:44   found that is good to have in your

00:01:47   toolbox as something that you're not

00:01:48   scared to try that if you have an idea

00:01:51   about I wonder if I could do this kind

00:01:53   of you know usually there's some kind of

00:01:55   processing involved you know maybe it's

00:01:57   image processing you're working on a

00:01:58   camera app and you want to do some kind

00:02:00   of image filters or an audio app and

00:02:02   maybe you're doing some audio processing

00:02:04   or in my case I'm doing you know I'm

00:02:06   analyzing a user's movement and heart

00:02:09   rate and

00:02:10   that kind of thing there's usually some

00:02:12   kind of processing involved and doing

00:02:15   this kind of research I think gives your

00:02:17   app an advantage both in terms of it

00:02:21   being more useful to your customers

00:02:23   which is probably far more important

00:02:24   that you know my goal with doing

00:02:26   automatic sleep detection is that more

00:02:28   people will track their sleep more often

00:02:31   because they won't have to remember to

00:02:33   start and stop the motion tracking like

00:02:35   they do currently it'll just happen

00:02:37   automatically which sounds great but

00:02:40   it's also creates this nice little sort

00:02:42   of competitive advantage that there's

00:02:44   now this little moat around your app

00:02:46   that anybody who wants to compete to

00:02:49   feature by feature with you now has to

00:02:51   go through and build it themselves they

00:02:55   have to do that research they have to

00:02:56   work out how to do it in fair enough

00:03:00   it's easier the second time you know

00:03:01   somebody looking at what you have done

00:03:05   even if they'd never see your code or

00:03:07   understand your methodology and simply

00:03:09   knowing that a solution exists with a

00:03:12   given set of inputs is you know a

00:03:14   tremendous advantage versus the number

00:03:16   of times that I've gone down a road

00:03:17   where I'm like I wonder if I could and

00:03:19   then I spend a week and I work on

00:03:20   something and it doesn't work out and so

00:03:22   I give up and that never sees the light

00:03:24   of day it's easier knowing that a

00:03:26   solution does exist but it's totally

00:03:28   competitive advantage it's still a road

00:03:29   that they have to go down and work that

00:03:31   they have to have to do so it's an

00:03:34   advantage in that regard and as I was

00:03:36   working on my stuff I was thinking with

00:03:37   you buy you Marco and how voice boosts

00:03:40   and smart speed are two kind of similar

00:03:43   types of things that weren't necessarily

00:03:45   like your app was the first one to ever

00:03:47   do them but the way that you've done

00:03:48   them and the work that you did to you

00:03:51   know to add those to your app is now

00:03:53   this competitive advantage that you know

00:03:56   you can sort of hold over your

00:03:58   competitors yeah I mean I I've said

00:04:01   before that I think kind of a recipe for

00:04:04   a pretty good useful app that is kind of

00:04:07   a good balance between diving in and

00:04:10   spending a whole bunch of time on hard

00:04:11   stuff nobody will ever notice versus

00:04:13   being really basic and having no

00:04:15   competitive advantage and having no

00:04:16   compelling features I think a really

00:04:18   good balance between those two is do

00:04:20   like

00:04:22   or to hard things in your app and do

00:04:25   everything else doesn't need to be like

00:04:26   a hard impressive technical thing but if

00:04:28   you have like one or two that can really

00:04:31   make an app and you know for instant

00:04:34   paper originally that was the text

00:04:35   parser and later on I did like some

00:04:38   Kindle stuff that was a little bit crazy

00:04:39   and and like you know weird like things

00:04:42   with pagination on the iPhone like but

00:04:44   that was a relatively small number of

00:04:45   features ultimately the the great value

00:04:47   of that app was pretty boring stuff and

00:04:51   then you know the text parser was like

00:04:53   the big one and for overcast yeah I

00:04:55   think smart speed and voice booster are

00:04:57   pretty significant features that are you

00:05:00   know that are hard and and you know

00:05:02   require some some deep learning or not

00:05:05   deep learning require like some deep

00:05:07   knowledge of low-level audio

00:05:09   manipulation and and audio mastering and

00:05:12   stuff like that to really do that well

00:05:13   and I had to learn a lot of that stuff

00:05:17   and it was hard I happen to like that

00:05:19   kind of hard work so it was it was fun

00:05:21   for me and it still is fun and whenever

00:05:23   I work on it today but that was really

00:05:26   hard stuff I had to learn mostly by like

00:05:29   Google searches and trial and error of

00:05:32   things like DSP audio processing like

00:05:36   how to do that and what I'm actually

00:05:38   manipulating with the audio signals and

00:05:40   and how not to do it and all the

00:05:42   different ways to do it that make it

00:05:43   sound crappy so I can avoid those ways

00:05:45   and and eventually figuring out ways to

00:05:47   do it that sound good or that that can't

00:05:50   be noticed that that is all really hard

00:05:54   work but I've always enjoyed like that

00:05:57   kind of like low-level data work not

00:05:59   necessarily in a sense like big data but

00:06:01   like just like working like working them

00:06:03   in low-level C functions on in

00:06:05   performance in performance critical like

00:06:08   large blocks of numbers and operations

00:06:11   using things like the like the

00:06:13   accelerate functions in iOS like I

00:06:15   always like that stuff but if I spend

00:06:18   all of my time doing that in overcast

00:06:19   dial I would be unbalanced like you know

00:06:23   right now like I'm kind of battling my

00:06:25   in with my self-discipline what I really

00:06:28   want to be working on a lot of the time

00:06:29   is the work I'm doing for voice boost

00:06:31   too which is just rarely voice boosts

00:06:34   but just it's gonna sound better

00:06:35   work better with more stuff and that's

00:06:39   all this wonderful low-level stuff

00:06:40   making my own audio processing functions

00:06:43   and everything and it's gonna be it's

00:06:45   it's exactly this kind of thing but what

00:06:48   my customers actually want is not it's

00:06:52   for me to make voice boos to for the

00:06:54   most part but my customers really want

00:06:56   is boring stuff like everybody wants me

00:06:58   to give them like a smart playlist that

00:07:00   shows all their starred items that's a

00:07:03   really boring thing that I need to do

00:07:05   because that's what they actually want

00:07:07   most of the app is boring stuff like

00:07:09   that like download management and you

00:07:12   know basic you know UI for things I

00:07:14   still don't have a way for people to

00:07:15   change their email address on their

00:07:16   account because it's stuff like that

00:07:19   that's what people actually want so it's

00:07:22   important at when you're doing like

00:07:24   these kind of like cool fun like low

00:07:26   level math type features or data

00:07:27   analysis type features it's important to

00:07:29   make sure you also keep that balance

00:07:31   though of not spending too much of your

00:07:34   time on it and as much as that this is

00:07:37   kind of cynical but not wasting too much

00:07:40   time on stuff that's really hard to

00:07:42   market to people like one of the one of

00:07:45   the reasons why a lot of people assume

00:07:48   that overcast invented silence skipping

00:07:50   and dynamic processing on podcasts is

00:07:53   because I was the first one to figure

00:07:54   out how to market those features to

00:07:56   people and that like and a lot and that

00:08:00   isn't just like you know dumping money

00:08:02   into ads I didn't actually ever really

00:08:04   do that like it not until recently have

00:08:07   I tried that marketing that you know

00:08:10   this kind of feature is about making

00:08:13   sure people know it's there and telling

00:08:16   them why it's so good in some way and so

00:08:19   for these features like I gave them

00:08:21   names that were not just like you know

00:08:24   plain text descriptions I didn't say

00:08:25   like shortened silences and I didn't say

00:08:28   boost the volume or use a dynamics

00:08:31   compressor like I didn't mean those

00:08:33   features those things I gave them

00:08:35   branded names I trademarked those names

00:08:37   I put those names on everything

00:08:40   I added features like it showed you how

00:08:43   much time you had saved with the silent

00:08:45   skipper feature because I need to show

00:08:48   people that this

00:08:49   that when it's turned on they don't

00:08:51   really notice is doing something for

00:08:53   them and all of that was to help market

00:08:58   these features that I spent a lot of

00:09:00   time on this low level fun stuff because

00:09:02   otherwise nobody would know they were

00:09:04   there and the few people who would find

00:09:06   them and turn them on wouldn't really

00:09:09   understand how good they are because

00:09:10   they're both kind of like subtle effects

00:09:13   most of the time and so they both kind

00:09:16   of like they help you out in a subtle

00:09:17   way but if you don't know that if you're

00:09:19   not being shown or told that in some

00:09:22   compelling way then a lot of that effort

00:09:24   is wasted and so it's very important

00:09:28   when you're when you're planning these

00:09:29   kind of features to make sure that a

00:09:31   you're not spending too much time on

00:09:34   them to the exclusion of features that

00:09:37   people actually need or want more and be

00:09:40   that you're not going to invest a ton of

00:09:41   time into something like this that is

00:09:42   unmarketable in some way like you have

00:09:44   to include in your planning for features

00:09:47   like this how you're going to

00:09:49   communicate the existence and the value

00:09:52   of these features to your customers yeah

00:09:55   and I think what's cool is that once

00:09:57   you've done that like if you work out a

00:09:58   way to communicate to your customer that

00:10:01   you do this you do some hard work you

00:10:04   can find a way to communicate that to

00:10:05   your customer you end up with a

00:10:07   something that is really compelling in a

00:10:10   weirdly insidious way that like I

00:10:13   struggled to I feel bad if I listen to

00:10:16   podcast type

00:10:18   like a long-form audio without the

00:10:21   silences removed now because that in my

00:10:23   back of my mind I feel like I'm wasting

00:10:25   time and so like that is a hook that you

00:10:28   now have like placed in me that if I

00:10:29   listen to something long form I will

00:10:31   find a way to turn that into is

00:10:34   something that I can listen to with

00:10:36   something like smart speed just because

00:10:38   it's now that's what I expect because

00:10:41   you've wrapped it out you've wrapped up

00:10:42   this kind of original like it's not

00:10:44   original in the sense that you were the

00:10:47   first person to come up with it but

00:10:48   original in the sense that you had to do

00:10:50   a lot of a hard low level work to make

00:10:52   it happen

00:10:53   you don't just build it it's not just

00:10:54   like av you're not just doing your ABA v

00:10:57   player dot you know remove silence is

00:11:01   equal true like

00:11:02   that was the case I wish it was that

00:11:04   easy like that would be great right but

00:11:06   that's not the case you had to do all of

00:11:08   this her whole cloth development to make

00:11:10   it work I think now you have this great

00:11:12   little advantage that you know it one of

00:11:15   the things that would keep it keeps me

00:11:16   an overcast rather than another podcast

00:11:18   player is that I don't want to lose that

00:11:21   the this thing that I now have and so

00:11:23   it's this little mote that other people

00:11:25   could certainly build it it's not like

00:11:26   it's technically crazy to build a smart

00:11:29   speed or to build build voice boost but

00:11:31   it's you know building building an app

00:11:33   in general is difficult and then taste

00:11:35   tackling one of these features you know

00:11:38   is also kind of hard so it's just this

00:11:40   nice little it's it's undertaking one of

00:11:43   these I think you're definitely right

00:11:44   though be careful that you're like

00:11:45   taking on something that you can show

00:11:47   you can show you have something to show

00:11:48   for at the end but if you do and it does

00:11:50   make sense like it's a wonderful little

00:11:53   it's a wonderful way to create value

00:11:56   that is heart you know it's defensible

00:11:58   rather than you know easily easily

00:12:00   copied by somebody else but it's also

00:12:02   it's important to also realize that like

00:12:04   nothing is gonna be yours forever like

00:12:06   overcast was the only mass-market

00:12:09   podcast player that had these features

00:12:11   for a while but now it isn't and in you

00:12:15   know and it ever really was the absolute

00:12:16   only one but it was it was you know the

00:12:18   only like really mass-market one and now

00:12:21   it's not and it's and more of them are

00:12:24   gonna keep adding features like this

00:12:26   like I had a couple good years there it

00:12:28   bought me some time you know similar to

00:12:30   like Apple with the iPhone launched the

00:12:31   original iPhone and you know Steve

00:12:33   famously said that it was five years

00:12:35   ahead of the competition and that

00:12:36   basically proved to be true it that was

00:12:38   that was roughly correct like it took

00:12:40   Android a long time to to reach like the

00:12:42   minimum quality that the iPhone had you

00:12:44   know years earlier and so it you know it

00:12:47   buys you some time when you have

00:12:49   something like this but not necessarily

00:12:52   tons of time and it's definitely a

00:12:53   limited amount like it it will it will

00:12:55   end and so it's important not to rest on

00:12:58   your laurels and and not to assume that

00:13:00   something cool you do is going to be

00:13:02   yours forever so maybe that's doing

00:13:05   cooler things maybe that's finding other

00:13:07   ways to remain competitive you know in

00:13:10   in the future but you know keep in mind

00:13:13   that you know when you're when you're

00:13:14   deciding what to do when you're planning

00:13:16   out

00:13:16   your app when you are trying to allocate

00:13:19   time keep in mind again the value of

00:13:20   these features will not last forever so

00:13:23   let that inform how much time that you

00:13:25   allocate to them anyway we are brought

00:13:29   to you this week by Squarespace enter

00:13:31   offer code radar at checkout to get 10%

00:13:33   off your first purchase make your next

00:13:35   move with Squarespace

00:13:37   Squarespace lets you easily create a

00:13:39   website for your next idea with a unique

00:13:41   domain award-winning templates and much

00:13:43   more whether you want to create an

00:13:45   online store or a portfolio site or a

00:13:47   blog or even a podcast Squarespace is an

00:13:51   all-in-one platform that lets you do any

00:13:53   of those things or all of those things

00:13:55   there's nothing to install no patches or

00:13:58   updates to worry about no upgrades to do

00:14:00   you don't have to worry about any of

00:14:01   that stuff because Squarespace has it

00:14:04   covered and if there's anything that you

00:14:06   need help with or if anything goes wrong

00:14:07   they have award-winning 24/7 customer

00:14:10   support if you need any help they let

00:14:12   you quickly and easily grab a unique

00:14:14   domain name and your getting started and

00:14:15   all of these award-winning templates

00:14:17   they have are beautifully designed for

00:14:19   you to show off your great ideas and you

00:14:21   can customize the template to your

00:14:23   heart's content really make it yours

00:14:25   Squarespace plans start at just $12 a

00:14:28   month and you can start a free trial

00:14:30   with no credit card required by going to

00:14:33   Squarespace com

00:14:34   when you sign up make sure to use the

00:14:35   offer code radar to get 10% off your

00:14:37   first purchase and show your support for

00:14:39   under the radar

00:14:40   we thank Squarespace for their support

00:14:42   Squarespace make your next move make

00:14:44   your next website so now that you

00:14:48   decided that you're going to go down the

00:14:49   road of doing some kind of an original

00:14:51   research project to like add a new

00:14:53   feature to your app I was thinking how

00:14:55   do you say it's like it's like there's

00:14:58   lots of different approaches I think you

00:14:59   can take to something like that and one

00:15:01   thing that I wanted to start off talking

00:15:02   about is how when I do these types of

00:15:05   things I always take a very guess you

00:15:08   call it the empirical approach rather

00:15:10   than the theoretical approach that I try

00:15:14   and just you know I get in there and I

00:15:17   just start to build things I try a lot

00:15:19   of things and it's just experiment I try

00:15:22   and generate a lot of data as best I can

00:15:24   and then we will run you know run the

00:15:28   test a test you know test cases through

00:15:31   my system whatever it may be because I

00:15:34   find that I'm just not very academic and

00:15:36   I used to I think earlier in my career

00:15:40   be intimidated about by the fact that I

00:15:42   just wasn't particularly academic in

00:15:44   that way that I'm not coming at it from

00:15:45   a you know a theoretical approach that

00:15:49   I'm then trying to work out how to

00:15:51   implement ice in many ways I start with

00:15:54   implementations I start with just like

00:15:55   well let me see if this works well let

00:15:57   me see if this works and I in theory a

00:16:00   theoretical approach would help you get

00:16:02   to the right solution more directly or

00:16:05   at least in a more straightforward way

00:16:06   but it would encourage anybody who

00:16:09   doesn't have who's slightly intimidated

00:16:11   by the feeling that oh man's like this

00:16:14   needs to be super theoretical it's like

00:16:15   maybe medium depending what you're

00:16:18   working on but often a more direct

00:16:20   empirical just like kind of where do

00:16:23   your do your best approach will often

00:16:24   get there and in my experience you know

00:16:27   gets you gets you there well enough and

00:16:28   can you know that allow you to create

00:16:31   these features without needing a lot of

00:16:33   theoretical knowledge without a lot of

00:16:34   deep and potentially like the deep

00:16:36   understanding you may not understand

00:16:37   exactly why yeah particularly method is

00:16:40   working but it can work for you and you

00:16:42   know you could bargain with it that's

00:16:44   good or not but I found it to work well

00:16:45   so do you know just an encouragement it

00:16:47   don't be don't be too scared of things

00:16:50   if you can just sort of approach them

00:16:52   more directly yeah I I too am pretty

00:16:55   weak on the academic side I'm especially

00:16:57   weak in in the advanced math really like

00:17:00   things like you know calculus I really

00:17:03   never took or I took it but failed it um

00:17:06   you know most of the advanced like

00:17:07   linear algebra stuff I have a very very

00:17:10   weak understanding of really almost all

00:17:12   advanced math I really just either never

00:17:15   took in college and just never learned

00:17:17   it afterwards or I took it and took it

00:17:19   so poorly that I really just know

00:17:21   nothing about it

00:17:21   so whenever I'm looking up online

00:17:24   looking up some kind of algorithm and

00:17:26   and I started to see the mathematic

00:17:27   notation I'm just like ah crap I'm

00:17:30   probably not gonna figure this out and

00:17:32   sometimes like try and plow through and

00:17:34   the simpler ones I can I can kind of

00:17:36   work out like the pseudocode of how to

00:17:38   do in my language that I know what there

00:17:42   trying to tell me how to do but like you

00:17:44   know once something comes to like oh you

00:17:46   have to read these academic papers to

00:17:48   understand how to do this algorithm or

00:17:50   something that's usually when I bail out

00:17:52   because I try sometimes but it's I can't

00:17:56   usually get through them and so what I

00:17:59   do with with a lot of my approaches to

00:18:01   like these hard you know math or data

00:18:02   problems is really fairly simple things

00:18:05   like I I'm pretty good at coming up with

00:18:08   just all semi I'll stop my head coming

00:18:10   up with some kind of heuristic of like

00:18:12   oh maybe if I you know look for this

00:18:14   pattern and I give it this some kind of

00:18:16   like wait in a scoring you know

00:18:19   algorithm that maybe this will be better

00:18:20   and sometimes that works most of the

00:18:24   time it doesn't but occasionally I get

00:18:25   something out of it that that is pretty

00:18:27   useful and and that's that's how I tend

00:18:29   to do that these kind of things it's

00:18:31   it's basically like trial and error to

00:18:34   develop some kind of heuristic or

00:18:36   algorithm that is really not a very

00:18:39   mathematically advanced algorithm it's

00:18:41   really just like you know large amounts

00:18:44   of dumb math large amounts of like basic

00:18:46   arithmetic that I can do but you don't

00:18:51   need necessarily an advanced knowledge

00:18:54   of you know sophisticated math and you

00:18:57   know the more advanced stuff that being

00:18:59   said I do think my lack of knowledge

00:19:01   there holds me back to some degree like

00:19:04   there's a lot of you know statistical

00:19:06   methods things like you know especially

00:19:09   when dealing with things like large data

00:19:10   sets dealing with things like data

00:19:12   clustering and and you know statistical

00:19:15   analysis of large pools of data I

00:19:17   basically don't understand any of that

00:19:18   and that is holding me back to some

00:19:21   degree so I do want to want to get

00:19:23   better at some of that stuff but

00:19:24   ultimately you don't necessarily need to

00:19:27   if you if you can't or don't want to

00:19:29   like you can get pretty far without the

00:19:31   knowledge of some of that advanced math

00:19:33   stuff yeah and the thing that's key

00:19:36   there is that you can your solution may

00:19:38   not be optimal but you may get a

00:19:40   solution I mean it's sort of in a weird

00:19:43   way it makes me think of how like if you

00:19:47   don't under if you didn't understand

00:19:48   what multiplication was but you knew how

00:19:50   to do addition you could still end up

00:19:52   with the same result

00:19:53   you're writing for loop the best

00:19:55   sure right like which is obviously kind

00:19:57   of like a trivial example of this but

00:19:59   that is often I think the approach that

00:20:01   the impression that I have is that often

00:20:04   my approach is repeated addition

00:20:06   rather than multiplication because I

00:20:07   don't understand the higher concept but

00:20:09   you don't get it like like I still end

00:20:12   up with 20 with 4 so you know 4 times 5

00:20:15   I just may even add the fact that I add

00:20:17   5 to itself 4 times versus just enough

00:20:20   to do it directly with multiplication

00:20:21   that's less efficient but this is the

00:20:23   answer the same is still 20 and I'm like

00:20:25   computers are so fast even on our phones

00:20:27   and our watches like micro processors

00:20:30   theses are just so ridiculously fast

00:20:32   that for a lot of problems like this

00:20:35   even if you just have kind of like a

00:20:37   brute force solution or even if it's

00:20:40   like an imprecise solution that is

00:20:42   probably both fast enough and good

00:20:44   enough for a lot of times yeah and so

00:20:47   you know it's it's it's which is an

00:20:49   encouragement that it's like yeah it's

00:20:50   like you did you it's okay and that's

00:20:52   like that's fine and it's you know as

00:20:54   with any all out of these kind of

00:20:55   discussions you can get into like is it

00:20:57   well well is it certainly better is it

00:20:58   more efficient to have this have a more

00:21:00   theoretical approach or fundamental

00:21:02   understanding of course but you know if

00:21:05   in order to gain that level of

00:21:07   understanding you almost certainly have

00:21:09   to be spend a lot more time and you know

00:21:13   like like to become an expert in that

00:21:15   area is gonna take a lot of time and be

00:21:17   a lot of distractions away from other

00:21:19   things so it may not be worth getting

00:21:21   that level of understanding so you know

00:21:23   just worth worth keeping in mind yep

00:21:25   definitely um in terms of the actual

00:21:27   building of these things I think it

00:21:29   seemed worth to actually sort of diving

00:21:30   into the way that the approach that I've

00:21:32   taken I'll talk to my recent example

00:21:36   with automatic sleep tracking where so

00:21:39   you know I'm gonna add this to an app my

00:21:41   usual approach is to create a completely

00:21:44   separate app I've try and then

00:21:46   eventually it'll end up being a branch

00:21:48   in the main ow but usually I just create

00:21:50   a completely new app that has none of

00:21:53   the overhead and none of the other

00:21:54   things going on and mostly I do that

00:21:57   because then I can just kind of if it

00:22:00   goes if I go down if I go down a bad

00:22:02   line of thinking and it just ends up in

00:22:04   a dead end I can just throw it away and

00:22:05   start again and it's it's easier I find

00:22:08   me to just kind of have the Super's

00:22:10   focused lightweight app you know I don't

00:22:12   need to go to a particular place in the

00:22:13   app like often I end up doing stuff just

00:22:16   in the you know view did finish

00:22:17   launching like it's basically a command

00:22:19   line app just running on an iPhone like

00:22:21   I end up doing that kind of thing where

00:22:23   you make it as quick and as simple as

00:22:26   possible and it's focused in on exactly

00:22:28   what the problem is now I find that to

00:22:31   be a very helpful approach I tend to do

00:22:33   my work there to validate that the you

00:22:35   know is that something is possible and

00:22:38   then I'll start to work on how will I

00:22:40   take that and turn it into the you know

00:22:43   the final version and that first version

00:22:44   I have no consideration at all to code

00:22:48   quality often I will completely throw

00:22:51   that code away I will just repeat you

00:22:53   know how we'll end up reimplemented it

00:22:54   just using all the lessons I learned

00:22:56   from all of that throwaway code but by

00:22:59   taking such a quick and dirty approach

00:23:01   to it it means that I can work much more

00:23:03   quickly and iterate on it that I don't

00:23:05   need to feel like you know I'm writing

00:23:07   code that is going to end up needing to

00:23:09   be production quality you know I can

00:23:11   ignore all the errors I can just sort of

00:23:14   make it so that it just works on exactly

00:23:16   what I'm trying to do you know and so in

00:23:18   this case I have yeah hadn't had us you

00:23:20   know built a separate app that you know

00:23:22   tries to automatically detect and

00:23:25   analyze you know lease lease leaked data

00:23:28   out of all the various health inputs

00:23:30   that we have and I just sat there and

00:23:32   iterated on and that until I got it to

00:23:34   work and then now I'm going through the

00:23:35   process of actually you know turning

00:23:38   that understanding and the data that I

00:23:40   can get out of that yeah completely

00:23:41   reimplemented from from scratch that all

00:23:45   those algorithms and methods that I came

00:23:46   up with again in this case was actually

00:23:49   slightly amusing because I built my

00:23:51   prototype app in Swift and then my

00:23:54   supposed suppes plus is an objective-c

00:23:56   app and so I was I was going to be

00:24:00   implemented anyway and it actually kind

00:24:01   of worked well to keep me from being

00:24:02   lazy and just copy pasting things that I

00:24:04   actually went through and had to be

00:24:06   thoughtful in that translation from the

00:24:09   prototype app to the actual app to make

00:24:11   sure that I'm actually taking care of

00:24:12   all the edge cases and things but that's

00:24:15   an approach that I find works pretty

00:24:17   well and then once you can get it into

00:24:19   the app then you can actually start

00:24:21   you sort of start working through the

00:24:23   actual you know making it of a higher

00:24:25   quality but I find you're doing it as

00:24:28   developing and prototyping in a separate

00:24:29   app and then graduate and then moving in

00:24:31   once you kind of have the basics worked

00:24:33   out works pretty well for me so and I'm

00:24:36   curious you know because I think it goes

00:24:37   back to are like you know competitive

00:24:39   advantage argument earlier why are you

00:24:41   at in this feature mostly because I

00:24:44   think it makes the app better and I

00:24:46   think I wish I I wish I did it and I

00:24:49   know I often hear from people who use my

00:24:51   competitors app because they do it and

00:24:54   so and it turned out to be much easier

00:24:58   than I thought it was gonna be I had in

00:25:00   my mind it was gonna be really hard and

00:25:02   so I've been putting off working on it

00:25:03   and I because I have a lot of existing

00:25:08   sleep data calculated my old method I

00:25:10   was able to much more quickly I think

00:25:13   work out and work out a way to process

00:25:15   all this data and end up with very

00:25:17   similar results because I could just

00:25:19   kind of try lots of things and I could

00:25:21   very quickly see if it worked or worked

00:25:23   or wasn't gonna work and I think it will

00:25:25   you know it's a competitive advantage

00:25:26   and I know it's a feature that I will

00:25:28   use myself you know the ability to have

00:25:30   your Apple watch just track your sleep

00:25:32   without all you have to do is wear it

00:25:34   while you sleep and then it's all taken

00:25:36   care of and so I think it's an advantage

00:25:38   in that regard because you'll actually

00:25:39   use the app more because right now you

00:25:42   have to remember to use it which is

00:25:43   always difficult yeah and that makes a

00:25:46   lot of sense like that that obviously is

00:25:48   a compelling feature and you know i-i've

00:25:49   heard podcast when people talk about how

00:25:51   you know they're comparing your app to

00:25:53   one of the competitors that there's

00:25:54   automatic stuff and like and I thought

00:25:56   oh that sounds compelling but you know I

00:25:57   too would have assumed that was really

00:25:59   hard and that's also kind of a you know

00:26:00   another I think it may be good close

00:26:02   note here is like a lot of the like if

00:26:04   you're a developer and and you think of

00:26:06   or you see some other app that that you

00:26:08   know or you know you were to think of a

00:26:10   feature that you want to do that sounds

00:26:11   really hard or impossible try it because

00:26:15   it might not be like I first thought

00:26:17   that you know like that doing pagination

00:26:19   and Instapaper would be really hard and

00:26:22   it turned out it really wasn't i'm

00:26:24   similar like if you think like oh you

00:26:26   know i would love to do this kind of

00:26:27   analysis on you know some feature in

00:26:30   with but with data but the iphone

00:26:33   probably can't handle it it's probably

00:26:34   like you know to but

00:26:35   to computationally intensive try it

00:26:37   because it might not be yeah that's

00:26:40   another area where I've found like I

00:26:41   always assume that oh maybe I I probably

00:26:44   can't do things like run a live FFT on

00:26:47   the audio stream without having a big

00:26:49   battery impact and the answer so a lot

00:26:52   of times is nope you totally can it's

00:26:54   totally fine the device is really fast

00:26:55   these days yeah and it's just kind of a

00:26:58   nice thing to be like there is something

00:27:02   just really fun and encouraging when you

00:27:04   hit on something that you thought would

00:27:06   be really hard that actually turned out

00:27:07   to not be crazy hard and like that was a

00:27:09   really fun thing and it speaks to

00:27:11   actually the last thing I want to

00:27:13   mention too is I've found tremendously

00:27:14   valuable as quickly as I can working out

00:27:17   how to visualize the problem that I'm

00:27:19   working on in a way that I can see

00:27:21   rather than just like data that's you

00:27:23   know being NS logged out to the console

00:27:26   that's a good time so in a lot in like

00:27:28   in a lot of my apps like in this book in

00:27:30   this case with you know sleep tracking

00:27:31   there's a lot it's essentially it's very

00:27:33   timeline based you know I'm looking at a

00:27:35   variety of inputs over time and so I

00:27:37   just have a really simple app or a view

00:27:40   controller that just has a has a scroll

00:27:42   view in it and all of the data points

00:27:44   that I have on it I just create a UI

00:27:46   view and they throw it into it which is

00:27:48   horrific aliy you know unperformed I

00:27:50   have like 10,000 UI views in one scroll

00:27:52   view it's fine there's better ways to do

00:27:56   graphing you know like actually doing

00:27:58   pagination and stuff so I'm only

00:28:00   rendering the stuff that I need to but

00:28:01   like it's fine it's in this purse iPad

00:28:04   but visualizing it making it so that I

00:28:05   can see the connections and like in this

00:28:07   case it was you know I ended up

00:28:09   visualizing the outputs of my first

00:28:11   first couple of attempts and aligning

00:28:13   them with the outputs of my previous

00:28:15   method and they lined up perfectly and I

00:28:17   was like well this works well that's

00:28:19   amazing

00:28:20   and so visualizing that as quickly as

00:28:23   you can it's just some that I can't

00:28:25   emphasize enough that and I know you

00:28:27   know something I think I saw you were

00:28:29   talking about with your your voice boost

00:28:30   to stuff you do the same thing but like

00:28:32   as soon as you can see it it's both

00:28:34   motive motivating in terms of

00:28:36   encouraging you that you're on the right

00:28:37   track as well as you know very quickly

00:28:39   showing you the areas that aren't

00:28:42   working and the things you need to

00:28:42   change exactly it makes a huge

00:28:44   difference yeah anyway so go forth do

00:28:48   some

00:28:49   research try and you know not be

00:28:52   intimidated by things do you think are

00:28:53   too hard and see no see what you can

00:28:55   come up with because I think if you can

00:28:56   come up with these things like and it

00:28:58   turns out that they're easier than you

00:28:59   thought maybe like you can make it you

00:29:01   can create it creates a tremendous value

00:29:03   in your app that I think you know as

00:29:06   especially if you as a smaller team or

00:29:09   as a smaller developer there is an

00:29:10   immense advantage to having these little

00:29:12   things that are hooks that are marketing

00:29:14   lines that are reasons why someone might

00:29:17   want to try your app versus something

00:29:19   else

00:29:20   Thanks listening everybody I'm gonna

00:29:22   talk to you next week bye