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: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: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: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
◼
►
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: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: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:20
◼
►
Thanks listening everybody I'm gonna
00:29:22
◼
►
talk to you next week bye