Dave (00:01.293) Bye! Daniel (00:05.007) I should not make weird faces into the camera when we're now recording video, probably. Dave (00:10.912) Yeah. I've kind of becoming acutely aware that I pull faces every so often after the last video recording. Daniel (00:16.458) Yeah, but if you don't think about them, then it's fine. Like then it's cool. Then it's a like cool YouTube style, a YouTuber style or cool podcast or style. But if you think about it too much, then it gets, it gets problematic because you're then always in your head. So don't think about how you look like. Don't think about how you sound like. That's very important. And also don't think about breathing. Dave (00:24.801) Hehehe Dave (00:34.132) Mm-hmm. Yeah. So don't think, basically. Daniel (00:41.23) Yeah, that's hard to do, but yeah, we're gonna try. It's fantastic to see you again. Dave (00:46.196) Yeah, yeah, I'll give it a go. You too, mate. How are you? Daniel (00:50.878) I'm good. I like our weekly schedule. I was at the beginning, I was a bit afraid that it might be too much either from just the amount of time that we use up, but also from just like, do we have enough things to tell each other and talk about, but I feel like it's actually getting better just because if you have this very, like every week, we have this little chat and it's just nice, so I'm liking this. Dave (00:55.063) Mm-hmm. Dave (01:19.968) Yeah. Yeah, likewise. We, I mean, we catch up with each other through messages and things through the weeks anyway in between. So it feels pretty natural to just catch up, right? I mean, that's just one of the beauties of having you as a cohost with the show is like, we are actually friends outside of the show. That's how it started. So that's. Daniel (01:20.929) I would like to continue this. Daniel (01:40.254) Yeah, we're not like these show hosts that don't talk outside of the show. Dave (01:46.58) All business, no. No. I can't have any content. No. It's kind of cool because it does give us a bit of insight into stuff we might talk about as well. I mean, you know, some of the stuff I've been up to in between and vice versa. So that, I think that helps us. But yeah, I'm good. I'm good. This is the, this is going to be the second version of the show in video that's going to be hitting YouTube and... Daniel (01:59.85) Yeah. But yeah, how are you doing? Daniel (02:10.891) Mm-hmm. Dave (02:14.42) and various other bits of social media eventually as we sort of get those things going. But yeah, when we recorded last week, I messed up on the service we use. So we're using Riverside to record this show and it didn't record the video on Riverside. Daniel (02:34.346) Double check now, double check now, is it recording the video now? Dave (02:38.316) Uh, as far as I can tell, yes. Daniel (02:41.426) Is that, is that, okay, it says, so the user interface like next to my name and to yours as well. It has like a little camera icon and a little microphone icon. So maybe, let's hope so. Dave (02:49.916) Yeah. Maybe. Should be. I mean, the thing is, is we also record locally as a backup, right? So I was able to drag everything into DaVinci Resolve for last week's show and bring that all together. The only thing that pains me a bit is, is we might see some formatting differences, because RubberSide will give one sort of output that's probably not going to be the same as DaVinci's. But I think viewers can forgive us. Daniel (03:14.082) Yeah. Dave (03:18.752) a little bit of a bumpy start, if you like, I hope. And obviously listeners won't see any difference here. Yeah. Daniel (03:28.402) Yeah, you won't see any difference. No, we will like, listeners will just continue as always. Please honk your horn twice right now if you're on your way to work and you wanna support Waiting for Review. And yeah, we need the intro. Hey, welcome to Waiting for Review, a show about the majestic indie developer lifestyle. Dave (03:40.601) Yeah. Dave (03:44.228) Yeah. Daniel (03:55.522) Join our scintillating hosts Dave and Daniel, and let's hear about a tiny slice of their thrilling lives. Join us while waiting for a view. Dave (04:07.032) Hey. Ha ha. Daniel (04:09.088) And also, we've kind of normalized our microphone distances so that we're both about the same distance away from our respective microphones, so our levels are better. We're getting really professional. Dave (04:12.844) Yeah. Dave (04:21.19) We're getting there. Although I'm going to gradually start speaking louder, then you'll just see to throw you off. Ha ha ha. Daniel (04:28.007) Fantastic. I want to hear from you. So that's perfect. So yeah, speak as loudly as you want. Dave (04:37.54) I think that's the thing, right, is I often, when I'm recording the rest of the house, it's asleep, right, because we'll record on a morning my time relatively early so I can fit it in before work. And yeah, so I think I've been kind of talking quieter because I don't want to wake anybody up but really I'm pretty soundproofed in this room and I need to kind of just talk and project and, you know, do what the show needs. So that's fine. Daniel (04:43.404) Mm-hmm. Daniel (05:01.482) Yeah. Dave (05:07.128) But also Riverside that we're using should balance things a bit for us and do a bunch of that as well. So it sounds like a commercial for the service we're using the amount of times I'm referencing it. But the point here, and this might be relevant to listeners of the show really, is that we're trying this thing where we're doing this every week, but we have limited time. Daniel (05:18.506) Hahaha Dave (05:30.06) to begin with, right? That's something we talk about a lot is like, you know, as an indie developer who also has a day job as somebody who's running a business for you, Daniel, and you've got all these demands of your time. Um, the idea of sitting down and spending all evening editing the show is like, I don't have that time to be honest with you. Um, so Riverside service, having a lot of automated things for this and, you know, at a price, of course. is something we're trying because that will then mean we can kind of just point and click, right? It normalizes the audio, it does X, Y, and Z to give us the video output. So we got both our streams together and all of that. It should be relatively point and click. I think we'll find the edges to that here and there. But this is one of those situations where I've kind of looked at it and gone, yeah, I can do all of this. I can do all the edits, all of the bits. But should I? Daniel (06:27.148) Yeah. Dave (06:27.228) Right. And so we're just trying it out to see if it gives us what we're after here, which is the ability to just get on and record, provide the show, and for it to not eat too much indie dev time and other things. So yeah, hopefully it all kind of comes out in the wash, as it were. Daniel (06:49.646) Yeah, and that's really good. So yeah, you tell us, write us at contact at waitingforreview.com and or on our socials. I'm gonna read those at the end of the show. Can I tell you about the fact that my servers were broken again? And so I have finally, like speaking of offloading work, I finally in earnest, Dave (06:54.754) Yep. Dave (07:01.633) Yeah. Mm-hmm. Dave (07:09.413) Yeah, go on then. Daniel (07:19.306) began the search for a system administrator and or DevOps person. Probably just not full time because I can't afford that. But I've actually spoken to a friend yesterday. And he says, oh, yeah, I know someone. And so I'm going to like he's going to connect to connect me to a friend of his. And I'm going to talk to that person on the phone tomorrow. No, Friday, in two days. And so yeah. Dave (07:23.918) right. Daniel (07:48.29) Hopefully, maybe that person can then help me run the service better without breaking so many things. But yeah, simplify your life. Dave (07:55.673) Brilliant. Dave (07:59.492) Do you want to talk a bit about what happened at all? Or is this kind of like a, it happened, it sorted, let's not go there. Daniel (08:07.574) Actually, I do want to talk about it. OK, so this is about thorny data. We talked about thorny data before 10 shows ago, maybe. I don't know. 10, 15 shows ago. If you search for thorny, you will definitely find it. So the original problem was this, that sometimes our cleanup processes on our special database, we use a special database that's called Apache Druid. And that's a time series database, specifically for analytics data, that is highly clustered. And that will. Dave (08:13.536) Yep. Daniel (08:36.118) move data around in so-called segments. And then it will also defrag those segments. It's not calling that, but it's basically defragmentation. Like your old hard drive, and you could just watch the hard drive get more cleaned up and uses its space better and stuff like that. And it turns out that sometimes, and unpredictably for me, that defragmentation process would destroy individual segments in a way that they would still. Dave (08:49.932) Yep. Daniel (09:02.67) be marked as, oh yeah, they're downloaded to the individual servers of the cluster. But then the individual servers of the cluster would be like, no, I have never heard of that segment. So I'm just going to throw a big fat exception that will just crash the whole query. And so the first thing that I did is actually add automated tests that actually will tell me, will periodically actually check if this error is occurring and then immediately just ping my phone. Dave (09:31.128) Mm-hmm. Daniel (09:31.342) through our existing incident reporting software, which I should have done a long time ago, but I didn't think that would recur that error. But it did recur, and while I was trying to fix it, it actually got worse and worse. And the problem is with the amount of data that we have now, everything that I try, I just need to wait about between 20 minutes and 70, 80 minutes for anything, like to see if anything works or not. Dave (10:01.595) Mm-hmm. Daniel (10:02.078) And so that means that the repairing process just took a long time because I needed to just diagnose the problem. And so I was very much just like grabbing things in the dark and just trying to get a tiny idea of where I am, what is in my hand right now, what am I finding? And that just took a long time. So I had the fantastic idea. Dave (10:22.431) Oh no. Daniel (10:31.534) to not just do this blindly, but to actually have a very detailed diary in Notion. So we use Notion inside Telemetry a lot for any textual thing that will be shared between me and Lisa, or also between us and Marina, or Texture. And so, yeah. So I was like, OK, I have actually a folder in there that's called Azure. And then, few folders, subfolders for the different service that we host on Azure. So I was like, I'm just gonna like at the correct position, I'm gonna make a new document, document I'm just gonna document everything that I do with like everything that I try, like copy all the error messages in there in case they're ephemeral and just are gone after a while. And so I can like, I also circle back, see what I've tried, maybe actually look at them with fresh eyes after a while, maybe find something else. And that really, really paid off. Usually I don't do this because I can keep all of the things that I work on in my head, but just with these long waiting periods where I'm trying to in between, fill my time with something sensible, because otherwise I just feel like, I'm just like sitting for an hour in front of the computer getting very frustrated, because of course I feel that, oh yeah, people are actually trying to use telemetry deck and maybe some things are not working, so I want to do something. So I kind of wanted to, yeah, just like writing things down, also like writing down the plans, the plan as in, I'm going to try these three things in order. And then the first thing starts, and I can just move to a different virtual screen, maybe answer some emails or try to work on something else. And then after an hour, it dings. And I can be like, OK, this failed in this interesting way. So I'm going to try thing number two or whatever. Anyway, I finally tracked down the problem, the solution, after about, I want to say, Dave (12:08.012) Mm-hmm. Dave (12:17.484) Yep. Daniel (12:27.59) one and a half weeks of work was the following. I had updated to a new version of Apache Druid which supports, I wanna say, nullable values. So previously, like numerical values would always be either a number or minus infinity, for example, if the number is not there, or zero if the number is not there, and now that number can actually be null, as in non or nil. the concept of nothing, right? And they have done that to be more compatible with normal SQL-like databases. And so other things like strings, for example, also can be null, whereas previously they will be the empty string. And so now the thing is, keep this in mind, we last year, one and a half years ago, we updated the telemetry deck ingestion API to version two. So all new, all the... Dave (13:11.058) Mm-hmm. Daniel (13:24.382) all new versions of the telemetry deck SDK are posting to API version two. But version one had a very peculiar way of handling metadata that was peculiar in order to be compatible with the version of a procedure that was current back then, which is that all the metadata technically wasn't saved as a dictionary. It would be saved as an array of strings. Dave (13:34.547) Yeah. Dave (13:44.076) Mm-hmm. Daniel (13:52.682) with key and value separated by a colon character. And yeah, this worked. This worked most of the time for filters and whatever. You would translate on the server and everything. And then once that limitation of Apache Druid went away because we can now just use normal dictionaries, we kind of moved to that and also had various steps inside the API to translate from Dave (13:56.164) Thanks for watching. Daniel (14:23.886) The new API just takes a dictionary. The old API now takes the list of strings, but also does the thing where it just cuts apart the string at the colon character, and then just builds a dictionary out of that. Turns out there's one app. I'm not going to name it, of course. It would be really bad, but it's a very tiny app. It has a bunch of users, maybe in the tens, not even hundreds, in the tens. And somehow the author of that app... Dave (14:49.261) Mm-hmm. Daniel (14:52.614) made a mistake where they are sending a very, very long string that looks like a debugging information that ends in a colon and has nothing after the colon. And our string splitting algorithm treats that as a very long key in the dictionary and then an empty string as the value. And that used to work perfectly. So that was stored in all the... Like, that was just inside our data. Dave (14:59.956) Yeah. Dave (15:04.804) Okay, yeah, I'm following. Daniel (15:23.278) And those turn out to be thorns because that new version that new version of Apache Druid Does not know is this a null value because it's an empty string or what is going on here? so So yeah, so whenever the Defragmentation process that is running is touching one of those segments it can read it Dave (15:35.64) Yep. Daniel (15:47.966) And then it will finish writing it, but they will somehow fail while writing it in a very destructive way. And so the segment just doesn't exist and can't be really moved around, but the main orchestrator servers think it still exists. And so that is the origin of the thorny segments. And... Dave (16:05.684) Ooh, I have to, I have to ask Daniel that wasn't one of my apps, was it? Okay. Daniel (16:10.518) No. But I want to stress that this is no shame or shade on the author of that app. That is actually, I'm very happy that this app exists because it has helped me find a flaw in our systems. So the fault here is my fault because I didn't secure or write this code well enough that it could find this. Never shame like. Dave (16:18.666) Mm-hmm. Daniel (16:39.158) Especially I'm very sure that this app is just a labor of love for people. And so I never want to shame that person for anything. Anyway, the configuration for this cleanup process also allows you to filter data. So right now I'm just filtering out that app. Because this is just a filter that has, oh, if the app ID is something, then just do not. do not write that data back into the data set, which is kind of unfair to that person. But this has fixed the problem for now. And I actually like on the side, I've been writing a little Python script that will go through the cold storage data, which is just JSON files on disk basically, and fix the dictionaries there and just like delete everything that has an empty value in the key value pair you'll not be able to filter against it anyway. And just database-wise, the result will be the same if you filter against an empty string versus against a null value. So actually no data gets lost here, just that the format of the data will be correct again. And then I can replay that and then the person will have their data back. But yeah. Right. But yeah, that's the long and thorny saga of the thorny data. Dave (17:52.836) Mm-hmm. Dave (17:57.176) So eventually it will get sorted. Dave (18:03.564) Wow. I mean. Daniel (18:06.51) Um, the thing is though, like that, um, little research journal that I started inside my notion app was so incredibly helpful. Like I have, I have in there, I have like, like screenshots of various charts where like data is missing, whatever I have error messages. I have like JSON configuration files and I have lots of comments to myself. And if I found that I'm actually kind of funny. Dave (18:19.539) Mm-hmm. Dave (18:34.188) Hm. Daniel (18:35.39) I was like, okay, this is really frustrating, but I'm going to write it down. And that actually helped me think about it. And like, I found myself at one point, I was like, kind of like making this funny for, and be like, okay, if I look at this again in a year, then I'm going to smirk a little bit because I'm like, yeah, okay. I feel you past Daniel. Dave (18:54.756) something that's occurring to me here Daniel is that it won't be you looking at it though. If you're hiring a DevOps person to work part-time on this stuff right these notes are going to be kind of they're attached to probably a task that they take a look at potentially. Yeah and I think I'd appreciate I myself would appreciate vaguely humorous notes as much as anything else right. Daniel (19:12.422) Oh yeah, that's also possible. Daniel (19:23.398) Yeah. Dave (19:24.396) But I think that's the thing, right, is this is a good example of like, um, yeah, leaving breadcrumbs for your future self or the person that you hand over to. Um, we, we have the same in, in code as well. And, and I have this in my projects where I put to do's and I'm trying to get better about leaving myself sort of meaningful comments, because what you're really doing. Um, here, I think more than anything else is like, it takes. effort to get into the headspace and to get into the context and doing these things then makes reduces that bar of entry back into the headspace because you'll put it down, you'll forget about it, you'll do other things, other things take priority. All of this sort of stuff can help give context. But it has to be meaningful, meaningful enough. It doesn't. Daniel (20:02.626) Hmm. Yeah. Dave (20:20.556) You don't really benefit anybody by copying war and peace into their light. So I think there is, there's a bit of an art to good, good notes for that sort of stuff. Daniel (20:24.471) Yeah. Daniel (20:30.422) Yeah, I've never, like, I haven't done that kind of notes before, mostly because what I sometimes did or do is like handwritten notes, but those have kind of a limit on how verbose they can be because I can type way faster than I can write. And also I can't copy paste error messages or config files or whatever into a handwritten note. And so these are a bit more verbose, but you can also like kind of fold the long Dave (20:37.41) Mm-hmm. Dave (20:44.45) Yep. Dave (20:50.785) Yes. Daniel (21:00.554) um, the long, um, error messages. So it's kind of easy to read and it is actually super, super helpful. So usually what I do is I document what I'm writing, working on in tickets and source code comments and like docstrings. What are docstrings called in Swift? Are they called docstrings? docstrings is a Python thing, but you know what I mean? Like the three slashes and then you describe what the thing does. Um, and so I read a lot of that. Dave (21:18.342) I don't know. Dave (21:23.825) Yeah, yeah, yeah. Daniel (21:29.098) also to help me think and to kind of like build up everything. And, but with server admin stuff, I just didn't have them. The things that I needed. So I think this is a good strategy. Apologies. I think this is a good strategy for, for working with these kinds of, kinds of things. Dave (21:47.68) Yeah. Yeah, for sure. For sure. And you're reminding me a little bit of some of my old, old career, actually, where I was working with, with data quite a bit, um, for analytics. So most of the time I was pulling data together. Um, but every so often I would have a job to go after something that, that was more like a, like an ETL process as would be described at that point. I don't know if anybody still really uses that language too, too strongly, but. Daniel (21:56.855) Mm-hmm. Dave (22:17.509) extract transform load. Daniel (22:17.608) I mean, yeah, I mean, actually the Apache Druid stuff like pretty much adheres to all that. It's it sometimes is called differently. But for example, it does use transformations a lot. And so yeah, I'd say I'd say that's so pretty current in some brands, some parts at least. Dave (22:23.841) Yeah. Dave (22:32.604) Yeah. And I, but if I think back to then, like, you know, what I would often have to do at that point is map out what a database is doing, map out what the, the script that was, was pulling this data together was doing. Um, and to be honest with you, a lot of that at that point was really more about identifying bottlenecks and, um, and issues like that as well. Um, but similar to yourself, you know, it's like, it's sort of, you've got these long Daniel (22:41.741) Mm-hmm. Dave (23:01.444) execution times to get to the point, right? I'm thinking specifically about a job that used to take three days to run that eventually got it down to, I want to say, about an hour in execution time after I'd sort of gone through. Similar to yourself, though, mapping stuff out, tried this, tried that, and it's incredibly valuable. Daniel (23:10.707) Mm-hmm. Daniel (23:19.544) Yeah. Dave (23:27.028) really to, to do that, stop yourself from repeating things as well. Because, you know, you end up three, four, five days in, can't really remember what you did on day one to try this stuff out. Daniel (23:37.74) Mm-hmm. Yeah. I also find, or like I was very happy about my strategy of every time something breaks, I try to add more infrastructure that prevents that kind of failure or mitigates that kind of failure. And so like there's a few, like a few layers there as well already. So all these problems would have been way worse if actually actual data could have been lost. But there's like multiple layers where data that gets that is in flight gets like Dave (23:50.873) Mm-hmm. Dave (23:56.003) Yeah. Daniel (24:09.582) cached and or just written to disk or to storage at like in various locations so that they are all safe. And that storage is usually Microsoft Azure Blob storage. So that's not a server disk or something. It's kind of safe. And also just like the various monitoring stuff. And now I have additional, so I have another layer basically, and that's actually very helpful. Also, I did already update the API to fix that bug. Dave (24:43.445) No, it's great. It's really great. I think it's very, it's good to get a bit of an insight into what goes on behind the scenes in a product like telemetry deck as well. I think sometimes I feel like I don't have much idea to sort of the layers and the stacks that it would take to run something like that. And I quite appreciate hearing how the sausage is made a little bit Daniel as well. Daniel (25:10.546) It is, there's a lot of sausage being shoveled around and, and yeah, the amount of data at this point is staggering and would have like, if you told me, like, I don't know, five years ago, that I would be regularly moving terabytes of data just around like very fearlessly, I would have way higher anxiety levels than I actually do have. Dave (25:14.212) Hehehehe Dave (25:18.176) if data was sausages. Dave (25:34.275) Mm-hmm. Daniel (25:40.254) Um, but because it's become routine and because also like there's a lot of, lots of safety nets, um, and I've, I'm just because I'm kind of used to the amounts of data, I'm like, okay, yeah, it's cool. Just like, whatever data is cheap these days, like, or storage is cheap. Um, CPU time is time is not as cheap, but. Dave (25:56.278) Yeah. Dave (26:01.088) Yeah. Oh. Daniel (26:04.026) I actually did break another thing on my servers, but I think that should wait for until next episode, just because it's not the Daniel server show. Dave (26:14.755) That's fine. That's fine. We could talk about that another time. Absolutely. Daniel (26:17.73) Yeah. But I do have a question for you actually. So a few days ago, no, a few episodes ago, you told me about that very cool landing page for Govj Pro that you made. And you wanted to collect email addresses for a newsletter and just like gauge interest in like how many people would actually be interested in you making Govj Pro. How's that going? Do you have a midterm review for that? Dave (26:21.867) Uh oh. Dave (26:28.809) Okay, yep. Dave (26:41.216) Yes. Dave (26:46.7) me one second, I can give a midterm review quite quickly. So yeah, to just go over the approach, this was a web page, single static page. And all it has on it is a description of what the app will be, a screenshot, an overview of features and things. The app isn't built, but the screenshot kind of makes it look like it's already there, right? It's pretty well formed. Daniel (27:12.878) I'm gonna go to bed. Dave (27:16.644) And the main thing about the page is it's got the call to action for signing up to the mailing list to hear about things as it gets developed and to know when it's ready for purchase. I put it to two VJs, so that's Video Jockey, people who play with real time video. I put it to two Facebook groups, orientated to the scene and Reddit, to one of the main subreddits. Uh, and I have had 36 people sign up since putting it out there a few weeks ago. Uh, most of those are within the first sort of week or so of putting those notices out. It's had the typical, um, peak and then longer tail afterwards. So, so people are still finding it like every two or three days, I get a new person sign up, which is actually kind of cool. Um, Daniel (27:53.901) Mm-hmm. Daniel (28:07.394) All right. Dave (28:14.42) It's not a runaway success. I think I was kind of mentally going, okay, I want about a hundred people to sign up. And if there's a hundred, then I'm going to dive on this immediately. Um, but I don't think 36 is, uh, bad either. Right. It's, uh, again, I've not repeatedly hammered this message out there. I've not done loads of engagement tactics to try and push this visibility up, up of this thing or anything like that. Um, so it's very much a time in the water. Daniel (28:20.554) Mm-hmm. Dave (28:43.996) Um, but yeah, I think the things that have been most useful out of all of this, right? Cause subscribers is one thing subscribers was, was like the metric of is anybody going to actually go, Hey, I'm interested and put their email address in. Right. That's great. But the bit that really struck me, uh, and I can't remember if we've spoken about this before or not, we have spoken about it, but I don't think we spoke about it on the, on this show. Um, I found quite a cultural difference between Facebook and Reddit in the type of responses I was getting. And I think that might be interesting to just talk about for a second here is that, so what I found, I posted this to Facebook. I don't really maintain a Facebook presence, right? It is literally just about, this is my VJ persona, if you like, on Facebook. It's not the all of me. It's just me. Daniel (29:17.686) Ha ha ha. Daniel (29:25.378) Mm-hmm. Dave (29:42.84) Dave who makes a video mixing app for iOS. Yeah, yeah, video Dave, which I now am for the show, great. But what I found was that on Facebook, I got quite negative responses from a couple of people. I got kind of sneering reactions of like, oh, you can't use an iPad for that sort of work. You need to use a, you know, Daniel (29:46.546) Video Dave. Dave (30:10.008) big beefy laptop, a media server, custom built rack mounted PC. And it's like, yeah, you do. If you're doing big, big shows and you're being shipped all around the world to support international ban tours and things like that. Yeah. Okay. Of course you do. You know, you need the kit that's going to match the job. Um, but that's not where my app plays. My app plays to the somewhere between the hobbyist and the prosumer. Daniel (30:26.924) Mm-hmm. Dave (30:38.596) kind of end of this, right? And I'm actually quite happy playing in that area because that's often where people are beginning. It's often where people are learning how to sort of play with real-time video and get into this niche. And what my app does at the moment, the existing Govj app, which is just a two channel mixer, is it lets anybody who's got an iOS device get started. Right. If you've got an iOS device and you can plug a video out into it or connect to an Apple TV, boom, you can put some basic visuals up behind your friend who's doing his first DJ gig or your, your friend's band. Yeah. And I love that bit of it, right. It's an enabler for people who just want to have a play, just want to get started. And the Pro app represents the next stage of that, right? So, okay. You've, you've, you know, you want to move up a wrong as it were. Daniel (31:18.88) Which is fantastic. Daniel (31:35.362) So is the iPad incapable of doing what the probe needs to do? Dave (31:41.276) No, not really. So the complaint that I got very specifically back was like, oh, iPads with the, um, with the lightning to HDMI connector, uh, basically encodes your video to H two six four. Um, and it makes fine grain things or things with a lot of change look like garbage because of the encoding. Um, which is true, right? When, when the lightning to HDMI connector first came out, I think we were talking in the early 2010s, somewhere around there where this was a big deal for people trying to do meaningful visual things. If you're just watching a film that's got a steady rate of change or whatever on the video out, you won't see too many artifacts or you'll probably forgive it. But a lot of real time video stuff can be like particle effects, small lines, that sort of thing, right? And you really do notice the issue. So they weren't wrong. Daniel (32:16.991) Mm. Dave (32:39.912) You know, this used to be a big issue. And what I've noticed is that over the years, this is kind of settled down that I think Apple did something with the firmware that, that kind of fine tuned that algorithm. Daniel (32:41.25) Mm. Daniel (32:50.19) Because, interjection, the Lightning II HDMI adapter is actually not a passive cable or something. It is actually an active chip inside that cable. That's why one of the ends is kind of very thick, because it actually transcodes video live using the H.264 chip that's in there, I assume. And so, yeah, it's a little computer in a cable, basically. Dave (32:57.528) That's right. Yes. Dave (33:07.576) That's right. Yep. So yeah, I mean what you can do. Yeah. And what I assume was happening at that point in time, right. There's a few things in the mix here, but effectively it would be, yeah, yeah. Effectively it would be using the hardware encoder on the device to achieve that at high speed, right? And Lightning, I think we would, there's a limitation on the data speed. We're talking sort of USB to Max head rooms, I think. Daniel (33:24.267) and the mix. Dave (33:47.208) I'd have to look up to be a hundred percent sure, but there were limitations on the format. And so by doing this, you could encode the data. It doesn't use as much bandwidth on the output. So that's easier. And then also you're leveraging the, like I say, something built into the device that can do this encoding very, very quickly, which by the way is also part of how AirPlay works. For example, right? When you, when you AirPlay encodes and sends over the network. So all of that makes sense and that used to be a bit of an issue. It's become less of an issue over time. I think partly because the devices have sped up as well. So the issue of the encode itself is quicker than it was. So it is now possible to get a higher sort of fidelity, if you like, a real time speed off it. And I think like I say, Apple have tuned the algorithm. So it's just, it's not something I've had reported to me as an issue. And I've had the app in the store now for since 2015. Right. So, um, my reaction to that was very much like, yep, this was a thing. It is a lot less of a thing these days. Um, you know, not least of which is all the modern iPads have got USB-C and we're now talking Daniel (34:50.068) Mm. Daniel (35:01.822) Yeah, I was just going to say like actual like the iPads these days have USB-C, which has way more bandwidth. Dave (35:07.904) Yes, way more bandwidth and as I understand it, the encoding isn't going on in the same way. It's a proper digital signal path, which is how it achieves that because we're talking about a universal serial bus at USB-C speeds, which means I can plug pretty much any video adapter into it and it will go and make a go of using it, right? Anything that has got Daniel (35:32.458) even though actually the USB port in iPads these days is I think still USB 2 speeds, but that's enough for HDMI, like HDMI is at max 4K, right? So. Dave (35:37.94) I do not know. Dave (35:44.448) Yeah, I'd need to double check all of this. I'm very hazy on a lot of it because it has been a case of, it just works, right? And... Daniel (35:52.138) Yeah, yeah. So what you're saying is basically they told you, hey, like the iPad can't do that. And it's like, yeah, the iPad couldn't do that in 2008, 2010, but of course, that's like 14 years ago. Dave (36:06.488) Things have moved. Yeah, things have moved on. And so it's a case of you're not wrong, and this has been an issue. And it probably still is an issue in certain configurations and the rest of it. But it's not something that I found problematic with what I've been doing. I've not had any users report any issues in that sense. And like I say, with the USB-C output, we're talking a different game anyway with how that works. Daniel (36:18.917) Mm. Dave (36:36.788) And yeah, I just got negativity back, but like, what I was trying to highlight was the, the reaction I got from Facebook was very, um, that'll never work. iPads are not our thing, right? Um, if you're not, you know, heading out into the wilds and building up your machine from scratch with parts, then you're not a real VJ in our world sort of thing from some of these guys, right? One or two. Daniel (36:50.327) Mm. Dave (37:04.288) You know, but they're very loud. And I guess we're talking about a contingent that I would sort of stereotype as being kind of our age and older. Right. So in that sort of middle agey kind of bit of things, yeah, they've been doing their stuff for probably two or three decades. I get it. They think they know, they know everything about everything in that world. That's fine. Okay. Um, and the iPad just sort of looks like a toy, I guess, to them. Um, over on Reddit. Daniel (37:06.7) Right. Daniel (37:17.013) Mm. Dave (37:34.188) We're talking about a lot more novices, a lot more beginners. People are excited to just be playing with the art form and messing around and, and having fun. Um, and the reaction I got there was zero negativity and a lot of people asking me if they could beta test it. Very, very different dynamic. Um, and I guess I kind of wasn't expecting it. I sort of knew that Reddit and Facebook had different Daniel (37:43.118) Mm-hmm. Daniel (37:51.779) Alright. Dave (38:03.552) people there, but I didn't realise the dynamic of the scene, if you like, was kind of split in that sense. Daniel (38:10.958) All right. I mean, it might also be on top of what you're saying, that the people on Facebook are not only older, but also like more deeply into the professional VJing. Whereas maybe because Reddit has a way, like these days no one is on Facebook. I say no one is on Facebook, but you know what I mean. Whereas on Reddit, like Reddit is very active, so Reddit will have a way larger user base. So it will have a better spread of like, from amateurs to professionals. Dave (38:18.157) Mm-hmm. Dave (38:23.566) Yeah. Dave (38:28.151) Mm-hmm. Daniel (38:41.002) And so the people who you are targeting, which are kind of the prosumers, the ones who are probably not building their own rig for just VJing, they're probably gonna be more on Reddit. Whereas the Facebook people might just be like defending their in-group and be like, hey, this is like, I feel less professional just because this thing exists, which is unfortunate. Dave (38:41.229) Mm-hmm. Dave (39:05.656) Yeah. And so I guess I call all of this out just to say one of the things I'm trying to get better at over this year is knowing my customers, right? And actually interacting with people who are using my apps and getting that feedback loop of everything from them, you know, UX, things that are tricky, things that they would like to add to it, all of that sort of stuff. Daniel (39:15.906) Mm-hmm. Dave (39:33.204) And implicitly I know this to be true, but I've had a long time out of just kind of cranking the lever on updating the app, leaving it to do its thing. And, you know, I'll respond to bug reports, of course, and try and fix stuff, but I've not necessarily been proactive on sort of finding out how people are really using the app and what they're getting out of it. And what I've found certainly since putting out the, um, the, the landing page for the pro app. It's had a bit of a halo effect on into the main app where I've had a couple of people make themselves known as users of the main app as well. Again, this was via Reddit. Um, and, um, to sort of say what they really love about it, what they would like more of, um, and that's helped guide actually a few things for the pro app as well. And I've been having a load of these positive conversations off the back of it. So it's been more than just putting a page up and seeing who signs up for the mailing list. Daniel (40:02.953) Mm-hmm. Dave (40:28.244) It's actually given me a bit of one-on-one time with people to get direct feedback about what they would like in the app. Yeah. And it's real, I don't know, virtuous circle kind of stuff, right? Because they tell me that I can improve stuff. They feel acknowledged and loved by somebody who's making the tool they're using. I've had people, I've had somebody in particular send me videos of what they do when they're performing using the app. Daniel (40:33.351) That's really cool. Daniel (40:56.827) Very cool. Can you publish those? Dave (40:58.144) That was lovely to see, right? I did, I published a link to one because it was on YouTube, so I can link that to our show notes, actually. Yeah, for me, it was super interesting because the setup this guy had is he's got two iPads running their outputs into a hardware video mixer. And then he's using them, like, if you can imagine this, it's like... Daniel (41:06.238) Oh yeah, please zoom, please zoom. I haven't seen it. Dave (41:24.692) CD decks. Do you remember CDJs and DJs DJing two CD decks, audio mixer in the middle? He's got the video version of that kind of going on, right? There's two iPads providing two outputs of video. And obviously within my app, they're then able to mix two channels in the app as well. So he's got a four channel mixer set up based off this. Yeah. Daniel (41:26.264) Mm-hmm. Ha ha ha! Daniel (41:34.806) Mm-hmm. Daniel (41:48.026) That's pretty cool. And it also shows that he can use your app, even though it is aimed at amateurs or entry level people, and use it in a more professional way by building on top of it, which is really cool. What you should really do is for the launch of Go VJ Pro, you should do it Apple style, where you find the biggest VJ artists in the world. I don't know who that is, but find them. Dave (41:57.976) Mm-hmm. Dave (42:02.828) Yeah, yeah, yeah. Mm-hmm. Daniel (42:15.938) And like ask them, you need to make them perform using just go VGA pro and an iPad. And then like, it's also sponsored by Apple because it shows the power of the iPad pro with the M4 chip and yeah, I can, I can see it before me now. Dave (42:22.665) Yeah. Dave (42:30.484) Ooh, are we there yet? Yeah. I, there's a, there's a version of that for sure. That that's probably going to be worth me doing. Um, definitely canvassing for people who are using this in the wild as, as the beta testing goes on, I think that will become more clear, right? In terms of I'll be able to, uh, shout about what I'm doing on the socials a bit more. That's probably going to have. Daniel (42:50.198) Mm-hmm. Dave (42:57.896) some of these points of interaction like I've had already. I'm probably going to put more effort into being present on Reddit than Facebook, to be honest. But I'm also not going to stop putting stuff out there to areas just because one or two people have been a bit down in the mouth about what they see, right? It's like, OK, it's not for you. That's fine. And this happens all the time for us as well from an iOS perspective. you know, is that if you're only doing iOS apps, you get people asking for the Android version and there's always somebody going to feel left out or not included or not represented by what you're putting out there. And, you know, my typical response these days is to be quite thick skinned and kind of just sort of say, well, you're just not my customer, I'm sorry. Um, and, you know, that was kind of the case for me with, uh, with that particular guy, it's like, yep, that's fine. You, you do you. Daniel (43:37.507) Hmm. Daniel (43:45.762) Alright. Dave (43:54.328) I don't actually need to get into a protracted internet battle talking about how iPads work or don't work here. You know. Daniel (44:01.986) Yeah, but I mean, it kind of gets towards that. At the beginning, when you just have five, 10, 20 users, of course, every single thing that every single user says is very important to you and you want to make them all happy. But once you have a bigger user base, you can way easier, like way more easily say that, hey, sorry, but yeah, you're not my customer. Like, Dave (44:06.111) Yeah. Dave (44:16.686) Mm-hmm. Dave (44:28.959) Mm-hmm. Daniel (44:29.31) I'm sorry, we can't serve you because we don't have what you need. Which is fine. Dave (44:33.5) Yeah, yeah, yeah. But I think there's a way of transitioning to that I've probably done without realizing over the years, over time, right? You know, yeah, I'm in that mode now. If you went back to 2015, Dave, who just put the app in the app store, it's his first app, everything was pivotal, right? This response like that would probably have killed me at the time in terms of putting the app out, you know? I would have been like, oh, stuff it, I better pack up then, this is never gonna work. Daniel (44:41.153) Mm-hmm. Daniel (44:52.15) Mm-hmm. Daniel (44:57.339) Yeah. Dave (45:02.9) You know, and, um, so there's a, there's maybe there's something within this for the listeners of the show, just in a sense of, um, yeah, you're going to get these people, you're going to get these reactions at times and, um, you kind of just have to let it bounce off you. Like taking, taking any of the facts of what they're saying, you know, especially if it's reporting a bug in your app or something like that for sure. Daniel (45:23.649) Mmm. Dave (45:32.084) Try and take some of the emotion out of it because it really is just somebody's opinion a lot of the time as well. Right. And certainly when you're, you're not, when you're talking about this sort of thing and not a literal bug in the app, it is it's opinion based as much as anything else that this guy doesn't really think iPads should be used for this sort of job. Fine. That's fine. Daniel (45:53.042) Yeah. And also building on top of that, I have a similar but slightly different thing where people who love telemetry will ask for many features. And 90% of them right now are kind of languishing in the ticket issue tracker. And it's not because I don't want to build them. It's just because I have to prioritize the time that I... Dave (46:17.195) Yes. Daniel (46:22.454) that I work on or the things that I work on. And right now, most of my time goes into finding bigger customers for a telemetry deck because I want this thing to be living for a while. And for that, it needs cashflow. So it makes more sense to right now say, okay, the feature set is as it is, barring either bug fixes or like small tweaks because coding is just way more fun than other things. Dave (46:35.18) Mm-hmm. Dave (46:38.849) Yes. Daniel (46:52.766) And so I will still return to the code base often just for my own sanity. But yeah, it means probably no huge features. That being said, the feature that I've been working on, have I told you this? I have told you, but have I told the show? Yeah, it's in there somewhere. I'm reworking the database to allow for user permissions and stuff like that. And that's gonna... Dave (46:52.853) Yep. Dave (47:02.596) Mm-hmm. Dave (47:14.658) I do not know. Daniel (47:22.73) launch at some point. So that's kind of a huge feature, but yeah. It saddens me that development of like cool features is slowing down, but it's not, it's not gone completely. It's just like the focus is not 100% on build everything up because things are not awesome, but they're fine, I guess. And I would like to make them awesome. But for that, I need a few more customers first. Dave (47:34.809) Mm-hmm. Dave (47:45.088) Yep. Dave (47:50.692) Well, I think that the other thing as well, though, Daniel, is I think you've reached a stage with telemetry deck where your horizons different, right? So you this thing exists, it's got customers, it's at a certain stage, it's at a certain size. And the way you're adding to this, the way you're building it out now is, I would argue, it's kind of becoming seasonal. Right? If you think of things, if you imagine like the course of a year. Daniel (47:59.935) Mm. Daniel (48:14.898) Oh yeah, oh yeah. Dave (48:18.52) And I've gotten deep into gardening in the last few months. So forgive me, the metaphors are going to come through to the show, right? But, but, um, there is something there in terms of you're now at a stage where you're talking about, okay, this is when I'm sowing seeds for new things. This is when I'm harvesting, you know, the fruits of my labor at that point, right, to some degree, whatever that translates to for telemetry deck. And this is when I'm then, you know, clearing stuff up, sorting things out for the winter. Daniel (48:22.274) Hahaha! Dave (48:48.468) Right. And the metaphor kind of extends to here where it's a case if you're going, right now I need to focus on getting the bigger customers through the door to keep this thing alive and to make sure things have got longevity. Um, at some point, you know, that you're going to be going, I've now got these big customers through the door. This is stabilized this and this, I'm now able to support my DevOps part-time person. Maybe they go full time, whatever that looks like. Right. You're going to be in a different position at that point to then turn around and go, right, we've now got this, this gas in the tank. Let's go and get some of these smaller items or, you know, I've actually got things to a stage where I'm feeling kind of redundant in the process for all these other non-dev things today. That's all in hand. So actually I'm going to, you know, fill my developer boots with, um, picking off some of these things. And that will happen. Daniel (49:25.522) Oh yeah, definitely. Dave (49:43.852) I think that's the other thing is to understand it's a cycle. Right. And so the bit of you that probably gets quite frustrated at times, like I just want to code man. Uh, you know, yeah. Yeah. Daniel (49:53.766) I'm, it's getting better. Like I still want to code. I still realize that this is the thing that gives me the most pleasure when working in telemetry deck. But at the same time, I'm also getting a lot of pleasure out of just using the platform for, like by showing it to people, by finding out interesting little stats for my good morning messages, by just like. Dave (50:02.625) Yes. Dave (50:10.594) Mm-hmm. Daniel (50:20.21) analyzing how is telemetry deck adoption going using telemetry deck, the stuff like that. And just the pleasure of being like, hey, I built this and it's actually working. That's also really, really cool. Dave (50:25.322) Mm-hmm. Dave (50:32.632) That's something I need to get back to with what I'm doing. Right. So, um, and this is something, you know, that I've gone around and around on every now and again, it's like actually making the time to play with my video app and to, to do the thing that it does. You know, these days I'm not kicking in pubs clubs and on stages and things. Right. So if I do anything like that, I'll be live streaming and we'll see. I, we're at the beginning of the year right now. Daniel (50:36.639) Oh yeah. Daniel (50:44.647) Mm-hmm. Daniel (50:52.982) Mm-hmm. Dave (51:00.384) I've got a lot of good intentions, but I would quite like to start doing that bit, which again will fulfill some of that is a sense of like, well, I'll be getting the pleasure out of the thing I've built. Daniel (51:15.042) Mm-hmm. Oh, I can see that. But if you're doing it live streaming wise you kind of need a DJ too, right? Or how would you do that or take existing DJ sets? Dave (51:21.636) Maybe, maybe it opens up a whole can of worms, right? Because then you're also talking about copyright issues and all of that sort of stuff as well. So we'll see. I know I can use a service like Mixcloud that handles a bunch of that. And then it's a case of I'll be looking for DJ sets that I want to do the visual accompaniment to and probably DJs that I wanna collaborate with for that. So there's a few barriers and bars there. Daniel (51:29.28) Mm-hmm. Dave (51:52.104) There's also like, do I want to put together my own set somehow with something and kind of become a bit of a DJ as well? And then that comes right around to the time thing that we kicked off of it, right? So we'll see, but I do need to be dogfooding my apps. I do need to be playing with what I'm producing and getting into that world a bit more. Daniel (52:02.702) Yeah. Ha ha ha. Dave (52:18.5) There's a bunch of things that I really want to play with just for the sheer hell of it in terms of there's very versatile orientated video streaming software that could be quite nice to try, you know, self-hosting some sets and that sort of thing. The year is young and I'm definitely feeling a lot of the hope and the big aspirations Daniel (52:23.93) Mm-hmm. Daniel (52:42.301) The year is young. Daniel (52:48.246) Yeah, my TikTok right now is full of, apparently there's a movie came out recently called Saltburn. I haven't seen it, I actually didn't even realize it would come out, but it's pretty big on my TikTok homepage or my TikTok for you algorithm. And that movie features as a main song somewhere. I don't know where because I haven't seen the movie. It features Perfect by Exceeder, which used to be one of my favorite club. Dave (52:49.097) Uh... Daniel (53:17.926) songs like in the mid-2010s. Dave (53:19.132) I know it. I, yeah, I know it. I know the break beat remix of it that somebody did. Yeah. Daniel (53:24.654) And it is so good. And so everything you should, you should, you should somehow, I don't know how, but you should somehow capitalize on this because that song is stuck in my, my head all day, every day these days anyway. So I could like bop along. Dave (53:31.434) I'm sorry. Dave (53:35.613) Mm-hmm. Maybe that's the thing, maybe rather than getting all the way down the rabbit hole into full sets and things, maybe I should just be playing around with the app and putting those bits out short form to places like TikTok. We shall see. But I think before we wrap up, Daniel (53:51.603) should very much do that. Daniel (53:58.11) I'm gonna actually link the song that I mean in the show notes, by the way. And it's the version with Princess Superstar, who should get way more credit actually for that song. Dave (54:01.069) Yeah. Yeah, I do. Dave (54:12.628) Yeah, that's interesting. I'm going to see if it's the version I remember, because I tend to know the breakbeat bass music or drum and bass mixes of things more than anything else. Um, but, but one thing I was going to say, Daniel, before we sort of wrap the show up is that, um, we've been talking a lot about time and about thinking about, um, how you balance your time and that sort of stuff. And we often do on the show. Um, and one very last bit of a. Daniel (54:23.726) Yeah. Dave (54:41.964) The topic here is that I went down the rabbit hole again last week with a few things. And one thing I'm trying to do at the moment is set up my library so that I've got this video pipeline library, I've got this node-based thing which lets me sort of configure things very nicely and that's great. What I don't have fully sorted out at the moment is camera input. And anybody who has ever worked with AV Foundation and cameras will be able to tell you... There's a lot. I do need a beeper. Yeah, I do. I need, I need a swear beeper, but you know what I'm trying to say? There is a load of settings and everything else. And I got bogged down with like, okay, I've got a camera node now. I want to switch between different lenses. I want to have a zoom on here. Oh, maybe it's going to be good to have some sort of panning control on it. Um, all that sort of. Daniel (55:13.931) You need a beeper. Like we talked about this in the pre-show, you need a beeper. Daniel (55:37.686) But then as a VJ, do you use the camera loss or would that be like a secondary thing? Dave (55:42.076) Yeah, yeah, yeah. It's a secondary thing, but a lot of people use it and it's been requested quite a bit of my, my existing app as well. It doesn't currently have camera input. Um, so I figure like if I get the camera node sorted, I can then proceed with my next task, which is to cut out the original go VJ app and to put this new engine in the middle of it. And camera, camera. Yes. Daniel (56:02.734) camera. camera. Dave (56:09.52) Um, so that'll give me that. And I got hung up on making the perfect camera node. And then on a few days ago, like last weekend, I sat down and I was like, what am I doing? I'm doing the thing that I always tell other people not to do. I'm like over agonizing about this one thing and I'm stopping myself from getting on with the task at hand and I'm feeling blocked by it. And I sort of took a step back and I'm like, I just need to use the default camera, front or back, provide a zoom control. Daniel (56:15.432) Mm-hmm. Dave (56:39.552) set it to autofocus and move on with life. Right, that gets it. That does, excuse me, that does like 80, 90% of the job. Daniel (56:48.354) Yeah, and then if that feature is used by every single of your users and they're screaming for more, then that's the time when you work more. Dave (56:54.094) Yes. Dave (56:58.488) Exactly. So I kind of just wanted to let end on there is like, we talk about time management, we talk about the process. Uh, I ended up three levels down in a, in a rabbit hole before I realized I needed to pull myself out of it. You know? Um, yeah. Daniel (57:04.11) Yeah. Daniel (57:13.378) Yeah, no, I say I say I push it push it. It's perfect. Dave (57:21.009) Well, on that note, Daniel, you have exceeded my upon expectations on the show. But yeah, I'm going to wrap the show here, Daniel. So this, the order of this might put us out of our usual sequence, but where can people find you? Daniel (57:25.527) Hahaha! Daniel (57:34.23) Fantastic. Daniel (57:40.751) Oh, it's the other way around. Okay, cool. I'm absolutely put on the spot. Please, if you want to know more about Telemetry Deck, please go to telemetrydeck.com. And if you want to find more about me, I'm mostly on mastodon at daniel at soci What about you, Dave? Dave (57:47.982) Ha ha. Dave (58:04.044) I am mostly on Mastodon as well, to be fair. I've said before on the show, it's kind of where I live online. You can find me at dave at soci You can also find out more about my apps, including this pro landing page on lightbeamapps.com. Daniel (58:23.766) All right. Then, so thanks so much for listening, everyone. Please rate us on the platform that you're listening to, listening this to and or iTunes. Send us emails at contact at waitingforreview.com and have a great day, Dave. Dave (58:33.451) Yes. Dave (58:39.893) You too, Daniel. Catch you later. Daniel (58:41.462) Bye! Daniel (58:46.23) All right, stopping the recording.