PodSearch

Under the Radar

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:36   Great.

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:27   (laughs)

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:50   - Yeah.

00:25:52   - Right?

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:16   Who cares?

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,