Daniel (00:10) Welcome to the disarray of cables. Hey Dave, it is fantastic to see you. We've been talking for almost an hour and we kind of realized that, we should probably start the recording. David Gary Wood (00:14) Ha ha ha ha. We should, we really should. One of these days, I reckon we should do a live one and have people have the ability to listen to some of our small talk. Yeah, that's. Daniel (00:34) or we will say like bad words like fudge and sugar. David Gary Wood (00:38) We will, but honestly, I don't think we promise that this is not the No Swearing Show, so maybe if listeners are not too offended, we could. Daniel (00:49) Hey, welcome to the No Swearing Show, a show about the majestic indie developer lifestyle. Join your scintillating hosts to hear about a tiny slice of their thrilling lives. I'm Daniel, and I'm not just written by an AI, M-Dash, but also voiced by one. I'm here with Dave, who is a professional cat petter and purr enjoyer. Join us. David Gary Wood (01:07) Mm hmm. Daniel (01:14) while waiting for a review. David Gary Wood (01:15) You're not wrong, actually. thank you. I even have a cat petting brush behind me because my cat sits in here and she is shedding fur everywhere. So every now and again, I'll just idly mow the lawn. Yeah. Daniel (01:30) Yeah, mine as well. Where we just passed midsummer so that like not the pendulum swinging back to you for the warmth and the sun lights. David Gary Wood (01:37) Mm-mm. Yeah, just had Matariki, is the New Zealand New Year. It's the Maori New Year. And that's kind of cool because it marks when constellation, otherwise known as the Pleiades or the Seven Sisters, is first visible in the night sky after the winter. So it's sort of you know, symbolically, it's like, we can see these guys again, it's going to be warm again soon. Yeah, so we don't have too many traditions about it as a family, but what me and my wife did is we got up like before dawn and we just stood outside and looked at the horizon to see if we could see the stars. actually we kind of did. We could see these twinkles. Daniel (02:12) that's nice. That's neat. David Gary Wood (02:34) I checked on an AR-based night sky app and I'm like, I think those are those? Because it was not quite obvious. So yeah, I that was nice. Daniel (02:48) I love that app by the way, like night sky. That is just amazing. Like be sure to set it to the mode where it's like very dark red so that it doesn't blind you. David Gary Wood (02:50) Yeah. Yes. Yep. Yeah, did that. No, it's cool. you know this, Daniel, but certainly in the summer here, I get into stargazing because where we are, can actually see the stars quite well. So I can just sit outside. Yeah. One day I'll get a telescope. Daniel (03:12) That is really cool. I'm in the big city now. Sometimes I do see the moon and the sun. that's all. David Gary Wood (03:19) Yeah, but you have other things on your doorstep that are cool, there's all of that. Yeah, yeah, yeah, you get moving stars at night because the lights are on the planes. But no, yeah, now that I'm no longer at risk of dropping F-bombs as we speak, because we're into the proper show, although I can't promise anything, Daniel (03:24) Aircraft for example. which is pretty cool. Yeah. David Gary Wood (03:41) Yeah, how have you been? What are we talking about today, dude? Daniel (03:46) we could just like continue, continue the disk or I could like recap a little bit and then we just, we can just like continue, continue there. What I was just starting to tell you is that, I have been dealing with a like horrible server stuff, basically. Like everything kept working, but like my AWS build just like kept racking up in a horrible, horrible way. And they are horrible people. They're probably not horrible people. don't know, but like, David Gary Wood (03:51) Mm-hmm. Yeah. Mm-hmm. Yep. enough. Daniel (04:10) they really want to lock you in. so they find lots of ways where suddenly things start costing you when your credits run out. But because like, and I can tell you more about it later and I kind of want to, but I like basically I did lots of like, okay, I'm going to change this and then I need to wait an hour or two before I see if it takes effect. And so I actually like had the time, like even though I was like incredibly stressed, David Gary Wood (04:17) Yep. Mm-hmm. And. Daniel (04:39) to actually work on some code. And the code that I did is like, I'm kind of switching email providers, which is kind of, which is like a horribly like boring topic, but the fun stuff about it is that I did it the right way. So I wanted to switch away from my old email provider because it can just send transaction emails. So I have to do templating on my own. Like, so I wrote a little email templating thing, like that is horrible. And like, David Gary Wood (04:47) Yep. Mm-hmm. Daniel (05:08) clanky and like mostly works. And then it doesn't do scheduling. So I kind of wrote a little email scheduler and it doesn't do automation. I kind of like, I have like, I have thousands of lines of code where like, basically implement a, like a directed graph algorithm that just kind of kind of follows like a state machine. Like, yeah, the user is doing this. David Gary Wood (05:10) Yeah. Daniel (05:29) So the next email in two days should be this. And then also, David Gary Wood (05:32) Yep. Daniel (05:34) it's all these things, know, it also doesn't doesn't do David Gary Wood (05:36) Is this... since you would kind of... is the phrase bike shedding everything? Yeah. Daniel (05:41) Yeah, but this was like a slow process. And then I'm like, OK, this has gone on too much. But I was kind of using this because they are the only ones who have a vapor SDK, which is one of the downsides of the Swift on the server ecosystem that sometimes you just don't have SDKs. So I tried out a few, and I stumbled on one that's called Brevo, not a sponsor. David Gary Wood (05:53) Okay. Daniel (06:04) Um, Bravo is cool because they do publish an, a, an entire open API description of their API. Open API is a JSON or YAML based format that describes your entire API, like what to send to it, what, what answer to expect what pass and like some descriptions as well. And so that's really helpful because you can feed this into a tool and it will generate code for you and Apple. it themselves have created a tool that's called the Swift open API converter, where you give it an open API file and it will return 3000 lines of horrible Swift code that will exactly talk to that API. And so what I could then do is just add on top of it, add a few lines of code for authentication and then wrap the whole thing into a more sane API. David Gary Wood (06:34) Mm-hmm. right. Daniel (06:58) or a more sensible API so that it's actually like has normal names and like it actually has like parameters that work, stuff like that. And I had an API client for that thing. so I wrote that it's actually open source. doesn't have all the features that that Bravo has like only has the features that I need right now, which is like four features or so out of let's say 12. David Gary Wood (06:58) Mm-hmm. Yep. Nice. Daniel (07:21) The implementation of the rest is just basically like writing the wrappers. So actually I can link this. I'm going to put this in the show notes. It's called BravoKit because like Bravo is the service. Like I hope they don't ⁓ sue me, but I'm kind of hoping that they won't. David Gary Wood (07:27) Yeah. Yeah, so that's V-E-V-R, V-R-E-V-R. I don't think they sue you, right? That's a useful thing to have as SDK for that. Daniel (07:41) Right. It should work on Swift on the desktop and mobile. It definitely works in Swift Swift Vapor. So yeah. And that then allowed me to have a pull request that adds around 140 lines and then deletes around 1400 lines, which is kind of nice because I could delete all those half-baked solutions, David Gary Wood (07:51) Mm-hmm. Nice. That's awesome. It's always good to have a PR like that. Daniel (08:11) most work was like I had to recreate all my templates in their template editor. But then I can just say, okay, send this transaction email to that user. It already knows the user's first name, so it can personalize the email, but also I can add a variable that says, okay, and then also say, I don't know, the number of included signals in your plan is XYZ, and so it will just display that in the email. It also does automation, so I can throw away all my estate machines because it... David Gary Wood (08:16) So no. That's cool. Daniel (08:38) does have state machines where I just build them. And even better, I don't have to build them. I have very, very capable coworkers. That too, yeah, but I also have very capable coworkers who are way better in how to write email and deciding how long to wait or what decisions to take after sending that email. I don't have to do it. They can now take over, which is very good. And so, David Gary Wood (08:42) Yep. You don't have to maintain them. Yeah. Yep. That's awesome. Well. Daniel (09:07) That's what I've been doing while like stressing totally like stressing about, about my servers and, the company bank account, be honest. David Gary Wood (09:17) man. So for you there, and I hope this situation is resolved very quickly for you, obviously, because I know every day is costing too much. Yeah, it's not the first time I've heard of somebody getting caught in this sort of trap. And it does feel like a trap, right, when you're in it. Daniel (09:37) It, it, yeah, I don't know if that's the intention, but it definitely is the, is the, is the outcome. So what's, what's happening is. Right. So what's happening is that Amazon, Amazon AWS gave us, gave us like a lot of free credits for their service, which we, which I gladly accepted. And I always, from the beginning, like when we moved there, it like, okay, this needs to be like all the stuff that we. David Gary Wood (09:45) That's it. And you know, it feels that way. Legally, for legal reasons. Mm-hmm. Daniel (10:02) build needs to be cross-platform. Like we don't want to log in too much to AWS because I know that AWS when you pay it for yourself can be very expensive. so what I did was I like, like everything is Ansible, everything is VMs, not like just like Amazon only functions and stuff like that. And then the end of the credits periods was like looming large. And I was like, okay, I'm going to just going to move that. I'm going to set up. David Gary Wood (10:19) Mm-hmm. Daniel (10:27) Netbird, is one of those tail scale services and that the servers can use to talk to each other across clouds. And then I'm just going to move a few of the really big servers to Hetzner because those are way cheaper for the same power, but they are maybe like slightly less stable, like who cares? Like they can, like if I have like a bunch of them, they can just rebuild. So that's. David Gary Wood (10:45) Yep. Yeah. Daniel (10:51) And that worked beautifully. then the switch over happens and suddenly like new charges appear. Because it turns out that like, like even after the switch, like it turns out that if you're on credits, like AWS doesn't show you or like charge you for some things that they then charge you for, which is like mostly like traffic out. so traffic out was incredibly large because of course I was like, okay, we're sending to like. David Gary Wood (10:57) Hmm. Hmm. Hmm. Hmm. Hmm. Hmm. Right. Yep. Daniel (11:18) all the analytics data and stuff like, but like it's, it's being correlated and compressed first. then only, only the necessary data are sent over. So that shouldn't be as much. So after weeks, like literal weeks, every day of which cost me, I don't know, five to 800 bucks. I found out that it's not, it's not the analytics analytics data. It's like some, like some like actual like David Gary Wood (11:28) Mm-hmm. you All Daniel (11:43) Postgres database processes that were churning across the machines. David Gary Wood (11:43) right. Daniel (11:48) And they were like just like generating, I don't know, like 80 megabytes to a hundred megabytes a second. And that adds up to a few hundred terabytes a month. And that just like, so what I did was I I stopped that. I'm like basically what I did was like, I split up the Postgres databases into the one that needs to live on AWS and the one that needs to live on non-Hetsna because they have like different data sets and like they can just like different. David Gary Wood (11:55) Yeah. OK. Yeah, that does. Yeah. Mm-hmm. Daniel (12:16) areas and now everything is fine. The traffic has reduced a thousand fold. David Gary Wood (12:21) Right. Daniel (12:22) but it's not showing up, like the reduction is not showing up on the cost explorer yet. So every day at midnight, logging in there and like, it, please, So we have about an hour to midnight. So I'm gonna check that later. That's been, I've had a weird wild, David Gary Wood (12:24) Yeah. Okay. ⁓ man. Yeah, yeah. Well, that's rough. ⁓ Daniel (12:48) exhausting time anyway, because like, while everything like while I was like, taking a look at every single like, item in my pretty large server infrastructure and like moving stuff around, like trying not to break everything, which I think I mostly succeeded in. And also my cat was very sick. David Gary Wood (13:03) Yep. Daniel (13:05) ⁓ She's mostly recovered, but she spent a few days in a clinic getting electrolytes, saline infusions, and she's better. She's getting medicine now. I'm going to skip over the whole, I cleaned a lot because stuff kept escaping her on both ends and you don't want to listen to that. David Gary Wood (13:06) Yes, that's not been good at all. Yep. Daniel (13:24) One of them, like the medications that she's now getting is increasing her appetite. And she's getting another one that's like reducing nausea and she's getting a few more for digestion and stuff like that. We're kind of like reducing all of them and dropping off a few, but like for a long time, none of these medications really worked. And now suddenly they're all starting to work. the cat, the cat suddenly doesn't have diarrhea anymore, but instead like nothing is coming out. David Gary Wood (13:34) Yep. Daniel (13:51) Like, like it's not even funny. Like I have, I just like before we started recording, I have a tin can for the kibble, the dry food. David Gary Wood (13:52) Yep. Daniel (14:02) Just before the show I discovered that the lid, which thankfully held, was scratched and bitten into. So the cat is just incredibly hungry and I'm so, I feel so sorry for her because she's still getting a restricted diet, which at the one on the one hand means just like, want to say 160 grams of meat per day, no dry food, no kibble. On the other hand, she's only getting a specific type of cat food, which is incredibly expensive, but also. David Gary Wood (14:14) Mm. Okay. Yeah, yeah. Thanks. Daniel (14:33) Like she is on a diet of entirely horse meat. David Gary Wood (14:37) What? Daniel (14:37) because multiple vets have said that this might be the root issue of all her digestive causes. She has an incompatibility with some proteins and so the horse proteins. David Gary Wood (14:50) Yeah. no! Daniel (15:01) might reset her system. she's like every day or every night, actually, I'm going to do this after this. I'm going out. There's a horse racetrack a few kilometers from here. And I'm just like catching a horse, like leading it back. the cat will just like jump on the horse and just drag it, drag it down and like eat it. David Gary Wood (15:05) Yeah. I believe you. I totally believe you. So you go, you're taking the cat out hunting and that's what's working out. No. Daniel (15:21) rights. It works out really well because the mental image. Mimi is tiny. She's really, really tiny and adorable, of course. ⁓ David Gary Wood (15:32) Hahaha! ⁓ You know, you had me for a second. I was like, he goes out and goes to a specific shop that happens to be open at midnight and sells horse meat. And then you were like down to the racetrack. And I'm like, oh, this is getting dark. Thank you. No. Daniel (15:48) You Yeah. No, like this is, it's, being sold by a, by a specialist cat food brands and you need a note from a vet to actually be allowed to order it. Like you can't just buy it. David Gary Wood (15:58) Yep. wow. OK. Yeah. You can't just buy it in the shops. Yeah. man. I was straight back in the 90s watching those music compilation adverts that you used to get. No, dude, I'm sorry to hear about Mimi with all of this. Yeah, is Momo doing better, doing OK? You're the cat. Daniel (16:07) Can't just be in the show. Yeah, Momo is like, physically fine, but mentally she's scarred because her sister, was, how do I say this? Like her sister was very, very ill and then she kind of vanished for a few days. And now she has returned and she sounds different. She smells like a horse, like because she really does, like the whole apartment stinks like a stable. ⁓ David Gary Wood (16:36) Mm-hmm. Yeah. Oh no, I don't... Wait! Yeah. Daniel (16:53) And, and like, I've watched, this might be because I watched, BBC Dracula the other day. but like it, like, think Momo thinks her sister is a zombie now. David Gary Wood (17:04) Okay. Well. Daniel (17:05) because she really keeps her distance. They're slowly getting closer again. She's like, who are you? What have you done with my sister? David Gary Wood (17:13) imposter? No. mate, I mean, I've said already, but it's a lot and you've had this cat situation in the backdrop of high bills and service stress, so yeah. Daniel (17:24) Yeah, and the concentration also costs some high bill. David Gary Wood (17:27) Yes, yeah they do. I mean I really hope that the horse meat is the answer. It sounds like a smelly answer and we should probably move on from that for our listeners sake. no, if she suddenly starts... Daniel (17:41) Sorry. If you are on the verge of quitting your listen, send us a message. Let us know what you got. David Gary Wood (17:50) We'll get back to tech. We'll get back to tech, think, unless we're going to end up talking about a technical solution to the smell. No, let's move on. Yeah. Yeah. Daniel (17:57) No, we're moving on. I just had a stressful time. I canceled a few things because I was like, okay, this is too much. I am not feeling well. And I had a few travel plans. I wanted to go to the Nürburgring to ride a bike over it. And I canceled that. almost everything was refunded. And also I wanted to go to a concert next week and I canceled that as well because that's just like... David Gary Wood (18:18) Mm-hmm. Daniel (18:24) possible. I, yeah. But like they're one of my favorite bands. Like I've seen them tons of times and it was just too much. I, like, I feel, how do I say, I feel, I feel kind of bad about even like having planned this because what, like, this is just too much. Like, who can, who can like sustain that? But yeah, I have, David Gary Wood (18:24) Yeah, I've got it for you on that. That was nine inch nails, right? Yeah. ⁓ Hehe. Yeah. No. ⁓ Well, hopefully coming out of all of this now bit by bit. Yeah. Daniel (18:57) It's been a weird fever dream of a thing. like, I have like another open source project that I've released with BrevoKit, but not a sponsor of the show yet. Sure, Also, David Gary Wood (19:05) No! Okay, yep, yep, not the sponsor of the show. If you're listening, Brevo, reach out. Daniel (19:18) I kind of like reworked a few more parts of the backend service, which is like, ripped out another part that I wrote myself and replaced it with a like a finished, like pre-made solution, which is queues and queues and jobs and schedule jobs, which is like, I kind of wrote my own thing for Swift Vapor. And a while ago, Swift Vapor gained its own like David Gary Wood (19:31) Mm-hmm. Yeah, yeah, yeah. Daniel (19:46) queues and jobs implementation, which is not super awesome. David Gary Wood (19:50) Yep. Daniel (19:50) but it is better than what I wrote. And like it's also written by other people so that I like maintained by other people so that I don't have to write and maintain everything. And it is also now powering the report system and the email system and the organization janitor, which is like a background process that goes through telemetry customer organizations and like cleans up and like does various tasks. And David Gary Wood (20:01) Yeah. I remember you writing that at the time and it being quite involved. ⁓ Daniel (20:16) Yeah. Right. And it's like, I could reuse, like I could reuse most of the code that I wrote, but I could just like rip out the management code. I had like, I don't know, database fields that were just like, okay, when has the organization janitor last touched this? And now I can just replace it with, okay, the organization janitor should run, I don't know, every few hours. And it just like, should just queue one of itself for every individual organization that was active in the last month or whatever. And then it's just like, can just like work it off. Same with reports, the reports don't have to be sent at exactly midnight. They can just like be queued at exactly midnight with a payload that says, okay, like pretend it's midnight when you're actually working on this report. And so yeah, that has brought a bit of stability and has, I was kind of like everything was burning. So I felt like I want to increase, I want to reduce some technical debt so I can actually sleep at night. David Gary Wood (21:13) That's a good use of that time while you were waiting for stuff to refresh and show you the bill dropping down, right? So, yeah. Daniel (21:24) Like you have to imagine myself, you know, like I'm sitting in the waiting room at the vet. I've just like brought in my very sick cat. They've taken her away. And I'm like, okay, what do do to pass the time? David Gary Wood (21:34) Yeah, yeah, I think I would have been doomscrawling at that point, so you've probably been better than I in that moment. So good on you. Daniel (21:43) What I do in these situations though is like, kind of retreat back into myself. Like I, I can do coding, but like people write me messages and are like, Hey, how are you? And I'm like, just like not replying. David Gary Wood (21:48) Yeah. That's fine. mean, I think people get it. I know I do. Like, yeah, and we all have these moments and, you know, it does, it does pass. Things do, do move on. And you've been very proactive on moving stuff on within your power. like, you know, I think I'm hoping that this is You know, lighting at the end of the tunnel is now sort of starting to show itself. Yeah. Daniel (22:25) Yeah, let's hope so. Let us hope so. You wanted to earlier, just before we started, you asked me to on my big PR that is basically ready to be merged with all these changes, or all the changes, but the latest round of these changes, you asked me to run the GitHub Copilot PR ⁓ thing on it. So I did, and I'm a bit like... David Gary Wood (22:34) Hmm Just to see. Yeah. Daniel (22:50) I was expecting something very nitpicky because AI is very nitpicky usually. But the thing just said, I checked 36 of the 36 files and here's my one change request, which is here's some common outcodes that you already removed. And I was kind of surprised because I would have expected more nitpicks basically. The thing to be like, okay, I want to be useful. So I'm going to show this and this and this and this. David Gary Wood (23:11) Yeah. Daniel (23:16) like, I don't know, like, you know that, like, we all know that my code probably has, like, things to be nitpicky about. David Gary Wood (23:22) Well, I don't know, Daniel. Maybe take the win, right? Copilot looked at your code and didn't give you a lot of nasty feedback, right? I mean, if you want, you can add me and I'll take a look later and I'll nitpick it for you. I don't think so. I don't know. Daniel (23:32) I deleted all the bad code now. Do you have access to that repo? Hang on, Dave. You don't. That's a bummer. I would totally, I would invite you, but I don't have any GitHub paid seats anymore. David Gary Wood (23:45) I was kidding. Yeah, no, it's all good. It's all good. yeah, no, I can still, I can still nitpick a PR. I've not been in management so long that I don't have those skills. Daniel (24:04) Oh, you can pick the open source Brevo SDK. David Gary Wood (24:10) Yep. Yep. That is interesting to me, to be honest, because I'm looking at that and I'm going, okay, my existing mailing list setup is self-hosted ListMonk with a postmark for handling the sending of the emails. Postmark's charging me, 15, 20 bucks a month. And I'm like, I could just move to Brevo and then I don't have to run ListMonk and I can do all of that through, all of what I do through that. So this is not a paid sponsorship, but I'm definitely thinking about it. But yeah, it's on my mind. And this is a very, very rough segue, Daniel, into my world and what I've been doing lately, I guess. But I've been doing a lot without really making the progress that I really wanted to. And so, yeah, I've been... Daniel (24:51) Mm-hmm. David Gary Wood (25:01) And it's not been a bad thing, right? I've not wasted my time. I've learned a bunch of stuff. But I think when we spoke last, I was looking at this HDMI mixer that I'm trying to make with a Raspberry Pi. I made a bit of progress with that. I actually used a bit of vibe coding, you want a better phrase, with Chat GPT. Daniel (25:22) Mm-hmm. David Gary Wood (25:24) And the turnaround on it was, as you might expect, I'm prompting, I'm downloading code, I'm testing it. It's then not right. So I'm going back to the prompt. It's pretty slow, right? But it was also faster than me learning C++. you know, like, I know enough C++ to get by. Daniel (25:44) you're such a vibe coder now. David Gary Wood (25:47) Yeah, I'm getting there. so, no, it's good to get the mixer basically working. I've got it to a stage where it will take two video inputs on the Raspberry Pi. It will bring them through to, ultimately through to OpenGL. So it's doing a lot of stuff with FFmpeg to decode the stream to then do what it needs to do to upload it as textures to the GPU. and I did a bunch of optimizations as well to try and make sure that it actually looked good. Cause if you don't, it's like the FPS is just awful, like four frames a second. so I got through that. Bought a bunch of video dongles, got it to a stage where it was working and working was a shader that blends from one video to the other, depending on how you press the arrow keys on a keyboard. ultimately. The idea is to have it so that you can control it from like a MIDI controller or build switches and sliders and things into something that's then talking to the pie. And I will do it. However, it's a huge ass time sync. my mindset has shifted in the last couple of weeks on what I'm doing. So we've spoken probably for the last three or four months about my rabbit hole into trying QT. I'm looking at Kotlin. Daniel (26:58) Yeah. David Gary Wood (27:03) Multiplatform. Dave is just looking at all of the multiplatform tools and seeing if something fits so he can bring his apps to Android. And I've come full circle. I'm kind of coming back to native iOS development right now. So I don't want to do anything too deep that breaks the existing app. And I have new plans, which are sort of upending everything. So let me tell you what I can tell you without kind of set myself up for a bit of a fail or giving away too much of my master plan, I guess. Yeah, so look, I've got the app in the store. It's doing relatively well. I've got a couple of other apps around it that are also contributing a level of income there. I mean, the goal has always been Daniel (27:36) Dream big, my friends. David Gary Wood (27:52) I want to work on this stuff independently and be employed doing that. Right. If you can trace back the entirety of this show for the last seven years, and that's been sort of the pipe dream powering what I do with this stuff. However, what really happens, and I think this is typical of a lot of, you know, wannabe indie devs as it were, is that you're making stuff that is fun for you. and then trying to sell it. Yeah. And it's not a bad place to start, right? Because you get the intrinsic interest. If you make something that other people enjoy, then great. You've probably got something to sell. That's cool. And it's definitely kept me in it. I'll always go back to these projects. Even if I put stuff on hiatus for a while, eventually it pulls me back in because it's part of me. It's what I love. Yeah. Govj makes some money. I'm making between all the apps probably about 500 US a month at the moment, which is not bad for something that I'm hacking on in bits of spare time. part of that is because I've been doing it for so long. I've built the app up over the last 10 years. So that's good. That's a good starting point. But if I'm honest with myself, I am not sure whether there's really a bigger market that leads me to replacing my full income. Yeah, because that doesn't work. It's a part-time thing. Yeah. Daniel (29:19) Yeah, yeah. Like this is the whole indie thing. Like many, people who are full-time indies, they have like multiple apps. They have like a handful of apps. David Gary Wood (29:22) Yeah. Mm hmm. Yeah. Yeah. And I like I say, I feel like I flip stuff on its head and I'm kind of pivoting my business at the moment. So I want to make more money with what it's Right. It's like it's a huge part of my spare time. And, you know, if I'm really, really want to ever do this full time, then, you know, I need to do things to actually make it work. With the best will in the world, I don't think the market for people as VJs on iPhone and iPad is currently big enough to support me much more beyond what it earns. Right. I think I probably maxed it out. And I want to keep supporting it. That's cool. You know, I'm not going to kill the app for something else. It's something that I always want to have around right now. So the plan right now is to clear my plate. of my bug backlog and get this nice new build out the door and then kind of mothball it for a few months. what I will do is I'm going to start looking at seeing if I can use search ads and things like that to maybe see if I can actually do anything there to sort of improve what it makes. Cool. Doesn't involve more code. It just involves sitting down with Apple's tools and figuring stuff out. But I can do that in an afternoon. in the browser. So and I've got the money coming in from the app to sort of reinvest to doing that. So maybe now's a good time to sort of see what I can make work there. That's good. That will teach me about campaigns and optimizing my keywords and all of that jazz. That's not a bad skill to learn. And beyond that, where does the dev go? Well, I've decided it doesn't go into cross-platform right now. It goes all the way back to what I love, which is Swift and SwiftUI. But it's not the VJ app. So then the question goes, OK, what do I want to make? What I want to do that I think is actually going to have a bigger market that is useful for other people. And I've landed on some ideas. Daniel (31:19) Mm-hmm. David Gary Wood (31:33) All right, and this is where I don't want to set myself up to say I'm doing this specifically and it's going to then be something else. But what I will say is that I. I want to do something that's adjacent to the VJ app. Something that uses some of what I love, but is potentially appealing to more people. And I think it's something within video filtering. Okay. In terms of the stack I've built, the effects that I can make, et cetera. They're not just useful for live video. They're useful for doing stuff to regular videos and then exporting different effects and stuff. The market for that is incredibly saturated. Right? Yeah, incredibly so. So what I've done is I've kind of mapped out some ideas of niches of things where there's specific scenes around specific types of effects and this, that, and the other that I've become aware of anyway because of what I do with the other app. So what am I doing? Daniel (32:15) Right. Yeah. David Gary Wood (32:35) I am not writing code, Daniel, right now. I'm upending my process instead of going, Eureka, that's the idea. I'm going to build this app and then sell it. I've actually sat down with a spreadsheet. Well, first off, I got on my whiteboard and I mapped out all these ideas. And then I've got ChatGPT to consolidate it into a list and then stuck that in the spreadsheet because that was quicker than writing up my notes. Um, and then I had listed out what I thought some hashtags for certain things were going to be. Um, cause I've seen them and I fishing. I opened up, um, Instagram and tech talk in my, um, on my Mac through screen mirroring, um, using my phone and I search. Daniel (33:25) I've never heard of that app. David Gary Wood (33:27) And yeah, no, I started searching these hashtags and logging how many are in each of the different platforms. I then combined that with searching for some similar terms in Google Trends to sort of see what looks like it's either stable and high or has been recently going up in the last year to see if there's any trending types of these things. And that helped me zero in on a bit of a niche. So plan is to go after it to make something that does video effects, to make an app that is specifically for a particular genre of that, and to try and turn it around as quickly as I can. And then as I do so, I'm going to test it on social media and see if people like the stuff it does as I'm building it and try and build an audience for it. So, link in bio, sign up to my mailing list for early access, that sort of stuff, right? If it has any traction there, then it's worth me carrying on to put it in the store. If it doesn't, then I take the feedback, I iterate out or I kill the idea and I'll do something else. this make any sense? Does this seem like a thing? Daniel (34:43) It does make a lot of sense on the one hand. huh, okay. So I have multiple thoughts and they're all different. First thought is this sounds like a successful idea or like it sounds like a proper way of doing this. It sounds like something that could like lead you towards a quote unquote successful app. David Gary Wood (34:48) Mm-hmm. Mm-hmm. Mm-hmm. Daniel (35:10) quicker than just doing what you love, just like noodling around, especially in today's world. Second thought is, I am in various subreddits, like r slash saas, for example, where everyone is doing that, but for software as a service type of things. And most of them are not successful. So even though this is David Gary Wood (35:15) Yep. Yep. Mm-hmm. Yep. Mm-hmm. So even trying the approach, yeah. Daniel (35:37) Like even though this is like a promising approach, like it might still be a grind that leaves you nowhere. If you don't have like the correct, I don't know if the algorithm doesn't like you. Third thought is this sounds like work. Like this sounds like actual work, like not fun hobby work, like work work. ⁓ Are you like... David Gary Wood (35:51) Yep. Yep. is. It is. Yeah. Yeah, yeah. No. no. no. Daniel (36:05) Like, I don't know, like if you're doing it this way, like you should probably think about it this way. Don't ask like, this is my hobby that I do to decompress, but like, yeah, this is what I do for a living. Yeah, I think those are the main thoughts that I have. no, I had a fourth one. You sent me earlier an article about, I haven't read it yet, but like skimming it, seemed like the author was arguing for like, in the future, developers will just like... David Gary Wood (36:12) Yep. Yeah. Go on. Daniel (36:27) like heard a fleet of AI agents, which I'm unsure about this is the case. like, like, if we, if we take that premise, I don't know, where's the AI that takes, takes off this boring busy work from me. Like, that's what I want to know. David Gary Wood (36:31) Mm-hmm. Yeah, I looked for that as I was doing it. I asked, I, you know, I was working with ChetGPT to organize my notes and before going to spreadsheeting and chipping stuff through from, you know, searching Instagram, I said, and you do this, you know, can you, can you search hashtags and find the hits and bring it together for me? And it can't because the API is locked and it won't allow you to use a Scraper tool. Right. They're being very canny about that legally. And it gave me a bunch of options. You know, it could help me write a script to use a scraping tool, for example. Um, but then there's a risk that the account you use, gets logged at locked out. Um, and there's rate limiting and other bits and bolts that kick kick in. it, and it was steering me towards the best route for you to get the right information is to do this manually. And do you know what? I thought about using the scraper for a hot second and then when No, let's try it manually and just see what happens, right? Because I'm learning, right? This is the other thing is like, I'm strong believer in trying to drive by stick before you go to an automatic, right? So let's do this first. And what I learned while I was doing it was I was then also aware of not only the related hashtags and things, right? Which was actually really helpful because where I started is not where I ended up. Um, I had a gut instinct of some and a couple were correct, but you know, maybe 50 % were not. And I found related things that were deeper and gave me a better understanding of sort of like the community around some of these effects and things like that. And then looking at it in the app itself, I was unable to see how people are doing some of these things. And it gave me a bunch of other ideas for how I'm going to market it as well. So if I've gone the automatic route. I would have had only a sort of third-hand understanding of all of that. So there was value in just kind of going the long route. But the other thing, Daniel, is that I've been doing this for a long time as a sort of hobbyist indie. And this is one way of doing things with what I build that I've not really tried. I've always resisted it. even as much as when I've got the app, I don't know how to market it. Right. I'm like, ah, I've made a thing. I hope people like it. And then every now and again, I'll do something, you know, I'll do like start posting videos and things to social media about what Govj does. I have got a mailing list and you know, I've not used it for probably 10 months now, which is silly. So, you know, I do little spots of effort and then take my foot off the gas and I guess I've kind of figured that if I just flip the process, I'm going to learn something more than anything else, right? I'll either learn that I f-ing hate it, or I might learn that this actually leads me to, you know, a better outcome with what I'm doing. Yeah. But yeah, that's why I guess I want to see what's there. I want to see what's possible. And it might be a dead end, but it's a process and a thing I've not tried before. So, yeah. Daniel (39:54) All right. Yeah. Just don't let chat GPT write your blog posts and your emails. Like, ⁓ God. David Gary Wood (40:02) No, that's not the plan. the plan. And speaking of AI, because I did want to touch on it quickly before we wrap the show, but I'll link this post in the show notes. And it makes a pretty strong, compelling argument as a lot of these posts do. But the thing that I was noticing with it is that it lays out the different waves of how developers are adopting AI. And there's a graph halfway down, and it's got these curves going up with like you know, the initial development of these tools and then vibe coding sort of kicks in, in the last year as sort of being a trend, right? And then the arguments it makes is that what we think of as vibe coding is not really even accurate now. Like I have been, I've been doing the, the stereotypical with the Raspberry Pi projects, the prompting until it shoves me out a something that worked, that was kind of part of the route I was going to make that thing work. And I was doing the lengthy process of copying code back and forth and stuff. The tooling that is coming on is handling a lot of that interaction for you. So you're then at a higher level and going, this is the thing I really want. And it's kind of button bashing and managing the other services. So do a lot of that back and forth. Um, and so it becomes a case of checking back in periodically and, and, and keeping on it and seeing whether it's actually giving you what it wants. Eventually. Um, I need to use the tools, right? Cause I think that's where I'll get the knowledge as to how they work. And, um, if there's any value to it, then yes, I want to use them, but in a very specific way. Okay. So to run this as a sort of. worked example, say in the next two or three months, I actually have this app that I'm pulling together in a very strategic way. It will be Swift and Swift UI. Yeah. So the initial reaction from people is that's lovely, but half of us are using Android devices. Where's the Android version, dude? Yeah. I'm hoping that's when I can then use some tooling to start laying that out quicker than it's going to take me to learn all of Android stack and be able to do it. Yeah. And that's the point in which I'll then try and use and employ some of these tools, because actually what I found as I was going through a lot of cross-platform stuff in the last few months is I just wanted to get back in Swift. So if I can kind of start there and do the bear. Daniel (42:38) You David Gary Wood (42:43) minimum of making something else come together through those tools with my edits, obviously, and then eventually I'll learn a little bit more about what that development is and I'll be able to sort of do my own thing there. Maybe that's a wrap. Maybe it's a dead end, right? Daniel (43:00) Maybe, I don't know. I'll be interesting to learn, to hear what you've learned. Like ⁓ our buddy Peter Steinberg recently kind of resurfaced on the internet after being gone for a year and was like, hey, I'm now all super into vibe coding and I spent like thousands of bucks on cursor based tokens basically. And here's what I learned. And I'm not... David Gary Wood (43:07) Yeah. Mm-hmm. Yeah. Yeah. Daniel (43:27) 100 % convinced, but what I do know is that it might be worthwhile to use the AI tools on the software stack that you really know well. Because if you're already an expert, then you can really spot the mistakes, but also can see it better because you know how the patterns are working, like the software patterns, but also the big picture architectural patterns. Whereas if you don't know, you might just David Gary Wood (43:38) Mm-hmm. Yeah. Daniel (43:55) be following along a solution ripped off from Stack Overflow without knowing what it says, which might also be a learning experience, but might also lead you to frustration. who knows? Maybe this is where it's going. David Gary Wood (44:08) Maybe. Yeah, I think I guess what I've decided is that it's all very well for me to look at these tools and kind of go, oh, you know, AI, I hate it. But that is not an informed view, right? And so I'm trying stuff out and that is informing my view. And I think, you know, certainly ethically, I've got a lot of issues with it, right, in terms of how data has originally been sourced, the environmental impact of a lot of these LLM tools, all of that. The industry is kind of doing it anyway. Right. And so then there's also an element of, even if I think about my quote unquote day job, right, if I'm not keeping up on what the tooling being provided is, eventually I'm going to be quite out of touch with how some of these things are done. So I want that knowledge at least as well. But also I'm looking and I'm going, well, if I find things here that I think are useful and I know what is how it works and what is not useful and what is good for me, then that's a really good point to that point to then take that and start looking for more ethical versions of these things, right? I figure if I start the other way around, it's a little bit like. You know, using Linux before you've used Windows and Mac. Yeah, sure you can, but, um, you know, so that's, that's my approach anyway. That's kind of what I'm thinking is to sort of put all of my misgivings to one side, just see what it actually does and then review and start making informed decisions a bit later on. Um, and I'm having a bit of fun with it. If I'm honest, it's not completely devoid of, uh, of vibes as it were. Daniel (46:02) You Gimmity day. David Gary Wood (46:08) I've got that Riz. I've got my mustache Riz if you're watching on the YouTubes. And I sound like such a millennial dad trying to use language there, so I just won't. But yeah, so I think we'll check back in and see how I go. But I needed to pull out of sort of decision paralysis with multi-platform stuff as well and just start doing stuff again. So I feel good about it. I've got some ideas and it feels quite fun right now. So yeah, that's me. Daniel (46:42) Cool. Yeah. mean, let's also just like, I don't know, like on a high level, like just you wanted to play out with a multi-platform and you wanted to play around with that. Also, because like you kind of fatigue with Apple stuff and you're, you kind of want to see what's out there. And now maybe when you say like, okay, this is less of here, this is how I'm spending my free and hobby time and more of a like, okay, this is what I'm doing to make money. Then it's like also. David Gary Wood (46:51) Mm-hmm. Yeah. Daniel (47:10) maybe a good idea to say, okay, then concentrate on the Apple stuff because that's where the customers are mostly. that's where the money is to put a note to a find out point on it. David Gary Wood (47:20) Well. It's also where the last 12, 13 years of my developer experience has been. So if I want to go fast, which I do because I want to test stuff and see what works and everything, yeah, then that's the right place to start. So yeah, anyway, we should wrap the show and I'll go on. Daniel (47:32) Get out with fast, pheew! wait, have one last question. What AI coding tools do you actually use? Do you just have the agentic models in the new Xcode? Or do you have a cursor kind of thing or a cloth kind of thing? Or what do you actually use? David Gary Wood (47:56) I haven't played with the new Xcode yet. It's on my list to check it out, because I should. And then I can link it to my ChatGPT account and see how that works as well, I think. I haven't played with Claude yet. I've definitely been using ChatGPT a lot for the last month. That's kind of coming to a close, because I said I'd do a month on the pro plan and then try Claude. So that will be next. I have also last night installed cursor, but I've not used it yet. So I'll be looking at what that is. I'm not sure if I'm going to find the workflow a little janky because you use it and then you go back to Xcode to run a build, but figure it out. So I've used those. I've also used Android Studio with Copilot turned on and some plugins that link it through to, I can't remember the service now. Doesn't really matter. Copilot was kind of the best situation in that environment. But having suggestions and being able to prompt. So yeah, I've used a bit of everything, really. Yeah. But anyway, I will link that post in our show notes. yeah. Daniel (49:04) Pro tip, can try cursor and Claude at the same time, because if you buy a cursor subscription, you basically have a Claude sidebar, which is kind of helpful because you can just drag three files in and say, okay, on these three files, do this, and then kind of look at the whole open project. So if you're going to do it, that's probably a good idea to do it this way. But yeah, especially with iOS apps or mobile apps, it's a hassle. David Gary Wood (49:09) Mm-hmm. Daniel (49:31) because you'd be living in cursor, which is basically VS code with a different label slapped on the top. That's not fun. David Gary Wood (49:32) Yeah. No. But yeah, we'll see how it all goes. And it'll take me some time to build the app I've got in mind. This stuff is moving at pace anyway in the industry. So who knows? Maybe by the end of the year, I can point something at it and go spit me out a version of Android that probably won't work that well. But then maybe I can edit it back to something that does. Daniel (49:40) Yeah. David Gary Wood (50:03) Who knows, I'm just feeling like right now investing a lot of time in learning a whole new stack and a whole new approach might not be the most valuable use of my time. So I've stopped and that's okay. I can always come back to it later on. And I can always start at the beginning and drive stick with it all as well if that's really going to be the most valuable thing. But I kind of miss Swift. Daniel (50:26) That's good. David Gary Wood (50:28) it's kind of nice to think about coming back. I realized I was feeling excited about it. Yes. Yeah, so I've traveled and I'm coming home. Daniel (50:30) Swift is nice! Swift is nice. So in fact... All right. What else? I have actually in the background send you an invitation to the project and you can have a look at my PR and see if you can find different nitpicks than Copilot. I'm also interested in to see like where your jaunt into Vibe coding is going. David Gary Wood (50:50) Hello. Yeah. Yeah. Daniel (51:06) I totally need to introduce you as a VibeCoder next time. I did actually already introduce you as a VibeCoder. So in fact, I have prophetic qualities. David Gary Wood (51:13) You did. You did. You do indeed. But yeah, Daniel? Daniel (51:19) So I should, next time I should introduce you as, I don't know, a very healthy, long-lift man. David Gary Wood (51:27) That would be lovely or, you know, future New Zealand lottery winner, maybe. Daniel (51:33) You David Gary Wood (51:34) with the 30... you know I'm not picky 30 million jackpot would do. Daniel (51:39) All right, all right, all right. David Gary Wood (51:41) Yeah. Daniel (51:43) Cool. All right. In that case, wish me luck. I'm gonna in a few minutes, I'm gonna check AWS Cost Explorer and probably Weep. But until then, I'm gonna read us out. So hang on, give me a tiny bit of time. Here we go. David Gary Wood (51:51) Mm-hmm. Look, no time, gotta be now. Daniel (52:02) Thanks for listening. Please rate us on iTunes and YouTube and send us emails at contact at waitingforreview.com and join our Discord. The link is in the show notes. Dave, where can people find you? David Gary Wood (52:13) The best place to find me right now is Instagram still. have a look for me on Instagram. My account is lightbeamapps.com. That's lightbeamapps with D-O-T com, because obviously I couldn't put the dot literally in there. Daniel, how about you? Daniel (52:31) Cool. Find me on Mastodon mostly at daniel at social.telemetrytech.com. Other than that, find me in front of this computer at home or on the balcony or in the go working space. The chore, your chore for today, not yours, Dave, but like you listener, your chore for today is mop and or vacuum the floors. They're getting a bit dusty. Come on. David Gary Wood (52:52) Yeah, that might be much more for today as well, looking at it. So on that note, thank you for that, Daniel. But also, if you do do your chores as a result of Daniel's prompting, click Daniel, a photograph, selfie or something, of your mop, maybe you with your mop. And yeah, maybe we'll look at in the next show notes. So. Daniel (53:00) Blast. Please do. Right. Off we go. Pinup poses not required, but encouraged. Also, yeah, next time, next time, next episode, I'm finally gonna tell you what, like show you a photo of my new rack. David Gary Wood (53:16) Off we go. Mm-hmm. yeah, you've got a lovely rack Daniel. Absolutely. Yes. Daniel (53:31) Yes, everyone should see my rack. All right, have a great day. a fantastic time. you in two weeks. yeah, bye. David Gary Wood (53:40) Yep. Yep, see you in a couple weeks, Daniel. Bye bye.