Dave (00:00.076) Maybe just about. Daniel (00:02.553) Put your head on Queer. Dave (00:04.686) yes, balancing between both ways. Dave (00:15.854) We are recording. We are. can chop the beginning of this off, but that's No, I didn't either. Daniel (00:17.071) So are we recording already? We're recording. There wasn't a countdown. I didn't see the countdown. my God. We're just like in the show, just like that. If you listen to this, this is the second episode in 2025, or even the third, no, the second. But this is the first one we are recording this year, because the other ones have been out of the can. Dave (00:30.678) Yeah, boom, boom, 2025. Dave (00:39.586) That's the second. Dave (00:43.566) That's right. Daniel (00:45.785) So I just sat down at this desk and I actually got a little sneezy fit because of the dust that has accumulated in this corner of the room. This is not a metaphor. I'm quite cleanly, but somehow enough dust has accumulated that my nose is a bit blocked, but it will unblock over the course of this nine. Dave (00:51.277) You did. Dave (01:05.378) well no nine No! Daniel (01:12.803) No. So yeah, no sneezing, no sneezing. Gesundheit. Dave (01:15.831) Nine sneezing, Daniel. Yeah, yeah, no sneezing. Yes. How have you been? Yeah. Daniel (01:22.607) Dave, happy new year. It's... I wanted you to ask you that question. I've had a lot of family things. And over Christmas, my birthday was in the middle of December. Then it was New Year's, my dad's birthday and stuff like that. So I had a lot of family things and social things and they were all nice. But I'm also very happy to be back behind a computer now and just like... Dave (01:32.718) Mm-hmm. Daniel (01:50.777) having a coming back into the the groove, you know. Dave (01:54.542) Yep, yeah I do, I do. I've felt a bit of that. We've had a lovely Christmas with my wife and my boys and we just chilled, kind of did a lot of, I don't know, odds and ends and jobs around the house and this and that and the other. like Christmas in New Zealand for us is probably quite different to what it was when we lived in the UK, just in a sense of, A, we're 12,000 miles away from everybody that we, you know, in our families and friends from back in the UK. And we've been here now a few years, so this is not unusual at all. And that just sort of means we kind of just do our own thing and just chill. The other bit that's really radically different, of course, is that it's warm here versus quite cold in the UK right now. Yeah. So there's a lot of summer stuff and like, you know, just... Daniel (02:47.439) So nice. Dave (02:52.376) hanging in the garden and doing things outside. So we did a whole bunch of those sort of things. And yeah, it's been good. It's been pretty restorative. I spent a bit of time on my computer over the break, but not loads. And actually managed to not code for solid probably eight or nine days in the middle of my break, which was good. Yeah. Daniel (03:16.698) yeah, same. Dave (03:20.364) Super good. mean, we can talk about these bits in a bit, but I think on the last couple of shows, I've mentioned the iOS 16 bug fixing I've been needing to do for the app. And I sorted some of those things. Yeah, just a few days ago now. But yeah, it's been a good time out. And highlight of which is I finally caught up with building a NAS computer. So not that that makes any difference to the show or anything that I'm up to, but that's been a fun diversion. Daniel (03:58.435) Yeah Daniel (04:03.225) That's really fantastic. How much space does it have? Dave (04:07.57) it's got eight terabytes on it. I've got list. Well, don't you start. Yeah, it's eight terabytes with a local mirror as well. So that's actually 16 terabytes of space in total. Yeah, but it's got a local mirror and then. Daniel (04:12.205) Nothing to sneeze at. Yeah. Dave (04:34.174) The important stuff is on cloud services as well anyway, so photos and things. But yeah. Daniel (04:41.103) Very nice. But it's like self-built, right? Like, so this is not a Synology or any other storage provider thing. like just, you took a PC and put in drives, I assume, like spinning drives. Dave (04:54.03) I did. Yeah, OK, I'll get into it and then we can we can talk about other things because I'm not sure it's massively interesting that the the the setup of this is a that's a HP Elite desk from 2017 that I picked up for about one hundred and fifty dollars. New Zealand, that one. Daniel (05:12.567) Elite. Dave (05:20.46) Yeah. And it's kind of nice as a setup because it's one of these small form factor desktop PCs, but you can, if you pop the lid as it were, like the shell of the case comes off and then you can get to everything inside quite easily. And in there, there's enough space to fit another hard disk. In fact, I could have put another couple of three and half inch drives in there. But only there's three SATA ports on the motherboard though that limits things a little bit. And one of those is already in use with the boot drive. So I guess what I'm saying is, is I can expand it with one more disk inside now that I've put the eight terabyte drive in. Yeah, I fit there. Daniel (06:16.047) Alright, fair enough. Dave (06:20.332) I've put open media vault on as the operating system and that's handling all of the NAS duties. So that's, that's quite nice. You, you install it like any other Linux distro to the, to the drive, boot off it and then everything's available through a web dashboard. So yeah, that's, that, was pretty, I want to say pretty brainless after it was installed. You've just got to follow through and do what I said everything up from within it. I guess the interesting thing, vaguely interesting, is that when I put the drive in, my eldest son 3D printed me a bracket so I could actually put that bracket around the drive and then pop it into the slots that the HP has. So was neat. But what I noticed is, especially in the heat that we've been having at this time of year here, is that the disks themselves were tracking in open media volts, the temperatures were showing as being quite high. And I did a bit of searching. was like, okay, you know, it's at 48 degrees, I think was the highest the spinning drive was. And everything on the manufacturer's side is like, yeah, it's with intolerance. You like you've got a bit of headroom over that, but it's at the upper end. And I'm like, if it's always running at that heat, I'm going to be damaging the drive that I'm now using for a bunch of stuff. So I did the most obvious thing. Daniel (08:01.443) You pointed a fan at it. Dave (08:01.824) in us to begin with, pointed a fan at it with the case off while I figured things out. And this is why I refer to it as a DIY NAS, Daniel, because the end solution for this was I bought a PC fan, like an actual in case, you know, regular PC fan, because it kind of doesn't matter what this thing looks like, because it's just going out of sight, out of mind. Daniel (08:05.432) Yeah Daniel (08:22.403) Mm-hmm. Dave (08:31.84) I drilled the case full of holes over where the hard disk is because it's just a metal case. I just took it to the garage with my drill and set up and just punctured a load of holes in the right spot and then put four holes in for the fan and screwed the fan in on the outside of the case. Daniel (08:50.287) But you did drill the holes using a bespoke aluminum drill, water drill solution that is just made to be with intolerances of less than a tenth of a millimeter. Dave (09:08.3) I know that I'm English, Daniel, but I'm not Johnny Ive. Yes. No, no, no, no, no. What was it? In the Ward Garden, nobody needs windows. No. Daniel (09:11.235) I'm trying to imitate Tony Ive. Dave (09:27.208) Johnny Ive I'm not. So this was, my god, the case itself where I put the holes in there. They're then all like punctured bits of metal really quite sharp and I was looking like, this is, this sucks. And then I put the fan over the top and of course all of that mess is hidden underneath the fan. Wired it all up and yeah I've got a computer with a fan bolted onto the side of it keeping this all this cool. But it works. Yeah. Daniel (10:02.031) So how many fans does the computer have now? Because I assume it already had a regular fan. Dave (10:08.642) Well, this is the thing, because it's one of these like small form factor designs that was meant to just sort of sit on desks in offices, it doesn't. It has a fan over the top of the processor that has an exhaust vent that then goes to push out of the box and everything else is passively called. So that was also part of the problem. It didn't have internal fans trying to keep it cool, just this thing over the processor. So. Daniel (10:25.647) Mm-hmm. Daniel (10:30.348) I see. Dave (10:38.51) Yeah, it's like I say, it's a bit of a Franken, Franken box. Daniel (10:44.367) It's a fanboy now. Dave (10:47.192) but it's alive. Yes, it's my fan boy. No, so one of the things that I'm most pleased with with this setup, other than having loads of space to store archives of this show that are actually quite huge files now on my Mac, I can get them off the Mac, which is good. One of the things that is, you know, I'm really quite pleased with is I've got an archive of my iCloud photos. on the NAS and I've ended up using a utility called iCloud PD that logs into iCloud and your photos through the API. And that runs on a cron job every hour and syncs my iCloud photos down onto the NAS into a specific location. Daniel (11:34.895) Mm-hmm. Dave (11:42.326) which you can get it on most platforms because it's just a Python script. So will run on your Mac as well. And one of the reasons for that was that I couldn't move my iClouds, my photos library to a share on the NAS. So I initially thought, like, if I just put the library on the NAS, turn on download everything instead of optimize. That'll be all my images and photos and everything on the NAS. Great. Yeah. And photos.app on your Mac will not let you do that and have iCloud turned on. Yes. That beautiful vendor lock-in. Daniel (12:11.993) Right, right. Daniel (12:19.533) wants to be on the boot drive. Yeah. Daniel (12:28.495) I mean, yeah, I don't know if that exactly is vendor lock-in or if it's just like the people who wrote, especially like the photos app are just like, yeah, we, we're not doing special cases, but yeah, it should just take a path. Dave (12:43.198) I was going to say functionally, I'm not sure there's much difference to the app. I can understand them perhaps not wanting to support it because of all the side issues of like, you know, my NAS has gone down and now I can't get into my photos or whatever. But I also kind of feel like if you know enough to press alt and change the location of your library or go into the preferences, you could probably be trusted to understand the issues of running it on a. a NAS or at least to see a warning box that would tell you so. So I don't know. I was a bit annoyed at that point. Yeah. Daniel (13:23.203) I get that, but yeah, that's pretty cool. So the thing downloads all the new photos and then just you have all the photos on your NAS basically. So if iCloud ever goes down or yanks your photos or whatever, you have a backup. Very good. Dave (13:29.474) Yep. Yep. And I get. Yes, yes. And then with the local, the local redundancy I've got on these old external disks, it's in two places physically as well. So because I've got another cron drop that is sinking everything from the main NAS drive to one of these other local drives. So. Yes, because hard disks die, Those photos and the videos, it a whole lot. Daniel (13:59.843) That's very neat, but it only does photos, right? Because it doesn't do like the whole iCloud files or something, because that would be cool too, you know, like just like have a complete backup or somewhere offsite. Dave (14:09.81) No. Dave (14:14.112) Yeah, that's something I probably need to look at a bit more because I think I could probably do that as well. If not with this tool, there's probably something else. Daniel (14:24.707) Yeah, just because, know, I have a huge iCloud and most of it, like a lot of it is on my Mac as well. So it will get backed up by the various backup solutions that I have, namely Time Machine and Backblaze. But it is not fully on my Mac because it wouldn't fit because I only have a terabyte of space on the Mac and I have way more on the iCloud. Dave (14:30.264) Mm-hmm. Dave (14:46.327) Yes. Daniel (14:51.597) So usually there were next works out fine by me, but it would be really cool to have the ability to just download it somewhere and store it somewhere that is within my control, you know? Dave (15:02.606) That's a good point. And I'm going to add that to my list of NAS tasks to look at. Daniel (15:06.926) Yeah, if you you stumble across something like let me know let me know and you know what I am gonna introduce this show now So hey Wake and welcome to waiting for a review a show about the majestic indie developer lifestyle and lots of backup solutions so when you're scintillating hosts I haven't done this for a while Dave (15:14.2) Dang. Sorry. Yes. Dave (15:30.67) Ha ha ha. Daniel (15:32.175) Join your scintillating hosts to hear about a tiny slice of their thrilling lives. I'm Daniel, Stripe expert and app godfather, and I'm here with Dave, the diver and Buffy fan of the year. Join us while waiting for a view. Dave (15:53.462) I don't know where the first bit of that description came from, Daniel, but it was alliterative, so I'll live with it. Daniel (15:57.048) Ha Daniel (16:02.777) This is a video game that I started playing, Dave the Diver. Dave (16:07.095) fair play, fair play. And a Buffy fan definitely. Daniel (16:08.789) which, yeah, which, yeah. I, I haven't been playing video games a lot. And when I've been playing, I've been playing the, the like racing games, but, I dunno, like over the very busy December, I kind of had a slump. And then on New Year's Eve, I was talking to a friend about the fact that I'm just not playing games anymore. And she was like, yeah, but you should just play, I dunno, boulder skates or. Dave (16:27.288) Mm-hmm. Daniel (16:38.369) one of those, you know, role playing games. And I'm like, I love those, but they need, take like four billion hours to complete. And I'm just not going to complete them. And so she's like, what you need to play is Dave the Diver. And so I have started playing this and it's adorable. It has the cutest protagonist and overweight diver that is very pixelated. Dave (16:46.84) Mm-hmm. Daniel (17:03.913) And you half your playtime, you spent underwater, like exploring the lagoon that this is taking place in. it has a bit of a secret with underwater merfolk, basically. But you also catch fish underwater. And then in the second half of each virtual day, you kind of sell that fish in a sushi bar. So you got to like... make the menu, hire people, like actually deliver the food from the kitchen to the individual patrons. And it is delightful. It is really, really cute. So yeah, I've been playing that a little bit. Dave (17:43.402) That was more than I was expecting from just the title of the game. Dave the Diver and Sushi Salesman. Daniel (17:47.469) Yeah. Yeah. Check it out. It's like. Right, it's 20 bucks on most platforms. And I'm gonna actually, yeah, I'm gonna link it somewhere. Dave (18:00.754) Right, I'll have to. Dave (18:08.462) Wilson. Daniel (18:08.963) Yeah, but that's where Dave the Diver comes from. Here we go. And Buffyfan because of the spike. Dave (18:21.006) Because of the spike, yes, we said that last show, didn't we? So I'm looking down our show notes and I'm trying to resist always referring to the show notes in the show, but we do keep them and they are useful for us. But I'm thinking, Daniel, we've got a note there about what did we get for Christmas? My note is about the DIY NAS, so I've covered a bit of that. Daniel (18:23.663) Right. Daniel (18:37.807) Mm-hmm. Daniel (18:44.717) Uh-huh. Daniel (18:48.974) Yeah. Dave (18:50.862) I'll talk about the other couple of things off there in a second, but you got a Porsche, I want to say, Tekken, taken? Daniel (18:58.127) you Dave (19:00.202) It's spelled T-A-Y-C-A-N. Daniel (19:00.705) So you know that my birthday is very close to Christmas. So sometimes I get very large Christmas gifts. Just because people can combine the Christmas gift and the birthday gift into one very large gift. And also sometimes I'm confused. Sometimes I get something for Christmas and I think it's been for my birthday or vice versa. And I got so many really cool gifts for both of them. Dave (19:10.158) Mm-hmm. Daniel (19:29.465) But one of the things I always told Lisa, my co-founder, is that if we really make it, if we really make it within the, and get like a few money from our startup, then I'm going to buy an electric Porsche. And what I mean by this is a Porsche Taycan. This is like the electric EV only Porsche, basically. It's a race car, but it's like battery powered. Dave (19:42.574) Mm-hmm. Dave (19:46.957) Okay. Daniel (19:58.351) And so I actually got one. It's this large. because it's from Matchbox, think. But I got one. And that was really nice. I also got fantastic literature, very, have various cool books about biking and stuff like that. A book with various art prints and drawings. And so much more, but I kind of just wanted to talk about, I just wanted to. put in the show notes that I got a Porsche Taycan because I don't know, my mind was really funny. Dave (20:38.826) That's brilliant. I've linked I'm gonna link up to the actual car, but I'm gonna need you to provide me with a photo or a link to the Matchbox hype car Daniel (20:51.055) I will, I will, but it's on the other side of the apartment. So I'm gonna get it later. Dave (20:55.114) It's all good. But yeah, I can see why that's your future car Daniel, should you make it big, it looks awesome. Daniel (21:03.619) Yeah. I also got a astronaut figurine that kind of projects stars on the ceiling, with not with a normal light, but with lasers. That's kind of Lasers, green, green lasers even. Dave (21:16.362) Laces are always cool. Dave (21:21.582) Dang. Yeah, that's great. Daniel (21:22.743) Yeah. I got more, but I'm kind of drawing a blank right now. And I'm hoping that no one will be offended by the fact that I forgot their present or whatever. I got a tiny little skateboard, like a finger skateboard. That's kind of neat. But yeah. Dave (21:33.727) You Dave (21:38.414) Sure you'll be. Yeah. Dave (21:44.046) brilliant that takes me back finger skateboards Daniel (21:47.791) So yeah, got, I didn't expect any gifts and I got a few from very like dear people and like some of them are glittering even. Like I got a package of unicorn glitter basically, because I'm a bit of a unicorn apparently. And yeah, that is just absolutely really cool. And... Dave (21:53.486) Mm-hmm. Daniel (22:14.851) Like, so the Porsche was one of the highlights in my mind somehow. Which by the way was gifted to me by Lisa, who today took me in, because today we met for the first time this year in our office. We were like separately in the office, like during different times, but like today we were both there at the same time. She was like, I listened to the latest episode of Waiting for a Review. And you said you, you Dave (22:19.554) Brilliant. Daniel (22:43.405) You work on things you're not supposed to while I'm away. Dave (22:47.95) Hello Lisa! Dang! Daniel (22:49.443) Gotcha Lisa knows Lisa knows Daniel (22:57.871) So yes, Hi Lisa. Dave (23:04.61) Brilliant. Lisa, if you're listening, if you're listening right now at this very moment, then I challenge you to message Daniel with a picture of a unicorn so that he knows that this is the moment you have heard this bit of the show. Daniel (23:06.415) You're very welcome. Daniel (23:23.885) Yeah, I'd like that. That's kind of fun. Yeah. she told me another story. I have to ask you this. This is slightly relevant because it's about New Zealand and Kiwis. So what Lisa told me is that Kiwis, the people, like New Zealanders, are called Kiwis because during World War II, Dave (23:32.721) Mm-hmm. Dave (23:38.998) Okay. Daniel (23:52.707) they had a shoe polish brand called Kiwi, I assume named after the bird. soldiers had that. soldiers and those soldiers were fighting alongside the allies. The other allied soldiers found it kind of weird and funny that these people had little cans that said Kiwi on them. So they called them the Kiwis and they're kind of stuck for the whole country people. Dave (23:57.55) Mm-hmm. Dave (24:17.368) for the whole nation. I could see that being a thing. I have no idea if that's true, but it would make sense. That black shoe polish also was sold in the UK. I remember buying it. I've tried to... Yes, yes, it was instrumental. It was the polish. No. Daniel (24:35.341) and then deciding I should move there. Dave (24:42.862) Yeah. And then for some reason, we couldn't seem to get any black boot polish the other year. I don't know if it's some sort of weird supply chain issue or what. And then all of a sudden it's been back on the shelves again. So I literally have that brand of shoe polish in my cupboard and use it on my boots. So I know exactly what you're talking about, but yeah, I mean, that could, that could easily be a thing. Daniel (25:01.711) Very nice. Dave (25:13.24) for all of the nicknames that can be applied to a nation. I think that's probably quite a nice one. Because Kiwi's the birds are pretty lovely. They really are. I'm looking and I'm looking around my desk, Daniel, and I can tell you the other Christmas presents I got for myself. So the NAS freed up an old Mac mini. Daniel (25:19.161) It is, yeah. Daniel (25:22.799) You're adorable. Daniel (25:33.839) Do tell. Dave (25:41.246) that was being used as a sort of NAS, but it's kind of not working so well because reasons, but yeah. So I've got a Mac mini sat next to my Mac Studio, which is my main machine. And then I've got another refurb PC box that I bought cheaply as well. So I've got three machines on my desk that are all in various states of being used. So those are my... my Christmas presents to myself. got a DIY NAS, a PC and a Mac mini in a pear tree. Daniel (26:15.513) You're just sleeping in the pear tree. You're just sleeping in a nest of computers like some sort of dragon. Dave (26:22.766) Pretty much, yeah, like a kit dragon of sorts, acquiring all of the kit. So I'll just touch very briefly on what it's all going to be for though, Daniel, is I keep talking about building for Android and building cross-platform apps. And now I've kind of got things set up in a way where I can test them on Windows, on Mac OS, on Linux. because the Mac Mini I've installed Linux Mint onto it. The PC is running Windows 10 at the moment because it's an older PC, but that's fine because I actually do want to test for Windows 10. But this is all getting prepared. Yeah, so many people are using it. Yeah. don't get me started. Yeah, and I guess all of this is a long way of me getting Daniel (27:07.261) but it's not supported anymore. Dave, Windows 10 is not supported anymore. Like no one is using it anymore. Hahaha Dave (27:22.476) to the point of saying with my own indie apps, this is the year that I'm actually seriously going to explore cross platform development. So that is my New Year's resolution, Daniel. Daniel (27:36.807) That's a pretty good New Year's resolution. have none because I basically make new week's resolutions every Monday. I find it hard enough to get through the week with those. But yes, that's pretty neat. I'm hoping to hear more about it. I have a follow-up question though. Have you figured out... Dave (27:47.81) Fair, fair. Dave (27:56.394) go for it. Daniel (28:02.063) a monetization strategy for if you go in cross platform because you're not on the app store then anymore or at least partially not. Dave (28:10.926) I'll be on the Play Store for Android, the App Store for iOS and Mac OS. And then we'll see. Windows, I'd probably like to try and get into the Windows Store if that's a possibility. Feels like that would be a good thing to do. And then for not being in any of the stores, I don't know what that looks like yet. I know that Revenue Cat has some sort of Stripe support and I don't know if I can look towards using that. as being a thing or if there are any other SDKs or services that I could use because I really, really do not want to be rolling my own receipt validation and connection to a payment service setup. So no plans yet, but yeah. Daniel (28:53.071) Yeah, I get that. That's one of the things I always wanted to build actually. Like by now I think it's too late, but back in the day when most software on, especially on Mac was, or on Windows, was like shareware of some sort. You downloaded it off the internet and then at some point later you sent the author some money, you paid somehow and you got a key. Like I was thinking, someone should make a platform for that. Like... Dave (29:02.615) Yeah. Dave (29:19.406) Mm-hmm. Daniel (29:25.059) like itch or gog for games, know, or steam, guess, but for apps. Yeah. Dave (29:29.123) Yes. There are a couple of services out there, because I've come across one of the things I like to do, Daniel, is when I come across an app that is doing something interesting in that sort of sense to me, sometimes on Mac OS, I'll explore the app bundle and have a look at the frameworks that they're using. So I remember I installed something the other year, and you could Daniel (29:52.719) Mm-hmm. Dave (30:00.11) pay for it through Gumroad. And I started exploring the bundled frameworks to see what was there. And I want to say it was called Sparkle or something like that. But there was a setup that was, yeah, but there was something that was in this app that could be, it was a service in that sort of sense. They exist. But yeah, as you can tell. Daniel (30:11.471) Yeah, yeah. But that was for updates, Daniel (30:23.564) Mm. Dave (30:28.94) I've not explored that very far. just know I want to build stuff on these platforms. I haven't yet figured out exactly what the, overall strategy is. Daniel (30:37.805) I've seen a few apps being sold via Gumroad. I think, for example, Whisper Transcribe transcription. That app that you can put in sound and it will give you text back. That's being sold by Gumroad, for example. Dave (30:45.166) Mm-hmm. Dave (30:50.37) Yes. Dave (30:55.308) Yeah, so I think we'll see. mean, my requirements for anything like that will be essentially desktop version of an app store sort of setup. You know, I just want a service that I can sign up to set up subscriptions or purchases. And then that's it. It does it for me and people just get presented with the proper screens like I don't want it to be too, too complicated. It's the other thing with this whole idea is I need to be looking at things that minimize my overall time and that minimize the level of platform specific work I end up doing as well. So we shall see how this pans out. I think it's a bit of an over ambitious goal, if I'm honest, the route that I'm kind of looking to go, which is Kotlin, multi-platform, compose, multi-platform. Daniel (31:30.147) Mm-hmm. Dave (31:53.038) And then third party libraries like libvlc and ffmpeg for the video side. It's going to take time. It's going to be a bit of a pain to do in places. But the worst case scenario of this is I will end up with a very good base for an Android app and I still have my existing iOS source code. So if this doesn't work out, I just go back and go, well, OK, have I got enough here to build the Android app out? Daniel (32:25.859) Yeah, yeah. I dig it, I dig it. I feel like this is also, you seem to be employing the same strategy I do sometimes when I really want to get into something, but I just keep bouncing off, like some technical problem or some skill that I want to acquire or something like that. And I seem to be doing it that way that, you know, like I start trying things out and it just... Dave (32:30.594) Yeah. Dave (32:41.262) Mm-hmm. Daniel (32:54.511) doesn't work. And at some point I get tired. like, okay, I'm not making any progress. I kind of put the thing aside for a while. And then maybe a day later, maybe a week later, I just try again from a different from a different angle, let's say. And somehow, like after the third or fourth attempt, sometimes like you just like make some inroads and you're like, Oh, now I understand enough of the problem domain to actually at least have a very general roadmap of what I want to do. Dave (33:08.333) Yes. Dave (33:24.717) Yes. Daniel (33:24.979) And once you know where you want to go, that makes things a lot easier. You can like search for stuff easier. And you can also, have a general idea of like how to slice and dice the work so that you can actually like know, yeah, these are the four big packages of work that I need to do. Whereas before it was like just one big thing. now we have like four slightly smaller things, for example. And I think that's actually a very good way of like sometimes tackling things. So I tried not to beat myself up if I sometimes bounce off a thing and then just like come back a while later. Dave (33:55.597) Yeah. Dave (34:01.006) 100 % you. Dave (34:07.982) Exactly. And I think that's the thing is like, you know, I'm making this grand statement of like, this is the year I'm going to have everything cross platform. Well, yeah, maybe. Yes. The answer to this is like, yeah, maybe, maybe. But but the yeah, the the gotcha, if you like, the fallback is very much well. Daniel (34:17.805) the year of Govj on the desktop. Dave (34:35.284) Even if it doesn't work out, I don't lose all the code I've got already. I don't lose the app I've already got in the store. Worst case scenario is I've learned a bunch of stuff. Well, that's, that's never a bad thing really. And I've wanted to understand more about Kotlin and Android and compose and that side of things anyway for a while. So this will, this will scratch that itch. This will force that to start to happen. But you're right. It tends to take a few passes and tends to need a specific objective. Do you know for me to actually make these things stick? And I think if you look at this, if I look at this sort of pragmatically, there's kind of two, two trains of work inside of this. One is, can I build at the cross platform side and make it work well enough on iOS to go, well, okay, I've got one, base of code. The other is, you know, the same thing out for Android does kind of make this work over on Android as well. But the desktop stuff is kind of a nice to have later on that I'll go, well, okay, the shell of the UI works, these bits work, but actually I've got to rewire all these other things to actually make it work. So that sort of sits over in the future pile to figure out. but, yeah, like I said, there's, there's, two main bits to this and, Exploring both of those is going to be fun. The prerequisite is going to be building a, setting up the project, setting everything up to, to have a reasonable architecture that I can move between quite well. All of this is kind of like, you know, stuff I know how to do on iOS. It's not alien to me to think about app architectures at all. I've got no idea what they need to be to work nicely with a multi-platform compose project. So that's actually where I'm starting at, Daniel. I'm working through a thing, a video at the moment that is a tutorial on YouTube, and I will link this up. But it's a five and a half hour video that is tagged with it's a composed multi-platform crash course. Dave (37:03.314) and it's really, really quite good because the, the guy who's made this video, thinks pretty strongly about architecture and layouts and that side of stuff and walks you through those thoughts and how he set it up at the beginning. and that's exactly the sort of stuff that I need at this stage as well. Cause these are the bits where it's like, I don't know enough about the space to know if I go down a particular architectural route. am I just going to be foot gunning myself all the way? So I'd like to start from a set of known reasonable principles and I'll still foot gun myself. That'll happen. But at least there'll be some guard rails around it. So that's, that's the plan. Daniel (37:34.467) Yeah. Daniel (37:48.469) It's fantastic. I had a similar experience recently with basically how Stripe's API works regarding their metered pricing. Because as you may know, like telemetry deck is like going to move to a volume based pricing option in the future. And like one of the things I really need to figure out is like, how do I make Stripe do this? And also how do I report? Dave (37:59.65) Mm-hmm. Daniel (38:17.721) the usage to Stripe in a way that Stripe can actually do this without compromising privacy, but also without over-reporting, with making sure that the exact amount of events that you have in Telemetry Deck is actually being represented on your Stripe invoice and you pay exactly that. And so, I've been bashing my head against this for so long. And just basically this week, I finally penetrated it, I think. Like nothing has really changed. It's just like I have looked at the problem from so many different sites now that now I'm like, so if I do this and then this suddenly the pieces start fitting together. Now I am this close to having a working prototype. today I was actually expecting to finish the prototype. The problem was that the Stripe API client called StripeKit that I'm using for, which is basically Stripe API client for Swift that is open source and maintained by the community, not by Stripe because Stripe doesn't do a Stripe API client for Swift. Didn't have like, like didn't, wasn't supporting three of the endpoints that I needed. So I kinda needed to, needed to PR and like give back to the community. You are very welcome community. Of course, like I plastered the telemetry deck name all over that because. Well, not all over that, like, you know, when you create a new file in Xcode, it says like, are created by, and it just like, padded say created by telemetry deck, because I don't know, like, no one is gonna look at these anyway, but I I want somewhere, I want the recognition somewhere. Like if someone in the future is like, I wonder who wrote these files that allow me to update Stripe meters. Dave (39:44.11) Always be selling. Dave (39:59.342) You Daniel (40:10.447) telemetry deck, that's very cool. Dave (40:14.126) Ha Daniel (40:15.597) So yeah, I finally made inroads there and that's really cool because it turns out like most of my previous strategies actually like had important puzzle pieces that I now can finally fit into what I'm doing and I'm really hoping to make some progress here. Dave (40:34.414) That's awesome. That's really, really awesome. love it. Like you say, when you've had a couple of goes, the pieces haven't know, mentally everything kind of sits on the floor for a second. And then, you know, you have another pass and like you've just described, you're like, yeah, okay, I know where I'm going to add this. And yeah, you come out with this solution off the other side. Daniel (40:57.455) Yeah, and also like the pieces are kind of resolving themselves, like what do I actually need to do? Like before, like before a few days ago, I had like either one item, one work item in my head, which was like make this whole new pricing thing work or 5,000, like, oh, these are the lists of features that I really want the thing to have. But both of these are kind of not helpful, right? Dave (41:16.93) Mm-hmm. Daniel (41:26.253) You need to have like some sort of hierarchical pyramid of needs kind of style. Like, okay, this is how the architecture of the thing is going to work, going to look like. So I can work on the individual parts. And now I kind of seem to have a rough architecture in my head and I'm not, know like what are the pieces that I need to work on. And so one of the things I'm working on right now is just like the, organization meter reporter job, basically. Dave (41:32.429) Yes. Daniel (41:56.175) does the thing that is like, yeah, a full day has passed. So I'm going to count all the events of that day and report it to the meter of that organization. Dave (42:07.16) That makes sense. Yeah. So you've got a process that's going to kick off that will do that daily. And it's going to be like a, yeah, count, count the ledger up sort of thing to bill it or Daniel (42:19.587) Well, not even, not even, well, not even daily, but the check is even more often because this is part of organization janitor, our good old friend organization janitor that I've told you before. And so it will just like run every now and then. And most of the time probably decide, yeah, it's not, not, not, it's too early to do another run and then just skip. but the more organizations we have, the more organizations this whole process is kind of going to, kind of have to cycle through. So. Dave (42:24.876) Yes. Daniel (42:49.315) makes sense to integrate it. Dave (42:52.494) Cool. That's really cool. I think there's something to what you were saying as well about all of this. It is that, yeah, it can take a few goes to really land where you want to be. And to some extent, you know, I feel like I'm starting my cross-platform journey this year, but also I had a couple of guys last year at exploring some of these technologies and messing around. So... You know, I added the audio reactivity to Go VJ and I did that by adding a Rust binary to the code base. I didn't need to. I probably could have coded it quite happily in Swift, but I found some of what I needed over in Rust and I wanted to explore how that worked. So I went for it. Everything on the iOS side that consumes this can be rewritten. to point to something else. So was kind of a no regret sort of exercise. I learned a bunch of stuff in the process. I learned that I don't particularly enjoy Rust programming, to be honest with you. It just didn't really. Daniel (44:03.393) Shocking. Please send email to Dave's email address. Dave (44:10.51) No, it just didn't really jive for me. Like I get it. I get why people who love rust love it and the constraints and the good stuff that it gives you. But for me, I think I've just been immersed in Swift development and mobile development for so long that it felt like it was quite a contortion of my brain. And then I played with Kotlin Multiplatform and I made a little proof of concept. It's not in the app, but I made a proof of concept where the Swift side sends a video texture over the divide into some Kotlin code that then executes a shader on the Kotlin side in Skia and then delivers the output back to my stack. I've got effectively I can write shaders and things in Skia if I want to. and wrap them up in such a way where they can execute as core image filters. Daniel (45:13.593) That's pretty cool that this is working so smoothly, just like performance-wise. Dave (45:19.71) performance wise, it was good enough. And that's where I left it. Like there was a lot of optimizations to sort of get into if I really wanted to make it part of the app, but I saw enough from it to kind of know, well, okay, I think I will probably quite like working with this side. If it's either, you know, if, the multi-platform thing works overall, then I have one code based with some divides for the platform specific stuff. If it doesn't work out, like I say, I've got an Android code base that I don't hate going into and actually have a lot of fun with working in. And I could see that potential from it. So I guess I'm saying my decisions to go this route are not unfounded. I've had enough of a toe in the water to go, yeah, that's nearly there, but doesn't quite really suit me so well. that feels a bit better. I've already had a couple of little plays to sort of build up this. this view, I may well hit blocks on this. I'm trying to sort of preempt, you know, one of our calls in a few months time where I'm like, Daniel, it's not worked. I'm going back. But we'll see. But yeah, it was just about for me. Daniel (46:29.199) You Daniel (46:33.295) Aww, poor you. Dave (46:41.89) getting enough of a view to go, well, okay, what feels like it's gonna work? What feels like it's gonna fit for me? And that's why I've landed where I have. It's not just completely unfounded. I have had a bit of a toe in the water. Yeah. But. Daniel (46:57.775) Yeah, that's pretty cool. Awesome. Well, fingers crossed, good luck for your video content wherever you may access it from. Speaking of video content, if you have video content, like for example, on various platforms that is region locked or that you wanna, like you just wanna like, you know, surf to a different place in the internet, maybe appear to be in a different country. Dave (47:10.638) Hmm? Dave (47:25.528) Mm-hmm. Daniel (47:27.437) then this might sound like a segue to a sponsor, like this is actually not. I just like feel like, my God, how funny would it be to always be like appearing to segue towards a sponsor never going there. Dave (47:34.232) Hahaha! Dave (47:44.576) saying Daniel. Daniel (47:48.111) I can't even do it with a straight face. Dave (47:51.394) me either. I'm going to have to try and find a way of doing this back to you at some point though. I'm not sure what my fake sponsor's going to be, but I will do this to you in a future show. I'll veer off into a corner and start talking about pillows or something. I don't know. Daniel (47:56.719) please. Daniel (48:13.359) This episode is sponsored by open source. Dave (48:17.07) Yeah. We are sponsored today by Triangle Space. No. Daniel (48:23.599) I'm trying cause fake. Dave (48:25.112) Yeah. Daniel (48:26.937) Triangle time. Dave (48:29.9) No, well, we're getting into the sillies, Daniel. So maybe. Daniel (48:34.297) we are getting into the sillies. And you know, like when it's getting too silly, you need to quit. But I have one more thing that I wanna lay before you because it's really annoying me. And maybe you have a solution or maybe one of our fantastic, wonderful, beautiful, gorgeous listeners has a solution of some kind. this is something that has only happened on this computer, but this is my, or on this Mac. to be exact, but this is currently my only Mac. So it might be that. It might be like this specific Mac because it's a Frankenstein Mac. The logic board has been replaced at some point in its life. It might be a Mac OS bug. It might be something that is installed on my system. I have no clue where to even start debugging this. So I noticed it first with my Pasteboard app. It's called Paste, P-A-S-T-E, and it's like a clipboard management app. And every now and then, like maybe once a day, maybe every other day, it will just not trigger when I do the key combination that it usually should open. And it turns out, wait, the app is actually not running. So I launched the app and then it's back on. And so I actually wrote their support and they were like, hey, thank you for notifying us. you look into your console and search for crash logs of this app? And I'm like, yes, of course. And it turns out there are no crash logs. And so I'm like, okay, I'm kind of stumped every now and then the app is gone. I immediately after look into the crash logs, nothing's there. Like generally there are a few logs of the app, nothing out of the ordinary. And just a few days ago, actually have, like I also have another app that I always run, which is an app called Usage. basically shows you in your menu bar, shows you like, I don't know, like your network usage, your CPU usage, that kind of stuff. And that wasn't running. Like every now and then I notice, wait, the charts in my menu bar are not there. So I have to launch the usage app. And I'm like, this is basically the same, this is basically the same symptom. And now I have two other apps that are always running on my, my three actually, but like, Dave (50:50.51) time. Dave (50:55.511) Yeah. Daniel (51:01.527) or not affected somehow. So I have an app that's called Postgres that is just like a Postgres database daemon for Mecos, just for development. And that sometimes is just not there without really having crashed. And the fourth one is Tuple, which is a screen sharing and pair programming app. And that also should always run and it just isn't. Every now and then I'm like, yeah, let me just click on the Tuple icon and it's just not there. And so I'm kind of confused about this. Like nothing seems to be wrong. Like I have no, like this machine is running very like rock solid. I am kind of stumped. So what I've done in the meantime is there is this app called Lingon, which is basically being used to manage services and startup items and stuff like that. Basically launch the configuration files for Mac. Dave (51:32.842) So yeah. Daniel (52:02.169) but in a graphical way. So I can tell the thing like, okay, create a new entry and the entry is at startup, launch this app or every two hours, launch this app. What I can also do is like, keep this app running. So whenever this app is not there, launch it. So especially for the paste app, I have just like, remove the paste app completely from the normal launch items of my Mac. And instead just make a launch D entry that just like, keeps the thing running. Like, and if it crashes 20 times, it will just keep relaunching it. It's not allowed to die. But still, do you have any idea? Dave (52:40.17) That kind of feels like, nah, that feels like the sledgehammer to crack the nut. That sort of, so the lack of logging is irritating because it feels like there should be some trace. But what it does tell you is these things are not crashing in a way that would create a lock, right? And tells you that something else is going on. It makes me, it feels like. Daniel (52:46.123) It is, yeah. Dave (53:06.536) iOS where apps get terminated due to memory pressure. Feels a little bit like that. And I don't know if this is maybe some sort of power saving thing that is kicking in. Yeah, that's a bit weird. Daniel (53:22.275) I mean, it might, but it, normal apps, like MechOS has this thing where it will kind of like sleep apps. Like if you have an app and you haven't like, it has no open windows and it's only visible in the dock, then, and it's not a background app, then MechOS will sometimes like just quit the app and when you next click it, it will like open it at the same position, right? So it will have everything. Dave (53:51.404) Mm-hmm. Daniel (53:52.099) presumed. But I don't think this is that because all these apps are like, officially background apps, like they are supposed to run all the time, right? So also like their the support is the support would have known like I wouldn't have wouldn't be the only person with that problem when writing to the support because they were quite stumped. But I am like I have a few usage patterns with this machine that are of course like a bit Dave (54:03.555) Yeah. Dave (54:13.454) Yeah. Daniel (54:19.041) extreme like one of the things is like this machine is like regularly traveling with me from home to the office. And the office is connected to the big huge display and at home it's just like open in clamshell mode. At home is just like open though this is actually my laptop camera here. And also like I have this thing every now and then when I'm switching contexts like for example from programming to podcasting. I just like I have this thing where press command tab and that will show me all my open apps and I will just like mash the Q key until all of them are closed, right? I will just like close everything and start from scratch. But also these apps that I'm talking about, they are not in the command switcher. They are not, like if I press command tab right now, I see like, I don't know, Ivory, the notes app, QuickTime and so on. So like these are quitable, right? But like that shouldn't affect the others either. Dave (55:02.86) Yeah, they shouldn't be there to be killed. Daniel (55:16.931) So if you have any idea, please reach out. Dave (55:22.624) Yeah, yeah, please do. I'm definitely stumped. This is gonna do, this is gonna be a thing, Daniel, where I will think about this now over the next couple of days and probably come back to you in a message because that's kind of how this works for me. But so I'm gonna background process your issue. Yeah. Daniel (55:44.111) Please, Part of me is tempted to just reinstall this machine and just be like, yeah, it might be just an issue with the installation. But yeah, I wish I had a second Mac that I'm actively using. So I could compare the two and be like, so for example, if I'm like, this app is disappearing on both of the Macs, then it's be like, okay, this is probably the app or Mac OS. But if the app is only disappearing on... Dave (56:12.044) You're trying to tell me that you, is this just a long way of you telling me you want to buy a new Mac mini? Daniel (56:18.479) I have one. I'm just not using it. I have a load bearing Mac mini that is kind of nausing in my cupboard and also like build servering a little bit. But yeah, like that is just a very different use case. And I don't want to like start using it as a desktop computer right now. I also don't want to buy a new computer. Dave (56:27.896) Fair. Yep. Dave (56:40.438) No, I was thinking of the M4 Mac minis. Daniel (56:46.543) I don't know. Like I'm I'm quite happy with this machine still. Like if, if all the customers that are in our pipeline right now, the bigger ones are all signing contracts tomorrow. Sure. I'll buy M4 MacBook Pro or something, but we're just going to continue saving up for that Porsche Taycan. But you know, this machine is, this machine is like awesome. Let's see, I'm not telling you this to hype myself up to buy a new computer. That's what I'm saying. I'm just, you know. Dave (57:20.974) No. Well, keep me posted. See if you find out what this is, I'd love to know. Obviously listeners of the show, if you've got any ideas as well, then do reach out, do drop us a line. But Daniel, I'm definitely going to have to go. So can you read us the outro? Let's wrap the show. Daniel (57:44.195) Right. Daniel (57:50.223) course, thanks for listening. This show is sponsored by Swift and Rust and Kotlin Multiplatform. Please rate us on iTunes and YouTube. Send us emails at contact at waitingforreview.com or just like in the comments down below and also join our Discord. The link is in the show notes and I have like four Discords that I really need to join. So I just, I'm going to have to have the Discord app open more often, which... Dave (58:07.01) Mm-hmm. Dave (58:17.644) You are. Yep. Daniel (58:18.143) sigh but we'll see each other we'll see each other on discord Dave where can people find you Dave (58:25.582) You can find me over on Mastodon and the Fediverse at dave at social.lightbeamapps.com and you can find out all about my apps just at lightbeamapps.com in your web browser, wherever good websites are served to you. How about yourself, Daniel? Daniel (58:45.625) Yeah, find me on the Fediverse at daniel at social.telemetrydeck.com. Also, Telemetry Deck has a BlueSky account now that is just telemetrydeck.com because of the magic of domain names. So that's also kind of cool. You probably won't find me on threads because they're blocking LGBTQ content. But in theory, I'm winsmith underscore, no, just winsmith there. Yeah. Dave (58:59.426) Awesome. Dave (59:07.63) Yes. Dave (59:14.477) Okay. Daniel (59:16.097) Anyway, thank you so much. I had a fantastic start of the year with you and I'll see you next week. Dave (59:23.436) Likewise, Daniel. Take care, mate. Daniel (59:27.801) Bye. Daniel (59:32.036) Hahaha Daniel (59:35.855) The wave has to be, of course.