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,