PodSearch

Under the Radar

300: The Aftermath

 

00:00:00   Welcome to Under the Radar, a show about independent iOS app development. I'm Mark Orment.

00:00:05   And I'm David Smith. Under the Radar is usually no longer than 30 minutes, so let's get started.

00:00:10   So the sort of summer series that we've been doing here on Under the Radar has been all around the overcast redesign, the preparation for that, the technical side of that, the sort of, in the, we did an episode that was sort of the like getting ready to actually launch it, we did an episode right after you launched it.

00:00:29   And I think it's probably a good point as we wind down the summer, we're starting to get into season where there's going to be new things, you know, get a new app, the first Apple event of the fall has been announced, things are heading in that direction. But I think it's good to bookend this summer with a follow up, you know, we we titled the early posts, we had like the storm before the storm that we had the storm and I think now it's kind of probably a good time to have the aftermath after the storm.

00:00:53   So this is the kind of checking in on how over the overcast, you know, big redesign launch went and it's, you know, certainly from the outside, it's it's been an interesting thing to observe, because I use overcast every day, many times a day.

00:01:06   And I, you know, business on the beta, I've used it. And now it's just what overcast is. And it's I'm very used to it. I this it works, you know, very well for me, and I use it all the time.

00:01:17   But, you know, from my perspective, it's great. In some ways, I've like moved on to this is just the new normal and everything's great. But I get the impression from you talking to you and hearing hearing you talk about overcast and ATP, that the launch has not fully settled to that place for all of your users, that there are many people who are still having difficulty adjusting to the new reality of the new redesign, some of the changes you do there.

00:01:41   And there's definitely been some things that you've had to go back and revisit and change and make use of the thing we've talked about many times where now because it's all in, you know, Swift and Swift UI, you're able to work and develop much more quickly.

00:01:55   And unfortunately, you've had to put that to the test right away, because there's all these things that you had to work on as quickly as possible, and change.

00:02:03   But I think before we get into the technical side, I think just initially is probably good to just start off saying it's like, how are you doing? How are you feeling about the update? How are you know, how is the last month or so, you know, been treating you?

00:02:15   It has been a roller coaster. It has really, really been a lot of ups and downs. You know, when I when I was early beta testing this rewrite, the feedback I got from my testers, including like, you know, when I did the very early test, that was only like, you know, 30 or 40, like, you know, friends, basically, even that feedback was mixed.

00:02:36   I knew right from the start, this is going to be a bit of a bumpy ride. I was changing some things. I had removed some things. And I knew like, this is a risk.

00:02:46   I knew I had to do it for all the reasons I've said before, like, I knew I had to do this rewrite, you know, it kind of had to happen soon, because just more and more time was going by where I just wasn't able to really update my app and serve my customers.

00:02:58   And I was getting, you know, emails every single day from people saying like, this app is so slow, you know, the old app, it's so slow, it keeps locking up on me. Like, I have a large collection, it doesn't work.

00:03:08   All this user feedback and negative reviews every single day, you know, citing problems that I had fixed in the rewrite.

00:03:14   And so I did feel some, you know, some time pressure to say, you know, I got to get this out this summer. Like, I can't just let it wait another six months. Like, I have to get it out this summer.

00:03:24   And so I, you know, I cut scope and made it happen and I got it out there. And I knew right from the start, this was going to be controversial in certain ways, the streaming removal, certain design changes.

00:03:37   I had no idea what I was in for. This is by far the longest I've gone without a redesign before this. It had been a few years. And this was the biggest redesign I've ever done in the app.

00:03:50   And, you know, the app being ten years old, and I think that this is the part that I think I underestimated, to some degree it doesn't belong to me anymore.

00:03:59   In the sense that, like, people have been using this app, many of the people who are still using it today have been using it for most or all of those ten years.

00:04:10   So when you have somebody who, like, they've been using this app, like, every day for a decade, it has become such a part of their usage and their life and their routine that in some ways it's kind of felt like George Lucas messing with Star Wars.

00:04:25   It kind of felt like, oh, no, I am messing with something these people hold dear and use all the time and they've had it for so long it has almost become theirs.

00:04:36   And, like, who am I to mess with that? And I think I underestimated my responsibility in that area and I overestimated how opinionated I was going to be able to be with the update.

00:04:50   Like, if I was making a brand new app from scratch, I would be able to be a lot more opinionated because people could choose to use it or not.

00:04:58   But that's not how App Store updates work. I just wasn't making a new update from scratch. This was updating an existing app that had an existing user base that would be forced to come along with whatever I'm doing.

00:05:09   So I was making decisions about the app that I thought were, like, bold and forward-looking and opinionated, like, to a good degree.

00:05:18   But I think I overplayed that angle and I think I went a little too opinionated, a little bit too bold.

00:05:23   I was making decisions more like it was a brand new app, not an update to an existing app that was a decade old and had a bunch of users already who were using it every day.

00:05:34   So I think I overplayed that. I think I overreached with my changes.

00:05:39   And so much of the summer has been, you know, some bug fixes here and there, of course, because anytime you ship a giant rewrite you're going to have bug fixes that you've got to do.

00:05:48   And I still have some of those I'm still working on. But a lot of the changes have been basically walking back some of my opinionation, whatever that word would be.

00:05:59   You know, walking some of that back to say, like, look, I thought I could get away with removing streaming. Turns out I can't. That was a big one. That was a very big one. I can't get away with that.

00:06:10   I thought I could get away with certain minor option or behavioral removals like one tap play with this mode I've had since the beginning of time.

00:06:18   I thought I could get away with that. I figured how many people possibly use that. Turns out a lot.

00:06:22   The thing is with the App Store, like, the star rating system matters a lot in the sense that not everyone – in fact, I would say almost no one seems to actually read written reviews.

00:06:33   And the way the App Store displays written reviews, where it basically has like one or two big blocks that show the top one or two reviews and then the rest are basically buried, I think written reviews are not very useful to most people on either side.

00:06:49   But star ratings are. Star ratings are displayed everywhere the app is displayed, everywhere in the App Store and every location. Next to it is a star rating average and count.

00:07:01   And so for that number to go meaningfully down will really hurt your business. It matters a lot.

00:07:08   So I'm very sensitive to that and I've been watching this graph on app figures of the average of new ratings.

00:07:17   And that has been humbling to say the least. That I was able to see like, all right, before the rewrite my average of new ratings was like in the high fours, you know, 4.5, 4.4, 4.6.

00:07:31   And then after the rewrite it was down to like 2.5, 3, like, you know, it was substantially down.

00:07:38   And I'm fortunate that I've never actually reset my ratings in App Store Connect. Like, you know, you have that option when you upload that you can have the new version start fresh with no ratings.

00:07:47   The world's scariest checkbox.

00:07:49   Yeah, the reset summary rating feature. I've never used that. So I have ten years worth of ratings built up.

00:07:55   And so I was lucky that like, mathematically speaking, the average was still very high because I had ten years of high ratings even though I had, you know, two months of pretty bad ratings.

00:08:04   So the math was still working out. But that was a clear sign to me I have to do something. Like, that's what like I, you know, I gave the metaphor many times of like, this is like, it's like a building on fire.

00:08:17   It's a very small fire on a very big building, but I need to put it out. Like, that's going to be a problem if I don't.

00:08:24   So I really have been kind of lost for a lot of the summer trying to figure out like, what do I do to please people?

00:08:33   So re-adding streaming, that was a big one. That was probably the biggest thing that I've done that turned that around a little bit.

00:08:40   You know, a couple other minor things here and there. And what I'm working on now, which should be out soon, is another swipable UI for the now playing screen to toggle between the main controls and the info.

00:08:51   Similar to what we had before with the cards, but better with, you know, using the whole screen. That should be out soon. I suspect that will also kind of win a lot of ratings back from the depths of twos and threes or ones.

00:09:04   So that will help a lot too. But I think like, overall, I have actually felt pretty bad about this for much of the summer. It has been a pretty substantial stress point for me.

00:09:15   I have often felt negatively. I've often felt like, you know, screw these people. Which is not a productive way to think. You've got to feel that, tell yourself that, and then move on in whatever way you can because that leads nowhere good.

00:09:29   But then you've got to get your head back in the game and just fix the problem. And so that's what I've been trying to do.

00:09:36   You know, I could tell that the rewrite was a very bumpy launch. There's a whole Reddit about people who really hate me, which I didn't even know was there until a couple of weeks ago.

00:09:51   And I found it and I took a look and I'm like, "Whoa." A tip for indie developers, don't go to Reddit. If someone makes a Reddit about your app, don't ever look at it. It's not good for any of your mental health.

00:10:06   What I've been trying to do is try to look at feedback channels that are not full of personal attacks on me as a person. And so that would be, you know, not looking at Reddit, but looking at things like my rating average.

00:10:18   You know, when you look at metrics, like look at engagement, look at things like how many sales are you getting? What's your revenue? What's your, you know, if you have an in-app purchase, like how are those rates looking?

00:10:27   For the handful of places that are full of people, you know, writing things about me, you know, your written app store reviews, you know, places on the internet, the message there is substantially more negative than what your metrics will typically show.

00:10:42   And thank God that is true for this too. Because if that was, if all of my input was as bad as some of those human written ones, I would quit the business. Like, it's awful.

00:10:53   Like, when developers are there, when you're getting feedback about your apps, like, yeah, look at the ones that are more objective and more data driven.

00:11:01   So are people using the app? Has usage gone down? Has, you know, have purchases gone down? And fortunately, in my case, all of those other metrics are either level or increasing.

00:11:14   So every other metric I have to say like, is my app healthy? Did this launch go well? Are people still using it? Are people mad? Are people on fire? Am I terrible? Is my app terrible?

00:11:24   Every other metric says no. And thank God for that. Because again, I would have a hard time continuing if that wasn't the case. But every other metric is positive.

00:11:34   So you just have to look at like, you know, how do you manage these inputs? How do you manage these feedback channels? And obviously, some of them people are making good points.

00:11:43   Some of them people are complaining about real bugs, or real shortcomings. And so you take that as input, you know, as you can. But certainly there's a balance to be struck.

00:11:54   And I've had a lot of trouble striking that balance all summer. But I think I'm coming out of it now in a better place, both psychologically and with the app in a better place.

00:12:05   And I'm not out of the woods yet, by any means. Like I still have some bugs to fix that are pretty important that are affecting a lot of people. I still have, you know, the interface changes that people are asking for, you know, that enough people are asking for that I think I need to do it.

00:12:20   So there is a lot that I still have to do. But it's getting a lot better now than it was, say, a few weeks ago.

00:12:30   Sure. And I think, I mean, certainly the trend there, I mean, the most important trend is how you're feeling about the app and about those things, you know, in terms of, ultimately, for many, certainly from my perspective as your friend, like that's the thing, it's hard to hear how rough the last, you know, months or so since it launched have been in that way.

00:12:50   Because that's, I mean, I say that because I know very specifically the way that that can feel that I think one of the wonderful joys of being an indie developer is feeling a deep sense of ownership of the work that you do.

00:13:05   And there is less of a gap between the work and you as a person because you're putting yourself into your work and many of the all of the all of the all of the success is yours and all of the failure is yours is just the reality that it's really cool that you can feel that you

00:13:23   you know, you built this thing from, you know, file new project years ago, you know, a decade ago to what it is now is the result of your efforts and your labor, your did you wasn't a situation where you were working.

00:13:35   You know, if you worked at a larger company that had 20 developers, and you've you spent your summer working on the audio engine, and you know, it's nice when someone says the audio engine is good.

00:13:46   And it's nice when, you know, things go well in your department, but overall, if the app is doing well or not is this kind of diffuse thing. Whereas for you, or if I imagine this is the feeling I often have enough to, you know, sort of had to navigate is it I feel

00:14:00   tremendously connected to the work because the work was created almost exclusively by me. And so it's really hard when things you know, when people say unkind things about you, or about your work, it feels very difficult not to take it personally.

00:14:14   Oh, yeah, yeah. And so it's not something that you can easily just like turn on and off in that way. Or once you see it to just ignore it or forget it, because you're so connected to it. And so I'm, I'm, you know, it's one of those I'm glad that it sounds that the, as much as that trough in the middle is awful, that perhaps we can be looking forward to be climbing out the other side at this point to that we can just sort of move forward with the, you know, the fun parts of this and the exciting parts of this.

00:14:43   And it's, you know, maybe you've lost some customers over the K over the, you know, over this process. But I think there is something that is, I find somewhat reassuring when I look at the app now is the app itself is, I think, objectively better than it was before the update. And the reality of that, you know, in terms of it is faster, is more responsive, it behaves in ways that the that modern apps do is being updated much more frequently. There's all these things that make it better. And those are the things that will benefit us.

00:15:12   And those are the things that will benefit every time you get a new customer. And as much as it's useful and wonderful to have an established user base, in some ways, you know, the success and the long term viability of our apps is very connected to the sort of the newest user that we have, that if we get a new user, do they stick around? Do they hang, you know, are they there in a way that is going to, you know, make use of the app and be retained? Because if they aren't, then the app is just going to be a little bit more

00:15:18   and wonderful to have an established user base, in some ways, the success and the long-term

00:15:23   viability of our apps is very connected to the newest user that we have; that if we get

00:15:31   a new user, do they stick around? Are they there in a way that is going to make use of

00:15:38   the app and be retained? Because if they aren't, then the app is just sort of on this inevitable

00:15:43   slow decline that won't go anywhere. I think what's great about this is you're now an

00:15:47   a place that the marginal new user, every time that they download the app, should be

00:15:53   in a much better place. It should be, "Oh, wow, this app is better, it's fast, it's

00:15:57   choppy." And they have no baggage around the things that have been lost or changed coming

00:16:03   from the old version. And so in some ways, in that sense, it's great, but the process

00:16:07   of getting there is just rough and it's complicated. And there's no easy answer, too, with so many

00:16:12   of these things. Because something that I always struggle with, and I think I've seen

00:16:16   bits and pieces of this in this update, is it's so easy to be like, "Well, why didn't

00:16:20   you just?" Right? And then it's like, "Well, why did you get rid of streaming?" Or, "Why

00:16:25   didn't you just make it so that it does sort of where you ended up now?" You don't have

00:16:30   true streaming, but you just download. When a file is hit play before it's downloaded,

00:16:35   it starts downloading it and then it starts playing it with whatever it has while it has

00:16:39   it kind of a thing. And it's like, it's not that you got rid of that for no reason. There

00:16:44   are other reasons and trade-offs. And in all of these, one of the fundamental realities

00:16:49   of development is you have to decide if you're going to do this or that. It's a bad path

00:16:57   to only say yes to everything, that you're just like, "Well, I'll do both. I'll have

00:17:00   this and this and this and this and this and this." And then you end up in a place that

00:17:04   the app has no personality, it has no opinion in it. And I think, so in this case, streaming,

00:17:13   the way you ended up, I think works really well. I think it checks the box enough that

00:17:18   if you're solving the actual problem that people were having, which is usually, "Oh,

00:17:22   wow, there's this new episode of a show that I wanted to listen to. Ooh, I'm excited. Let

00:17:26   me hit it." And it starts to play. The thing that was probably, at least my guess is, and

00:17:32   this is from my own experience, the thing that was really the frustration people were

00:17:35   having is they were excited and then they were disappointed. And that distance is the

00:17:41   thing that you need to address, not the ability to arbitrarily zoom back and forth between

00:17:45   things in ways, like the broad version of what streaming would mean. But it's like,

00:17:52   you got rid of it for a good reason. And I think as a user, I'm glad it's back because

00:17:56   there are situations where I very much appreciate being able to start listening to something

00:18:00   right away. But it's tough because you took it away for a reason and in some ways for

00:18:06   reasons that are outside of your control, that the dynamic ad insertion and all these

00:18:10   other things that are complicated in making a podcast player mean that you sort of had

00:18:14   to do this in order to keep other features going. And so it's tough. So you ultimately

00:18:20   just had to make the decision. And in this case, unfortunately, you had to sort of live

00:18:24   with the difficulty that that then created in people's lives or the frustration and they

00:18:28   took it out on you. And I wish people were not as unkind and thoughtless as they can

00:18:35   often be, but unfortunately that's the world we live in. Well, and again, I kind of get

00:18:41   why people act that way because they feel powerless. Because here's me, this faraway

00:18:48   developer, a lot of them don't even, well, the ones on Reddit, I guess, know me, but

00:18:52   the ones in written reviews often don't know that this is just one person or whatever.

00:18:57   They feel powerless. They feel like this app that I've been using has all of a sudden changed.

00:19:01   I had no say in the matter and it's worse for me in way XYZ. And so of course they're

00:19:06   going to respond strongly. I totally get why that happens and it's kind of unavoidable

00:19:12   to some degree. But with streaming in particular, that was obviously a big one. And the reasons

00:19:18   I wanted to get rid of it, I just now, it's very technically expensive to support streaming.

00:19:24   I don't mean computational power-wise or money-wise. I mean complexity-wise. And what

00:19:30   APIs I have to use, what APIs I can't use because I have to support streaming. There's

00:19:36   a lot of complexity there on the lower level as well. And that's why I was thinking,

00:19:40   well, DAI makes it kind of break in these different ways and it's super difficult

00:19:45   to support technically and it restricts what kind of APIs that I can use in the audio engine

00:19:51   as a result. Wouldn't it be great if I get rid of it? So there was a lot of thought that

00:19:55   went into that. But again, I made the wrong call. Yes, it is very expensive to support

00:20:02   streaming but it turns out it was more expensive not to. And so that's the process I had

00:20:07   to go through. And I understand, I don't blame individuals for saying mean stuff or

00:20:13   anything because again, I understand where people are coming from. I understand why they're

00:20:17   mad. When we criticize Apple for something, that's not obviously an individual, but

00:20:24   we criticize Apple oftentimes not because we hate them but because we like them and

00:20:29   we like their products and we want to keep using their products or their products serve

00:20:33   our needs the best overall but there's some flaw XYZ that is making it hard for us or

00:20:39   that we know they could do better on and like why are they doing badly on this one detail.

00:20:45   So we complain about it in public and sometimes we say unkind things because we're frustrated

00:20:49   because these are things that we like and use and depend on and they change in negative

00:20:54   ways. So I totally get that dynamic. And so as a developer, you can't really fight that

00:21:00   dynamic. It's a good problem to have. One of the general categories of shortcomings

00:21:06   I've had with this update is like there will be some little behavioral detail in the

00:21:12   old app that is exposed in a use case that I never do or that none of my testers did

00:21:18   in my beta test group but that some percentage of my user base does that and that little

00:21:24   detail is now different or missing or broken in the rewrite and it ruins their workflow

00:21:30   in some way. When you have an app for 10 years, especially podcast apps are really deceptively

00:21:36   complicated. The amount of little workflow details and small implementation details that

00:21:42   can be different between two podcast apps is just massive. And so even though if this

00:21:47   is like a minor thing that I didn't even know about or didn't think mattered, if some

00:21:52   menu item somewhere gets moved or changed or deleted, suppose that really angers or

00:21:57   really breaks the app for like some tiny percentage of my app user base. Well that tiny percentage

00:22:04   of the user base could be a thousand people. And if many of those thousand people go leave

00:22:09   one star reviews, that makes a dent. That makes a big dent. So even though it's only

00:22:15   a small percentage of the user base, if you anger them enough, they can cause big problems

00:22:20   for you. And again, this is one of those things that like I underestimated the impact of this

00:22:25   because I was still thinking of this as, you know, last time I was making major opinionated

00:22:30   decisions about this app, it had way fewer users and it was a long time ago. So I really

00:22:36   underestimated that and so that's again leading into all of this is like things I did

00:22:41   not fully appreciate going into it but I think I'm in a better place now.

00:22:47   We are brought to you this episode by Sentry. Sentry are the folks who help you avoid your

00:22:51   mobile app being the one that gets deleted next. Boy this hits home. From getting deep

00:22:57   context into crashes to seeing full insights on performance issues, Sentry is here to make

00:23:02   sure your code doesn't suck. Fix what's broken faster and keep your app running smooth

00:23:07   with application monitoring built for mobile developers. This is so important as we've

00:23:13   been discussing for this whole episode for both your apps and you see in other people's

00:23:19   apps too. You need to know things like is your app breaking, is scrolling stalling,

00:23:25   do you have weird latency, are people rage clicking in your app, it's super important

00:23:30   so you got to keep your mobile users happy otherwise they will go ruin your star ratings.

00:23:34   So the great news is Sentry is totally free to use so there's no reason not to check

00:23:39   it out. Go check it out. It's really impressive. You got to see Sentry. So even better as a

00:23:44   listener of our show you can get six months of the team plan for free. So click the link

00:23:49   in the show notes and use the code radar. That will get you six months of the team plan

00:23:54   completely free at sentry.io/for/mobile or click the link in our show notes. Then use

00:24:00   the code radar. So then you came from our show. Our thanks to Sentry for their support

00:24:05   of this show and Relay.

00:24:07   So something you said there that I think is really helpful to sort of wrap up why this

00:24:14   summary is so difficult. I think is you were saying some of the things you could only learn

00:24:20   after the fact, right? You learn the value of these features to users when you take away

00:24:26   the feature from them. And I think it is very difficult to understand those effects of a

00:24:35   change because when you're making the decision on the first side, you have all of the reasons

00:24:42   to make the change and you're very aware of them and you see them and you can quantify

00:24:47   them and actually wrap your head around them. But there's all this information in this equation

00:24:53   that is just completely impossible to understand until you really get it out there to the broad

00:24:59   audience that, "Oh, you could have a beta group." It's like, "Sure, but is that beta

00:25:03   group representative?"

00:25:04   No. Spoiler, no, it's not. Do most of them even install it? No.

00:25:09   And even if you had a representative group, it's like, "Well, okay. Well, now you have

00:25:14   two problems. Now you have thousands of people with different things." It just gets like

00:25:19   the reality of any situation is that there are some things that you can only learn by

00:25:24   actually doing it. And you can try and guess, and I guess the experience that you and I

00:25:30   have of more than a decade of being developers is hopefully our intuition is good for what

00:25:35   kind of things are generally going to go down well and which ones aren't. But the reality

00:25:41   is even with more than a decade of experience and the benefit of showing the app to other

00:25:47   people who have even more experience, there are things you will only learn once you have

00:25:52   it out in the world. And as a result, you can't make a fully informed decision. And

00:25:57   so there's always going to be situations like this. And in some ways, it's like I find some

00:26:00   comfort in that in my situations where I've run into this in so far as it isn't that I

00:26:05   made the wrong choice in so far as I had all of the information and I sat there and I thought

00:26:12   through it in the way that many decisions in life we tried to do. Instead, it was much

00:26:17   more of a situation of we made a guess as to what the implication would be. That guess

00:26:22   was wrong because we didn't have all the information. And so now we can hopefully adjust, change,

00:26:27   and improve going forward. But it makes it slightly more palatable to me in so far as

00:26:32   it isn't it's a mistake in so far as the impact was larger than we wanted it to be, but it

00:26:36   isn't in the sense of, you know, we were being foolish by doing this because I think many

00:26:41   of the choices that you have made here were very wise and great, and it made the app better.

00:26:46   And in that sense, hopefully I don't know if that gives you any comfort, but it certainly

00:26:49   gives me comfort when I think through these because it's just, that's the reality that

00:26:52   this information only exists once you hit release in App Store Connect. And until then,

00:26:57   it is all speculation.

00:26:58   Michael DeRue, PhD Totally. I mean, like, you know, I've seen

00:27:00   a lot of a lot of the frustration from people has said things like, why didn't I do a bigger

00:27:04   beta test? Or why didn't I release it later? And the answer really is that neither of those

00:27:09   would have changed anything. Like beta testing is useful up to, it's almost like when you

00:27:14   when you're like taking polls of people, you get most of the gist of the results with

00:27:20   a surprisingly small data set or a surprisingly small sample set rather. And then after like

00:27:25   then you just keep adding more people to it and the percentages don't really shift that

00:27:29   much. When you're beta testing, you get a lot of good feedback from a from a fairly

00:27:34   small group. The more people you add, you don't really uncover that many more issues

00:27:39   because again, like the beta response rate is not great. Like you can you can have a

00:27:44   beta test. Like I have a beta test officially in my test flight group. I think I have 5000

00:27:48   people in it. But the average install rate is I think maybe like 100 people who actually

00:27:53   install it. Like people just click the links, they join the test flights, they bail out.

00:27:57   Like it's not a reliable process beyond a certain size. You know, you have like your

00:28:02   core audience, your core testers who will reliably test things. It's a pretty small

00:28:08   number generally. And then everyone else is kind of just not doing anything. So you're

00:28:12   right. You just got to get stuff out there and just try it and be able to make changes.

00:28:16   And that's why like as you mentioned earlier, this has been massively beneficial for me

00:28:21   to have the new code base, to have this. It's much more nimble. I can be much more dynamic

00:28:26   with it. You're going to see when I when I do the swiping update, like that's a major

00:28:30   change that I was able to do in like two weeks because it's all better code, better foundation,

00:28:36   easier to manage, easier to maintain. So it's been a very bumpy ride, but I'm coming out

00:28:41   the other side now. And it's finally, I'm finally hitting my stride. And for all of

00:28:46   you out there who have been in Inhumanist during the summer, I'm sorry. Thank you for

00:28:50   your patience and it's getting better. So thanks.

00:28:52   And it's the great thing. You're not out of the woods, but you can see the light between

00:28:56   the trees. And I think that is a great place to be. And hopefully going into the fall,

00:29:00   that's, you know, just gets better and better and the light gets brighter and brighter.

00:29:04   Thank you. Yeah, I'm glad to be there finally. So thanks everybody for listening. And we'll

00:29:08   talk to you in two weeks. Bye.

00:29:10   Thank you.