David Gary Wood (00:09) I don't know. Hey! Daniel (00:10) Dave, Dave, it's been a while. just, like, we just like, it has been ages. Like if you're listening to the, to the feed, it might not be actual ages, but it's been weeks since we last talked to each other because, this life got in the way very much. before we tell you about like, what kind of life got in the way, I forgot to tell you this earlier. David Gary Wood (00:14) It has been too long dude, yeah. Daniel (00:33) And I really want to get it out before I forget, which is I want a new kind of merchandise for my company. I want playing cards because then I can play with my telemetry deck. David Gary Wood (00:47) Okay. Ooh, yes. Are you serious about that, Daniel? Cause that could rock. Maybe you should just make some, you should make some trading cards, right? And then rather than playing cards, then you could just have less, but you, yeah. Daniel (00:56) No, but I'm... Trading cards are cool. Like we do have, yeah, like our friend and contributor and not like employee, but like basically employee, Jihad. He made actual trading cards the other day for Telemetry Deck for like distributing at conferences. And because he went to a Japanese Swift conference, which I forgot the name of. David Gary Wood (01:19) Wilson. Daniel (01:24) and distributed them there. And apparently they were met with great enthusiasm. So I'm thinking, should we like actually make some of those? Because like they look kind of cool, they were like the artwork itself was kind of clearly AI generated, which I didn't mind for that purpose. But like if you really want to do this, like probably need to have like something that's made by an actual human. like still like this was pretty cool. And I think I have one somewhere. I think at some point, one of them actually reached me here in the cold, Hamburgian North, but I don't have it visibly in front of me right now. If I find it, I will post it in the show notes. Maybe there's an image somewhere on it. David Gary Wood (01:51) Yeah, that's awesome. Well, that sounds cool. And yeah, I like the idea of yes, you have your telemetry deck. Could be cool. Daniel (02:08) So yeah. Yeah. How have you been? David Gary Wood (02:14) I've been good, man. I've been good. Yeah. Just super busy with life outside of indie development and podcasting and everything that we do there. So day job has definitely been quite busy in the last month or so. But yeah, otherwise I'm good. Like I've been, we'll talk about it in a bit, but I've been heading down the vibe coding route, which I would not have predicted. maybe six months ago. So yeah. Daniel (02:43) Yeah, like you were you sounded very much anti everything. David Gary Wood (02:50) Not anti everything, but definitely anti the edges of tech that I see as being quite unethical and everything else. But yeah, something's clicked for me with AI dev tools at least, but I'm burying the lead. I'll kind of want to talk about that in depth after you've intro'd the show at least. Daniel (03:09) Yes. Before I enter the show, let's get this over with. I want to tell, especially our listeners, why we've been offline for a while. It's basically my fault. So you know my cats and they got sick a few weeks ago and they've both died now. And I basically had to take a few weeks just off the air, not performing. not being present on online spaces really. And it still hurts, but I'm kind of back. But I needed some time away. couldn't really be happy and whatever. I'm still a bit muted, I think. And that's very much okay. It took a while to really get all the crying out. Then I had a phase where I just worked a lot on code. David Gary Wood (03:48) understand. Yeah. Daniel (03:59) So could tell you about that. And now I'm kind of starting to find my balance again. Yeah. David Gary Wood (04:05) That's cool. I understand all of that, dude. you know, it's the show can ebb and flow. I'm sure listeners will understand. mean, I a similar thing with our cat, Monty, at the beginning of the year. Yeah. Daniel (04:05) And Yeah, you would. Right. Right. And with that out of the way, hopefully onto funner stuff. So hey, welcome to Waiting for a Review, a show about the majestic indie developer lifestyle. Join your scintillating host to hear about a tiny slice of their thrilling lives. I am Daniel, an agentic agent from Magentia, and I'm here with Dave, a cave dweller from the Global South. Join us while Waiting for a Review. David Gary Wood (04:47) Dang, dang, I'm not sure if you did me dirty there. Daniel (04:50) you just in there before we started recording you caught the room you're currently in your cave. in that moment you sealed your fate. David Gary Wood (04:57) It's a small room. Yeah. Yeah. I did indeed. did indeed. Filthy Danielsies. Sorry. There's a reference to the fact I'm not very tall and a bit of a hobbit and I've lived in a cave. Then of course I've got to be Gollum. Yes. But no. So here I am in the, well, I guess it's the Light Beam Apps cave whenever I'm doing the show. Daniel (05:14) Yeah. Does it have like one of those poles where you can slide down and when you reach the bottom you're in your Batman costume? David Gary Wood (05:28) No, no, unfortunately not. well, technically if you go far enough away from my house, maybe cause there's a few around the area. Yeah. But no, not hidden behind a waterfall. Unfortunately. Yeah. Yes. Absolutely. I'm Batman. Daniel (05:29) Is it like behind a waterfall? Nice. So you're just like Batman. David Gary Wood (05:44) No. Daniel (05:45) But like 60s Batman, the cool Batman. David Gary Wood (05:48) yeah, yeah, I mean, watch me dance. Daniel (05:50) Speaking of, I did attribute to 60s Batman. Like this is not like this is not a segue because I didn't plan this. This is just a random thought striking my neurons. But I can show you this. Hang on. This is actually I have this prepared. So I did a thing. did a thing like it turns out the telemetry error messages weren't very good. And so and I had like a lay off, not a lazy, but like I had like one of those afternoons where the brain doesn't really brain. So I spent two hours trying to figure out how to get Blender to export SVG lines like in a comic style. And so let me show you the new error message that shows up when your telemetry deck application crashes. David Gary Wood (06:26) Ooh. and it's actually exported it out as SVG. Daniel (06:37) Yeah, it's an SVG file. David Gary Wood (06:39) I love that. Yeah, that's wicked. Daniel (06:41) And it says, kapow, just like in the Batman movies or Batman TV show from the 16th century. David Gary Wood (06:48) Excellent. Yeah, no, that's cool. I didn't realize you could export SVG out of Blender, but I guess of course you can if you have the right plugins or the right settings. Daniel (07:01) It is. Yeah. So Blender does have a thing called Freestyle, which is a way of like tracing all the lines. it's used for like comic style renders. if you have a grease pencil is also a thing that Blender has and it does kind of the same thing, but it is a different subsystem. it's the newer one basically. But for Freestyle, which is the old style, David Gary Wood (07:10) Hmm. Grease pencil. Daniel (07:24) There's then an additional plugin on top of the plugin that will actually export those freestyle lines as SVGs, which works also because freestyle is very limited. It only does lines, basically. And so this also only does outlines. for a few icons and illustrations in the Telemetry Deck blog header style, I think it's kind cool. And for the error message, it was kind of nice. And maybe David Gary Wood (07:47) us. Daniel (07:49) Maybe want to have a few illustrations for registration, creating an app, that kind of stuff. They're of like screens where not a lot is on the screen, but you kind of want to have a little bit more personality. David Gary Wood (08:00) I like the style. I do like the style. ⁓ Daniel (08:03) and it's 65 kilobytes. David Gary Wood (08:05) Yes, because SVGs rock. Unless they've got embedded rasterized images and then you're doing it kind of wrong. Please let SVGs just be vectors. Yeah, but speaking of SVGs, you don't know any about what I'm about to tell you. don't think that I have a thing. made a thing. So, and this is all, this will be a bit of a segue into me talking about Daniel (08:12) You're kind of doing it wrong here. Tell me about your thing. David Gary Wood (08:33) some of the AI stuff, so bear with me. But let me share. I made a shader. And is it going to let me present? Come on. Daniel (08:44) I'm gonna, is the shader in the room with us right now? David Gary Wood (08:44) It's not like maybe I was going to say it's not like me presents. This is this is technical difficulties mode screen. Let's go. Daniel (08:50) Can you feel the shader? Like, can you feel the shader inside your heart? You gotta believe, you gotta believe in the shader. David Gary Wood (08:56) No, not at all. You can do it. Here we are. Thank you. Thank you for backing me on this. So. Daniel (09:01) now we're seeing something. Let me describe what I see. ⁓ Of course. So it's a website that's called shader toy.com, which ⁓ is a tool for developing shaders in a language that I don't understand. It looks kind of assembly-ish or C-ish. And yeah, ⁓ you have a shader code on the right side. On the left side, there's a... David Gary Wood (09:18) GLSL is sort of seed based. Yeah. Daniel (09:29) green TV and I don't know if the TV is part of the shader or if it's the offer or if it's just a or if it's just like David Gary Wood (09:31) Mm-hmm. This entire shader is drawing the TV and the scan line that's going past and doing the animation. Daniel (09:41) There's a scan line. also very ⁓ pleasant little pixels on the TV. That looks really cool. It's very nicely animated. David Gary Wood (09:50) Yeah. Thank you. Now, of course you can alter the parameters and then rerun the shader in ShaderToY in this interface we've got here. So you can change the color, change the speed of things or whatever. So, you know, I mean, obviously if I flick that one there, this will make it yellow. There we go. Anyway, that's not really the point. The point of this was that Daniel (10:06) Mm-hmm. David Gary Wood (10:22) I had an image that I was playing with for an icon for my new app and it's an SVG file. I was like, okay. So, the idea sort of took me that I could turn it into a ⁓ shader. And I mean, if you look at all of the code here, this is just generating it. There's no SVG code here now. Daniel (10:47) Yeah, but it's like basically, draw a rectangle here and draw a line there and stuff like David Gary Wood (10:51) Yeah. Yeah. ⁓ I didn't really make it. I put it through Claude code. I gave it the SVG file. I described to it much the same as you just gave a description a minute ago, actually, of what you're seeing on screen. I gave a description of the SVG file, broke it down into sort of what it was. And then obviously the SVG file is code and it will be able to kind of see. Daniel (11:08) Mm-hmm. David Gary Wood (11:20) well not see but map some of these bits. So I then said how I wanted it animated and what I wanted as parameters and it cranked away and spat me a pretty good first draft out in like a minute or so and I was like damn I've just animated an SVG with that process in a way that would have not occurred to me. a while ago. Yeah, so I mean it's not obviously it's not really necessarily earth shattering and LLM can read a SVG file quite easily because it's just code and but it was being able to then map it to this language and get this output. ⁓ A level of ⁓ yeah level stuff I wouldn't have done but if I show you different website now. I'm not going to try and search there actually. Daniel (12:31) The website he's entering is internet.com. David Gary Wood (12:35) No, it was interactive shader format. Let's go there. So. Daniel (12:42) you David Gary Wood (12:43) Yeah, interactive shader format is another one of these shader formatting things. Let's see if it'll sign me straight in. No, it won't. It doesn't matter. I put it on there. Daniel (12:54) create interactive shaders for the browser, your desktop or mobile. Also another shader maker. David Gary Wood (13:01) Yeah. and a different one. So give me one second. Let me see if I can actually find myself. Daniel (13:09) These are kind of pretty. Can I just like, like make those and like use them in actual like internet development? David Gary Wood (13:14) Yeah. And software and, and, and you could do probably embed them. Yeah. There's, ⁓ there's all sorts there. Daniel (13:24) Yeah, it's like very trippy, like lava lamp style. David Gary Wood (13:28) Mm-hmm. Yeah. ⁓ Daniel (13:32) And I think you wanna show me yours? David Gary Wood (13:34) I was trying to yeah. Will it find me? Maybe not. It doesn't really. Yeah, it doesn't really matter, but I really wanted to show the the interaction that it had. So. Daniel (13:41) It is not finding you. you can make them interactive too. That's kind of neat. David Gary Wood (13:53) Yeah, one moment caller. Daniel (13:57) Why you, why you search that up? can I tell you something? What can I tell you? I have, I have a new game that I started playing just yesterday or the day before yesterday and it's called golden lap. And it's a motor sport manager kind of game. So it's like you manage a formula one team, but you manage a formula one team in the seventies. David Gary Wood (14:00) Mm-hmm. Yeah. Yeah. Daniel (14:23) And it's incredibly simple. Like the graphics look exactly like mini motorways or that kind of game. So the only way you're actually looking at one of those races is from the top, have like just a graphical representation of the race track as it just like a squiggly line. And then there are dots and the dots represent the cars. And that's all you see. That's the entire game. And then you can do like strategic tire choices and like David Gary Wood (14:30) ⁓ OK. Yeah. Daniel (14:50) tell your drivers to push or let off a little bit of stuff like that. it's like, I am kind of embarrassed how hard this game is gripping me. David Gary Wood (14:51) Okay. Could you... Yeah, send me the link please because I need a new distraction at the moment in that sense. Daniel (15:08) Yeah, sure. It runs on Mac and Windows and Linux, and it is on Steam. I will actually post the link in our internal notes. And then if you feel like it, you can even post it in the show notes later. David Gary Wood (15:17) Mm-hmm. Yeah, that'd be cool. I have my shader, I have my thing, so shall I present it? I finally managed to find it on that site. Daniel (15:31) testing. David Gary Wood (15:31) ⁓ Yeah, the difference here being those parameters I mentioned are then able to be altered. So if I put down there, off it goes. It's now come into life just a little bit more. Daniel (15:44) I see. the TV is now rotating and or scaling interactively according to like some sliders that you are that you are doing sliding. That's kind of neat. David Gary Wood (15:49) Yeah. according to these parameters. Yeah, and you can see we've got, we can change the color. as it goes as well. So I guess I just wanted to share that with like, this is where, where something then comes to life a little bit more for me with like, that was, that was a process that I would not have done before. Like I've been, I can write fragment shaders and filters and things, but actually making shapes and interpreting it, ⁓ in a good way to make something really artistic. I kind of Daniel (16:18) Mm-hmm. David Gary Wood (16:32) socket. So just being able to get the SVG I had into a format that I could then manipulate, set parameters and do things. It's like, yeah, that kind of rocked. I had fun. And I know like Daniel (16:46) That's kinda cool. Where did you get the SVG from? David Gary Wood (16:48) SVG was based off of a... yeah, so that was actually generated from a chat GPT chat a month or two ago. Not the SVG, but like a bit of the image. And then I fed that into something to then chuck me out an SVG in the same style. So I'm down the rabbit hole Daniel. I've been doing a few of these things just to see what's what and then... Daniel (17:08) see. David Gary Wood (17:15) Yeah, actually finding different bits of workflow from it all, I guess really. Yeah. Daniel (17:24) And you say you've been using Cloud Code. How is that working for you? Because I haven't tried out Cloud Code. I tried Cloud 3.5, 3.6, 5, but I haven't tried out Cloud Code. So tell me all about it. David Gary Wood (17:28) Mm-hmm. Yeah. Mm-hmm. Okay. Well, yes. I guess just to back up a second, cause like on our, I think on our previous show, I talked about being a bit down the rabbit hole, right? And where some of this stuff seemed to be, be going for me. And that's a while ago now. And I was on a mission to sort of try every service out pretty much as best I could. Like I took out a chat GPT pro. subscription for June, I think it was. And then I deliberately canceled it as soon as I took it out so that I'd be forced to either renew it consciously or pick something else. I don't know what I was going to do. I think I was going to try Claude anyway next, but the Claude code has been sort of up on a long side. You know, it seems to be the thing that the company that's been making the Claude AI is now really going for, largely because it actually does a good job when you know what you're doing with it or when you're able to get it set up. So that's what I did. I let the chat GPT run out. I didn't subscribe to anything for a couple of weeks. I went reading on how Claude code worked. Good friend of mine. Daniel (18:43) Mm-hmm. David Gary Wood (18:57) I hope a friend of the show, ⁓ Constantine, Constantine Kostov, very kindly did a video call with me and showed me through a bit of how he uses it. And that set some light bulbs off for me. yeah, what you've got is you've got a command line interface. You've got access to the bot itself, to this coding setup itself that it's got. Daniel (18:59) Mm-hmm. David Gary Wood (19:22) And it manipulates your code for you in your directory, right? It is then able to edit everything that's in the repository or whatever that you are currently inside of. And, you know, obviously you can still edit it yourself outside of that. You can run an IDE alongside it as it goes, if you want. Yeah, all manners, manner of ways that you can work with it. But I decided I wanted to do a new project and see how far I could go with like it writing it for me. So Greenfield, I've got a concept in my head of the app. And yeah, that's exactly what I did, Daniel. Daniel (20:01) How far did it go? How deep into the concept are you actually? David Gary Wood (20:01) ⁓ Well, the big part about Claude is that it's sort of this, agentic AI approach. And I think the best way for me to explain that, sort of off the top of my head is that you make agents, you set them up, you configure them and they are like bespoke flavors of the L L L L to some degree, or it's the L L with bespoke rules. And so the way Claude works is you can define agents and define these agents as a set of rules as to what they're able to do or what you want them to do. And then it uses them to when it's actually trying to solve problems and edit your code for you or add features. So the first step for all of this really for me was like, I need to create agents that are going to look after specific bits of the app. Structuring this has been a bit of a bit of a thing. So. As I think most iOS developers know, like Xcode can be fragile in terms of its project structure. Right? One of the biggest ways to getting merge conflicts back in the interface builder and storyboard days was like, you know, it's XML format for that. The Xcode project format is much the same. So I kind of figured like, if something else is adding files into my project, is it going to make a good job of it because it's not actually opening Xcode, is it? It's just going to add the files in the directory and then try and manipulate that file like the Xcode project file. So I decided to split things up a bit. Yeah. So don't know how deep you want me to go on this really, because I sort of feel like I could go right into how I did it and what I did it. But yeah. Yeah, we're too deep. Daniel (21:54) You Maybe not that deep, but we could go into two directions. On the one hand, if your experience with code generation AIs is anything like mine, you kind of get surprisingly far, but kind of like bland UI, kind of like all the boilerplate, but then you kind of have to add your own spin and actually clean it up. So we can talk about that. Or... David Gary Wood (22:16) Mm-hmm. Yeah. Daniel (22:24) We can talk about like, you say like, you have these agents and they just do things for you. And like, you could describe like how that actually looks like. what, like, what is the actual thing you do? Like, you're not talking to someone on the phone. That would be barbaric and horrible. David Gary Wood (22:37) Yeah. No, not at all. No, it's just like, it's a chat interface inside of your command line. And I think there's not even a lot of point in me sort of bringing it up and showing you like you can link a screenshot of Claude or whatever, but it's literally just like being in a terminal except you're typing commands to one of these LLMs, right? And Daniel (22:42) Uh-huh. David Gary Wood (22:58) Hang on a second. No, I can show and tell. I can show and tell a little bit. Let's just look at what the latest thing was in there that I was working on and then I can talk a bit to how that's working. So. I'm incredibly unprepared, but that's fine. Okay, so I'm in the command line. I'm inside of Claude. And what you can see here is from top to bottom, I log in, I open Claude, I tell it I'm dangerously skipping permissions, which is kind of its YOLO mode. where it doesn't ask you every single time if it's allowed to use a tool or not, because it will use bash, will use Xcode build, will use Swift build, will use anything from the command line pretty much. And that's why it can be dangerous, right? That is going to skip a whole, potentially skip a whole bunch of stuff I may not want it to do. Yeah. Daniel (23:56) And so it's all in the terminal. That's kind of neat because I've been using cursor and that's in the sidebar, but this is very old school. And what I can also see is you have to-dos in that. This looks like a to-do app, are those the to-dos that you hand over to the thing? Or does it generate those automatically? David Gary Wood (24:04) Yeah. This is, yeah, it's a workflow I know it's a workflow I told it to do in terms of I've got a to do's .md file in the repository and then everything that I have that I want it to do, I get it to add to that. And then we, I say we like it's a real thing. We work from there. Right. In terms of we've now got a list of stuff. So it'll echo that as it's working through. Daniel (24:24) Hmm? David Gary Wood (24:40) ⁓ And I think, I'll give you an example of what was going on here. Daniel (24:44) And so what is the agentic part? Is the agentic part just that it kind of like does one thing after the other and also uses like the command tools and stuff? David Gary Wood (24:54) ⁓ the agentic part is that we've got these different definitions, of, ⁓ yeah, that we've got, as I understand it, you can actually invoke specific agents in Claw by name and you can interact with them, but I never needed to, ⁓ because if I show you the directory that this is all in, it will make more sense. So let me see if I can just bring that up. I'll show you the project structure and then try not to go too deep into the weeds but it'll show you a bit of how it started so Here's the folder, ⁓ bunch of stuff in there. Daniel (25:38) Alright, so it's a folder it has subfolders. It has a filter development MD and a setup MD. David Gary Wood (25:43) Yeah. Yeah, so field of developments work in progress at the moment, ⁓ but setup was really involved and you can't see inside that when I'm just sharing what it is, ⁓ setup was really involved. Let's see, let's see, this is a terrible way of sharing this, so give me a second because I have a much better way. Yeah. So if I share with you visual studio. then we can take a better look. Cool. If I'm in the same folder again, and now we can look inside stuff nicely and talk about what's there. Maybe I make this just slightly bigger for you. Daniel (26:19) Okay. So you have an MD file set up with an MD that kind of describes the file. Okay, it has like a table of concept project overview, architecture requirements, installation steps, clued code configurations with packages and so on. Did you write that yourself? Is that also generated? David Gary Wood (26:30) Is that working Daniel? This is a generated file, it's based off. It's generated, but I asked it to be in terms of, I had a big back and forth with the Claude Chat agent and said, okay, I'm making a new project. I want it to, you know, have all of these things inside of it. This is what it's doing. I want it to have a very clean architecture in terms of separation of concerns between. Daniel (26:51) because it looks kind of generated. Uh-huh. David Gary Wood (27:17) different aspects of the app. It's going to have a video filtering engine. I was very specific about some of this and then really vague about other bits I didn't sort of care so much about. You know, I specific about I wanted separate Swift packages locally in the app for the different parts of what it does. And then, yeah, it goes on. And this is a huge RAS file, right? probably about, yeah, it's just over a thousand lines. So it's big enough. If I go to the agent system. ⁓ These are agents and this is what it does. So you've got a UI agent, for example, Daniel. Daniel (28:05) It says agents slash UI agent dot MD. So apparently defined by a markdown. David Gary Wood (28:12) Yes. So in the setup file, made us to make an initial go for setting up one of these agents. And you can see the UI agents. Yeah. Daniel (28:20) And then it gets, it's kind of like a description, like specialized in creating Swift UI views, handling user interaction and so. David Gary Wood (28:25) Yeah. And then we laid out some focus areas. This one definitely gets invoked in the UI components package. Yep. And what this does is it primes it and it says, okay, it starts setting down the path in which the LLM is going to be guided. Right? So instead of me having to say, right, are a Swift UI specialist, you will give me good quality code for this. every time it's pulling that from this file and it's then directing. Daniel (28:58) So this is of David Gary Wood (29:02) Yeah. Daniel (29:03) like that L and M's context that it kind of gets. So is that what the agentic part is in that case? Like you just invoke the L and M several times, but it gets different contexts? David Gary Wood (29:08) That's right. Daniel (29:15) Because what I think agentic means, but I'm dumb, right? I'm really, really only partway furnished in the intelligence directory is I thought it could take different actions and access the internet and ⁓ interact with, don't know, MCP, whatever that means. So is that also the thing or is it just like, you have different shades of personality? David Gary Wood (29:21) you're not but You can, you can take it that far. Yeah. ⁓ it's both, I think, to be honest with you. Like the way I'm working with it here is I've defined, you know, separate agents for development duties within this project. ⁓ and they're only invoked when I'm interacting with Claude itself, right? Which is me giving it instruction. Sometimes that'll be, lay out one of these to do files with a lot of instructions. And then I say, go start to finish. Don't, don't ask me until you're done. and it just chunks through and will sit there for an hour, two hours, whatever, doing whatever I need it to do. That bits then when the agentic stuff kicks in, right? Because as it's going through each task, it will then be going, well, okay, I'm in this ⁓ context here. This is a UI task. So I am the UI agent and it will bring that forth. There are ways where you can kind of get them talking to each other and crossing context and separating out. I don't think I'm really that deep yet. And I can't speak to that very well. There's also ways of setting these things up so that, yeah, they are actually in control of different software on your computer through MCP. know, for example, at the moment it's only in control of the software it can access from the command line. So I'm using Xcode build and scripts and things to run testing there. could run an MCP server for Xcode and then it would start to remote control Xcode from that connection. ⁓ But yeah, for me, the agentic stuff has been much more about defining these separate sort of pieces of context. In fact, let's open it up. ⁓ That it will then use the different parts of the app. ⁓ And I found that to be very useful just in terms of then actually starting to get the type of code that I want out of it for these different areas of the app. ⁓ Yeah. Daniel (31:50) Cool. All right. So now I get a better idea of how that looks like. David Gary Wood (31:56) Yeah. I'd like to say some of these are short and no worries, no worries. And yeah, I think you asked me before, like, we can go this way, we can go that way. And you'd sort of asked me like how it had actually gone. Like I think it's probably important to talk to here is like, I gave it this file, this setup file with everything in to configure the project. Daniel (31:57) Thanks very much for the short tell. David Gary Wood (32:22) barring the fact I got one of the subdirectories wrong and then had to delete everything and rerun it. It did it first try. It did what I asked it to and laid out this structure. So that meant that all of these agent files were then created. All of the Swift packages were created, like the initial stubbed Swift packages. Daniel (32:28) Mm-hmm. David Gary Wood (32:45) I think I got prompted once to open Xcode and make a new project and add them in as local packages. And then after that, it was off and running. Within about 10 hours, I had a working prototype for this video filtering app. That was camera feed, some core image filters being applied, and yeah, some basic buttons and things to turn things on and off. Um, yeah. And it's been good. Like that's where it started. And I've kind of kept it to writing for the last couple of weeks from there. It's now a lot more fully formed. Um, yeah, but a lot of this I've, I've been driving through the command line and just letting it rip. You know, this is what I want. Go through this, add everything to the to-dos and then keep working. Daniel (33:33) How much have you paid? Thank you for me ask. David Gary Wood (33:37) too much. $173 a month NZ at the moment. Daniel (33:38) Because like this thing pays per token. Alright, so not thousands at least. David Gary Wood (33:46) So that's no, no, not at all. Yeah, that's but it's been a good experiment. I've got a lot further than I thought I would with it after using ChatGPT. Yeah. Daniel (34:04) ⁓ Interesting. I haven't tried out Cloud Code yet, ⁓ but I've tried out, I've been working with Cursor mostly for the autocomplete, but like it has some, it has a chat window as well. It doesn't have separate agents and I think it uses Cloud 3.5 under the hood. And what I found is kind of similar that, yeah, you can reach a, yeah, this works. David Gary Wood (34:09) Mm-hmm. Daniel (34:28) stayed super fast. I haven't shipped a lot of the generated code yet. And I don't think I will ship a ton of it because at least with that combination and stuff, for me, I run a lot into the problem that at the end, David Gary Wood (34:29) Yep. Yep. Mm-hmm. Daniel (34:49) It doesn't really work properly or it works, but it's kind of shitty in a weird edge case. And the reason is that I didn't have this like fully formed in my mind when I requested it. But what is kind of nice is like, like smoking up the user interfaces and then being able to think about them because you've already seen them and then kind of re-implementing them or even taking the user interfaces, but like building all the like. David Gary Wood (34:54) Mm-hmm. Daniel (35:14) I don't know, like a bit of infrastructure and then let it just do the user interfaces, that kind of stuff. It's nice. It's really nice. So yeah, I think it's the new art of like playing with the things, but David Gary Wood (35:22) Yeah. Yeah, it requires a bit of investment and a bit of a leap of light. Almost for me, it required a bit of a leap of faith of just sort of being like, yeah, let's see. Let's see what happens later. Not even faith. I had no trust that it was going to actually give me a semi reasonable prototype or whatever. then Daniel (35:41) Mm-hmm. but Dave, like until you ship this thing, like I won't have to, I'm not trusting. David Gary Wood (35:48) Yeah, I mean, it's not looking like a prototype anymore, Daniel, not in the same way as it did two weeks ago. It's sort of taken a lot of form now. But I found the same sort of edges I think you were kind of alluding to before, right? It's really good at boilerplate. It's really good at rewriting, you know, things into other things as well. So like, OK, no, no. No wonder I found it relatively easy to make an SVG into a shader to a shader, right? It's code, it's translating it. That sort of stuff it can be really good at. But then when you get into the more, I want to say creative end of it or the stuff that for your business, Daniel, or for the stuff I build sort of starts to become the secret source. if you like. ⁓ Yeah, like, you know, for me. Daniel (36:42) meat on the bones, the tofu on the bones actually. David Gary Wood (36:48) Yeah. for me, that ends up sort of being like, you know, the, the actual filters and the art of actually being able to make stuff run well in real time on mobile. Yeah. It falls over there a bit. There was a few things where I've been, have I've had to sort of go, right. This, this isn't going to work because it just doesn't know how to work with these APIs in the way I need it to. and that's where you step in, right? That's, that's where you sort of have to go. Yeah, I'll do it. here, I'm not going to one shot this thing with a prompt. Of course I'm not. yeah, learning when to sort of like, I guess, take it out of automatic and drive stick again. That's been a bit of a learning process for me. But that's what I'm doing. It's... My thoughts are all over the place because I really am learning something new every day. You know, and it's, sort of, I've not necessarily gone deep on all the fundamentals of this. It's been more a case of, right, I'm a user. Let's see what the hell I can do with this. by the time I've got the app to the app store, my plan is to kind of summarize everything and bring it together as a blog post. and actually sort of show like, yeah, this is. This is the steps I took. These are the things that have been good. These are the things that have been truly frustrating because there's been a few of those. Yeah. But, I don't know, man. It's just, it's been more fun than I would have expected. And six months ago I would have just been like, yeah, what's the point? It's, it's, you know, this stuff is, awful. Daniel (38:29) I mean, I can also see that you are are enthusiastic, which is kind of nice to nice to see. David Gary Wood (38:35) Yeah. I dunno, I think it's been a case of what I'm now reaching, I guess, is like I've been learning how stuff works and I always love learning. So that's cool. But like, I'm reaching a stage where what I can see for sort of indie app development is it's a tool that can let me start focusing on the stuff that I actually care the most about. Like you know, making filters work, for example, in an interesting way. Like, I don't mind writing that code. So I find it difficult to think in some of the. David Gary Wood (39:19) Yeah, yeah, I'm going on, man. But no, like, yeah, I guess just to say, this brought a bit of fun back into it all for me. Daniel (39:28) Fun is important. Well, that's kind of cool. I have one thing that I wanted to tell you about, which is kind of segue into the next topic, if that's okay with you, which is you said you're to write a blog post and that made me think about, do you know what my most successful blog post of the last five years is? It's the one about automating screenshots with XCTest, which is very like... David Gary Wood (39:35) Go for it. yes. Daniel (39:53) deprecated by now. But I've been reminded of that fact just the other day because I wrote a new feature. I wrote 20 new features for the telemetry deck. But I wrote one, which is... So we have these notebooks, right? So if I go to the analytics for my own private blog, which has, as you can see, up to eight visitors per day. So that's kind of... David Gary Wood (40:10) Yep. Mm-hmm. Daniel (40:22) If I go to the notebooks and then I can kind of like write a notebook, which I have done here, that just like lists, that just like lists like how the, you know, like can mix text and charts, right? Like that's what a notebook does. It's like kind of like a Jupyter notebook. So I can like just like write some texts that says like, ⁓ this is how many people have visited telemetry deck, not telemetry, blog.windsmith.de, which is my private blog that hasn't been updated in 25 years. David Gary Wood (40:32) that's nice. Daniel (40:51) And then I can have a query that just like displays the necessary chart, right? And so ⁓ I have done a thing now, these things are publishable. if I hit the thing, if I this thing, it opens a publicly shareable link. Like it is now published. So I could theoretically unpublish it. And this thing is now available on the public internet. David Gary Wood (41:02) What? Aw, that's so cool. Daniel (41:18) The data is a David Gary Wood (41:19) Yes. Daniel (41:19) snapshot. it doesn't update automatically because that would tax the servers. also, you don't want to just share all your future data just because you're sharing data once. ⁓ But yeah, I'm going to actually post this to you so you can have a look at it yourself. ⁓ Yeah, it needs, I think, analytics, which is kind of fun. ⁓ David Gary Wood (41:33) I like that. Yeah. I really like that, that's wonderful. Daniel (41:47) Yeah, this is one of them. David Gary Wood (41:47) Hold on a second. Right. So it's a blog post that's made from making a note on your analytics that you're then going to need analytics inside to know with people have looked at. Daniel (41:58) Exactly. I have another one that's also kind of a demo notebook, which is this one because our friend Paul Hudson asked me a question about dynamic type and I was uniquely placed to answer it. So I did. these are the most used sizes for like preferred content sizes for dynamic type, which large is the most preferred. David Gary Wood (42:11) Mm-hmm. well. Daniel (42:28) Most people have it set to large if they haven't set it to normal. the people who have set it to normal are kind of not in here, like, hang on, but it's in here, right here, right here we go. Around 1 % of people actually have an accessibility content size, but even more, like 33 % of people have a non-default content size. So those are the people like your dad. David Gary Wood (42:47) Mm-hmm. Yeah. Daniel (42:57) I don't know, I'm kind of imagining things, I'm hallucinating. Your dad who kind of set up his phone and then said, yeah, the large version kind of looks better. So a third of people are actually using a non-default content sites, which is way more than I thought it would be. And so yeah, I kind of built this notebook to research it. Then I was like, hey, I can actually share this directly. David Gary Wood (43:15) Yeah. ⁓ So just like this and that's filtered specifically for the large cause you can go the other way, right? And you can set it smaller as well. Daniel (43:29) Right, so the data that like this query just answers default versus non-default. So like most people like have it on default, but like and off the non-defaults, the top 10 are like large, extra large, extra small, medium, triple XL, double XL, small, and then accessibility accessibility L, and accessibility XL, which are like the accessibility sizes. David Gary Wood (43:58) Right, so when you've said, I actually need more than this, and because that's, yeah. Daniel (44:01) Right. So these are really hard to design for and you really should take them into account. But even if you're just topping off at, even if you want to reach more than two thirds of your customers, you should at least look at the large and maybe small sizes. David Gary Wood (44:07) Mm-hmm. Yeah, you should definitely do that. I mean, some of that has become a little easier these days just in terms of how SwiftUI lays things out. ⁓ You know, your inter-dynamic sizing by default instead of like how it was back when. ⁓ But yeah, I mean, I'm one of those people these days, right? Or I have been. Yeah, side note, I've got new glasses. Daniel (44:37) Mm-hmm. David Gary Wood (44:48) now. ⁓ that's good. ⁓ thank you. They're not these ones though, because they were reflecting my screen and making a mess of the podcast. So I'm back on my old glasses there. But no, I'm one of those people who's needed the text size up. And I can tell you when an app doesn't work or a website doesn't work on my phone, because I've got the text size up. Daniel (44:48) They look gorgeous on your face. Ahem. David Gary Wood (45:13) my reaction is to just go, stuff that app, then I'm going to do something else, right? Because you sort of feel like this is not my problem and I'm not going to turn my text size down just to make you work. Daniel (45:27) Right. David Gary Wood (45:28) Yeah, so I think from a development perspective, like, yeah, it is, it is important. I'm going to be looking at this with the new app and making sure that it's, it scales nicely across the ranges and all of that. Cause yeah, I don't want to alienate one in three people. Daniel (45:48) Yeah, that's pretty neat. My voice is also growing. Maybe we should reach the end of that episode, but I have two things that I need to talk about first. I submitted a talk. think I already told you about that, I wanted to say that even though we haven't spoken for four to six weeks, we don't have an update yet. David Gary Wood (45:52) Mm-hmm. Go for it. Yep Daniel (46:09) because the conference is still picking applicants, I think. I think I have reasonably good chances, but it's still up in the air. David Gary Wood (46:13) Okay, so So not going to name drop it and we're not going to link it until you've got some feedback. You've got it in. Yeah. Daniel (46:23) Oh, no, like I can totally like I said, I'm going to talk to server-side Swift in London on October 2nd. And it's about server-side Swift and I'm going to talk about server-side Swift. David Gary Wood (46:29) ⁓ yes, of course. Yes. That's brilliant. Daniel (46:37) I've kind of tricked myself into telling myself that if I can get a talk accepted, then I have an excuse to go to London, which is a nice city. London. London. And the other thing. David Gary Wood (46:49) Yeah, London, London, mate, innit? Yeah, you'd be back in my old manor. I'm not from London. Anyway. Daniel (46:59) Right. The other thing is chores, right? Chores. right. So, one person, I'm going to name names. So Arno today asked me like, when's the new episode coming out? And do you, will you, will you like give out chores because or tasks because you gave a task to Lisa and Lisa actually answered and I thought it was awesome. And he thought so too. however, David Gary Wood (47:21) Mm-hmm. Daniel (47:23) I know that he is very busy. the task for Arno today is do nothing. Lie on the couch or go outside, smell the nice air, maybe have a walk with your dog or something. Just enjoy and smell the fresh air. And then I also need to do... That's a task specifically for Arno, for the rest of you. Touch some grass. David Gary Wood (47:41) And that's a task specifically for Arno, is that right? Daniel (47:48) And consume art that is being made by a human. Read a nice book. I'm reading the Mistborn Chronicles right now. Do not spoil me. It's fantastic. Watch a fantastic movie or TV show or just like look at them. Sky. All right. That is it, I think. David Gary Wood (48:02) And yeah, with you on that vibe, like vibe coding too much, yeah, I've definitely needed the art and the human side to offset it. Yeah, foundation rocks, by the way, I've gotten well into that. Daniel (48:18) The foundation rocks. Alright, that's it. Thanks for listening. Please rate us on iTunes and YouTube. 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 (48:32) You can find me on Instagram at lightbeamapps. Daniel (48:36) Fantastic. And for me, go to telemetrydeck.com slash, I don't know, 404.html. Also go to social.telemetrydeck.com slash Daniel, because that's me. And also send me emails at, I don't know, Daniel at telemetrydeck.com. I will really like saying my email on a public podcast that gets transcripts. My email inbox is going to love this. Thank you so much. It's going to say. David Gary Wood (49:01) Ha ha ha ha ha. Daniel (49:06) All right. This was awesome. It's nice to be back. I miss you, Dave. David Gary Wood (49:11) missed you too man, it's been good to see you again mate. Daniel (49:15) And so have a great day and see you soon. David Gary Wood (49:17) Take care. Bye. Daniel (49:20) Bye!