Under the Radar 118: Original Research
◼
►
welcome to under the radar a show about
◼
►
independent iOS app development I'm
◼
►
Marco Arment and I'm David Smith under
◼
►
the radar is never longer than 30
◼
►
minutes so let's get started
◼
►
so this week as as is often the case I
◼
►
think when topics can come out of a
◼
►
current work that where did that do
◼
►
we're doing I feel like we tend to get
◼
►
the best topics and and this week's
◼
►
topic I think comes from work I'm doing
◼
►
currently in my Apsley plus plus which
◼
►
is a sleep tracker where I'm working on
◼
►
doing automatic sleep detection and
◼
►
sleep analysis which is a feature that
◼
►
I've long been along been asked for by
◼
►
my users but I've never hadn't quite
◼
►
quite gotten to and so I'm good for the
◼
►
last week or so this is what I've been
◼
►
working on and the process so far has
◼
►
been pretty promising that this is
◼
►
something that I'm going to be able to
◼
►
do but I think there's an interesting
◼
►
topic and a broader thing to talk about
◼
►
in just sort of generally talking about
◼
►
things that are kind of feel like
◼
►
original research or a primary research
◼
►
you could call it so often when we're
◼
►
developing something when we're making
◼
►
up an app or a product it's there's much
◼
►
of it that is is not new or novel in any
◼
►
real sense you know if you're you know
◼
►
the process of you know taking data
◼
►
putting it in a database taking that
◼
►
data out putting it in a table view like
◼
►
that there's nothing original and
◼
►
special there but and often if you want
◼
►
to have something at an app that's
◼
►
really compelling or has a hook to it
◼
►
you're going to have to do things that
◼
►
are beyond that and so in many ways you
◼
►
end up kind of doing this kind of
◼
►
research you kind of inventing something
◼
►
in a real sense of the word invention
◼
►
and not every app has to have this
◼
►
certainly but it is something that I've
◼
►
found that is good to have in your
◼
►
toolbox as something that you're not
◼
►
scared to try that if you have an idea
◼
►
about I wonder if I could do this kind
◼
►
of you know usually there's some kind of
◼
►
processing involved you know maybe it's
◼
►
image processing you're working on a
◼
►
camera app and you want to do some kind
◼
►
of image filters or an audio app and
◼
►
maybe you're doing some audio processing
◼
►
or in my case I'm doing you know I'm
◼
►
analyzing a user's movement and heart
◼
►
that kind of thing there's usually some
◼
►
kind of processing involved and doing
◼
►
this kind of research I think gives your
◼
►
app an advantage both in terms of it
◼
►
being more useful to your customers
◼
►
which is probably far more important
◼
►
that you know my goal with doing
◼
►
automatic sleep detection is that more
◼
►
people will track their sleep more often
◼
►
because they won't have to remember to
◼
►
start and stop the motion tracking like
◼
►
they do currently it'll just happen
◼
►
automatically which sounds great but
◼
►
it's also creates this nice little sort
◼
►
of competitive advantage that there's
◼
►
now this little moat around your app
◼
►
that anybody who wants to compete to
◼
►
feature by feature with you now has to
◼
►
go through and build it themselves they
◼
►
have to do that research they have to
◼
►
work out how to do it in fair enough
◼
►
it's easier the second time you know
◼
►
somebody looking at what you have done
◼
►
even if they'd never see your code or
◼
►
understand your methodology and simply
◼
►
knowing that a solution exists with a
◼
►
given set of inputs is you know a
◼
►
tremendous advantage versus the number
◼
►
of times that I've gone down a road
◼
►
where I'm like I wonder if I could and
◼
►
then I spend a week and I work on
◼
►
something and it doesn't work out and so
◼
►
I give up and that never sees the light
◼
►
of day it's easier knowing that a
◼
►
solution does exist but it's totally
◼
►
competitive advantage it's still a road
◼
►
that they have to go down and work that
◼
►
they have to have to do so it's an
◼
►
advantage in that regard and as I was
◼
►
working on my stuff I was thinking with
◼
►
you buy you Marco and how voice boosts
◼
►
and smart speed are two kind of similar
◼
►
types of things that weren't necessarily
◼
►
like your app was the first one to ever
◼
►
do them but the way that you've done
◼
►
them and the work that you did to you
◼
►
know to add those to your app is now
◼
►
this competitive advantage that you know
◼
►
you can sort of hold over your
◼
►
competitors yeah I mean I I've said
◼
►
before that I think kind of a recipe for
◼
►
a pretty good useful app that is kind of
◼
►
a good balance between diving in and
◼
►
spending a whole bunch of time on hard
◼
►
stuff nobody will ever notice versus
◼
►
being really basic and having no
◼
►
competitive advantage and having no
◼
►
compelling features I think a really
◼
►
good balance between those two is do
◼
►
or to hard things in your app and do
◼
►
everything else doesn't need to be like
◼
►
a hard impressive technical thing but if
◼
►
you have like one or two that can really
◼
►
make an app and you know for instant
◼
►
paper originally that was the text
◼
►
parser and later on I did like some
◼
►
Kindle stuff that was a little bit crazy
◼
►
and and like you know weird like things
◼
►
with pagination on the iPhone like but
◼
►
that was a relatively small number of
◼
►
features ultimately the the great value
◼
►
of that app was pretty boring stuff and
◼
►
then you know the text parser was like
◼
►
the big one and for overcast yeah I
◼
►
think smart speed and voice booster are
◼
►
pretty significant features that are you
◼
►
know that are hard and and you know
◼
►
require some some deep learning or not
◼
►
deep learning require like some deep
◼
►
knowledge of low-level audio
◼
►
manipulation and and audio mastering and
◼
►
stuff like that to really do that well
◼
►
and I had to learn a lot of that stuff
◼
►
and it was hard I happen to like that
◼
►
kind of hard work so it was it was fun
◼
►
for me and it still is fun and whenever
◼
►
I work on it today but that was really
◼
►
hard stuff I had to learn mostly by like
◼
►
Google searches and trial and error of
◼
►
things like DSP audio processing like
◼
►
how to do that and what I'm actually
◼
►
manipulating with the audio signals and
◼
►
and how not to do it and all the
◼
►
different ways to do it that make it
◼
►
sound crappy so I can avoid those ways
◼
►
and and eventually figuring out ways to
◼
►
do it that sound good or that that can't
◼
►
be noticed that that is all really hard
◼
►
work but I've always enjoyed like that
◼
►
kind of like low-level data work not
◼
►
necessarily in a sense like big data but
◼
►
like just like working like working them
◼
►
in low-level C functions on in
◼
►
performance in performance critical like
◼
►
large blocks of numbers and operations
◼
►
using things like the like the
◼
►
accelerate functions in iOS like I
◼
►
always like that stuff but if I spend
◼
►
all of my time doing that in overcast
◼
►
dial I would be unbalanced like you know
◼
►
right now like I'm kind of battling my
◼
►
in with my self-discipline what I really
◼
►
want to be working on a lot of the time
◼
►
is the work I'm doing for voice boost
◼
►
too which is just rarely voice boosts
◼
►
but just it's gonna sound better
◼
►
work better with more stuff and that's
◼
►
all this wonderful low-level stuff
◼
►
making my own audio processing functions
◼
►
and everything and it's gonna be it's
◼
►
it's exactly this kind of thing but what
◼
►
my customers actually want is not it's
◼
►
for me to make voice boos to for the
◼
►
most part but my customers really want
◼
►
is boring stuff like everybody wants me
◼
►
to give them like a smart playlist that
◼
►
shows all their starred items that's a
◼
►
really boring thing that I need to do
◼
►
because that's what they actually want
◼
►
most of the app is boring stuff like
◼
►
that like download management and you
◼
►
know basic you know UI for things I
◼
►
still don't have a way for people to
◼
►
change their email address on their
◼
►
account because it's stuff like that
◼
►
that's what people actually want so it's
◼
►
important at when you're doing like
◼
►
these kind of like cool fun like low
◼
►
level math type features or data
◼
►
analysis type features it's important to
◼
►
make sure you also keep that balance
◼
►
though of not spending too much of your
◼
►
time on it and as much as that this is
◼
►
kind of cynical but not wasting too much
◼
►
time on stuff that's really hard to
◼
►
market to people like one of the one of
◼
►
the reasons why a lot of people assume
◼
►
that overcast invented silence skipping
◼
►
and dynamic processing on podcasts is
◼
►
because I was the first one to figure
◼
►
out how to market those features to
◼
►
people and that like and a lot and that
◼
►
isn't just like you know dumping money
◼
►
into ads I didn't actually ever really
◼
►
do that like it not until recently have
◼
►
I tried that marketing that you know
◼
►
this kind of feature is about making
◼
►
sure people know it's there and telling
◼
►
them why it's so good in some way and so
◼
►
for these features like I gave them
◼
►
names that were not just like you know
◼
►
plain text descriptions I didn't say
◼
►
like shortened silences and I didn't say
◼
►
boost the volume or use a dynamics
◼
►
compressor like I didn't mean those
◼
►
features those things I gave them
◼
►
branded names I trademarked those names
◼
►
I put those names on everything
◼
►
I added features like it showed you how
◼
►
much time you had saved with the silent
◼
►
skipper feature because I need to show
◼
►
that when it's turned on they don't
◼
►
really notice is doing something for
◼
►
them and all of that was to help market
◼
►
these features that I spent a lot of
◼
►
time on this low level fun stuff because
◼
►
otherwise nobody would know they were
◼
►
there and the few people who would find
◼
►
them and turn them on wouldn't really
◼
►
understand how good they are because
◼
►
they're both kind of like subtle effects
◼
►
most of the time and so they both kind
◼
►
of like they help you out in a subtle
◼
►
way but if you don't know that if you're
◼
►
not being shown or told that in some
◼
►
compelling way then a lot of that effort
◼
►
is wasted and so it's very important
◼
►
when you're when you're planning these
◼
►
kind of features to make sure that a
◼
►
you're not spending too much time on
◼
►
them to the exclusion of features that
◼
►
people actually need or want more and be
◼
►
that you're not going to invest a ton of
◼
►
time into something like this that is
◼
►
unmarketable in some way like you have
◼
►
to include in your planning for features
◼
►
like this how you're going to
◼
►
communicate the existence and the value
◼
►
of these features to your customers yeah
◼
►
and I think what's cool is that once
◼
►
you've done that like if you work out a
◼
►
way to communicate to your customer that
◼
►
you do this you do some hard work you
◼
►
can find a way to communicate that to
◼
►
your customer you end up with a
◼
►
something that is really compelling in a
◼
►
weirdly insidious way that like I
◼
►
struggled to I feel bad if I listen to
◼
►
like a long-form audio without the
◼
►
silences removed now because that in my
◼
►
back of my mind I feel like I'm wasting
◼
►
time and so like that is a hook that you
◼
►
now have like placed in me that if I
◼
►
listen to something long form I will
◼
►
find a way to turn that into is
◼
►
something that I can listen to with
◼
►
something like smart speed just because
◼
►
it's now that's what I expect because
◼
►
you've wrapped it out you've wrapped up
◼
►
this kind of original like it's not
◼
►
original in the sense that you were the
◼
►
first person to come up with it but
◼
►
original in the sense that you had to do
◼
►
a lot of a hard low level work to make
◼
►
you don't just build it it's not just
◼
►
like av you're not just doing your ABA v
◼
►
player dot you know remove silence is
◼
►
that was the case I wish it was that
◼
►
easy like that would be great right but
◼
►
that's not the case you had to do all of
◼
►
this her whole cloth development to make
◼
►
it work I think now you have this great
◼
►
little advantage that you know it one of
◼
►
the things that would keep it keeps me
◼
►
an overcast rather than another podcast
◼
►
player is that I don't want to lose that
◼
►
the this thing that I now have and so
◼
►
it's this little mote that other people
◼
►
could certainly build it it's not like
◼
►
it's technically crazy to build a smart
◼
►
speed or to build build voice boost but
◼
►
it's you know building building an app
◼
►
in general is difficult and then taste
◼
►
tackling one of these features you know
◼
►
is also kind of hard so it's just this
◼
►
nice little it's it's undertaking one of
◼
►
these I think you're definitely right
◼
►
though be careful that you're like
◼
►
taking on something that you can show
◼
►
you can show you have something to show
◼
►
for at the end but if you do and it does
◼
►
make sense like it's a wonderful little
◼
►
it's a wonderful way to create value
◼
►
that is heart you know it's defensible
◼
►
rather than you know easily easily
◼
►
copied by somebody else but it's also
◼
►
it's important to also realize that like
◼
►
nothing is gonna be yours forever like
◼
►
overcast was the only mass-market
◼
►
podcast player that had these features
◼
►
for a while but now it isn't and in you
◼
►
know and it ever really was the absolute
◼
►
only one but it was it was you know the
◼
►
only like really mass-market one and now
◼
►
it's not and it's and more of them are
◼
►
gonna keep adding features like this
◼
►
like I had a couple good years there it
◼
►
bought me some time you know similar to
◼
►
like Apple with the iPhone launched the
◼
►
original iPhone and you know Steve
◼
►
famously said that it was five years
◼
►
ahead of the competition and that
◼
►
basically proved to be true it that was
◼
►
that was roughly correct like it took
◼
►
Android a long time to to reach like the
◼
►
minimum quality that the iPhone had you
◼
►
know years earlier and so it you know it
◼
►
buys you some time when you have
◼
►
something like this but not necessarily
◼
►
tons of time and it's definitely a
◼
►
limited amount like it it will it will
◼
►
end and so it's important not to rest on
◼
►
your laurels and and not to assume that
◼
►
something cool you do is going to be
◼
►
yours forever so maybe that's doing
◼
►
cooler things maybe that's finding other
◼
►
ways to remain competitive you know in
◼
►
in the future but you know keep in mind
◼
►
that you know when you're when you're
◼
►
deciding what to do when you're planning
◼
►
your app when you are trying to allocate
◼
►
time keep in mind again the value of
◼
►
these features will not last forever so
◼
►
let that inform how much time that you
◼
►
allocate to them anyway we are brought
◼
►
to you this week by Squarespace enter
◼
►
offer code radar at checkout to get 10%
◼
►
off your first purchase make your next
◼
►
move with Squarespace
◼
►
Squarespace lets you easily create a
◼
►
website for your next idea with a unique
◼
►
domain award-winning templates and much
◼
►
more whether you want to create an
◼
►
online store or a portfolio site or a
◼
►
blog or even a podcast Squarespace is an
◼
►
all-in-one platform that lets you do any
◼
►
of those things or all of those things
◼
►
there's nothing to install no patches or
◼
►
updates to worry about no upgrades to do
◼
►
you don't have to worry about any of
◼
►
that stuff because Squarespace has it
◼
►
covered and if there's anything that you
◼
►
need help with or if anything goes wrong
◼
►
they have award-winning 24/7 customer
◼
►
support if you need any help they let
◼
►
you quickly and easily grab a unique
◼
►
domain name and your getting started and
◼
►
all of these award-winning templates
◼
►
they have are beautifully designed for
◼
►
you to show off your great ideas and you
◼
►
can customize the template to your
◼
►
heart's content really make it yours
◼
►
Squarespace plans start at just $12 a
◼
►
month and you can start a free trial
◼
►
with no credit card required by going to
◼
►
when you sign up make sure to use the
◼
►
offer code radar to get 10% off your
◼
►
first purchase and show your support for
◼
►
we thank Squarespace for their support
◼
►
Squarespace make your next move make
◼
►
your next website so now that you
◼
►
decided that you're going to go down the
◼
►
road of doing some kind of an original
◼
►
research project to like add a new
◼
►
feature to your app I was thinking how
◼
►
do you say it's like it's like there's
◼
►
lots of different approaches I think you
◼
►
can take to something like that and one
◼
►
thing that I wanted to start off talking
◼
►
about is how when I do these types of
◼
►
things I always take a very guess you
◼
►
call it the empirical approach rather
◼
►
than the theoretical approach that I try
◼
►
and just you know I get in there and I
◼
►
just start to build things I try a lot
◼
►
of things and it's just experiment I try
◼
►
and generate a lot of data as best I can
◼
►
and then we will run you know run the
◼
►
test a test you know test cases through
◼
►
my system whatever it may be because I
◼
►
find that I'm just not very academic and
◼
►
I used to I think earlier in my career
◼
►
be intimidated about by the fact that I
◼
►
just wasn't particularly academic in
◼
►
that way that I'm not coming at it from
◼
►
a you know a theoretical approach that
◼
►
I'm then trying to work out how to
◼
►
implement ice in many ways I start with
◼
►
implementations I start with just like
◼
►
well let me see if this works well let
◼
►
me see if this works and I in theory a
◼
►
theoretical approach would help you get
◼
►
to the right solution more directly or
◼
►
at least in a more straightforward way
◼
►
but it would encourage anybody who
◼
►
doesn't have who's slightly intimidated
◼
►
by the feeling that oh man's like this
◼
►
needs to be super theoretical it's like
◼
►
maybe medium depending what you're
◼
►
working on but often a more direct
◼
►
empirical just like kind of where do
◼
►
your do your best approach will often
◼
►
get there and in my experience you know
◼
►
gets you gets you there well enough and
◼
►
can you know that allow you to create
◼
►
these features without needing a lot of
◼
►
theoretical knowledge without a lot of
◼
►
deep and potentially like the deep
◼
►
understanding you may not understand
◼
►
exactly why yeah particularly method is
◼
►
working but it can work for you and you
◼
►
know you could bargain with it that's
◼
►
good or not but I found it to work well
◼
►
so do you know just an encouragement it
◼
►
don't be don't be too scared of things
◼
►
if you can just sort of approach them
◼
►
more directly yeah I I too am pretty
◼
►
weak on the academic side I'm especially
◼
►
weak in in the advanced math really like
◼
►
things like you know calculus I really
◼
►
never took or I took it but failed it um
◼
►
you know most of the advanced like
◼
►
linear algebra stuff I have a very very
◼
►
weak understanding of really almost all
◼
►
advanced math I really just either never
◼
►
took in college and just never learned
◼
►
it afterwards or I took it and took it
◼
►
so poorly that I really just know
◼
►
so whenever I'm looking up online
◼
►
looking up some kind of algorithm and
◼
►
and I started to see the mathematic
◼
►
notation I'm just like ah crap I'm
◼
►
probably not gonna figure this out and
◼
►
sometimes like try and plow through and
◼
►
the simpler ones I can I can kind of
◼
►
work out like the pseudocode of how to
◼
►
do in my language that I know what there
◼
►
trying to tell me how to do but like you
◼
►
know once something comes to like oh you
◼
►
have to read these academic papers to
◼
►
understand how to do this algorithm or
◼
►
something that's usually when I bail out
◼
►
because I try sometimes but it's I can't
◼
►
usually get through them and so what I
◼
►
do with with a lot of my approaches to
◼
►
like these hard you know math or data
◼
►
problems is really fairly simple things
◼
►
like I I'm pretty good at coming up with
◼
►
just all semi I'll stop my head coming
◼
►
up with some kind of heuristic of like
◼
►
oh maybe if I you know look for this
◼
►
pattern and I give it this some kind of
◼
►
like wait in a scoring you know
◼
►
algorithm that maybe this will be better
◼
►
and sometimes that works most of the
◼
►
time it doesn't but occasionally I get
◼
►
something out of it that that is pretty
◼
►
useful and and that's that's how I tend
◼
►
to do that these kind of things it's
◼
►
it's basically like trial and error to
◼
►
develop some kind of heuristic or
◼
►
algorithm that is really not a very
◼
►
mathematically advanced algorithm it's
◼
►
really just like you know large amounts
◼
►
of dumb math large amounts of like basic
◼
►
arithmetic that I can do but you don't
◼
►
need necessarily an advanced knowledge
◼
►
of you know sophisticated math and you
◼
►
know the more advanced stuff that being
◼
►
said I do think my lack of knowledge
◼
►
there holds me back to some degree like
◼
►
there's a lot of you know statistical
◼
►
methods things like you know especially
◼
►
when dealing with things like large data
◼
►
sets dealing with things like data
◼
►
clustering and and you know statistical
◼
►
analysis of large pools of data I
◼
►
basically don't understand any of that
◼
►
and that is holding me back to some
◼
►
degree so I do want to want to get
◼
►
better at some of that stuff but
◼
►
ultimately you don't necessarily need to
◼
►
if you if you can't or don't want to
◼
►
like you can get pretty far without the
◼
►
knowledge of some of that advanced math
◼
►
stuff yeah and the thing that's key
◼
►
there is that you can your solution may
◼
►
not be optimal but you may get a
◼
►
solution I mean it's sort of in a weird
◼
►
way it makes me think of how like if you
◼
►
don't under if you didn't understand
◼
►
what multiplication was but you knew how
◼
►
to do addition you could still end up
◼
►
you're writing for loop the best
◼
►
sure right like which is obviously kind
◼
►
of like a trivial example of this but
◼
►
that is often I think the approach that
◼
►
the impression that I have is that often
◼
►
my approach is repeated addition
◼
►
rather than multiplication because I
◼
►
don't understand the higher concept but
◼
►
you don't get it like like I still end
◼
►
up with 20 with 4 so you know 4 times 5
◼
►
I just may even add the fact that I add
◼
►
5 to itself 4 times versus just enough
◼
►
to do it directly with multiplication
◼
►
that's less efficient but this is the
◼
►
answer the same is still 20 and I'm like
◼
►
computers are so fast even on our phones
◼
►
and our watches like micro processors
◼
►
theses are just so ridiculously fast
◼
►
that for a lot of problems like this
◼
►
even if you just have kind of like a
◼
►
brute force solution or even if it's
◼
►
like an imprecise solution that is
◼
►
probably both fast enough and good
◼
►
enough for a lot of times yeah and so
◼
►
you know it's it's it's which is an
◼
►
encouragement that it's like yeah it's
◼
►
like you did you it's okay and that's
◼
►
like that's fine and it's you know as
◼
►
with any all out of these kind of
◼
►
discussions you can get into like is it
◼
►
well well is it certainly better is it
◼
►
more efficient to have this have a more
◼
►
theoretical approach or fundamental
◼
►
understanding of course but you know if
◼
►
in order to gain that level of
◼
►
understanding you almost certainly have
◼
►
to be spend a lot more time and you know
◼
►
like like to become an expert in that
◼
►
area is gonna take a lot of time and be
◼
►
a lot of distractions away from other
◼
►
things so it may not be worth getting
◼
►
that level of understanding so you know
◼
►
just worth worth keeping in mind yep
◼
►
definitely um in terms of the actual
◼
►
building of these things I think it
◼
►
seemed worth to actually sort of diving
◼
►
into the way that the approach that I've
◼
►
taken I'll talk to my recent example
◼
►
with automatic sleep tracking where so
◼
►
you know I'm gonna add this to an app my
◼
►
usual approach is to create a completely
◼
►
separate app I've try and then
◼
►
eventually it'll end up being a branch
◼
►
in the main ow but usually I just create
◼
►
a completely new app that has none of
◼
►
the overhead and none of the other
◼
►
things going on and mostly I do that
◼
►
because then I can just kind of if it
◼
►
goes if I go down if I go down a bad
◼
►
line of thinking and it just ends up in
◼
►
a dead end I can just throw it away and
◼
►
start again and it's it's easier I find
◼
►
me to just kind of have the Super's
◼
►
focused lightweight app you know I don't
◼
►
need to go to a particular place in the
◼
►
app like often I end up doing stuff just
◼
►
in the you know view did finish
◼
►
launching like it's basically a command
◼
►
line app just running on an iPhone like
◼
►
I end up doing that kind of thing where
◼
►
you make it as quick and as simple as
◼
►
possible and it's focused in on exactly
◼
►
what the problem is now I find that to
◼
►
be a very helpful approach I tend to do
◼
►
my work there to validate that the you
◼
►
know is that something is possible and
◼
►
then I'll start to work on how will I
◼
►
take that and turn it into the you know
◼
►
the final version and that first version
◼
►
I have no consideration at all to code
◼
►
quality often I will completely throw
◼
►
that code away I will just repeat you
◼
►
know how we'll end up reimplemented it
◼
►
just using all the lessons I learned
◼
►
from all of that throwaway code but by
◼
►
taking such a quick and dirty approach
◼
►
to it it means that I can work much more
◼
►
quickly and iterate on it that I don't
◼
►
need to feel like you know I'm writing
◼
►
code that is going to end up needing to
◼
►
be production quality you know I can
◼
►
ignore all the errors I can just sort of
◼
►
make it so that it just works on exactly
◼
►
what I'm trying to do you know and so in
◼
►
this case I have yeah hadn't had us you
◼
►
know built a separate app that you know
◼
►
tries to automatically detect and
◼
►
analyze you know lease lease leaked data
◼
►
out of all the various health inputs
◼
►
that we have and I just sat there and
◼
►
iterated on and that until I got it to
◼
►
work and then now I'm going through the
◼
►
process of actually you know turning
◼
►
that understanding and the data that I
◼
►
can get out of that yeah completely
◼
►
reimplemented from from scratch that all
◼
►
those algorithms and methods that I came
◼
►
up with again in this case was actually
◼
►
slightly amusing because I built my
◼
►
prototype app in Swift and then my
◼
►
supposed suppes plus is an objective-c
◼
►
app and so I was I was going to be
◼
►
implemented anyway and it actually kind
◼
►
of worked well to keep me from being
◼
►
lazy and just copy pasting things that I
◼
►
actually went through and had to be
◼
►
thoughtful in that translation from the
◼
►
prototype app to the actual app to make
◼
►
sure that I'm actually taking care of
◼
►
all the edge cases and things but that's
◼
►
an approach that I find works pretty
◼
►
well and then once you can get it into
◼
►
the app then you can actually start
◼
►
you sort of start working through the
◼
►
actual you know making it of a higher
◼
►
quality but I find you're doing it as
◼
►
developing and prototyping in a separate
◼
►
app and then graduate and then moving in
◼
►
once you kind of have the basics worked
◼
►
out works pretty well for me so and I'm
◼
►
curious you know because I think it goes
◼
►
back to are like you know competitive
◼
►
advantage argument earlier why are you
◼
►
at in this feature mostly because I
◼
►
think it makes the app better and I
◼
►
think I wish I I wish I did it and I
◼
►
know I often hear from people who use my
◼
►
competitors app because they do it and
◼
►
so and it turned out to be much easier
◼
►
than I thought it was gonna be I had in
◼
►
my mind it was gonna be really hard and
◼
►
so I've been putting off working on it
◼
►
and I because I have a lot of existing
◼
►
sleep data calculated my old method I
◼
►
was able to much more quickly I think
◼
►
work out and work out a way to process
◼
►
all this data and end up with very
◼
►
similar results because I could just
◼
►
kind of try lots of things and I could
◼
►
very quickly see if it worked or worked
◼
►
or wasn't gonna work and I think it will
◼
►
you know it's a competitive advantage
◼
►
and I know it's a feature that I will
◼
►
use myself you know the ability to have
◼
►
your Apple watch just track your sleep
◼
►
without all you have to do is wear it
◼
►
while you sleep and then it's all taken
◼
►
care of and so I think it's an advantage
◼
►
in that regard because you'll actually
◼
►
use the app more because right now you
◼
►
have to remember to use it which is
◼
►
always difficult yeah and that makes a
◼
►
lot of sense like that that obviously is
◼
►
a compelling feature and you know i-i've
◼
►
heard podcast when people talk about how
◼
►
you know they're comparing your app to
◼
►
one of the competitors that there's
◼
►
automatic stuff and like and I thought
◼
►
oh that sounds compelling but you know I
◼
►
too would have assumed that was really
◼
►
hard and that's also kind of a you know
◼
►
another I think it may be good close
◼
►
note here is like a lot of the like if
◼
►
you're a developer and and you think of
◼
►
or you see some other app that that you
◼
►
know or you know you were to think of a
◼
►
feature that you want to do that sounds
◼
►
really hard or impossible try it because
◼
►
it might not be like I first thought
◼
►
that you know like that doing pagination
◼
►
and Instapaper would be really hard and
◼
►
it turned out it really wasn't i'm
◼
►
similar like if you think like oh you
◼
►
know i would love to do this kind of
◼
►
analysis on you know some feature in
◼
►
with but with data but the iphone
◼
►
probably can't handle it it's probably
◼
►
to computationally intensive try it
◼
►
because it might not be yeah that's
◼
►
another area where I've found like I
◼
►
always assume that oh maybe I I probably
◼
►
can't do things like run a live FFT on
◼
►
the audio stream without having a big
◼
►
battery impact and the answer so a lot
◼
►
of times is nope you totally can it's
◼
►
totally fine the device is really fast
◼
►
these days yeah and it's just kind of a
◼
►
nice thing to be like there is something
◼
►
just really fun and encouraging when you
◼
►
hit on something that you thought would
◼
►
be really hard that actually turned out
◼
►
to not be crazy hard and like that was a
◼
►
really fun thing and it speaks to
◼
►
actually the last thing I want to
◼
►
mention too is I've found tremendously
◼
►
valuable as quickly as I can working out
◼
►
how to visualize the problem that I'm
◼
►
working on in a way that I can see
◼
►
rather than just like data that's you
◼
►
know being NS logged out to the console
◼
►
that's a good time so in a lot in like
◼
►
in a lot of my apps like in this book in
◼
►
this case with you know sleep tracking
◼
►
there's a lot it's essentially it's very
◼
►
timeline based you know I'm looking at a
◼
►
variety of inputs over time and so I
◼
►
just have a really simple app or a view
◼
►
controller that just has a has a scroll
◼
►
view in it and all of the data points
◼
►
that I have on it I just create a UI
◼
►
view and they throw it into it which is
◼
►
horrific aliy you know unperformed I
◼
►
have like 10,000 UI views in one scroll
◼
►
view it's fine there's better ways to do
◼
►
graphing you know like actually doing
◼
►
pagination and stuff so I'm only
◼
►
rendering the stuff that I need to but
◼
►
like it's fine it's in this purse iPad
◼
►
but visualizing it making it so that I
◼
►
can see the connections and like in this
◼
►
case it was you know I ended up
◼
►
visualizing the outputs of my first
◼
►
first couple of attempts and aligning
◼
►
them with the outputs of my previous
◼
►
method and they lined up perfectly and I
◼
►
was like well this works well that's
◼
►
and so visualizing that as quickly as
◼
►
you can it's just some that I can't
◼
►
emphasize enough that and I know you
◼
►
know something I think I saw you were
◼
►
talking about with your your voice boost
◼
►
to stuff you do the same thing but like
◼
►
as soon as you can see it it's both
◼
►
motive motivating in terms of
◼
►
encouraging you that you're on the right
◼
►
track as well as you know very quickly
◼
►
showing you the areas that aren't
◼
►
working and the things you need to
◼
►
change exactly it makes a huge
◼
►
difference yeah anyway so go forth do
◼
►
research try and you know not be
◼
►
intimidated by things do you think are
◼
►
too hard and see no see what you can
◼
►
come up with because I think if you can
◼
►
come up with these things like and it
◼
►
turns out that they're easier than you
◼
►
thought maybe like you can make it you
◼
►
can create it creates a tremendous value
◼
►
in your app that I think you know as
◼
►
especially if you as a smaller team or
◼
►
as a smaller developer there is an
◼
►
immense advantage to having these little
◼
►
things that are hooks that are marketing
◼
►
lines that are reasons why someone might
◼
►
want to try your app versus something
◼
►
Thanks listening everybody I'm gonna
◼
►
talk to you next week bye