164: Meaningless Version Numbers
00:00:00
◼
►
Welcome to Under the Radar, a show about independent iOS app development.
00:00:04
◼
►
I'm Marco Arment.
00:00:05
◼
►
And I'm David Smith.
00:00:06
◼
►
Under the Radar is never longer than 30 minutes, so let's get started.
00:00:09
◼
►
So Marco, you launched a big update, though perhaps not a major version update,
00:00:15
◼
►
to Overcast this week, which is both exciting in that I think it's a really cool and clever feature,
00:00:22
◼
►
and I think there's some really interesting technical things that probably would be worth talking about on the show about.
00:00:26
◼
►
So what version of Overcast did you just launch?
00:00:30
◼
►
I had to think about it for a minute. It's version 2019.4.
00:00:34
◼
►
Yeah, this is the first version I'm doing.
00:00:39
◼
►
The version before this was like 5.2.1 or something like that.
00:00:44
◼
►
I can't remember that one either.
00:00:46
◼
►
So I switched to this version numbering scheme.
00:00:49
◼
►
I kind of copied this from our friend Curtis Herbert at Slopes and from our friends at Castro,
00:00:54
◼
►
and Curtis said he got it from somewhere else I forget, I think Unity,
00:00:57
◼
►
where basically version numbering in iOS apps has always been problematic.
00:01:03
◼
►
We try to market to certain versions, we try to advertise to our users,
00:01:08
◼
►
like, "Here, this is version so-and-so, and this is the changes in this version."
00:01:11
◼
►
We write the little change log in the App Store dialog.
00:01:14
◼
►
And then the big companies go, and they don't really write change logs that mean anything.
00:01:17
◼
►
We're always improving our apps with bug fixes and improvements or whatever.
00:01:21
◼
►
And they don't really use meaningful version numbers.
00:01:25
◼
►
Even a lot of apps these days, like, "What version of Chrome do you have?"
00:01:29
◼
►
And it's some giant long number. "What version of anything do you have?"
00:01:33
◼
►
Most people can't tell you the versions of most of their software anymore
00:01:36
◼
►
because there's just kind of too much of it,
00:01:39
◼
►
and the answer is almost always software auto-updates itself most of the time,
00:01:44
◼
►
and so the version you have is just whatever the latest version is.
00:01:48
◼
►
It's rare for people to have a lot of exceptions to that these days.
00:01:51
◼
►
And in iOS, it's even more so because in iOS, I believe auto-update has been the default setting
00:01:56
◼
►
for the App Store for a number of years now.
00:01:59
◼
►
And in order to even know what version of most apps you're using,
00:02:04
◼
►
you have to go into the App Store and look at the updates tab
00:02:07
◼
►
and browse through your history, and almost nobody does that.
00:02:11
◼
►
And so really all that matters with version numbering for most needs
00:02:16
◼
►
is, "Is it the newest version or not?"
00:02:20
◼
►
And I decided to switch to a date-based scheme that is literally just like,
00:02:25
◼
►
it is 2019, that's the first number.
00:02:28
◼
►
The second number is for not because it's April, but because it is the fourth update in 2019.
00:02:33
◼
►
And then the next one will be 2019.5.
00:02:36
◼
►
And then that'll be 2019.6, regardless of whether those happen in May or June or whatever.
00:02:41
◼
►
And because I don't want, as developers,
00:02:46
◼
►
and I believe we've even had episodes about version numbering and marketing before,
00:02:50
◼
►
but as developers, we take on a lot of semantic meanings with these versions
00:02:55
◼
►
because the whole semantic versioning standard system where you have major, minor revision.
00:03:00
◼
►
And we, I think, take on a lot of psychological and technical and marketing baggage
00:03:07
◼
►
by using those little version systems.
00:03:12
◼
►
So for instance, like our friends Daniel Jockut and Matt and Reece
00:03:14
◼
►
over at Core Intuition have talked before about,
00:03:18
◼
►
I believe Daniel hit a .10 version in an increment,
00:03:21
◼
►
and that drove him to finally make the increment the next one,
00:03:26
◼
►
which means he has to add a new feature,
00:03:29
◼
►
which means it has to be noteworthy.
00:03:31
◼
►
And there's all this psychology and thinking that goes into,
00:03:33
◼
►
am I making something for, say, my 5.0?
00:03:38
◼
►
That has to be a really good, big version
00:03:43
◼
►
'cause I incremented the first number.
00:03:45
◼
►
And so it's a huge release,
00:03:47
◼
►
and you start saving up features that you have done
00:03:49
◼
►
that can ship now, but you're like,
00:03:53
◼
►
I gotta save this one up for the next .0 release
00:03:54
◼
►
'cause that's a big marketing feature.
00:03:56
◼
►
And you hold features back,
00:03:59
◼
►
and when you have the release ready,
00:04:01
◼
►
you question, do I have enough here?
00:04:00
◼
►
And then you tie that into your business decisions,
00:04:05
◼
►
like, oh, should I somehow find a way to charge again?
00:04:08
◼
►
How much should people pay?
00:04:11
◼
►
And I feel like we've been moving towards this world now
00:04:13
◼
►
of the version doesn't matter anymore,
00:04:16
◼
►
updates barely even matter anymore,
00:04:19
◼
►
it's just like, is it up to date or not?
00:04:21
◼
►
And the business model side of things
00:04:23
◼
►
have been moving towards free with an app purchase
00:04:25
◼
►
or free with subscription or ad-based,
00:04:25
◼
►
and so even the business side of it
00:04:30
◼
►
is kind of falling away from this old versioning system.
00:04:32
◼
►
And so I no longer wanted the emotional baggage
00:04:35
◼
►
or the marketing pressure of having major,
00:04:40
◼
►
.minor, .revision because that's not how I work, really.
00:04:44
◼
►
I don't work in holding features back for six months
00:04:48
◼
►
as I plan this giant release.
00:04:52
◼
►
I don't do that.
00:04:50
◼
►
I will have occasional bursts of productivity
00:04:55
◼
►
where I will be able to create a whole new feature
00:04:58
◼
►
from scratch in a matter of a few weeks
00:05:01
◼
►
or a couple of months, like I did with this,
00:05:03
◼
►
and I just want to release it.
00:05:05
◼
►
Like, once it's done, it's done.
00:05:06
◼
►
I want to get it out there.
00:05:07
◼
►
And I don't want to have all of this, like, baggage tied
00:05:09
◼
►
to the number of the version,
00:05:13
◼
►
which is mostly at this point self-imposed
00:05:15
◼
►
because most people don't even see it anymore.
00:05:16
◼
►
So a simple time-based system,
00:05:21
◼
►
it changes the way you have to think about marketing,
00:05:23
◼
►
but I would argue that it actually changes that
00:05:26
◼
►
in a way that reflects reality better than the old way.
00:05:28
◼
►
But it ultimately, it frees you.
00:05:31
◼
►
It frees your mind up from having to think about,
00:05:34
◼
►
like, the semantic meaning or the weight of certain numbers.
00:05:39
◼
►
And I find that's a much better fit for the modern world
00:05:43
◼
►
and for the way I think.
00:05:48
◼
►
In many ways, it reminds me, obviously,
00:05:50
◼
►
of, like, I guess you'd call it continuous delivery
00:05:52
◼
►
or whatever, I think it's a fancy term,
00:05:55
◼
►
but it's like, if you make any kind of web service, right?
00:05:56
◼
►
Like, that doesn't have a version in a marketed way,
00:05:59
◼
►
like, in a way that your customer is aware of.
00:06:03
◼
►
You may have internal versioning
00:06:06
◼
►
or things that you're doing to keep track of things,
00:06:08
◼
►
or honestly, for a lot of times, for me,
00:06:08
◼
►
I just have, like, it's a commit in my version control.
00:06:13
◼
►
That is the point that is currently deployed
00:06:19
◼
►
rather than necessarily it having a semantic number.
00:06:22
◼
►
And that number, and it's just like,
00:06:26
◼
►
when something's ready, I roll it out to the server,
00:06:28
◼
►
and then that's the new version that you get.
00:06:31
◼
►
And I think the history of this comes from a place
00:06:33
◼
►
where the version was important,
00:06:34
◼
►
because the process of moving from one version to another
00:06:39
◼
►
was complicated and costly,
00:06:43
◼
►
both in terms of developer and customer cost.
00:06:46
◼
►
Like, it was a complicated thing to do,
00:06:49
◼
►
and you had to make sure you had the right version,
00:06:51
◼
►
and upgrading from one version to the next
00:06:52
◼
►
may be complicated,
00:06:54
◼
►
because if you're coming from not necessarily
00:06:56
◼
►
the latest, the one before the last one,
00:06:59
◼
►
you may be coming from a version that's two back,
00:07:01
◼
►
and do you have to make sure that all of your updates are,
00:07:01
◼
►
you know, is it safe to go from that,
00:07:06
◼
►
or do you have to do a series of updates in a row
00:07:08
◼
►
before you can do the last update?
00:07:10
◼
►
Like, there's a lot of complexity
00:07:11
◼
►
around the actual mechanics of updating,
00:07:13
◼
►
and so I think the semantic versioning system
00:07:16
◼
►
sort of comes out of that world,
00:07:20
◼
►
where it's trying to give you a sense of
00:07:22
◼
►
what is the importance of the update.
00:07:24
◼
►
If it's just a third number that's changed,
00:07:26
◼
►
maybe that's important, maybe it's not.
00:07:27
◼
►
Like, if you're not having any bugs,
00:07:32
◼
►
then maybe don't worry about it
00:07:33
◼
►
if the process of updating is complicated.
00:07:34
◼
►
But, you know, the first number changed,
00:07:37
◼
►
like, okay, I need to work this out.
00:07:39
◼
►
But it is remarkable now
00:07:41
◼
►
how while the App Store isn't strictly continuous delivery,
00:07:43
◼
►
that I can't push out a version and say,
00:07:47
◼
►
"Every person with the app must run this version immediately,"
00:07:49
◼
►
the speed at which the updates occur now is shocking.
00:07:52
◼
►
Like, I was just looking at my analytics,
00:07:57
◼
►
and I think I'm at probably, like, 90% within two days,
00:07:59
◼
►
two or three days,
00:08:03
◼
►
our people are running the latest version of the app.
00:08:05
◼
►
That's incredible.
00:08:07
◼
►
Like, it is just amazing and wonderful.
00:08:08
◼
►
Like, it is this very, very steep curve,
00:08:11
◼
►
you know, because if auto-update is on by default,
00:08:13
◼
►
it's just happening in the background
00:08:17
◼
►
when people plug their phones in overnight,
00:08:18
◼
►
I think is when it usually runs that kind of stuff.
00:08:17
◼
►
And so it's going off, it's running it,
00:08:22
◼
►
and as from that user's perspective,
00:08:24
◼
►
it also used to be a marketing exercise
00:08:27
◼
►
of, like, putting text in your release notes
00:08:30
◼
►
because users would go and see it.
00:08:33
◼
►
And that is less of a thing.
00:08:35
◼
►
Like, people don't read the release notes nearly as much,
00:08:38
◼
►
I don't think.
00:08:40
◼
►
I mean, if I'm remembering right,
00:08:41
◼
►
at Apple's services event,
00:08:42
◼
►
they even showed, like, screenshots of an App Store
00:08:44
◼
►
that doesn't have an updates tab anymore.
00:08:43
◼
►
Like, the updates tab may be being replaced
00:08:48
◼
►
by the Apple Arcade in the future.
00:08:50
◼
►
Like, who knows if that's actually,
00:08:54
◼
►
whether it's gonna play out
00:08:55
◼
►
or if updates will be in somewhere else.
00:08:56
◼
►
But, like, I'm sure there'll be somewhere
00:08:58
◼
►
that you can go and manage your updates,
00:08:59
◼
►
but, like, if it's not a tab anymore,
00:09:00
◼
►
like, that's gonna become even more of this kind of,
00:09:02
◼
►
this vague concept that doesn't actually matter
00:09:06
◼
►
to your customer.
00:09:08
◼
►
And so, like, it's, in a weird way,
00:09:09
◼
►
like, it's probably moving to a world where,
00:09:08
◼
►
I mean, functionally what you're doing is,
00:09:13
◼
►
your versioning is just your, you know,
00:09:15
◼
►
like, your actual build number,
00:09:17
◼
►
which is always one of those funny things.
00:09:19
◼
►
Like, we have, there's two numbers
00:09:20
◼
►
that are associated with every version.
00:09:21
◼
►
We have, like, the build, and we have the--
00:09:23
◼
►
- The marketing version.
00:09:26
◼
►
- The marketing version is the way
00:09:26
◼
►
that Apple requires us to submit things.
00:09:28
◼
►
And it's always a bit funny, too,
00:09:30
◼
►
that they both, you know,
00:09:31
◼
►
they have to always increase,
00:09:32
◼
►
and which is, in many ways, I'm sure, why you
00:09:34
◼
►
are not using some, like, the year,
00:09:34
◼
►
because then it'll, you know, sort of always increase,
00:09:39
◼
►
whereas it gets a little funny otherwise
00:09:41
◼
►
if you just, like, started with,
00:09:43
◼
►
well, this is gonna be, if your last one was version five,
00:09:45
◼
►
like, this is version six, and then seven,
00:09:48
◼
►
and eight, and nine, and then, like,
00:09:50
◼
►
that could be a little bit, you know,
00:09:52
◼
►
like, the numbers start to get a little out of control
00:09:54
◼
►
at a certain point.
00:09:56
◼
►
But it is interesting that they kind of, you know,
00:09:57
◼
►
if internally I think about those kind of builds,
00:10:01
◼
►
and, like, those are the builds that,
00:10:00
◼
►
and the build numbers are, like,
00:10:05
◼
►
the more interesting number.
00:10:07
◼
►
And we have all these weird things
00:10:08
◼
►
when you're running a beta test,
00:10:10
◼
►
where the, you know, the semantic version
00:10:11
◼
►
doesn't change, but the build number changes,
00:10:13
◼
►
and, like, that's, the build is the actual,
00:10:15
◼
►
the build number is actually the thing that, you know,
00:10:17
◼
►
uniquely identifies a published piece of software.
00:10:19
◼
►
The version number doesn't actually even do that,
00:10:23
◼
►
because you can have issues where a beta tester
00:10:26
◼
►
is running the latest version number,
00:10:26
◼
►
but the wrong build, or they went from, you know,
00:10:31
◼
►
an old build that was being beta tested,
00:10:34
◼
►
and, like, it can get very complicated.
00:10:36
◼
►
So, like, ultimately, the actual one that's important
00:10:37
◼
►
is the build number, and the marketing version
00:10:39
◼
►
is just that, it's just a marketing number.
00:10:41
◼
►
And, like, if it's useful for marketing purposes, great.
00:10:43
◼
►
But if it isn't, then it just doesn't actually
00:10:45
◼
►
even really matter.
00:10:48
◼
►
- Let me get to marketing in a minute,
00:10:50
◼
►
but first, we are sponsored this week by Linode.
00:10:51
◼
►
With Linode, you can instantly deploy
00:10:51
◼
►
and manage an SSD server in the Linode cloud.
00:10:56
◼
►
You can get a server running in seconds,
00:10:58
◼
►
with your choice of Linux distro, resources,
00:11:00
◼
►
node location, and so much more.
00:11:02
◼
►
And it doesn't matter if you're working
00:11:05
◼
►
on your very first server, or deploying
00:11:07
◼
►
a big, complex system, like what I do with Overcast.
00:11:09
◼
►
Linode is the place to go, big or small.
00:11:12
◼
►
They have the fastest hardware network,
00:11:14
◼
►
outstanding customer support, if you ever need any help.
00:11:16
◼
►
And I've used their customer support
00:11:19
◼
►
on a number of occasions, and they have been wonderful.
00:11:18
◼
►
It is just super easy to launch and run Linode cloud servers.
00:11:23
◼
►
And they now have block storage available
00:11:27
◼
►
in Newark, Fremont, Dallas, Atlanta, Frankfurt,
00:11:29
◼
►
London, and Singapore, soon to be released in Tokyo.
00:11:31
◼
►
And they have their new RESTful API,
00:11:34
◼
►
version 4 is now done, and it includes
00:11:37
◼
►
officially supported Python, CLI, and so much more.
00:11:39
◼
►
Linode's also hiring, so listeners of this show,
00:11:42
◼
►
this might be the kind of field you're in.
00:11:45
◼
►
If you want to learn more and check out
00:11:46
◼
►
what they're looking for, go to Linode.com/careers
00:11:45
◼
►
to see more.
00:11:50
◼
►
Otherwise, for their hosting business,
00:11:52
◼
►
I gotta say, I love Linode.
00:11:53
◼
►
I've used them for something like eight years now,
00:11:55
◼
►
and they're just wonderful, since long before
00:11:58
◼
►
they were a sponsor.
00:11:59
◼
►
That's why I wanted to have them as a sponsor
00:12:01
◼
►
so I could talk about it, because they're just great.
00:12:02
◼
►
They're a great host, and they have great pricing.
00:12:04
◼
►
So the options, they scale from every need.
00:12:08
◼
►
Their plans start at one gig of RAM for just $5 a month,
00:12:10
◼
►
and they have lots of plans above that
00:12:15
◼
►
with higher resources, including high memory plans,
00:12:16
◼
►
starting with 16 gigs of RAM,
00:12:18
◼
►
dedicated CPU plans, and so much more.
00:12:20
◼
►
And they have a special offer for our listeners.
00:12:23
◼
►
You can go to Linode.com/radar and use promo code radar2019
00:12:24
◼
►
to get $20 towards any Linode plan.
00:12:29
◼
►
So on that one gig plan, that could be four months for free.
00:12:32
◼
►
And with a seven-day money-back guarantee,
00:12:35
◼
►
you have nothing to lose.
00:12:37
◼
►
So give Linode a try today.
00:12:35
◼
►
That's Linode.com/radar and promo code radar2019.
00:12:40
◼
►
To learn more, sign up and make the most of that $20 credit.
00:12:44
◼
►
Our thanks to Linode for their support of this show
00:12:48
◼
►
and all of Relay FM.
00:12:51
◼
►
So switching to this kind of versioning system
00:12:53
◼
►
introduces some interesting marketing challenges.
00:12:55
◼
►
If you're gonna have a big version 5.0,
00:12:58
◼
►
you can go to blogs like Mac Stories and iMore
00:13:01
◼
►
and you can pitch them stories.
00:13:01
◼
►
You can be like, hey look, I'm working on this big update.
00:13:06
◼
►
Here is all of the tentpole features of my new upcoming 5.0.
00:13:08
◼
►
It kind of makes it easier to coordinate marketing
00:13:13
◼
►
around a big release like that.
00:13:16
◼
►
But when you do a boring version system,
00:13:18
◼
►
like an automatic version system like what I have,
00:13:22
◼
►
where the versions don't have any semantic meaning anymore,
00:13:24
◼
►
you lose that ability to do that marketing-wise.
00:13:27
◼
►
But what you instead get is the ability
00:13:28
◼
►
to just market features.
00:13:33
◼
►
And I think it's actually better
00:13:35
◼
►
because people have a certain tolerance
00:13:36
◼
►
for how long they think is a meaningful amount of time
00:13:39
◼
►
between a 5.0 and a 6.0.
00:13:42
◼
►
And what kind of feature is like,
00:13:45
◼
►
how many features are minimally necessary
00:13:47
◼
►
to justify a new big version number.
00:13:49
◼
►
But if you have a compelling feature,
00:13:52
◼
►
you can launch that and market that anytime you want.
00:13:53
◼
►
And as frequently as it warrants.
00:13:58
◼
►
So not every feature you launch is going to be worthy
00:14:00
◼
►
of marketing and you still have to respect people's time
00:14:03
◼
►
and respect, you can't cry wolf
00:14:05
◼
►
and just say everything is important.
00:14:08
◼
►
But if you're doing something really cool
00:14:10
◼
►
that you think is worth marketing
00:14:12
◼
►
and that people will like,
00:14:14
◼
►
that you think might be newsworthy,
00:14:15
◼
►
then you can do the same kind of marketing
00:14:17
◼
►
you would do for a major version,
00:14:19
◼
►
but just do it for a feature instead.
00:14:20
◼
►
And that's kind of what happened
00:14:19
◼
►
with my clip sharing feature,
00:14:24
◼
►
getting back to that,
00:14:25
◼
►
is I had this idea for a feature three weeks ago
00:14:26
◼
►
and I built it and it was done.
00:14:30
◼
►
And I'm like, you know,
00:14:33
◼
►
I should just ship this.
00:14:34
◼
►
What am I waiting for?
00:14:36
◼
►
This doesn't need to wait for a major version.
00:14:37
◼
►
This is the perfect time of year.
00:14:39
◼
►
I don't have anything to do with summer betas yet
00:14:41
◼
►
and this isn't really a huge feature
00:14:43
◼
►
that I should hold off on before then.
00:14:45
◼
►
So let me just ship it.
00:14:45
◼
►
And so that was it.
00:14:50
◼
►
I just shipped it and I made a blog post
00:14:51
◼
►
explaining it and showing it
00:14:52
◼
►
and it was a marketable feature
00:14:54
◼
►
and that was kind of determined by other people, really.
00:14:56
◼
►
But I did my side of the marketing,
00:14:59
◼
►
which is I publicized it,
00:15:01
◼
►
I made it known on my blog,
00:15:02
◼
►
I documented it and showed it off,
00:15:04
◼
►
and then a bunch of people picked it up
00:15:06
◼
►
and wrote about it and it was great.
00:15:08
◼
►
And I got the same kind of marketing from that
00:15:09
◼
►
that I would have gotten from a major, huge,
00:15:11
◼
►
major 5.0 or 6.0 kind of update.
00:15:12
◼
►
So I actually don't think it requires
00:15:17
◼
►
that much change in marketing strategy either.
00:15:20
◼
►
You just have smaller
00:15:22
◼
►
and more numerous opportunities to do it.
00:15:24
◼
►
And I think, too, what I kind of,
00:15:27
◼
►
as I'm thinking this through,
00:15:29
◼
►
what I like about it, though, is that the marketing
00:15:31
◼
►
becomes tangible,
00:15:34
◼
►
that you are marketing around something tangible
00:15:36
◼
►
to the user or something useful to your user,
00:15:37
◼
►
useful to your customer,
00:15:42
◼
►
rather than marketing around something
00:15:44
◼
►
that is kind of abstract and made up.
00:15:46
◼
►
That a customer does not care
00:15:48
◼
►
that your version just had 6.0.
00:15:51
◼
►
That means nothing.
00:15:54
◼
►
If you imagine an article that was written about you,
00:15:56
◼
►
the part where it says,
00:16:02
◼
►
or imagine this with the iPhone or whatever,
00:16:03
◼
►
Apple releases new iPhone,
00:16:03
◼
►
what's important is the fragment that comes after that,
00:16:08
◼
►
with new camera, faster processor.
00:16:12
◼
►
The fact that it's a new iPhone,
00:16:16
◼
►
the fact that it's the next version,
00:16:17
◼
►
the next number,
00:16:19
◼
►
that part is actually completely irrelevant.
00:16:20
◼
►
And I think making marketing that is focused on features
00:16:22
◼
►
and tangible things like that
00:16:25
◼
►
is almost certainly more effective
00:16:28
◼
►
because any marketing that you do get
00:16:29
◼
►
or any message that you're trying to communicate
00:16:28
◼
►
that is simply like Overcast,
00:16:33
◼
►
it's like Overcast now has clip sharing.
00:16:35
◼
►
That is a very concise, straightforward message
00:16:38
◼
►
that isn't as easy to understand.
00:16:42
◼
►
And that headline is either interesting to you
00:16:46
◼
►
or it's not interesting to you,
00:16:47
◼
►
versus if the headline is
00:16:49
◼
►
Overcast releases version six,
00:16:51
◼
►
like, okay, great.
00:16:54
◼
►
I'm sure that's good for Overcast,
00:16:54
◼
►
but what's interesting is not the,
00:16:59
◼
►
and if anything, big updates,
00:17:02
◼
►
this is something I've struggled with a little bit too,
00:17:05
◼
►
is if you're trying to have lots of features
00:17:07
◼
►
in a particular update,
00:17:10
◼
►
you almost have the opposite marketing problem,
00:17:13
◼
►
where you have too many things
00:17:16
◼
►
that you're trying to get credit for or communicate.
00:17:18
◼
►
You can have a situation where the problem is,
00:17:19
◼
►
I did these five cool things
00:17:24
◼
►
and it's hard to communicate five things at once to someone.
00:17:26
◼
►
That is just harder than communicating one thing at a time.
00:17:30
◼
►
And you have the fatigue part
00:17:33
◼
►
that you have to worry about.
00:17:34
◼
►
But there's also, sometimes there could be,
00:17:36
◼
►
people can be missing the thing that you think
00:17:38
◼
►
is actually really cool
00:17:40
◼
►
because they're focusing on some of the other tentpole features.
00:17:42
◼
►
And that's a tricky balance too
00:17:44
◼
►
that you have to worry about,
00:17:44
◼
►
that if you have too much in something,
00:17:49
◼
►
then it's just like, well, everything changed
00:17:51
◼
►
and there's too much.
00:17:52
◼
►
You really, at most,
00:17:54
◼
►
one or two things is probably
00:17:56
◼
►
what makes sense to market around.
00:17:58
◼
►
You have a nice, clear, concise story
00:18:00
◼
►
and the reality is,
00:18:02
◼
►
this kind of marketing is,
00:18:05
◼
►
it matters mostly, I think, honestly,
00:18:10
◼
►
in terms of how it'll be picked up
00:18:10
◼
►
by the App Store itself,
00:18:15
◼
►
like App Store on the editorial side.
00:18:16
◼
►
And honestly, I think for them,
00:18:19
◼
►
having a very simple, cohesive,
00:18:20
◼
►
straightforward message
00:18:22
◼
►
is going to be much more effective
00:18:23
◼
►
for them to pick up on
00:18:25
◼
►
than if your release notes are this 40-bulleted list.
00:18:26
◼
►
Because then they're trying to work out,
00:18:31
◼
►
well, what's the important thing?
00:18:33
◼
►
What's the thing that is actually significant here?
00:18:34
◼
►
Whereas it has this cool new feature.
00:18:35
◼
►
I can understand that and I can see
00:18:40
◼
►
what the user is going for,
00:18:42
◼
►
or why someone would be excited about that.
00:18:44
◼
►
And that's just like,
00:18:47
◼
►
you're making it easier on them.
00:18:48
◼
►
So I think in that sense,
00:18:50
◼
►
it's helpful to just have such a simplified message as well.
00:18:51
◼
►
- Oh yeah, and this also, I think,
00:18:56
◼
►
helps you gain the perspective of
00:18:59
◼
►
what features are worth marketing heavily
00:19:01
◼
►
and which ones aren't.
00:19:01
◼
►
So like, which you kind of alluded to a minute ago,
00:19:06
◼
►
like, suppose I rewrite the whole app in Swift, right?
00:19:08
◼
►
That's like a technical update
00:19:12
◼
►
that my customers won't even,
00:19:14
◼
►
hopefully, won't even notice, right?
00:19:17
◼
►
And so like, that's something that
00:19:19
◼
►
you'd be tempted to be like,
00:19:21
◼
►
oh now version 6.0 is now 100% Swift.
00:19:23
◼
►
But the reality is,
00:19:26
◼
►
no one except you cares about that.
00:19:29
◼
►
And there's a lot of updates
00:19:27
◼
►
that I love doing to technical backend stuff.
00:19:32
◼
►
I mean, heck, one thing I've been working on
00:19:35
◼
►
for a long time, Voice Boost 2.
00:19:37
◼
►
I have a feeling, like, Voice Boost 2,
00:19:39
◼
►
when I do finally ship it,
00:19:41
◼
►
I don't think it's going to get
00:19:43
◼
►
the amount of marketing attention
00:19:45
◼
►
that clip sharing did.
00:19:46
◼
►
And I've been working on that for like, six months.
00:19:48
◼
►
And clip sharing took me like three weeks.
00:19:51
◼
►
But the fact is, it's just, you know,
00:19:53
◼
►
Voice Boost 2 is something I want to do
00:19:53
◼
►
for lots of other reasons,
00:19:58
◼
►
but it's not a very marketable feature.
00:19:59
◼
►
Whereas, using old versioning systems,
00:20:01
◼
►
like, I would almost kind of feel like,
00:20:03
◼
►
I would put more weight on that,
00:20:05
◼
►
because like, oh, this is a huge,
00:20:07
◼
►
like there's a lot of, you know,
00:20:09
◼
►
percentage of code changed,
00:20:11
◼
►
you know, that makes this work.
00:20:12
◼
►
Or it's like low level, hard stuff.
00:20:14
◼
►
So that's really impressive to me,
00:20:16
◼
►
because I did it,
00:20:17
◼
►
but it's not something
00:20:18
◼
►
anybody else cares about as much.
00:20:19
◼
►
Like, and now, I feel like this
00:20:20
◼
►
helps me focus more on features
00:20:25
◼
►
that people care about,
00:20:28
◼
►
because I don't have to bulk up releases,
00:20:29
◼
►
like official releases,
00:20:33
◼
►
with things that sound impressive,
00:20:35
◼
►
or make sure the list is long enough,
00:20:36
◼
►
or the checkbox list is long enough, you know.
00:20:38
◼
►
I can just make features that people like
00:20:41
◼
►
when I can, like whenever I can.
00:20:44
◼
►
Don't hold them back at all.
00:20:46
◼
►
And honestly, I think it even makes updates
00:20:47
◼
►
more likely to be more frequent,
00:20:52
◼
►
because they mean less.
00:20:54
◼
►
Like, especially like, you know,
00:20:56
◼
►
right now it's something .4,
00:20:57
◼
►
so if anybody's paying attention,
00:20:59
◼
►
it might seem like a low number,
00:21:00
◼
►
but in a good year,
00:21:01
◼
►
that might end up being like .17, .25,
00:21:02
◼
►
like at that point, who cares, right?
00:21:05
◼
►
It doesn't, what's the difference
00:21:07
◼
►
between .17 and .18?
00:21:08
◼
►
Who cares, doesn't matter.
00:21:10
◼
►
You know, I could issue an update every week
00:21:11
◼
►
and just have it go up to .52,
00:21:13
◼
►
and who cares?
00:21:14
◼
►
Like, so it's a way to just keep things
00:21:13
◼
►
a lot more relevant to the customer
00:21:18
◼
►
with what you're even advertising at all,
00:21:20
◼
►
what you're marketing at all,
00:21:21
◼
►
and to, I think, practice healthier release practices,
00:21:22
◼
►
like a healthier update cycle for most indies
00:21:27
◼
►
of like, you know, I just gotta get this thing out there
00:21:30
◼
►
and just build value over time organically as it comes,
00:21:32
◼
►
instead of having to focus on these giant versions,
00:21:36
◼
►
or have any kind of like emotional baggage
00:21:38
◼
►
to hold me back from shipping things that I should ship.
00:21:40
◼
►
- Yeah, and I think too, there's an element
00:21:45
◼
►
that just came to mind of how it also probably keeps you
00:21:47
◼
►
and your customers closer in sync,
00:21:51
◼
►
which is something that I've noticed
00:21:54
◼
►
in my own experience recently,
00:21:55
◼
►
that sometimes can be problematic,
00:21:57
◼
►
where like, I go off and work,
00:21:58
◼
►
like I've been working on a major update
00:22:00
◼
►
to Podometer++, and I've been working on it
00:22:01
◼
►
for, you know, a couple months,
00:22:03
◼
►
and then I took two months off to work on calzones,
00:22:04
◼
►
and like, the version that I think of as the app
00:22:05
◼
►
is now totally different, is tangibly different
00:22:10
◼
►
than the version that my customers are using right now.
00:22:13
◼
►
Like, they're using a version that I haven't used
00:22:16
◼
►
for like four months, and that is problematic
00:22:19
◼
►
in a lot of ways, that it's like,
00:22:23
◼
►
it means that I'm taking certain things for granted,
00:22:25
◼
►
or I'm not feeling a sense of urgency to get this out there,
00:22:28
◼
►
because I'm just used to it now.
00:22:32
◼
►
Like, I don't think of it as this cool new feature,
00:22:31
◼
►
like, it's just like, well, this is how the app
00:22:36
◼
►
has been now for months, but it's not.
00:22:37
◼
►
The version in the app store is totally different,
00:22:40
◼
►
and so if moving away from a semantic numbering system
00:22:42
◼
►
can increase that frequency,
00:22:47
◼
►
that's also probably just a good thing
00:22:48
◼
►
in terms of having that be a closer connection,
00:22:50
◼
►
that you work on an update, you get it out,
00:22:53
◼
►
and you are becoming, you know,
00:22:56
◼
►
you re-sync yourself with your customers
00:22:58
◼
►
on a much more regular basis.
00:22:56
◼
►
- Yeah, and it's also better for app quality.
00:23:01
◼
►
You know, like, it's better to, you know,
00:23:03
◼
►
in some ways it also kind of removes
00:23:05
◼
►
a lot of the need for beta testing.
00:23:08
◼
►
Like, for this update, I didn't beta test it at all,
00:23:10
◼
►
which, you know, kind of angers in beta testing,
00:23:13
◼
►
sorry about that, guys.
00:23:15
◼
►
But I didn't beta test it at all
00:23:17
◼
►
because I wanted to just get it out there really fast,
00:23:19
◼
►
and when you're on a fast release cycle,
00:23:23
◼
►
test flight approval delays really actually
00:23:23
◼
►
are a pretty significant part of that cycle.
00:23:28
◼
►
And so I didn't want to have to wait for a delay.
00:23:30
◼
►
I also just coincidentally, I had jury duty this whole week,
00:23:32
◼
►
and so I knew that my weekdays would be filled,
00:23:35
◼
►
or at least they might be filled,
00:23:39
◼
►
for some unknown amount of time in the future,
00:23:41
◼
►
thanks, jury duty.
00:23:43
◼
►
And so I didn't have the week to do it,
00:23:44
◼
►
and App Store approval was like,
00:23:48
◼
►
you know, I know how long that takes,
00:23:48
◼
►
I was ready, the feature was done,
00:23:53
◼
►
and I submitted it on, I think, Friday,
00:23:55
◼
►
or Thursday night, and so I'm like,
00:23:57
◼
►
I can put this into a beta,
00:24:00
◼
►
but that's gonna push the release back
00:24:02
◼
►
by at least a week, at least,
00:24:04
◼
►
and I wanted the marketing splash of everybody,
00:24:06
◼
►
so I'm like, whoa.
00:24:10
◼
►
Like, I didn't tell almost anyone about this feature.
00:24:11
◼
►
Before it released, I think three people knew about it.
00:24:13
◼
►
Like, I told the minimum number of people
00:24:18
◼
►
I could possibly tell,
00:24:20
◼
►
because I wanted it, as part of its marketing,
00:24:21
◼
►
to have a bit of a splash,
00:24:23
◼
►
and because clip sharing is this inherently
00:24:25
◼
►
semi-viral thing, 'cause you post things
00:24:28
◼
►
for other people to see that are obviously,
00:24:31
◼
►
you know, generated by Overcast,
00:24:33
◼
►
if you want them to be,
00:24:34
◼
►
and so I wanted to have that kind of secrecy splash,
00:24:35
◼
►
and I couldn't afford the time to have a proper beta test
00:24:38
◼
►
because I wanted to delay the release
00:24:43
◼
►
by at least another week, probably more,
00:24:44
◼
►
so I'm like, you know what, let me just release it,
00:24:48
◼
►
and I did, and it's no big deal,
00:24:50
◼
►
and I released it, it made the splash I wanted to,
00:24:51
◼
►
even though it was approved on Saturday morning,
00:24:54
◼
►
and I just said, all right, straightforward,
00:24:56
◼
►
like, I had already written the blog post,
00:24:58
◼
►
hit publish, so it released on a weekend,
00:25:00
◼
►
which you're not supposed to do,
00:25:02
◼
►
but oh well, it didn't seem to hurt at all,
00:25:04
◼
►
it was fine, and it was great,
00:25:04
◼
►
and I got to go to jury duty yesterday
00:25:09
◼
►
and not worry about this release that was happening,
00:25:11
◼
►
'cause it was already out for two days,
00:25:13
◼
►
and so it was just like, it allowed me to fit this
00:25:15
◼
►
more into my life, to get this out really fast,
00:25:18
◼
►
and yeah, there are a couple of shortcomings
00:25:21
◼
►
that I'm going to fix today and tomorrow if I can,
00:25:23
◼
►
and I'm gonna beta test the fixes a little bit
00:25:27
◼
►
and probably release it in like five or six days,
00:25:30
◼
►
and I no longer have any kind of pressure in my mind
00:25:30
◼
►
of like, should I save this up for the next update?
00:25:35
◼
►
I just can release it when it's done.
00:25:38
◼
►
- Well, and another, it's a little bit arbitrary,
00:25:41
◼
►
but another advantage to what you're describing,
00:25:44
◼
►
as it relates to beta testing,
00:25:46
◼
►
is that by moving to this, you know already
00:25:48
◼
►
what your next version number is.
00:25:53
◼
►
You know your next version is going to be 2019.5,
00:25:54
◼
►
and so the way the test flight review process works
00:25:57
◼
►
is once you have a approved version
00:26:02
◼
►
at any particular version number,
00:26:04
◼
►
you can typically submit additional builds
00:26:06
◼
►
against that version number without incurring
00:26:09
◼
►
the weird like day and a half review cycle time,
00:26:13
◼
►
and so you have the advantage now too of,
00:26:16
◼
►
you can take whatever you have now
00:26:18
◼
►
and submit it to test flight review,
00:26:20
◼
►
like your first set of bug fix updates,
00:26:22
◼
►
even if you're not ready to do the beta test,
00:26:24
◼
►
and then whenever you are, you already have a version
00:26:24
◼
►
with the correct version number that is approved
00:26:29
◼
►
and ready to go in test flight,
00:26:31
◼
►
and so it's also just a nice little bonus, I suppose,
00:26:32
◼
►
that the version number isn't unknown.
00:26:35
◼
►
Like you didn't know, well,
00:26:41
◼
►
is this next version going to be 5.4.7,
00:26:42
◼
►
or is it going to be 5.5.1 or 5.5.0?
00:26:44
◼
►
Like there's an ambiguity in the other process,
00:26:48
◼
►
and so one advantage now is you know exactly what it is.
00:26:50
◼
►
You could submit a test flight build right now.
00:26:50
◼
►
You know exactly what the build number is going to be,
00:26:55
◼
►
and you can have that ready,
00:26:57
◼
►
so when you are ready to do a beta test,
00:26:59
◼
►
you can just have it ready to go,
00:27:01
◼
►
which is another perk, I suppose, as well.
00:27:02
◼
►
- You can even, like this version numbering system
00:27:04
◼
►
matters so little that you can even skip
00:27:06
◼
►
version numbers that have bad connotations for people,
00:27:09
◼
►
so it's like if you want to skip like sixes,
00:27:13
◼
►
or like thirteens, you can just skip them.
00:27:15
◼
►
It doesn't matter at all.
00:27:20
◼
►
- In the same way the build numbers increase,
00:27:22
◼
►
like kind of randomly from a user's perspective,
00:27:25
◼
►
because there's internal builds that never come out
00:27:28
◼
►
to the light of day.
00:27:30
◼
►
- Yeah, exactly.
00:27:31
◼
►
- Right, before we wrap up,
00:27:32
◼
►
I do want to actually talk about what this feature is,
00:27:33
◼
►
because it's very cool,
00:27:35
◼
►
and I realize we've just spent most of the show
00:27:36
◼
►
talking about how it's versioned,
00:27:38
◼
►
rather than what it is.
00:27:39
◼
►
So, which is I guess our way.
00:27:41
◼
►
So what you build is just genius,
00:27:41
◼
►
where you've built a mechanism by which users can clip,
00:27:46
◼
►
I think, up to a minute long sections of a podcast
00:27:51
◼
►
that they're listening to,
00:27:54
◼
►
and then you bundle it up in a way
00:27:56
◼
►
that makes it very easy to share.
00:27:58
◼
►
They can either share it as audio,
00:28:00
◼
►
or as video in a variety of formats,
00:28:01
◼
►
and it's a really clever way of solving a problem
00:28:03
◼
►
that is sort of inherent to podcasting,
00:28:07
◼
►
is that it's hard to share the experience
00:28:08
◼
►
you're having with someone else,
00:28:13
◼
►
in a way that like,
00:28:15
◼
►
here's this funny thing that happened,
00:28:15
◼
►
or this interesting thing,
00:28:16
◼
►
or this compelling thing.
00:28:17
◼
►
How do you share that experience?
00:28:19
◼
►
It's not like, oh, this cool thing
00:28:21
◼
►
is happening around me,
00:28:22
◼
►
let me take a picture of it,
00:28:23
◼
►
or take a screenshot,
00:28:24
◼
►
or whatever that might be.
00:28:25
◼
►
Like, audio is this kind of ephemeral medium,
00:28:26
◼
►
which makes it much, much harder to do that.
00:28:31
◼
►
And so it's kind of this really clever thing,
00:28:32
◼
►
and you have this easy to use editor
00:28:34
◼
►
and interface for doing this,
00:28:33
◼
►
and so it's a really cool feature.
00:28:38
◼
►
And I think it is understandable
00:28:41
◼
►
that it had such a positive reaction,
00:28:44
◼
►
as it seems like it has since you rolled it out,
00:28:46
◼
►
because it's one of those features that you see,
00:28:49
◼
►
and it's the best kind of feature
00:28:51
◼
►
where you look at it and you're like,
00:28:52
◼
►
why haven't we had this for the last five years?
00:28:54
◼
►
It seems obvious in retrospect,
00:28:57
◼
►
which is the best kind of feature you can ever make,
00:28:59
◼
►
where it's like, of course,
00:29:01
◼
►
this is definitely something
00:28:58
◼
►
that podcast should have,
00:29:03
◼
►
rather than having a share link
00:29:05
◼
►
that is just a link to the two-hour-long MP3,
00:29:06
◼
►
which is like, great.
00:29:10
◼
►
There's this funny thing that happened
00:29:12
◼
►
at 58 minutes into this show.
00:29:14
◼
►
That's terrible.
00:29:17
◼
►
That's going to be completely ineffective.
00:29:19
◼
►
So I think this is a genius feature,
00:29:21
◼
►
and I'm glad that it's out in the world.
00:29:22
◼
►
Thank you very much.
00:29:24
◼
►
Yeah, I mean, I guess we don't really have time
00:29:25
◼
►
to talk about any technical details,
00:29:23
◼
►
but they honestly aren't that interesting.
00:29:28
◼
►
It's a feature that generates video on the phone
00:29:30
◼
►
using AV Foundation.
00:29:32
◼
►
It's very simple.
00:29:33
◼
►
It's pretty basic.
00:29:35
◼
►
So that's it.
00:29:36
◼
►
Anyway, thanks for listening, everybody,