Under the Radar 7: Building New Features
◼
►
welcome to under the radar a show about
◼
►
independent iOS 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 today what we
◼
►
wanted to kind of unpack is the process
◼
►
that we go through when we're building a
◼
►
feature out in an app it's not like the
◼
►
whole app itself like starting from I
◼
►
have this you know have this vague idea
◼
►
for something and now let's go like go
◼
►
to Xcode and start a new project but as
◼
►
you know as a product as an app
◼
►
developed and gets better over time
◼
►
you're going to inevitably have these
◼
►
little like huh here's this feature I
◼
►
have here's this thing that I want to do
◼
►
and I want to you know to add it in and
◼
►
the way in which you go about that is
◼
►
something that is requires a different
◼
►
kind of level of concern or planned
◼
►
fulness then you're just starting from
◼
►
scratch because obviously you're
◼
►
smashing it into an existing piece bit
◼
►
of code and also just the constraints
◼
►
around what you're doing are different
◼
►
and recently I ran into something where
◼
►
I thought it was an interesting kind of
◼
►
progression that I found that I was
◼
►
going through I mean I was adding a
◼
►
feature to sleep plus plus which is my
◼
►
Apple watch sleep tracker basically I
◼
►
wanted to be able to you record your
◼
►
night's activity and you end up with
◼
►
like a graph of how well you slept and
◼
►
people asked feature I got many many
◼
►
times like I want to be able to trim the
◼
►
night at the end of the at the end of
◼
►
you know it says if I wake up in the
◼
►
morning and I don't stop it right when I
◼
►
wake up I wanted to say actually I woke
◼
►
up at this time seems a very reasonable
◼
►
feature the thing that I found was
◼
►
interesting is I went through the
◼
►
process of building this out and so it's
◼
►
like now it's basically a part of the
◼
►
app is I tend to go kind of I start off
◼
►
with like huh that's an interesting idea
◼
►
how would I build that and then I kind
◼
►
of I tend to work a little bit like from
◼
►
the bottom up and the top down when I'm
◼
►
working on a feature like this which is
◼
►
seemed kind of funny like I started the
◼
►
data level and start being like what
◼
►
data would I need to record how would I
◼
►
record that what migrations do I need to
◼
►
do in my database what changes will I
◼
►
have to make there and I start building
◼
►
the basic structure for that on the
◼
►
bottom and then I start on the top top
◼
►
down in a really simplistic way like I
◼
►
start off with what's the UI going to
◼
►
look like but I don't actually build
◼
►
that UI I just take whatever stock
◼
►
control I can find like I think in this
◼
►
case I took a UI slider threw it into
◼
►
that up to that apply to transform to it
◼
►
cuz I needed it to slide vertically so I
◼
►
just like rotated it by 90 degrees and
◼
►
that was my basic control eventually I
◼
►
ended up replacing that with a whole
◼
►
custom UI and all kinds of things like
◼
►
that but starting in that sort of top
◼
►
down as simple as I can on the UI side
◼
►
and then as robust as I can on the
◼
►
bottom side is something that it seems
◼
►
to work for me and it's an approach
◼
►
though that I found that if like if I
◼
►
don't if I can't end up with something
◼
►
that I can use and can start playing
◼
►
with quickly that's why I sort of the
◼
►
top down is important from like just
◼
►
really basic simple UI I really struggle
◼
►
with actually getting things done did
◼
►
you have a similar experience for me it
◼
►
like any any feature that I that I want
◼
►
I always just build it as quickly as I
◼
►
can and start using it myself and you
◼
►
know my process or like we talked a
◼
►
little bit about betas in previous
◼
►
episodes and everything my process for
◼
►
forward testing out features is really I
◼
►
just test them out myself for as long as
◼
►
I can before I show them to anybody else
◼
►
at all before I even said into beta
◼
►
testers usually like you know an
◼
►
overcast I mentioned last in last
◼
►
episode I mentioned that that voice
◼
►
boost started out as as having different
◼
►
levels it was not just an honour and off
◼
►
switch it actually had multiple modes
◼
►
and I lived with that for months before
◼
►
I showed anybody else before the beta
◼
►
started and everything and and I really
◼
►
I did a similar thing I mean like you
◼
►
know my UI for controlling these things
◼
►
is mostly just stock UI kit I very
◼
►
rarely make custom controls or what I do
◼
►
they're usually pretty lightweight
◼
►
subclasses of the built-in buttons and
◼
►
labels and sliders and stuff like that
◼
►
or I you know they might just be like a
◼
►
slight wrapper with like with one of
◼
►
those as a subview and then and and you
◼
►
know like a few of the labels here and
◼
►
there but for the most part I'm using
◼
►
mostly stock stuff because you can get
◼
►
really really far with stock components
◼
►
in a UI kit especially with all the all
◼
►
the custom appearance stuff that they've
◼
►
added in the last few OS versions really
◼
►
I have found very little reason to to
◼
►
really build out tons of custom control
◼
►
stuff and and I've instead focused on
◼
►
like just skinning UI kit well and so
◼
►
yeah and so when I when I build these
◼
►
voice boost as I mentioned it used to be
◼
►
it used to have four levels
◼
►
it used to be off reduce enhance and
◼
►
boost and I went I was about to launch
◼
►
with this I really thought this was
◼
►
gonna be what I launched with and I had
◼
►
rationales for all of them
◼
►
so the reduce mode would actually cut
◼
►
off it was actually a high-pass and
◼
►
low-pass filter it would actually cut
◼
►
off big chunks of the top and bottom end
◼
►
for podcasts that were produced with
◼
►
flaws with either way too much bass or
◼
►
sometimes sometimes a lot of sometimes
◼
►
podcasts would have like very high
◼
►
pitched noise and so I thought a reduced
◼
►
move would actually be useful and then
◼
►
and in the the volume boosting modes I
◼
►
actually had to I had enhance and boost
◼
►
and it was just two different degrees of
◼
►
the same thing really of the the EQ and
◼
►
the compression and with boost being a
◼
►
much more aggressive compression setting
◼
►
what I found in the beta was people were
◼
►
very confused by this because it just
◼
►
labeled dynamics reduce off enhanced
◼
►
boost like okay what does dynamics mean
◼
►
you know somebody who is not an audio
◼
►
engineer is that referring to motion
◼
►
like what it was it was a very confusing
◼
►
thing people were confused as to why
◼
►
they would ever want to reduce the
◼
►
dynamics of something and between
◼
►
enhance and boost well what does that
◼
►
mean is this like enhanced like CSI
◼
►
where you're uncovering detail that is
◼
►
magically there somehow you know and it
◼
►
doesn't really communicate that
◼
►
enhancing booster basically two
◼
►
different dynamics of the same thing it
◼
►
was a very confusing feature and I
◼
►
didn't you know I mentioned last time I
◼
►
didn't see the confusing aspect of it
◼
►
because I made it and so I knew what it
◼
►
was I didn't have to explain to myself
◼
►
what it was my tester started started
◼
►
seeing this and seeing that it was
◼
►
probably you know not ideal one day
◼
►
during testing I I just mocked up a
◼
►
quick little thing where I realized that
◼
►
I was just leaving it in boost most of
◼
►
the time because after trying to there
◼
►
options here and there during
◼
►
I discovered that boost was just the
◼
►
best one and that's the way I wanted to
◼
►
leave almost everything like I almost
◼
►
never wanted any of the other options so
◼
►
that's when I decided you know what I'll
◼
►
solve two problems I'll solve the the
◼
►
intuitiveness problem and and the UI
◼
►
understandability problem with what this
◼
►
and you know I don't actually want these
◼
►
other modes you know in practice I find
◼
►
out this isn't that important so I'll
◼
►
cut I'll cut those features I'll make it
◼
►
it's either boost on or off and I call
◼
►
it voice boost mostly because it wasn't
◼
►
being next to smart speed so it needed
◼
►
two words because it would look weird if
◼
►
it only had one this is how I make
◼
►
future decisions important yeah yeah and
◼
►
and and that's how that feature came to
◼
►
be and I'll see if I can put a link in
◼
►
the show notes of I always take
◼
►
screenshots along the way of designing
◼
►
the app and so I had this whole history
◼
►
of like how the app looked in various
◼
►
stages of development and who all
◼
►
prototyping various features and so I
◼
►
actually have a screen shot of it with
◼
►
these four features and I'll show you
◼
►
the effects pane with this and then you
◼
►
can you can see like how the one I went
◼
►
with with just the two big buttons was
◼
►
so much simpler that's a lot of very
◼
►
long-winded way of saying that I I kind
◼
►
of evolve features as much as I can both
◼
►
using it myself and then showing beta
◼
►
testers before I before they ever get to
◼
►
the public and I think it's very
◼
►
important not only to to have that
◼
►
process when adding features but also to
◼
►
really consider like you know if I had
◼
►
if I had released this the way I
◼
►
originally I originally had it with
◼
►
these four different options and then
◼
►
later decided what I decided are in the
◼
►
data that you know this actually she
◼
►
don't really just be one thing then
◼
►
that's a feature removal to a lot of
◼
►
people who use the other ones and then
◼
►
and you got to go into that very
◼
►
carefully and I'm not one to avoid
◼
►
I have often angered people by removing
◼
►
features but it is it is a lot harder to
◼
►
remove features politically after you've
◼
►
already shipped them to people so I
◼
►
think one thing to also consider is like
◼
►
how do you remove a feature from an app
◼
►
and how do you how does that how do you
◼
►
decide when to do that when is the right
◼
►
time to do that and and how do you
◼
►
manage user expectations and user
◼
►
yeah and I think it also speaks a little
◼
►
bit to one of the something that you
◼
►
have to get you're used to is that you
◼
►
are inevitably going to build features
◼
►
that won't ship that you're gonna build
◼
►
stuff that ultimately just doesn't work
◼
►
out and I think there's a certain amount
◼
►
of just like distancing yourself from
◼
►
your work enough that you can
◼
►
look at it like I feel definitely gone
◼
►
on this path where I'm thinking hey this
◼
►
is hey this would be an awesome new
◼
►
feature and especially this is dangerous
◼
►
when it's a really interesting technical
◼
►
problem mmm like I think I have this
◼
►
really cool solution to a problem I'd go
◼
►
down this go down the path and I started
◼
►
adding though these features and it's
◼
►
like building it all out
◼
►
and you get to the end and you're just
◼
►
like it's a really interesting salute to
◼
►
a solution to a problem that people
◼
►
don't actually have or it makes the gap
◼
►
really harder to understand or more
◼
►
complicated or less intuitive and at the
◼
►
end being able to say like you know I
◼
►
just need to throw this away like that
◼
►
was that's a dead end
◼
►
like that is just not gonna go anywhere
◼
►
and in like having done that now so many
◼
►
times where I'll create this you know
◼
►
create this branch go down it and then
◼
►
end up deciding that this is actually
◼
►
not gonna work I'm just gonna throw it
◼
►
away is definitely an encouragement and
◼
►
a reminder to not spend too much time on
◼
►
things to in terms of trying to quickly
◼
►
get to a point that you can really
◼
►
evaluate how useful something is because
◼
►
it's there's so many things that in my
◼
►
sound like they'll be really cool and
◼
►
really fun and when you implement them
◼
►
like don't really aren't actually as
◼
►
useful as you think or the the more like
◼
►
good and bad situation is when you'll
◼
►
show it to somebody and like they'll
◼
►
you're sure you'll give them something
◼
►
to react to and their response is like
◼
►
huh that's interesting why doesn't it
◼
►
just do this and they make it sort of
◼
►
like there's this like that clarifying
◼
►
simplification that you're just not
◼
►
seeing because you're deep down in the
◼
►
weeds of the coolness of the feature or
◼
►
what like in this petit on this
◼
►
particular track and it turns out a much
◼
►
better solution is it's like in this
◼
►
case with with voice boosts it's like
◼
►
you're the dynamics and things I think
◼
►
are it's like it's really these are
◼
►
really interesting and optioned
◼
►
interesting options that you could kind
◼
►
of go down but at the end it's like
◼
►
really what people want is to make it
◼
►
louder so they can hear voices clearer
◼
►
and so you just need on and off and
◼
►
that's probably but good enough and you
◼
►
have to be willing to say like you know
◼
►
all the other stuff that I was doing
◼
►
like the really sophisticated dynamic
◼
►
maybe I just don't ship that because
◼
►
it's just gonna make it more confusing
◼
►
rather than actually better for most
◼
►
people right because that was it was
◼
►
exactly the kind of thing where like it
◼
►
was technically interesting it was
◼
►
technically impressive you know not
◼
►
a lot of podcast apps have enhanced
◼
►
dynamics and and EQ controls and
◼
►
everything so it was it was like a cool
◼
►
thing to do if I would have shipped that
◼
►
because I it was kind of like showing
◼
►
my audio engine and my audio
◼
►
manipulation skills I guess but in
◼
►
reality that was really just showing off
◼
►
for my benefit and and it wasn't hot
◼
►
like it was actually me it would be
◼
►
making the app worse to ship it that way
◼
►
because it was more confusing because as
◼
►
you said like not a lot of people really
◼
►
had that problem very often not even I
◼
►
had the problem often enough to use my
◼
►
own feature very much so it's it really
◼
►
does take a lot of editing and I feel
◼
►
like there's there's a good balance to
◼
►
be struck here between but the way I do
◼
►
it I move pretty slowly and like you
◼
►
know with streaming like I was I had
◼
►
streaming working to to varying degrees
◼
►
of work probably three months before I
◼
►
shipped it but I wanted that very long
◼
►
testing period because I wanted to be
◼
►
very conservative with it they have a
◼
►
lot of time just using it on my own
◼
►
phone before I even gave it to testers
◼
►
let alone to the public and at the on
◼
►
the other side the other extreme of this
◼
►
of like the the feature deployment speed
◼
►
here is kind of like they get the kind
◼
►
of like continuous release paradigm
◼
►
where you just kind of ship something
◼
►
out there as quickly as you possibly can
◼
►
as soon as you have the idea for it and
◼
►
see if it takes maybe do some a be
◼
►
testing or you know see what people's
◼
►
reactions are I feel like the the the
◼
►
better balance is somewhere in the
◼
►
middle of those things I feel like I
◼
►
move too slowly the way I do things but
◼
►
something like that where you're
◼
►
constantly adding or moving things it
◼
►
makes it first of all it makes it harder
◼
►
to remove things but and second of all I
◼
►
think I think you you increase the the
◼
►
annoyance rate of your users like when
◼
►
you do things like when Twitter rolls
◼
►
out a new feature and it goes out to a
◼
►
random subset of people first and
◼
►
everyone else hears about it like wait
◼
►
why don't I have this or why is my
◼
►
timeline all of a sudden different or
◼
►
you know why does this not work the way
◼
►
I expected to and everyone else's works
◼
►
fine these two extremes of like when how
◼
►
often you ship things how how much
◼
►
testing you do internally versus just
◼
►
ship into the public and seeing what
◼
►
they think first there is a healthy
◼
►
balance to be struck between those two
◼
►
extremes I haven't started but III think
◼
►
I would rather be on the if unbalance in
◼
►
I think I'd rather be unbalanced in the
◼
►
direction that I am which is on the on
◼
►
the side of being too conservative and
◼
►
too slow because ultimately I want my
◼
►
app to always have a reputation of being
◼
►
carefully considered yeah and I think
◼
►
honestly that the app store itself is
◼
►
structured such that you can't do
◼
►
continuous release in a in a functional
◼
►
way because your app it always has to go
◼
►
through a preview which can take a
◼
►
non-deterministic amount of time at
◼
►
least about a week and you have to be
◼
►
able to you can only ship things to the
◼
►
store that you can live with for at
◼
►
least a week probably which depending on
◼
►
which were the kind of change that
◼
►
you're rolling out and the significance
◼
►
of it or like if there's a problem with
◼
►
it if you have to have a certain amount
◼
►
of conservatism to make sure that you're
◼
►
not putting something out there that is
◼
►
going to be very problematic for your
◼
►
product that if for a week it's horribly
◼
►
broken or really confusing like you
◼
►
can't just change that you know could
◼
►
like continuous deployment and things
◼
►
works great for an app like a web app or
◼
►
something that you can change in real
◼
►
time or in many earth-like if you're in
◼
►
the Google Play Store for example you
◼
►
can do something like that a lot more
◼
►
there because you can bro out updates
◼
►
more quickly but in general it's
◼
►
definitely something that you have to be
◼
►
thoughtful about and understand that
◼
►
it's going to like this is going to go
◼
►
out and you have no control over
◼
►
necessarily when someone's going to be
◼
►
able to change and so I mean you can
◼
►
certainly go down the crazy roads where
◼
►
you Bill have like a be testing built
◼
►
into your app and it has multiple code
◼
►
paths and things but that just seems
◼
►
like a nightmare to me but it's
◼
►
definitely something that I think I'm
◼
►
more on the release things quicker
◼
►
approach that like I tend to bite off
◼
►
nice small things focus on them get them
◼
►
like working and then put it out there
◼
►
and in general I think that seems to
◼
►
work for me and I think mostly of
◼
►
something that even it's just an
◼
►
attention span thing look I really
◼
►
struggle to like when I hear you talked
◼
►
about working on features for months
◼
►
like that is really intimidating to me
◼
►
because I think I would lose interest
◼
►
and once I got it so like once I get
◼
►
something working all the crazy edge
◼
►
cases are harder for me to have the
◼
►
discipline to track down and so I tend
◼
►
just focus and simplify the problem down
◼
►
to a point vet oh look all the edge
◼
►
cases seem to have sort of fallen off as
◼
►
best I can which is a different kind of
◼
►
approach but I found kind of works for
◼
►
me well I mean that's honestly that's
◼
►
probably the more healthy approach is
◼
►
you know to ship something that is that
◼
►
is smaller but complete and chip that
◼
►
faster rather than wait until you have
◼
►
something that is complete but is big
◼
►
and sprawling and that there then and
◼
►
then that takes six months you know like
◼
►
that yeah I think your approach there's
◼
►
probably the healthier one yeah but it
◼
►
requires I guess some of it too and
◼
►
maybe is its it's the interesting thing
◼
►
of trying to decide a most interesting
◼
►
direction to ship the conversation to is
◼
►
how do you tell me how we decide what
◼
►
features to add I think is it really
◼
►
interest it's like it's a very
◼
►
complicated set of variables that I find
◼
►
that I'm balancing for these days where
◼
►
on the one hand you have the desire to
◼
►
make something good to ship a good
◼
►
product to ship software that's useful
◼
►
that people like you have the constraint
◼
►
and that you're trying to optimize for
◼
►
around like business model and business
◼
►
plan like well adding this feature
◼
►
increase the number of people who are
◼
►
using my app or paying for my app or in
◼
►
some way contributing to the bottom line
◼
►
in my business is this feature something
◼
►
that's going to motivate me and make me
◼
►
interested and trying to balance the
◼
►
sort of attention between those is I
◼
►
think more definitely more art than
◼
►
science because there's not at least at
◼
►
least I haven't found a good way to
◼
►
really know that other than just like
◼
►
this feels right like every now and then
◼
►
I'll get asked by people you know like
◼
►
how do I plan releases like how do I
◼
►
said do I sit down like not like I
◼
►
wanted to do like some kind of waterfall
◼
►
think but do I have like a big release
◼
►
plan like you would you probably need to
◼
►
have if you were trying to apply a team
◼
►
of developers onto something and it's
◼
►
like I tend to just sit down and look at
◼
►
my apps and be like what could be made
◼
►
what would I enjoy building well that
◼
►
and then think about huh I suppose that
◼
►
might make people like the app more and
◼
►
then go with it but then you're also
◼
►
more often than not I'll look at an app
◼
►
and be like the apps kind of done like
◼
►
maybe I should just leave it and work on
◼
►
you know move on to the next step and I
◼
►
guess that's why I end up with so many
◼
►
like trying to decide what features
◼
►
worth actually doing is really hard
◼
►
deciding when an app is is basically
◼
►
done or doesn't need massive attention
◼
►
for at least a little while that is a
◼
►
skill that that I think iOS developers
◼
►
need and many of us myself included
◼
►
often don't do it right or don't have
◼
►
that skill because the economics of iOS
◼
►
are such that you really do have a much
◼
►
better chance of success if you have
◼
►
multiple apps and the the additional
◼
►
value that you will get sales wise or
◼
►
money wise the additional value you will
◼
►
get out of doing a big feature update to
◼
►
an existing app might not be worth the
◼
►
effort that it will require to be put
◼
►
into that to do and a lot of a lot of
◼
►
people want the the the model of just
◼
►
having one app that they work on forever
◼
►
well not forever but the you know one
◼
►
app that they pour tons of time into
◼
►
polishing everything up and and being
◼
►
able to live off just that one app and
◼
►
that is that is very rare to actually
◼
►
have that in the App Store and and to be
◼
►
successful at that not because you know
◼
►
Apple is is keeping us all down or
◼
►
anything but because in most cases most
◼
►
apps you hit you hit a wall of
◼
►
diminishing returns where like the most
◼
►
people's needs are satisfied by it who
◼
►
will find it and who will want it and
◼
►
who will pay for most people's need to
◼
►
get satisfied pretty early on in
◼
►
development and then you're just kind of
◼
►
like adding stuff just really for your
◼
►
benefit trying to make the app better to
◼
►
boost sales or to get more press at some
◼
►
point or get it to get upgrade revenue
◼
►
maybe at whereas the customers really
◼
►
aren't in great need of those things and
◼
►
the best example of that kind of thing
◼
►
is Microsoft Office and you see like
◼
►
over time all the all the challenges
◼
►
Microsoft faced over the last 20 years
◼
►
of like just trying to get people to buy
◼
►
office upgrades and and when everyone's
◼
►
sitting around saying you know what
◼
►
Microsoft Wars been working fine for me
◼
►
I don't really need anything else
◼
►
please don't add anything else you know
◼
►
because every time I upgrade I paid this
◼
►
large amount of money and then
◼
►
everything gets slower and some things
◼
►
are different and I have to retrain
◼
►
myself or my staff and so you have like
◼
►
customers who are actually kind of
◼
►
asking you please don't upgrade this
◼
►
so I feel like you know if you take
◼
►
lessons from from the industry in the
◼
►
past you can kind of see like a lot of
◼
►
times a given limited resources and
◼
►
limited time that you have as an
◼
►
individual or as a small company doing
◼
►
an upgrade to to a product for the sake
◼
►
of upgrading it is not necessarily the
◼
►
best use of your time and and you David
◼
►
you know you have I think a very good
◼
►
sense of that possibly even an overly
◼
►
aggressive sense of that but I think
◼
►
it's sir very well in that you don't
◼
►
seem to pour a lot of effort into into
◼
►
massive upgrades to apps that don't
◼
►
necessarily warrant them and you are
◼
►
very happy to try new apps way more
◼
►
often than most people I know yeah and I
◼
►
think some of it is coming from
◼
►
understanding that I remember I refuse
◼
►
ago I hadn't the insert the realization
◼
►
that the way we version number our apps
◼
►
that is sort of in some ways somewhat
◼
►
our art like it's kind of arbitrary that
◼
►
we tend to do this this concept of like
◼
►
a major a major update and then in there
◼
►
you have minor updates and then you have
◼
►
bug pickups updates like you have like
◼
►
two point one point six or something and
◼
►
it's coming from a world where you made
◼
►
your money only on major updates and so
◼
►
you had to kind of create this sense of
◼
►
you put out a major update to get a
◼
►
bunch of money and then you do minor
◼
►
updates in many ways to build goodwill
◼
►
and bug fix updates just to fix things
◼
►
but like you do these minor update
◼
►
updates to build goodwill with your
◼
►
customers they have this feeling of like
◼
►
they bought like this basic thing and
◼
►
then hey they got this other stuff for
◼
►
free like they got all these these minor
◼
►
updates these other improvements for
◼
►
free and then you come around just like
◼
►
all right now it's time to shake that
◼
►
treat the money tree again and down will
◼
►
answer like here's version two and you
◼
►
kind of you know it's like now it's like
◼
►
all right now all that goodwill I had
◼
►
I'm kind of cashing it in and saying
◼
►
please you know please give me give me
◼
►
some money again and you have to have
◼
►
some kind of feature or some kind of
◼
►
thing that you're able to point to and
◼
►
say like this is why you should pay me
◼
►
money now but in the App Store and at
◼
►
least in a lot of way the way the App
◼
►
Store economics work that isn't actually
◼
►
the reality anymore that it isn't a
◼
►
situation where like most of my apps
◼
►
like when I do a major update I see a
◼
►
little bump maybe in revenue but overall
◼
►
it's really just about sustaining and
◼
►
maintaining a level of revenue in the
◼
►
long run and that changes a lot that
◼
►
mentality that like the version numbers
◼
►
of my apps are in some ways kind of
◼
►
arbitrary like they're almost more just
◼
►
marketing things like if I'm trying to
◼
►
get a the attention of the press then I
◼
►
may call it a bigger number but I could
◼
►
also just call it version 1 version 2
◼
►
version 3 version 4 and it would be just
◼
►
as descriptive as far as my customers
◼
►
are concerned yeah I find the same thing
◼
►
with you know with paid apps especially
◼
►
where like you know if you that the
◼
►
massive version number change is really
◼
►
good for press but it in sales you know
◼
►
the sales can result from that press you
◼
►
get a little sales bump sometimes but
◼
►
I've always found that whenever I've
◼
►
done major updates to to apps this is go
◼
►
all the way back to Instapaper or
◼
►
whenever I've done like significant
◼
►
feature updates or major like you know
◼
►
x2 updates there is a bump but it's a
◼
►
pretty small bump in sales and it's and
◼
►
every every major version bump is
◼
►
smaller than the one that came before it
◼
►
yeah and you know so you really are I
◼
►
think you're right it really is about
◼
►
maintenance like you are you are keeping
◼
►
the app up-to-date you are keeping it
◼
►
competitive in a competitive field you
◼
►
are keeping users interested but I don't
◼
►
I don't think any of those things
◼
►
require major X dot o updates really
◼
►
ever necessarily you know you can you
◼
►
can you can add like moderate scale
◼
►
features over time as they come and and
◼
►
achieve most that same goal respond to
◼
►
this week by image X image XCOM /u tr4
◼
►
under the radar image X is basically an
◼
►
image CDN that they serve your images
◼
►
but you can do operations on them so you
◼
►
can resize them you can trend you can
◼
►
translate their formats you can you know
◼
►
scale and crop and and twist and change
◼
►
the colors and do everything that you
◼
►
can add annotations to them the number
◼
►
of operations you can do on these images
◼
►
simply by adding URL parameters and
◼
►
signing the URLs is incredible I mean
◼
►
the you can you can resize them to any
◼
►
dimension of course you can you can crop
◼
►
any kind of resizing needs you have they
◼
►
can do it but you can also edit you can
◼
►
do things like blur filters you can do
◼
►
all sorts of special effect you can
◼
►
adjust the colors the toning you can
◼
►
really do quite a bit with image X I use
◼
►
it myself for overcast and I I have I've
◼
►
been very impressed with it it is very
◼
►
very fast overall I would say image X is
◼
►
really worth looking at if you if you
◼
►
need image manipulation either for your
◼
►
app where you're serving you know pull
◼
►
images off the web you need to do
◼
►
something with them into an app or for
◼
►
web pages it's especially nice for web
◼
►
pages because you can you can do things
◼
►
like surf responsive images serve
◼
►
different resolutions to different
◼
►
browsers there's there are lots of
◼
►
libraries if you want to to use client
◼
►
libraries they have lots of those
◼
►
including one for Swift called iris
◼
►
which is from the developers over at ho
◼
►
dinky I feel like if you look at ho
◼
►
website like a watch enthusiast website
◼
►
and and they have beautiful imagery all
◼
►
over the site and that's all powered by
◼
►
image X so you can see a great example
◼
►
of all the things that can do there
◼
►
anyway check it out today image Dick's
◼
►
calm this IMG I XCOM slash utr thanks a
◼
►
lot to image X for sponsoring our show
◼
►
all right and I think enclosing down
◼
►
this one thing that I was trying to
◼
►
think through is like the concrete
◼
►
example of the best kind of features to
◼
►
add to an app and there's the thought
◼
►
that came to mind is something that
◼
►
they'll talk about in video gaming what
◼
►
you're doing like the be doing a patch
◼
►
or an update to an app and our to the
◼
►
game and they'll call them quality of
◼
►
life improvements which are changes that
◼
►
don't change the fundamental nature of
◼
►
your app it R of the game in this case
◼
►
but are things that make using it better
◼
►
like it's just a quality of life thing
◼
►
it makes doing this operation that used
◼
►
to be kind of annoying or complicated or
◼
►
awkward simple or more straightforward
◼
►
and like that kind of quality of life
◼
►
update when I'm looking at an app that I
◼
►
have and I'm trying to think of what it
◼
►
features I need to add the first thing
◼
►
that I always try and think through and
◼
►
I think it's a great place to start
◼
►
it's like are there any quality of life
◼
►
improvements I can do is there some
◼
►
operation right now that is common and
◼
►
frequent but awkward and annoying and if
◼
►
I can find anything like that like that
◼
►
is by far the low-hanging fruit
◼
►
that I need to make sure that I'm taken
◼
►
care of before I worry up too much about
◼
►
inventing new problems to solve
◼
►
like is there are there existing
◼
►
problems that I have that the app solves
◼
►
but solves in a way that I could be make
◼
►
better and if I do that that's where I
◼
►
think you get the most bang for your
◼
►
buck and that's where building features
◼
►
out and doing these little improvements
◼
►
that you can ultimately like you can you
◼
►
can over time make your app just more
◼
►
better and better without making it more
◼
►
and more complicated or more and more
◼
►
sprawling alright thanks a lot for
◼
►
listening this week please recommend us
◼
►
an overcast if you get a chance help
◼
►
spread the show tell a friend we'd love
◼
►
to get more listeners to the show and if
◼
►
you want to support our network and us
◼
►
at relay FM I relay of have just
◼
►
launched memberships recently you can
◼
►
you can pay money optionally to any
◼
►
relay FM show or to all really FM shows
◼
►
if you want to just give like a nice
◼
►
basically a monthly donation to us we
◼
►
appreciate that if you feel like it if
◼
►
thanks a lot to image for sponsoring and
◼
►
yeah thank you all for listening and
◼
►
we'll talk to you next week bye