PodSearch

Under the Radar

326: Tree-Planting Features

 

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 usually not longer than 30 minutes, so let's get started.

00:00:09   So there's an old adage that the best time to plant a tree is 20 years ago, but the second

00:00:16   best time is today.

00:00:17   And I guess we're going to talk today about tree planting features.

00:00:22   I'm not sure if there's this, but maybe that's not a great name, but it was something that

00:00:27   I've been recently very strongly reminded of, of how sometimes we add features to our apps

00:00:34   that whose primary benefit will come in the future and will come much later.

00:00:39   And we will look back with regret at having not done them if we don't do them.

00:00:44   And specifically, like a very concrete example of this is analytics inside your application

00:00:49   to understand how widely used particular features are, being able to understand, you know, when

00:00:56   this, how often this particular event happens, how often does it usually do this?

00:01:00   And you can go way down like the rabbit hole with this.

00:01:03   But something that I've found incredibly helpful in the iOS 26 redesign that I'm doing is the

00:01:10   places where, you know, past Dave had the wisdom and insight to add some instrumentation

00:01:17   to some features to see how people are using them, what, you know, configuration options are

00:01:22   popular, things like that, because I'm doing a lot of what I kind of call like data informed

00:01:27   design through this redesign, where I don't bring a broadly subscribe to the like A, B test

00:01:34   everything.

00:01:34   It's all data driven.

00:01:35   Just keep, you know, like the, there's no opinion in this.

00:01:39   We should just come up with lots of designs and just like, let the math design our app.

00:01:43   Like there is a version that you hear about for some companies that that's the seems to

00:01:48   be very much the approach they're taking.

00:01:50   Like I don't really subscribe to that.

00:01:52   I want to be the designer of my app.

00:01:54   I want to design it in a way that makes sense to me, that I think is good, that sort of checks

00:01:58   the boxes that I care about, even if that is not strictly or technically the most optimal

00:02:05   design from some KPI metric or something like that's not really, that just, that doesn't

00:02:09   appeal to me at all.

00:02:10   But what does appeal to me is making an app that is useful and engaging and is helpful

00:02:15   to my customers.

00:02:16   And so I want to build an app that does that.

00:02:18   And several times in this redesign, because the nature of my iOS 26 redesign is that I have

00:02:23   had to go through essentially every screen of my application and make adjustments to it

00:02:29   to make changes to it.

00:02:29   And some of these are minor, but some of them are major.

00:02:32   And every time I go through a screen, I definitely have this running process in the back of my

00:02:37   mind asking, you know, is this the best version of this?

00:02:42   Or is this still just the version that I designed years ago when I didn't, you know, before the

00:02:47   app feature had ever been shown to the public, it was entirely like based on the fantasy I

00:02:52   have of what this ideal user is using the app for.

00:02:55   And is that actually true?

00:02:57   And several times when I found, you know, I'm going through and there's, you know, say an

00:03:02   example in Penometer++'s iPhone-based workout mode, or like this, you know, you hit start

00:03:09   workout and it shows you previously, it had a fair bit of the screen, like maybe the top

00:03:14   20% was dedicated to a chooser for workout type.

00:03:18   You know, are you walking, hiking, or running?

00:03:21   And when I was doing my redesign, I was looking at this, and I was like, I wonder if that's

00:03:25   actually useful.

00:03:26   I wonder how many people actually ever change the workout type.

00:03:29   And I go and I look at it, and very few do.

00:03:32   Like, and thankfully, I'd instrumented that in terms of a previous version of the app that

00:03:38   let me, you know, reports to the server when that event happens.

00:03:42   And so I'm like, oh, this is wasteful.

00:03:44   Like, I should not be designing an app that has this big prominent feature that 99% of

00:03:50   users are just choosing once, like they're runners, they're walkers, they're hikers, they're using

00:03:55   it for whatever their default case is.

00:03:58   And so instead, now I have a much more compact view of that, that, you know, doesn't waste

00:04:02   that space.

00:04:02   And instead, I can dedicate the space to other features that, you know, warrant it more because

00:04:09   of their usage.

00:04:09   But it was one of these things where if I hadn't instrumented that particular section of the

00:04:15   app, I would have no way of knowing.

00:04:16   And all I could do is guess and base it on kind of where I was there.

00:04:20   And, you know, there have been a number of times where I really wish, you know, past me

00:04:25   had had the wisdom and foresight to instrument a feature because I look at some of these options

00:04:29   and I'm like, hmm, I think I could do better.

00:04:32   I think I could change it.

00:04:33   But, you know, like you don't want to change it if it's, you know, super well received

00:04:37   and being highly used the way it is now.

00:04:38   Or, you know, there's been places where, like, there's features that I've put in, kind

00:04:42   of put out of this, you know, off to the side because they weren't very popular.

00:04:46   But, you know, they would be giving equal prominence.

00:04:49   But, you know, you can't do this if you don't collect the data.

00:04:52   And so in some ways, this episode is just a, like, a warning to all of us that our future

00:04:58   cells will never really regret us adding extra bits of data collection or instrumentation to

00:05:04   our apps because it'll only, you know, it's like at the cost of some, you know, megabytes

00:05:10   of storage on a database somewhere, the future you can be greatly improved through this process.

00:05:16   You know, we've talked a little bit in the past about our analytics efforts and things

00:05:18   like that.

00:05:19   Obviously, you know, there's the big caveat that you have to be really careful with privacy

00:05:24   here.

00:05:24   I would strongly suggest, like, simple self-hosted things.

00:05:28   You know, there's a lot of services out there that will do a lot of this for you.

00:05:30   But then you have, you know, larger privacy risks with other services doing it.

00:05:34   And your users might not appreciate that.

00:05:36   And, you know, you might not want that either.

00:05:38   So I would strongly suggest, like, simple self-hosted things.

00:05:40   And it can be really basic.

00:05:43   It doesn't have to be, like, a really advanced system to get useful data.

00:05:47   You know, you don't need every feature under the sun, probably.

00:05:49   So, like, you know, my system is just, you know, it's part of my sync process.

00:05:54   When the app, you know, the app collects local events, and they just basically are, like,

00:05:59   you know, key value things, it syncs to the server.

00:06:01   It's through, and the server, you know, adds it to a database that's not connected to that

00:06:05   user.

00:06:06   It's, like, all these anonymous IDs, they rotate constantly.

00:06:08   Like, so there's no, like, persistent identities going across, you know, more than a few days.

00:06:13   And it just puts it all into a database table.

00:06:17   And, like, every day, it just basically, like, there's, like, analytics today and analytics

00:06:21   archive.

00:06:21   Those are the two tables.

00:06:23   And analytics today is, like, just all the live events.

00:06:26   And then every day, you know, every night, there's a cron job that runs to basically consolidate

00:06:30   them into, like, counts and totals and percentages and stick that into analytics archive.

00:06:34   And then what I'm viewing when I view my analytics is just that archive data.

00:06:38   So, like, all the individual stuff is out because who cares?

00:06:40   It doesn't matter to me.

00:06:41   All I want to know is what percentage of people, you know, used X or, you know, of all the people

00:06:45   who used X, what percentage of the value was A, B, or C?

00:06:49   And that can be things, you know, basic things like, you know, what percentage of people

00:06:52   use the watch app?

00:06:54   Like, that's a huge question, right?

00:06:56   Or even specifics, like, what percentage of people use different types of audio outputs?

00:07:02   Like, what percentage of people use the built-in speaker on their phone versus Bluetooth versus

00:07:07   AirPlay versus CarPlay?

00:07:09   That's useful for me to know for a podcast app.

00:07:12   That kind of thing, like, when you plant those seeds, when you plant those features, you might

00:07:19   not realize when you are planting them what you will need them for or what value they will

00:07:24   add to you later.

00:07:25   But chances are, like, I've found that when I do that kind of thing, the percentage of

00:07:30   time that it proves to be pretty useful down the road is pretty high.

00:07:35   Like, much higher than I thought when I first started trying to collect some basic data like

00:07:40   that.

00:07:40   It can be simple things like, you know, oh, I'm going to see how many people use this feature,

00:07:44   and maybe down the road that might tell you, as it has with me a few times, huh, I should

00:07:48   maybe make this feature better.

00:07:49   Like, you know, when I learn how many people use the built-in speaker.

00:07:53   Like, oh, that's way more than I would have guessed.

00:07:55   Let me make the built-in speaker playback better with a custom voice boost profile.

00:07:59   Or you might learn, oh, this feature that I thought people used a lot, it turns out, like,

00:08:05   you know, less than 1% of people ever touch it.

00:08:07   And so maybe that's not worth me rewriting it over the course of two months, you know, if

00:08:14   I can use that time in a way that would, you know, get a bigger impact for more customers.

00:08:18   Once you have those seeds planted, you might even discover, like, ideas that your new data

00:08:26   is prompting you that you can now do.

00:08:28   For instance, when I started doing listening stats as part of, you know, Overcast's features

00:08:35   last year, I started collecting listening stats because people wanted those, like, end-of-year,

00:08:39   like, Spotify rap-style, you know, playlist or, you know, top lists of what you listen to.

00:08:44   And so now I have listening stats of, like, total listening hours certain podcasts get.

00:08:51   Well, now I can use that to inform my search ranking algorithm or to inform promotional algorithms

00:08:57   because now I know not only how many people subscribe to it, not only how many people star

00:09:02   episodes in it, which I knew those for a long time now, but now I know how long people have

00:09:07   actually spent listening to it.

00:09:09   So I have all these new signals I can use to improve the app.

00:09:12   And if I'd never collected that data of listening sessions to build that other feature, if I never

00:09:18   had planted that seed, all of that, all those possibilities, I wouldn't even think about it.

00:09:22   I wouldn't even have those possibilities.

00:09:24   So a lot of times you can plant these features not knowing necessarily where they will go.

00:09:30   And again, there is always a balance of privacy here.

00:09:33   If you do it very consciously with that in mind, you can greatly reduce your risks of having privacy

00:09:39   problems, you know, like what data you collect, how you tie it to anything, if anything, you know,

00:09:45   how long you retain certain levels of detail of that data.

00:09:49   Like my session data for listening sessions, I only retain detailed versions of that for the past 48

00:09:55   hours.

00:09:55   And then that also gets consolidated down into, you know, a consolidation table.

00:09:59   And, you know, so there's, there's all sorts of, and that, by the way, that's why my undo

00:10:03   feature only goes back 48 hours.

00:10:04   That's for that reason.

00:10:05   So again, like planting these seeds, you don't necessarily know where they're going to go.

00:10:11   Some of them are more obvious.

00:10:13   Some of them like, you know, hey, how many users do I have?

00:10:14   That's, that's worth knowing, you know, but some of them, you might not know where it goes.

00:10:18   The other thing is like, sometimes you have kind of an oh crap moment.

00:10:23   I can't tell you how many times during Instapaper and during Overcast that I wished I could like

00:10:31   display a message of some kind on old versions of the app that, you know, for instance, like if,

00:10:38   if long ago I had abandoned iOS 12 compatibility and I was about to cut off the API on the server

00:10:45   side that's, that iOS 12 communicated with, I would love people to like post a message in the app

00:10:51   for users of that old version saying, hey, sorry, this is, you know, this is going to end on this date.

00:10:57   And I couldn't do that because the only way you can do that is if you build in a system

00:11:01   that lets you post messages in the app remotely from the server without doing an app update five

00:11:07   years ago, because now you can no longer update that version of the app because you've moved on.

00:11:12   So it's like one of those features of like, you know, hey, put in a feature that you can,

00:11:17   you know, change something server side or, you know, change a file on S3 or something and display a

00:11:22   message in the app without touching the app code.

00:11:25   That's another one of those features where like I, I had wished I had that for years.

00:11:29   I did finally build it when I did the rewrite last summer.

00:11:32   I finally put that feature in, but I didn't have it before that.

00:11:35   And I, and it only took, you know, a couple hours maybe to get all that worked out and

00:11:39   have the whole like web interface on my admin panel to edit the messages and stuff.

00:11:43   I have a minimum maximum build for each message so I can show it to just one build of the app

00:11:48   or every build before this build or whatever I want to do.

00:11:50   And, you know, it took a few hours.

00:11:52   Now I have that in place.

00:11:53   So now five years from now, when I have to deprecate the API that I use for iOS 17 clients

00:11:59   or whatever, I can post a message there.

00:12:01   I can do that.

00:12:01   That work is done.

00:12:02   And you never know when you're going to need that kind of stuff.

00:12:04   So if you think something like that might be useful to you at all, like even if you think

00:12:09   someday maybe I'll use this, if it's not that much effort to build, put it in there sometime,

00:12:15   you know, take, take like a boring Thursday or whatever and put it in there sometime.

00:12:20   Take, take the day before, you know, I'm going to do some maintenance work.

00:12:22   I'm going to, I'm going to build a really boring feature that I might really appreciate

00:12:26   that I have, you know, five years from now.

00:12:28   Yeah.

00:12:28   And I think it's, it's been surprising to me how easy these kinds of things can be.

00:12:34   So like my analytics system is even simpler than yours in the sense of all I have is a

00:12:39   very simple web, you know, it's like what web server that's, you know, has a database behind

00:12:45   it.

00:12:45   And all it does is aggregate counts.

00:12:47   So like the simplest form of analytics that I think you can do that isn't super helpful

00:12:52   still is just purely event-based.

00:12:55   So it's just when an event happens, it, you know, it reports that to the server.

00:13:00   And in my case, it just adds counts.

00:13:02   Like I don't keep any personal data whatsoever.

00:13:05   Everything is immediately aggregated and just reported in sort of these very broad, big buckets.

00:13:12   And I don't record, you know, the user's IP address or any, it's not attached to you.

00:13:15   I don't even have user identifiers, so that wouldn't even be a thing I could do, but it's

00:13:19   completely sort of anonymous and private in that way, but it's still super helpful.

00:13:24   And it was something that, you know, as I said, it did not, it was not very difficult to write

00:13:28   this because it is the world's simplest website because it, all it does is essentially a wrapper

00:13:33   around, you know, it's just a, a wrapper around some SQL queries that are just, you know,

00:13:38   just wrapping it to make sure that it's, you know, SQL injection safe and all the right

00:13:41   things in terms of it's safe in that way for my database, but it's not doing anything.

00:13:47   It's just writing to a database.

00:13:49   And it's a super simple, straightforward thing.

00:13:51   And very often on the other side, if the other kind of features you're describing with, you

00:13:54   know, I, I wish I had a, an announcements thing and it has definitely been added to my list

00:14:00   as a result of you describing your announcements feature.

00:14:03   So thank you for that.

00:14:04   It's so good.

00:14:04   But in several places in my, in my apps, I have things that are driven from a very simple,

00:14:12   like just a JSON file on a file server somewhere, which is, you know, and very often with these

00:14:18   in the Swift world now, I just do this with, you know, I take a, I have a configuration struct.

00:14:24   I make it codable and write that codable to a JSON file and that's it.

00:14:29   And like, it's super easy.

00:14:30   You take that file and put it on a server and you can just reconstitute it using the JSON

00:14:35   decoder.

00:14:35   And there you go.

00:14:37   And I found that to be super straightforward and easy.

00:14:39   And like, it's, you know, in terms of you have like, oh, it sounds like, you know, you

00:14:43   have a web front end to update the messages.

00:14:45   It's like, if I had that system and had a message that I needed to send, I would just be manually

00:14:50   editing a JSON file or something along those lines and then, you know, uploading it to

00:14:56   a file server.

00:14:56   And that's in some ways kind of awkward, but also is super scalable and straightforward because

00:15:02   serving static JSON files, you can do to millions of people concurrently with not much, you know,

00:15:08   hardware or effort with, you know, I think I do most of mine with R2 and Cloudflare and

00:15:14   like that works great.

00:15:16   It's been absolutely rock solid, very reliable, very dependable.

00:15:19   Don't have to deal with, you know, scaling issues.

00:15:21   And it's something that is so, it's, it's almost feels like it's too easy that it should

00:15:26   be this big complicated thing.

00:15:28   But, you know, I can say from my experience, even just having something super basic and straightforward

00:15:33   like that will go a long way.

00:15:34   And yeah, it's, it's the ability to reach back into the past is such a weird thing.

00:15:42   And I think it's, I've definitely learned to be, you know, time and time again, it is be as, yeah, don't try and

00:15:49   instrument features in that, you know, you need the data for.

00:15:53   I mean, in some ways you should have already been doing that.

00:15:55   But try and just instrument as much as you can, as much as is reasonable in your app, anywhere that you have, I guess in some ways it's trying to understand where inside the user's experience do they make choices.

00:16:09   And very often what I want to understand is which choices are people making, at what frequency, at what intervals.

00:16:17   And that has worked really well for me.

00:16:20   I remember years ago I used an analytics package that was doing way more advanced stuff with this, where it's like, and gets a bit more into the privacy challenges, where, you know, it would try and instrument users pathing through the application and things.

00:16:32   You know, so they do this event, and then they do this event, and then they do this event, you know, these complicated, like, flow diagrams and stuff.

00:16:38   And I'm sure that's useful in some ways, but honestly, 90% of the time I think I can get enough information out of just, if a user is making a choice, which of the choices are they making at what frequency?

00:16:49   And you can infer, I think, a tremendous amount from that information without needing to worry about these super sophisticated, complicated, data-intensive, privacy-concerning things, like just a very simple collect event counts system.

00:17:05   And on the other side, with, you know, just things that are driven in the app based on JSON files, like, you can go a tremendous distance with just those two things.

00:17:14   We are sponsored this episode by Incogni.

00:17:17   Data brokers are out there in the business of collecting your personal info.

00:17:21   And this is a really creepy, gross business.

00:17:24   Nobody likes the idea of these companies collecting your personal info and, you know, showing up in search results for your name so anybody can look up, like, you know, your phone number, your home address, like all this, you know, disgusting stuff.

00:17:36   So Incogni, what they do is they reach out to data brokers on your behalf, they request that your data be removed.

00:17:44   They send these, you know, the takedown and removal notices to these data brokers.

00:17:47   And if the data brokers object with any part of it, they deal with it for you.

00:17:50   So you don't have to go out there and deal with hundreds of data brokers and, you know, new ones as they pop up, filing takedowns and opt-outs and everything.

00:17:59   Incogni specializes in that.

00:18:01   So here's what you do.

00:18:02   You protect your privacy in three easy steps.

00:18:04   You just create an account, grant them the right to contact data brokers on your behalf, and that's it.

00:18:09   You just kick back and they get to work.

00:18:11   They will tell you their progress.

00:18:13   They have a user-friendly dashboard to provide updates on the status of whatever removal requests they're currently filing.

00:18:18   So with Incogni on your side, you can reduce the amount of data brokers getting your contact details along.

00:18:24   So you can say goodbye to annoying spam and all the creepy risks that come along with this kind of thing.

00:18:30   Incogni makes protecting your privacy easy.

00:18:32   It would take you hundreds of hours to do it manually, even just, you know, maybe even just one data broker.

00:18:37   And then you would need to repeat that process every few months as new data brokers continue collecting your data and creating new records.

00:18:44   So Incogni will take all of this work off your hands.

00:18:47   Visit incogni.com slash radar and secure your data today.

00:18:52   Sign up and enjoy a 30-day money-back guarantee.

00:18:55   Protect your privacy with Incogni and experience peace of mind knowing your personal information is safe.

00:19:01   Take your personal data back with Incogni.

00:19:03   Use code RADAR via the link in the show notes and you'll get 60% off an annual plan.

00:19:08   Check it out now.

00:19:09   Incogni.com slash radar.

00:19:12   Our thanks to Incogni for their support of this show and all of Relay.

00:19:17   There are also certain factors, too.

00:19:19   Like, I think, you know, before we quite leave that topic, like, as you do your levels of, you know, hey, how many people make this choice?

00:19:26   One thing I have always valued is, like, anytime you have, like, a setting in the app or a view mode to a screen, instrument that.

00:19:36   See how many people actually use that setting.

00:19:38   How many people, like, you know, if you have some kind of obscure setting that is, you know, maintenance for you to maintain over time, like, oh, this screen you can view as a list or a grid or, you know, or whatever.

00:19:48   How many people ever switch that?

00:19:50   Whatever your default is, do you have, like, 99% of people who just leave it on the default?

00:19:56   Maybe you can get rid of the other option sometime, you know, as you are, you know, maintaining it over time.

00:20:01   You know, like, it's useful information to know, like, huh, if I do, like, when I'm redesigning the screen, do I want to do two different designs of the screen to accommodate these two different modes if only 1% of people are using the other mode?

00:20:14   That kind of thing can be very valuable as you plan things and evaluate things and, you know, evaluate cost and maintenance over time.

00:20:22   Yeah, because I think it is a funny thing where increasingly in my mind when I'm developing and designing things, I have in my mind that, like, a feature or a situation needs to be used by a meaningful proportion of users for it to be something that justifies sort of further attention and time.

00:20:40   And I shouldn't be too precious with, well, I built it once and so I need to maintain it and include it and have it be there forever.

00:20:47   And, you know, this manifests itself in so many different ways.

00:20:49   But I think really, unless it is the differentiation between a free, you know, obviously your, like, premium features are going to be used by more, by fewer, much fewer people than your free features.

00:20:59   So, like, that differentiation doesn't quite follow this rule where if you're building your app for the 95% case, obviously your, you know, your premium situation will be slightly different than that.

00:21:08   But within each of those categories, building things that are focused around how people, the majority of users are actually using the app is so valuable and so helpful.

00:21:19   And I've just, there's so many times this summer as I've been doing these iOS 26 things that I'm like, I go and I look at the data.

00:21:26   I'm like, this feature is used by nobody.

00:21:28   And so I don't, I haven't given it much time.

00:21:31   And that's been super helpful with the summer that's been so busy and so complicated.

00:21:34   And there's been so many things that I need to update.

00:21:37   And, like, there are a couple of screens.

00:21:39   Like, I think I've gotten to the point, you know, I'm pretty happy with my iOS 26 updates.

00:21:43   But there are a few places in, you know, especially in Widgetsmith where it's like, this is, it turns out, this is a feature that hardly anyone ever uses or ever opens.

00:21:51   And so those features and screens just got the, I opened them, I made sure they were not broken, and then I moved on to something else that was actually valuable and useful.

00:22:00   But knowing which of those things is the thing that needs, you know, that you can essentially do the light touch on, only make sure it's not broken, and then move on.

00:22:09   You requires that work that I've done, you know, in the past few years to collect the data.

00:22:14   So I know this particular feature, this particular screen doesn't need quite the level of polish that something else would.

00:22:21   And eventually, maybe those screens in some way should just disappear out of the app.

00:22:24   But that is a difficult and much more complicated thing to do than, you know, just trying to understand where your emphasis is.

00:22:32   Where should you, where would you, you know, where would your time be best spent?

00:22:36   Because you're going down the common path that most users are doing.

00:22:41   And so it can just be something that's super helpful to do.

00:22:44   And I suppose this is one of those, you know, in the same way that I now have it to do to add an announcement system to my app if you are not collecting any of these kinds of things.

00:22:52   And I think sometimes maybe I've seen some people who have like a badge of honor that they don't collect any data as though this is something that they should be proud of and something that they are proud of.

00:23:04   And I mean, I'm not saying like if you're proud of that, like, you know, that's be proud of what you want to be proud of.

00:23:08   But I would say there has been a time in my career and a time in my history where I was much more on that side of things.

00:23:15   And I think in some ways the way I view it for myself now is that what I was saying is I know better than my users and I don't care how they're using it.

00:23:24   I know better.

00:23:26   And that was like that's the harsh version of what I was saying to myself.

00:23:29   And I think increasingly I have a much more clear-eyed view of that, that I can learn a lot from my customers.

00:23:35   And the way to do that is with privacy, you know, preserving analytics.

00:23:40   And as long as I do things in a clean, careful, intentional way, I don't need to feel bad about collecting general information about my users in a way that allows me to make the app better for them.

00:23:54   It makes me more, you know, efficient in my work because I can truly focus on things that are going to be used and impactful rather than just sort of guessing blindly in the dark or basing it all on myself.

00:24:05   Because, you know, for as much as it would be lovely if you're building an app where you are that, you know, the 99% user that does everything in the way that everyone does, like that is unlikely to be the case because that's just not the reality of my life.

00:24:20   Like I've tried that, I've tried building those apps in those ways and inevitably I find out it's like people like the core of the app, but they're using it in a way that is slightly different than necessarily the way that I do.

00:24:29   Yeah, I think there's a great like kind of philosophical divide there because I actually usually in most ways that I run and develop my app, usually I am more on the side of I'm going to do this the way I want or I'm going to do the features I want to do.

00:24:45   And I hope people like them, but I don't know, you know, that is usually closer to how I operate.

00:24:50   But I don't think that is totally at odds with collecting data.

00:24:55   I think you can you can operate as like, you know, the the app dictator.

00:25:00   There's probably a nicer term for this, but you know, you can operate that way if that's how you choose to do your app, which again, that's usually the choice I make.

00:25:09   But you can also be informed by the data like there.

00:25:13   There are a lot of insights that you would only have by looking at some of this data.

00:25:17   And there's, you know, as we mentioned, prioritization, you know, certain, you know, kind of basically unblindfolding yourself.

00:25:24   You don't have to guess as much like, is this working?

00:25:27   Do people use this?

00:25:28   Do people like this?

00:25:29   Are they getting this?

00:25:30   You don't have to guess as much when you have data behind it.

00:25:33   The data can just tell you and you can still if you want, like just because you have data does not necessarily mean that you have to make every decision by popular vote.

00:25:45   You know, if if if everyone uses this one thing and not this other thing, you don't have to get rid of the other thing or you don't have to necessarily, you know, not ever change those things.

00:25:53   But you can you can know the decisions you're making.

00:25:56   It's like you can know the rules that you're breaking before you break them or you can you can decide, you know what, this thing is really unpopular, but I really like it.

00:26:05   So maybe I'll see if I can see if I can somehow convince more people to use it or maybe I'm not maybe I'm not showing the value of it, you know, in as well as I could or something like that.

00:26:13   So you don't have to necessarily give up creative control of what you're doing with your app by collecting data.

00:26:19   You can you are it's it's up to you what you do with the data and how you prioritize the insights that you get.

00:26:26   But if you don't have any of that data, you are just guessing and you're going to guess wrong a lot of the time.

00:26:34   Yeah. And I guess it's better, better not to guess.

00:26:36   And so as we wind down our summer work here and we're thinking about, you know, squeezing in these last few features for iOS 26, like this is just something that we're going to put out there.

00:26:45   That is, if you don't have any of these things, like it's probably a good, a reasonable time to do it because it's going to be a lot of upheaval and change, I suspect, in a couple of weeks.

00:26:55   I think we're, you know, our next episode of this is coming out on the other side of probably the iOS 26 submissions would have opened.

00:27:04   And so it's like it's a wild time in some ways, but it's going to be a very interesting time to just understand how people are using your apps and the best way to understand that is to have this thing.

00:27:14   And as we get towards that, I guess in some ways it's like, I hope, it's like my best wishes to all of our listeners who are thinking about their iOS, submitting iOS 26, you know, apps.

00:27:25   I think this summer has in many ways been a narrative arc between you and I of the various challenges and travails of the summer and of getting our apps ready for iOS 26.

00:27:38   And sometimes that has been delightful and sometimes that has been utter despair.

00:27:41   And I think in the end, we will hopefully be there to some degree.

00:27:46   Like I'm getting close to my, you know, the point where I put up a sign in my office that says no more new features, which, you know, is essentially me saying I'm done.

00:27:54   Like, and now I just need to polish and make things good.

00:27:56   And I don't think you're quite there yet from some of the conversations I've, you know, you were saying on this week's ATP, but you're definitely seeming in a better place than you were before.

00:28:04   And so as we wind down the summer, you know, I think this is mostly just like, thanks everyone for enjoying the journey.

00:28:09   It's been really fun to hear people who found our journey helpful in this process because it has been a really interesting summer.

00:28:15   Oh, yeah.

00:28:16   Yeah, quite.

00:28:16   I think an arc is putting it nicely.

00:28:18   It's definitely a roller coaster.

00:28:20   But yeah, it's been a journey.

00:28:23   We're not through it yet, but we're almost at the end.

00:28:26   And I'm not, I mean, I'm in a better place overall.

00:28:30   There's still a lot of bumps along the road.

00:28:32   I'm still not happy with, you know, kind of what I was able to get done versus not get done this summer.

00:28:37   But that's developer life sometime.

00:28:39   And that's kind of why, getting back to earlier, why it's valuable to have insights that can help you prioritize things.

00:28:46   You can never do everything you want to do.

00:28:47   There's never enough time.

00:28:48   I certainly never have enough time.

00:28:50   So I have a huge to-do list.

00:28:52   I cannot wait to get iOS 26 out of my way so I can get back to writing features.

00:28:58   I've laid some exciting groundwork for features that I really am looking forward to.

00:29:01   I can't wait to get back to working on the features.

00:29:04   And instead, I've been stuck doing this redesign that I hate.

00:29:08   So it's almost done.

00:29:10   I'm almost back to the feature part.

00:29:11   And I'm looking forward to getting through the next few weeks.

00:29:15   Thanks for listening, everybody.

00:29:17   And we'll talk to you in two weeks.

00:29:18   Bye.