Daniel: "Hey everyone, welcome back to Waiting for Review, the show where I tell Dave in great detail about the fact that I just replaced my bike's tires and it only took me about two hours so I'm really, really proud about it. Also it's about indie development, whatever is happening at the Fediverse and whatever else is just happening in our lives. Welcome to the show. Hey Dave." Dave: "Hey there Daniel, did not know that about your bike tyres until you mentioned it's not on our show notes" Daniel: "Yes, it's not in the show notes because we have so many show notes that I didn't want to put it in there because yeah, it's just that. I'm super proud that I actually finally managed to do it and just everything works. I put a picture on the mastodon, but I'm also going to send you a picture. Here you go. And yeah." Dave: "Mm-hmm. Aha. Okay." Daniel: "And I got my hands a bit dirty and tomorrow I can go for a longer ride and just try it out. But I'm a tiny bit proud of myself, I gotta say." Dave: "picture has just come through and okay audio described this are they like white walled bike tires sand coloured okay that's really cool yeah I know nothing about bikes or bike tires so I'm looking and going yep they're definitely on there" Daniel: "Sand coloured. They actually have some tread because the other ones they were just like gone after a few thousand kilometres and these actually are like have some tread so I'm going to have less flats and less chance of just like losing grip or something." Dave: "Yep. Yes. that's cool that's really cool so you're biking it's summertime in your side of the world I guess so does that mean longer bike rides and into the evening when you want to" Daniel: "It is. It is. Yeah, sometimes. Like, I mean, I kind of want to, don't want to go out too late because I actually don't know, like why wouldn't I? Because most of my, the things in my calendar are mostly like during the daytime. So I could totally just like at six or whatever, just like take off. I'm gonna try this. I'm gonna try that. I mean, I have lights on the bike and I even have a headlamp." Dave: "Yeah." Daniel: "So I could, even if the sun goes down at like, I don't know, 920 maybe, even then I could just safely continue." Dave: "Yeah. Maybe we should do the waiting from review on the go edition. Or would that be incredibly dangerous?" Daniel: "Um, I'm, I'm totally up for it. Well, it would be dangerous. Also the audio quality would not be as good because" Dave: "You've just described every phone call in Wellington that I've ever had when outside. It's windy here." Daniel: "Yeah, you're close to the sea, right?" Dave: "Yeah and we get the highest winds really in this part of the world because of the strait between the two islands here in New Zealand and Wellington's right on that so yeah. But it means we've got built-in air conditioning in the summer so that's kind of fun." Daniel: "Yeah, that makes sense. fantastic. I want to know what's happening at Reddit." Dave: "oof, do we know? It's been a while actually. So, I mean, by the time this show goes out, it's probably gonna be a clear month since it all seemed to sort of kick off over there. But like, here we are early July and last weekend we saw all the, like Apollo signing off, which was really sad to be honest, to sort of see. I think." Daniel: "hahahaha Mm-hmm." Dave: "Uh, the, the author of, um, of Apollo, the, the developer, um, Christian Selig, he has been outstanding in his approach in dealing with Reddit. Yeah. I mean, I know he's Canadian, but even so, it's like, you know, um, he's, he's handled it with, with absolute grace and class from what I've been able to see and Reddit have not. So anybody who, who..." Daniel: "He has been so nice. Right." Dave: "is new to this sort of drama, I think to frame it, Reddit decided that they were going to .. well I think they decided they were going to get rid of the party apps, to be honest. And they framed it as a, we need to start charging appropriately for API access, we're getting scraped by AI people, which is probably true to some degree. And then they put a price" Daniel: "Mm-hmm." Dave: "on that API access that meant that third party apps just can't really exist. Like I think the amount that Christian would have had to have charged his users was just not going to happen. Um, and so it amounts to a, uh, effectively turning it off for third party apps." Daniel: "Right. And Christian's Alex apps for the 14 people in the audience that don't know is Apollo, which is a third party client for Reddit on the iPhone. So if in the before times you wanted to go on Reddit and like read some threads or upload some, I don't know, narwhals, you would use the Reddit app or like a lot of people would, this is also important because" Dave: "Mm-hmm. Yep. Yeah." Daniel: "The API was also used by a bunch of moderation tools. So the unpaid moderators of the communities would use third party applications to actually do their like chosen jobs and they really can't do can't do that anymore either." Dave: "Mm-hmm. Yeah, yeah, I think that frames it pretty well. I mean, it just feels like watching what's happened with Twitter over the last year play out again on another social media platform to me." Daniel: "Oh yeah. Yeah, pretty much the same. Although Twitter didn't pretend that the... Twitter didn't spread lies about the third party developers. Apparently the Reddit CEO told various lies about threats that apparently Christian Selig was supposed to have made. Only for Christian to come around, to turn around and be like, hey, I've actually recorded those phone calls. Here are the recordings. And you can clearly see and hear that this is not the case and that they are wilfully spreading lies about someone who just brings value and users to their platform. It's an incredibly bad look. And it's just, I don't know, it increases. I've always held Christian in high regard. He also supported telemetry deck at the..." Dave: "Yes." Daniel: "very, very early stage and I'll be forever grateful to him for that. But just how horrible can you treat someone who's basically your customer? And I get the AI thing. Apparently the whole target, all the third party apps are just collateral damage and they wanted to close the API so that open AI and other AI companies cannot..." Dave: "Yeah, and who's" Daniel: "scrape all the Reddit data and use it to improve their language models, which totally fine, but then just add a thing that says this API cannot be used to feed any AI stuff, you know? Here, pay the extra fee for AI stuff and don't destroy your whole community." Dave: "So it's, um, I feel like, okay, that was a reason and it's, I'm right. So assume good faith, which I really don't in this situation, but assume good faith, right? Um, there's gotta be other ways of dealing with AI scraping. Like you say, you can make it, make a legal route for it. You could. make a legal route for it and have people have the ability to opt out or opt in, for example. You could rate limit anything that looks like it's behaving inhumanly. You know, people have a pattern in the way that they access the API. They're not accessing thousands and thousands of things within a few seconds. You know, they're not going one after the other to grab stuff. They don't. necessarily refresh everything for a 24 hour period and that sort of stuff, right? So you can potentially use the behavior pattern to limit the rate that's going on there, which actually makes me think of Twitter's recent rate limiting, but that's a whole other bag of fish. But yeah, I don't know. I mean, again, you do all those things and" Daniel: "Yeah." Dave: "they'll find otherwise to get around it as well if they think there's value in that data. So yeah." Daniel: "Yeah. So what happened, what happened as was that a lot of the communities on Reddit, they have like sabotaged themselves. Like, uh, many of them have set their community to private, so no one can actually see them and use them. Um, that that's called the Reddit blackout, I think. Um, also, uh, I think at least three communities have changed." Dave: "Mm-hmm. Yes." Daniel: "their rules so that only gifts and images of John Oliver can be posted. Also great protest. And also one of the subreddits that I've been frequenting is the Formula One subreddit. And they've switched themselves over to be like a, they mark themselves as not safe for work because of course accidents happen in Formula One and they could be gruesome. So people have to be prevented from seeing that at work. Which" Dave: "Oh god I've seen that sexy John Oliver. Mm-hmm." Daniel: "basically means it's de-monetised, like because Reddit won't show ads on not safe for work subreddits." Dave: "So it's quite the protest, quite the, how can I put it, picket line as it were digitally. That kind of feels to me like it's been and gone by the time we're talking about this now but I do know that there are still communities still protesting in one way or another on Reddit still. So I imagine it's a case of the moment has been and gone but this is going to keep raging on in one way or another. over the next few months because they've really done the community a disservice here overall. And what we're seeing now over on the Fediverse as it were, certainly within my view from my Mastodon account, what I'm seeing is people talking about trying other things out, sort of Reddit alternatives. Which I think... looking outside in it kind of feels like some people are trying these just the same as when people left have left Twitter over the last year but then quite a few people are going back to Reddit itself now the sort of initial blackout is over and I guess some communities there have just probably felt quite unaffected by it all in general so I see this sort of uh the people who if you like, you know, get involved with, um, setting their own instances up of, of these alternatives or giving it a go. And then other people are joining them, but it doesn't seem like a whole, whole scale migration out to me from what I've been able to see. It sort of, it feels like the same as probably things with Mastodon, maybe six, seven months ago, really, when, when Elon, um, sorry, with Mastodon and Twitter, um, And I want to say six or seven months ago, but the year's marching on. So the last November time is when I'm thinking when, when Elon walked in and smashed the sink or whatever it was he did. Yeah. So I sort of feel like the same sort of story is playing out for Reddit at the moment as Twitter in a lot of ways. And I wonder, I really, really wonder whether that sort of link sharing and kind of forum based interaction is going to find a new home within the Fediverse sort of in the longer term." Daniel: "Yeah, it's unclear to me, which is what I would say. I'm not a heavy Reddit user, so I've never been one. I've been a light Reddit user, just browsing the site every now and then, mostly lurking, reading other people's comments. And so I do miss the site, because I've decided to not go there anymore, especially since most of the time I would go there through Apollo, but even on the desktop." Dave: "Mm-hmm." Daniel: "And so I have been checking out various alternatives. So you've already mentioned cabin.social in the show notes. Mostly what I've been surfing to is lemmy.ml. So lemmy is basically a, if I understand correctly lemmy is like a Fediverse based Reddit server or like Reddit, Reddit like. What do we call those? Because we can't call them Reddit, but you know what I mean." Dave: "I don't know, I've seen it termed as like link sharing, but that feels like it underplays what it really is to me." Daniel: "Yeah. But yeah, whatever. Like we call some games rogue. Like we can, we can totally call this Reddit like just not for copyright reasons probably. So yeah, that's that it feels very Reddit like there's a lot of like, okay, I just went there and it says like, oh, it's no poop. July like, okay, cool." Dave: "Yeah." Daniel: "So yeah, it feels very Reddit like it's just very, like it's just other than Reddit, you kind of very like early, like reach the end of the content. Whereas like with Reddit, you could just browse aimlessly from topic to topic and whatever. And here's like, oh, okay, after maybe 10 clicks or so, you're like, okay, I've seen this before. So it works for, oh yeah, let's just have a little look at what the Lemmy community is doing." Dave: "Yeah. Mm-hmm." Daniel: "Also, it's not very deep because like on Reddit, everything has a community. Like there's a community for Formula One, for example, but there's also one for my favorite niche game, Kerbal Space Program. Um, there's one for, I don't know, like people who take pictures of their dogs. Um, it's, it's just basically for every niche interest, say for work or otherwise. Um, you can find a community on Reddit and that's of course not yet the case. Um, most of the" Dave: "Yes. Yeah." Daniel: "Reddit likes are mostly filled with just freddit messages basically. So let's see if they actually do more than that. You know what I mean? Like if, like they, if they got, if they want to survive, they probably have to find like a certain critical mass. And from the outside, for me, it's like hard to see if they're reaching that. Or maybe it needs another Exodus like, uh, event, like for example, Mastodon, um, had at least three." Dave: "Yep. So. Yes. Mm-hmm." Daniel: "great migrations where Twitter did something and then like more people decided, okay, this is enough. I'm going to try this other service. And so maybe it needs a few more of these before things like Lemmy and Cabin.social really take off." Dave: "I think so, yes. Yes. I think it's probably the case. And I think that, you know, if you're someone who cares about the way that Reddit has behaved, then I think it would make sense to be exploring stuff like Lemmy and Kben. And it would probably make sense to have an account on both of those on the major servers and just give it a look, you know? But what I would expect is rather than necessarily you know, this is home now and we're going to use this for this all the time. It's more a case of it, it kind of building this critical mass, if you like. And what I would expect to see play out over the next year will be similar to what I've seen with, with mastodon and the rest of the fatty verse, which is the, like you say, there's perhaps excessive migrations as Reddit sort of misstep and do stupid things. Um, but even without that, what I would expect to see is that the, um, user experience will tighten up slightly, that the way the servers communicate with each other and federate, as it were, to be able to give a broader experience. I'd expect to see some of that play out, along with all the associated drama that comes with that as well. All right? Yeah." Daniel: "That's one reason why I haven't made an account on any of the Reddit likes yet. Because I have this problem that many would be Masterdon users have, where they're like, okay, so it says choose a server. And everyone is like, no, don't choose the main server. They're really bad. But also, don't choose this server, because they're admin." Dave: "Mm-hmm. Heh. Yep." Daniel: "five years ago said something that I disagree with. And also like, don't choose this server because they're defederating from everyone. And it's like, for this community where I'm not as invested and don't know the drama, it feels very minefieldy. And I mean, like making an account is not the worst thing or the hardest thing in the world, but it's still like a multi-step process where I kind of confirm the email and whatever. And so like, I'm actually mostly lurking these days." Dave: "Yeah. Yeah. Fair, fair. And I feel the same, I'm not a major Reddit user at all. You know, like I check in once every other year, it feels like, in terms of actually posting anything. So I'm quite content to sort of let it do its own thing and become whatever it's going to be in that sense, it doesn't really bother me. And it's kind of interesting because it gives me a taste of what it feels like for people who don't care about... Mastodon and that sort of thing in the same way as I do, right? And, uh, yeah, that aversion to getting, getting across any of the dramas, if you like, is definitely there for me. And I get to understand, okay, this is, this is what it feels like for everybody who, who went back to Twitter after trying Mastodon and going, okay, it's not there yet. Um, so, but I also think that is changing. with Mastodon with the latest migration at least. And, and that has been interesting to see, you know, a whole bunch of people landing over in the space over the last weekend, um, there's bots that try and track the number of new users and active users and things on the Fediverse. And that's just been ticking up and up. You know, that graph has got a, the gradient has got steeper, um, in the last week because of the latest stuff going on Twitter, which is this" Daniel: "Mm-hmm. Yeah, I've also just seen an influx of new followers and stuff like that. So that's really nice." Dave: "Yeah, it is. It is really nice. I mean, I made some level of bitchy post last weekend, which I sort of rolled back because it wasn't particularly nice or needed. But I was kind of surprised that this was the final straw for people just sort of given everything that's gone on over there over the last year. But again, you know, unless you're sort of immersed in the back and forth, then it's probably not really. hit a lot of people in the same way. Uh, and in a lot of ways. Yeah." Daniel: "Like same with Reddit, like I'm a very light Reddit user. And if I hadn't been a user of Apollo, and if I hadn't been very much connected to this because it affects the iOS indie developer community, I maybe wouldn't have noticed even. Or I would have noticed that some of my subreddits had gone dark, but I would be like, OK, there's some drama. I'm just going to ignore it, or whatever." Dave: "Mm-hmm. Yes, yes, exactly. Yes. Um, and so yeah, I get into experience what it looks like outside, looking in as it were. And no, I get it. I get it. Like, I mean, I can see that what people want when they're not invested in the premise or ideas so much. So I just want stuff to work more than anything else. And, and, you know, it's fair to say certainly with the with Mastodon and that side of things, there have been times where there are situations where it just doesn't work as well as it could do. And I think it's made me sort of looking at all of this in the last few weeks, it's made me kind of think, well, that's what I wanna see. I wanna see this become even more viable, even more useful to people. And like building the SDK that me and my friend Constantine for Mastodon and the Fediverse for iOS, sort of six months ago to test DK. That was an attempt to try and make stuff easier for devs to sort of get on board and hopefully make the experiences better. And I guess that for me sort of feels like a good use of, of any extra time or effort I've got in this space. Don't quite feel invested in Reddit. in the same way, but I kind of hope somebody else comes along and does the same for Lemmy and KBin and all these other server types for that space and builds their own, I don't know what you would call it, post SDK. I don't know how we refer to these things. Again, that name eludes me, but I kind of hope some... Yeah." Daniel: "The Fedit -" Dave: "So I kind of, oh, no, actually I've heard it referred to as the thread-iverse, which I kind of, yeah. Yeah. And so I hope somebody builds like, you know, threads SDK in the same sort of vein as we've done." Daniel: "Oh, I love that. That's amazing. But then, ah, but then have you heard about Instagram's new app?" Dave: "Oh no, go on. Yes it is. Yeah." Daniel: "It's called Threads. So that name is taken because everyone is just using proper nouns for names now. I mean, I say now, but Apple has been doing that for about a billion years. Threads is the new threat to the Fediverse according to a lot of people. I'm kind of unsure about the whole thing. I can see both sides. But the newest meme about Threads is apparently the app is on the App Store now, and it has these privacy..." Dave: "Yeah. Yeah. Hehe." Daniel: "labels that all the apps in the app store need to have. And this thing just collects every single piece of data that you have, that is in any way available about you. Like it's comical. It's comical just how much data this app wants to collect from you. So I'm unsure how that will work. Apparently it's not even available in Europe because it's a..." Dave: "Yes. Yes. It's, it's, it's." Daniel: "wouldn't be possible under the European data protection laws. Um, so I'm going to, I'm going to look at this and continue watching this. Um, I haven't signed any packs, but yeah. Anyway. Yeah." Dave: "Wow. Yeah. Yeah, I mean, the way I feel about it though is somebody running my own instance over there, you know, which is my little Linode VM that runs my social media. I just don't really want to interact with Meta servers on that basis, right? If I know that they're, that's the level of privacy permissions that you've got to sign off. just installing their app. Like, yeah, there's that bit of me that feels kind of icked out by the idea of my server going back and forth with their servers." Daniel: "Yeah, I get that. I mean, it's like the data that your servers are kind of spreading into the world. It's kind of public data. But yeah, I get that. I have a different question, though, because you put it into our show notes. GoVJ media edition. Is it media or MIDI?" Dave: "Go on. Yeah, let's change the subject. Let's get off the 30 verse stuff and the 30 verse stuff. Oh my God. It's the social media, uh, multiverse. No. Um." Daniel: "Let's get off the videos. We've got to change the name of the show if we continue this. We've got to talk about apps. Tell me about your latest update." Dave: "Yeah. Well, as I look across my desk, I've got three MIDI controllers just on the desk. And just to explain to anybody who has not listened to the show before, so my app GoVJ is a live video mixer. It's used for putting on video backdrops for DJs, bands, that sort of thing. So if you've ever sort of watched a, been at a show, And you've seen, you know, reactive visuals going on behind and stuff playing. That's often done by a person who is mixing with some software in real time to whatever the music is playing. And so that's what my app enables. So you can now rock up with an iPad or an iPhone and just send the video out to a projector or whatever and do the visuals. And a lot of these performers, VJs as they call themselves, use MIDI controllers when they're working with the typical software that gets used on a Mac or PC. And so I've got an app that does this on iOS that has been building in functionality and one of the things that it needs is the ability to have controllers like this. And so that's been on my list for like eight years now. The app is that old. Um, and I finally did it in the last couple of months. So I, I approached this in a way that sort of seems to be coming more and more naturally, um, which is I built a Swift package. And, um, yeah, yeah. So anything that I think can think of that is sort of encapsulated functionality of any sort." Daniel: "Hehehehehehe Fantastic." Dave: "tends to be a new Swift package these days for me. Even if it's in this, in a lot of cases it might be a private Swift package but I'm trying to sort of modularize the things I make a bit more. And so we may have spoken about this before on the show actually but I made a package called Trigger Kit. And Trigger Kit sits on top of a bunch of other really cool Swift packages that sort of marshal the MIDI data and enables me to associate blocks of code with specific actions, as it were, and events that these controllers send. So a MIDI controller is typically like a keyboard or a board with a bunch of switches and dials and sliders and things. And those come through On iOS, it eventually comes through Core MIDI. And so follow up the stack all the way through to the package I made. And the value that my package has for this is that, like I said, I can feed it a bunch of things the app can do and it will associate the incoming MIDI events with running those blocks of code. And it's codable as well. So if you, right? So, which means that if you wanna" Daniel: "All right." Dave: "persist to use as saved bindings as it were. It's that easy. It's yeah." Daniel: "Fantastic. Also, I think if our listeners want a detailed explanation, you did a pretty deep dive in season three, episode 29. I just looked it up. So recommendation for that episode as well." Dave: "Yeah, a sweet. Yeah. So anyway, um, that, that package then enables the feature and the feature is MIDI support in my app and it took a little while I found a bunch of edge cases as you always do when you try these things, um, not least of which there's, there's ways of really stuffing things up and blocking the main thread when you've got a lot of data coming through. Um, but, uh, Yeah, it's, um, it's in it's live and that's been really cool. It was actually from, from a indie development point of view. I think the thing that really, um, is worth talking about here is, is that. This was a niche case, right? It's a niche app in the first place. And then it's a niche of a niche. So then go, okay, do you use an iOS based video mixing app? and also maybe have a MIDI controller hanging around that you can actually connect to that device right because they usually connect over USB these days and you know if you if you're just playing with my app on your phone you've probably not necessarily got a lightning to USB adapter people with iPads different story if they've got USB-C of course but trying to get it tested on more than just my devices was a little bit tricky. Yeah, so anyway, I put the call out and I put the call out through the Fediverse. I actually put the call out on Reddit. And again, I don't use Reddit so often. So like the last time I'd really post was the last time I posted about the app. But people were really, really cool." Daniel: "Yeah, I get that." Dave: "Like I posted on the VJing subreddits and just said, you know, I'm working on this, this is in beta, anybody wants to have a look and all the usual. And I got some really good feedback. Like again, not that many people, cause it's a niche and a niche, but the feedback I got then let me make it even better. And I think the thing that's probably a good learning here in terms of sort of promotion and... you know, just letting people know about what you're building. Because I went to these communities and said, Hey, I'm building the thing, you know, right now it's in beta. Here's a link. Anybody who wants to check it out, I'd love to hear from you. And people got to give some input. It also gave me a reason a few weeks later when it was actually out there to then go back and say, Hey, the thing I was building, it's now here. And I saw a little spike in downloads and that sort of stuff as a result of it." Daniel: "Mm-hmm." Dave: "Um, but it was a nice sort of closed loop, you know, Hey, I'm building the thing and a little bit later, Hey, the thing is built the thing that you all have had a bit of input into. Um, and it was, it was a good way of promoting the app, but it also felt really nice as well. It's a genuine interaction, right? It's not just sort of cold calling or trying to, you know, boost my profile over there, it's literally what it is. I was working on the thing and now it's done. And. That felt really quite cool. So I think I've learned something in that process. I mean, people sort of say, Oh yeah, you got to build in public and it's good for people to see. But I think this felt a bit more than that. It was a case of I'm building in public and I'm trying to literally find the people who are going to be using this app in the end and find where they, where they live online, if you like, not just sort of posts to my, my general feed. You know, I went and found found people into this hobby, this medium in a natural environment, which I've done in the past, you know, that's how I kicked off the app when it first launched and I've been part of those communities for years. But I think, yeah, it's been a learning for me to sort of do that more often, right? That's like, I did this, that in this case, because it was specifically the... The hardware itself meant it was difficult, you know, to get, get people generally to test it. Uh, but I think that it should be my first protocol every time really." Daniel: "I get that, but it's awesome that you get to interact with all those communities and stuff like that. And that you get a few more downloads. What kind of MIDI controllers do you actually have? When I think of MIDI controllers, I think of either a small keyboard or one of those grid things. And I think those grid things look so cool, but have just no use at all." Dave: "Hehehe I've got both. I've got a Novation Launchpad Mini, which was kindly bought for me when I left a previous job back in the UK. So yeah, shout out to Wheezy. They will never listen to this, but I definitely appreciate the gift. And then I have a keyboard one as well, which is just a standard sort of little half sized." Daniel: "Ha ha ha." Dave: "keyboard. I mean the keys are full sized but it's pretty small and that's got a bunch of sliders and dials and things on it as well. And then I've got a Korg Nano control which has like nine sliders on it. Ten? Yeah, nine sliders and for each turny thing, a knob and switches there as well. And so between all of that, I can control all the things. But also it lets me test different things as well. And what I've done with that actually for testing is I've used Bluetooth over MIDI and I've got them all plugged into a Raspberry Pi and the Raspberry Pi is running." Daniel: "That's pretty cool." Dave: "a bunch of scripts and stuff that means that it shares those controllers over Bluetooth over MIDI. And that means I can just connect to whatever device I'm testing on without having to worry about plugging cables in and stuff. So that's been kind of fun. It was a bit of a project to set the pie up but then it's made like I say my development cycle testing all of these a lot easier." Daniel: "Yeah. And is that out now? So is that now in the hands of end users? Did you get any feedback, or is it just released?" Dave: "Yes. It is. I've released it, I've had a couple of people say, yay, that's cool. And then not a lot else after that, to be honest. But it's that that's okay, though, right? This is one of those things where like, if you need it, and it's there, you kind of just use it and you're like brilliant. And then if you need it and it's not there, it's really annoying. And obviously, if you never need it, you never notice it. So" Daniel: "Mm-hmm." Dave: "It's another screen in the app where you in the settings where you can go and configure all this stuff and" Daniel: "I kind of want to see you, Vijay. Maybe you should record a quick YouTube video at some point or whatever." Dave: "Hehehe Definitely, definitely. I'm a bit more, I'm a bit more set up in this room now for that as well. I've got an Apple TV plugged in to a TV in here. So I can do that sort of stuff. And actually, I'm not going to get into it on this show. We can talk about it another time, but I've been playing with an Apple TV app in the last couple of weeks as well. And that's been quite fun. But yeah, no. GoVJ MIDI edition is out and released. And actually I wanna talk about something very quickly that happened to me last week." Daniel: "I was just going to ask, how did the release process go for you? Was it all smooth sailing? Was it just unproblematic?" Dave: "I was it Ah, well, the release process for GoVJ MIDI edition was fine. And then last week I noticed when I went to go and find something in the app. That, oh, I can't see the paywall properly. I load the paywall up and none of the, um, none of the subscription and purchase options for the app are displaying. And. Okay. That feels not good, right? Nobody can." Daniel: "Ha ha ha!" Dave: "spend money with me with my apps and on closer inspection, I have my initial thoughts is like, okay, is revenue cap down or something like that? Cause I'm using them. No, no, they're not down. And I checked some of my other apps cause I've got three apps in the store now and they had the same issue. It's like, okay, all right, closer and closer. Let's, let's debug this. Long story short, in my situation, I store API keys and credentials in a CloudKit record rather than baking it into the app. So that means I can remote configure it, you know, I can change those values at any time. And it also means I'm not storing the API keys in my Git repository, and I'm not storing them literally baked into the app itself. So it feels kind of cool, right? You know, this is probably quite secure in some ways. And then in other ways, it's potentially quite brittle because then you've got a single point of failure for all of those values. And that's what I walked into last week for a bit of debugging and testing with other people on other sites in other places. I found it was kind of localized to me. But I don't think this was just a my cloud kit, iCloud issue. Right? So yeah, which means that my gut instinct for this is that this is a situation that can happen if things are not fully synchronized or whatever. And in that moment, certainly the way I was querying it, perhaps I wasn't doing something to tell it to refresh or something like that. And so it's intermittent as to whether the values come through, which is really, really not." Daniel: "Okay." Dave: "Good. This means every now and again, I am losing the opportunity to sell my app. Really sucks. So I freaked out. They would see no, they would see the paywall with an option with a button that says purchase and nothing selectable. Yeah, yes. So it's the worst. It just feels broken. And then if you hit restore." Daniel: "Yeah. Yeah, that sucks. So what would people see with this bug? Like would they see the blank screen or? Ugh. Wow, that's frustrating." Dave: "because it doesn't have the key for revenue cat, it just crashes. It hits some sort of fatal error and bails the app out. So that's even worse, right? Anyway, long story short, I freaked out last Friday night. I rapidly fix this and I fix this by doing everything that configuration was supposed to avoid, which is I banked the API key straight into the app. Which is actually really easy because I defined the service with a protocol. I just made a new class that just returned all the keys. I'm renamed the cloud kit based one to like old. Yeah. Cause I thought, well, maybe I'll come back and fix this or look at this later, but I think I'm done with this approach now. And, uh, yeah, pushed all these updates out very, very quickly to, to apple and then waited." Daniel: "Fantastic." Dave: "over the weekend for them to review it. But that's now live. So all of my apps have had recent updates that it's just bug fixes and improvements, which I hate. But yeah, that's now live. And now that's fine, right? Provided revenue cats up, which generally is 99 point whatever of the time. And" Daniel: "Hehehe" Dave: "Yeah, that's it really. It was a bad moment. It was rough realizing this for myself. I can take some solace in understanding that this could still just be a problem just with my configuration that exposed this. Because like I say, people in other parts of the world were able to see the paywall file and they were getting the data come through to configure it. But I don't know, you know, maybe I've been missing out on a whole bunch of sales and nobody's ever told me. That's, that's a possibility." Daniel: "Yeah, that sucks. Do you have analytics on the paywall or something so that you could see like how many people did see the paywall in that in that timeframe or something?" Dave: "Nah, because it just says whether it displays the screen. It doesn't say whether the contents come back. Yeah, so I would have had to have known about the issue to catch the issue, if you like. Yeah, so I guess this is just a cursory warning, if you like. Test your infrastructure. Have things that tell you." Daniel: "Yeah, that's true." Dave: "if a single point of failure is potentially there. And think about things in those terms as well. Don't just trust the service, which is what I did with CloudKit." Daniel: "Also, make your friends buy your apps, because they will tell you about the bugs in the buying process. It's basically my fault for not paying for GoVJ." Dave: "Ha ha ha. That's true. Yeah, yeah. Um, I mean, yeah, this is the sort of stuff that can happen. Right. And it bugs the heck out of me because in hindsight, it's very obvious, you know, like what if a user didn't have iCloud turned on at all? That's the edge case where this would have shown up for those users. And I did realize that and I sort of figured I didn't really care. in a sense of like well they can tell me if they have that issue but I think if you hit a paywall and there's nothing to pay for and it just feels broken you probably go ah screw this and move on right. So yeah this has been a lesson learnt and I don't think it's good that I've got the API keys baked into the app or in my git repository I'm not happy about that." Daniel: "Yeah." Dave: "But equally, there's a limited attack surface there. Like, what are they going to use the API key to pay me money for my apps? Or, you know, I mean, the worst case scenario really is that somebody uses it to spam me in some sense in terms of my telemetry deck analytics, or I'm actually using sponsor of the show last on the last episode, feedback ball for the user feedback in this version of the app now." Daniel: "Hehehehe" Dave: "So that's another API key baked into the into the app. But that's kind of cool. That that means this is the first version to go out where I'm using that service properly. And I'm happy about that. So." Daniel: "Awesome. Like they're not sponsoring. Are they sponsoring this episode? I don't know. But they are sponsoring this show. They're sponsoring the last episode. But anyway, shout out to Konstantin, who is like the creator of Feedback Bulb. Go to feedbackbulb.com and just check it out, because it's really cool." Dave: "They're not sponsoring this show. Um, actually. That's right. It really is. And I think just to signal as well, anybody who's listened to this show for any time, that's a first in terms of us having sponsorship. And I'd just like to signal it doesn't have to be the last either. We're definitely up for sort of discussing this with anybody who's interested in having a sponsorship slot on the show. So yeah, all they have to do is drop us a line through the You can reach me dead easy just at davidgarrywood.com. There's contact details available there. And we can give that a go. But again, we're only really interested in sponsorship from things we would genuinely use. So knowmypillow.com or whatever it is here." Daniel: "Yeah, like in about 10 years or so, we're gonna sell out completely. But until then, only things that we would genuinely recommend." Dave: "Yes. Um, we are brought" Daniel: "Maybe even 12 to 15 years. Like we're gonna try to postpone this as long as possible." Dave: "Yeah, yeah, for sure, for sure. But I can see it now. 2030, 2032 maybe, we'll be advertising triangle space." Daniel: "What's triangle space?" Dave: "It's me not trying to reference an actual product." Daniel: "Oh, you're so smart. Awesome. Dave, did you know we got feedback on our discussion on SwiftUI previews?" Dave: "I did, I saw that. That was really quite cool. So somebody actually just dropped us a line straight over on the Fediverse." Daniel: "Yeah. Right. So Holger writes about SwiftUI previews. I use them and like them as my app is relying on core data. It's a bit annoying to enter or generate example data for the previews, but everything else is great. And then I ask him, this is Holger Krupp, underscore Holger at mastodon.social and ask him like, okay, what are his tips for better preview performance?" Dave: "Yep." Daniel: "And his answer is using a fast Mac. Using previous on my 2016 MacBook Pro is horrible, but on the M1 Mac Mini, it's OK. Not switching views slash files is also quite useful. I think Xcode is recompiling everything when changing files often. And yeah, I've also seen that also. I find that on M1 and M2 Macs, or at least on M1 Macs." Dave: "Ha ha ha" Daniel: "because I haven't got an M2. Anyway, Xcode 15 beta is way faster in all the compilation stuff because it parallelises way more. So that's also an addition. So yeah, thanks to Holger. Shout out. I love getting feedback. People should really write us more." Dave: "Right. Definitely, definitely. It was very cool to receive that. And I did wonder when we sort of slated SwiftUI previews whether anybody would take us to task about how it works for them. And it was quite interesting to hear." Daniel: "just sneaking in a sneaky little hot take just for the clickbait, you know? Ha ha ha." Dave: "Heh heh. Oh, maniacal laugh. Yes. But no, that was cool. That's really cool to hear back from a listener of the show and definitely reach out to us over on the Fediverses. Not the Thredi-verse. We're not there yet. But yeah." Daniel: "Fantastic. Yeah. Other than that, I, oh, I have to tell you one more thing. One more thing. I have to tell you one more thing. I finally caved in and bought myself new AirPods Pro." Dave: "Damn. Ha ha ha." Daniel: "I have the AirPods Pro first generation and I bought them pretty early after a buddy of mine kind of forced me to try out his and I was like, wow, this is amazing. And then I had the crackling after a few years and Apple replaced the pods themselves, but not the case is acting up. And you can replace the case, but it costs." Dave: "Yeah. Okay." Daniel: "about half as much as you pay for the whole package. And then I kind of complained about this on Macedon and then someone sent me a link where they were 50 euros off on Amazon. And I was like, I'm gonna treat myself. And they arrived today and they are even better than the first generation. Like the noise cancellation is like incredibly good. Like it's..." Dave: "Ha ha ha!" Daniel: "on par with, or even better actually than various over the ear noise cancellation headphones that I've tried. Like I've tried various Sony ones and those were not as good as the AirPods pro second generation. I hear that Bose especially is pretty good for them so they might be better. And the sound too, like it's so crisp and clear and I don't know, multi-dimensional, I don't know what..." Dave: "Well, that's awesome." Daniel: "what words sound people use to describe the song, but it just, it's really nice. It's noticeably better even than the first gen. So yeah, this is nice. I'm gonna listen to a lot of music every now and again." Dave: "That's awesome. Well, that's great stuff. I love my AirPods, to be fair. Yeah, I'm trying to remember if I've got the ones that you've just left or what. They're pros, I just can't remember if they're first or second generation." Daniel: "Do you have pros or non-pros? I see. Do they have, does the case on the side, does it have a little metal thing where you can thread a little band through so you can carry it around better or not lose it? Then you have the first generation. I didn't know that before, but the second gens have a thing where you can just, I don't know, put some kind of band in, like with the Wii-motes or something." Dave: "Null. I know what you mean. Yeah. Um, that's cool. That's really cool. Um, I mean, I'm just, I'm thinking ahead. I really love these, but eventually they will give out. That is the, you know, the projected lifespan really, this is what two or three years really, at most if you're using a lot. Um, and I use them every day. They're like, um, you know, I'm on a lot of calls during my working day and I sort of, they're basically my ears." Daniel: "Yeah, it is cool. Yeah, yeah, same." Dave: "Right. So." Daniel: "Right. Yeah. And then for me, for the biking as well. And yeah, so they've lasted, like they've lasted more or less four years with the replacement in the middle. So I think that's a pretty, actually pretty good duration for a pair of headphones. And they're just nice." Dave: "Right. Yeah, that's good stuff." Daniel: "Anyway, I think that's the show for today." Dave: "I think it is. I'm as always at this time of day, I'm going to have to jet off and get into my working day. But before we go Daniel, where can people find you online?" Daniel: "Oh, people can find me. I mean, like we haven't, I haven't like chilled out for telemetry deck a lot in this episode actually. So go to telemetrydeck.com please. Just do it. I'm not gonna tell you anything about it. And also if you wanna write to me, find me at @daniel@social.telemetrydeck.com. Thanks so much. Dave, where can people find you online?" Dave: "You can find me on Mastodon and the Fediverse at @davidgarywood@social.davidgarywood.com and you can find out more about my apps at lightbeamapps.com" Daniel: "Fantastic. All right, have a great and wonderful day, everyone. And yeah, writer's feedback. Dave, see ya. Have a great day." Dave: "Yep. Take it easy. Goodbye, Daniel." Daniel: "Bye!"