Daniel (00:02.67) Hey Dave, nice to meet you. What is that? What is that? Why are we on screen? We are on screen. This is new. dave (00:09.06) We are on screen. This is very new and this will be hopefully, assuming everything's gone okay with the recording and everything else, because we're still just trying this out, but hopefully this show marks the beginning of us posting video to YouTube as well as posting the podcast through normal means. So. Daniel (00:31.624) Yeah, like this is something we're trying out. So if you listen to this on audio, that's not going away or anything. It's just like, maybe we can also put this stuff on YouTube. It's content now. It's content. Everything is content. dave (00:35.074) Yeah. Yep. dave (00:44.196) Oh no, content generation, yeah. But we're using a service that allows for recording video as well as audio to handle our calls every time we do the show. And we've never tried the video before, so it seemed like, yeah, maybe today's a good chance. It's a new year where this isn't actually the first recording we've done this year. We've... the one before this episode was the first in 2024. Go for it. Daniel (01:14.76) Yeah. Dave, let me interrupt you. Double check you have the right microphone because something doesn't sound right. dave (01:22.308) Oh no. No it is, it is, it's definitely this one. Cool. Yeah, once bitten twice shy in that sense. The air pod fallback was not a good episode and I'm very sorry still about that. Daniel (01:25.736) Okay, cool. Daniel (01:31.24) Yeah. Daniel (01:39.144) Okay, we all forgive you, your loving fans. Hey, welcome to Waiting for Review, a show about the majestic indie developer lifestyle. Join our scintillating hosts, Dave and Daniel, and let's hear about a tiny slice of their thrilling lives. Join us while waiting for review. Now we're in the show proper. dave (01:43.236) I hope so. Over. dave (02:08.9) Yeah, yeah, it doesn't feel like the show started until you've given the intro, the scintillating intro. Daniel (02:14.132) Synthesizing. I just love saying that word. It's just like fun. Yeah, Dave, someone wrote to us. dave (02:19.684) It is a fun word. Ah again this keeps happening! Daniel (02:25.384) Someone wrote to us. Queen Olivia writes on Macedon. At Waiting for Review, I have a question for the podcast. I've worked in enterprise for the last decade, and when I'm working on my projects, I'm never sure where the line is. TDD, pipelines, internationalization, I assume that means, design systems, fast lane automation, to name a few, are part and parcel of an enterprise app. dave (02:29.42) Ah. dave (02:48.004) Mm -hmm. Daniel (02:54.216) But is it overkill for an indie dev? Where do I draw the line? dave (02:59.172) Ooh, there's a lot. It's a great question. There's a lot in there though. Any one of those things, any one of lines could be drawn as well. So if we're just taking a look at that, the very last bit of the question is, is it overkill for an indie dev? Yep. And I think... Daniel (03:00.232) I love that question actually. Daniel (03:10.438) Mm -hmm. dave (03:22.628) Yeah, a lot of that is often overkill for an indie dev. If I look down the list, let's pick on one. I'll pick on TDD, the very first. So test -driven development. In an enterprise environment, that can work very, very well if, and only if, in my opinion, you have very strong acceptance criteria. Daniel (03:24.87) Mm -hmm. dave (03:48.068) the scope and everything of what you're building has kind of been identified quite well upfront, or at least you've gone to some level of detail with it, then in an enterprise environment, you can then start by writing the tests that match those acceptance criteria that match that scope before you've even written the code, right? There's a lot of forethoughts that's already gone into what it is you're building. and potentially even a few bits of proof of concept code or scratch projects or that sort of stuff ahead to try and feel the way. But naturally, it means you end up... You start with tests, you're thinking about it from that point of view. It can be quite labor intensive, right? And an enterprise environment naturally by implication has the time and the money, as it were, and resource to take that hit. Yeah, you know? is my opinion and has been my experience of what I've seen in my career so far, right, it's like the environments where that works the best are the ones that can afford it straight up front. And I know there's an argument that says you end up paying for it one way or the other, right? The tests themselves give you surety in what you're building. And if you don't have some tests in the mix, then sooner or later, you're probably going to encounter some sort of bug or regression or whatever and regret it. And then ends up spending all that time trying to fix the thing when perhaps your test harness may have helped in the first place. So there's a balance. But if I bring it around to where we're at and think about, dave (05:33.866) indie development in general. I mean you're probably in very different areas on this right now because for telemetry deck you're probably in a situation I would imagine where unit tests at least are pretty crucial actually for doing what you do for your service. But I mean scrappy app development land. where when I make a new app or add a new thing, I don't necessarily know if it's going to stick. Yeah, there's a lot of iterations still going on in what I'm doing. So I guess all this is to say is that I behave very differently as an indie developer for my apps than the way I would do in my enterprise day job. You know, it's like, I want to get something out there as quickly as possible, see how it fits the market, see what any reactions to it. And I would probably not bother with a full suite of unit test straight up front. And I certainly wouldn't start with writing tests to begin with. But I'm going to pass the mic to you, Daniel, because I want to hear the telemetry deck side of things. Because I know you've been on your own journey with testing. And I don't want to just pick on testing to answer Queen Olivia's question, but I think it illuminates some of the mindset and the difference between the two. Daniel (06:46.912) Ha ha ha! Daniel (06:58.144) Yeah. I actually, I thought about this post for a while. And the thing is I almost have like a almost fully written conference talk about basically this whole topic, because I've been thinking about this a lot. Like every time I show someone my code base or what I'm working on or whatever, like a lot of the times people will be asking, are you using this? Are you using that? Like one of the things on Queen Olivia's list. And... dave (07:22.53) Mm -hmm. Daniel (07:28.218) So I thought about this a bit, and I think my personal philosophy on this is the following. A, I don't want to unnecessarily close a gate before it's, like, if I don't have a valid reason. Like, for example, TenementryDX frontend has, like, the JavaScript framework that we use has an internationalization. framework available so I actually make sure that all the other strings that I have are actually marked as translatable and they are in this singular file where I like I could translate them but of course I have only I only have the translation for US English right now because like yeah that's not it's not there the time yet to have a complete translation of everything. dave (08:17.282) Mm -hmm. Daniel (08:24.302) But I'm not closing that door. I'm keeping that option for later. And I feel like that's part one or part A of a lot of these things. If you have the experience of what you will need later for that part of the professionalization slide, then try to keep the door open or at least not put in too many roadblocks in there. So that's part A. And then the part B is... dave (08:24.74) Yeah. dave (08:28.516) Yeah. Daniel (08:55.176) It's a bit subjective, I think, but I'm trying not to do any of the things on that list until it hurts a little bit. Like there's a certain point where there's more to be gained from implementing TDD or let's say fast lane or some of these things. Also with like this is not on their list, but like error tracking, that kind of stuff. dave (09:05.564) Yeah. dave (09:17.214) Hmm. Daniel (09:25.544) There's like, there's a point where there's more to be gained, but at the very beginning, especially if you're working alone or in a very small team, doing all these things would slow you down considerably. And at a stage where maybe you don't even know if your project is a success or where you don't even know what success means to you. And so at this point, like it's not really makes, doesn't make a lot of sense to do them, but then, then invariably you will end up at some point where you're like, ah, I feel like. dave (09:35.07) Yeah. dave (09:39.334) Yep. Daniel (09:54.44) I'm spending too much time trying to manually test my APIs or whatever. And then that's the time where you say, okay, now it's time for to add some testing to this part of my application. Like for example, the telemetry API had way better tests than, oh, had tests way before the front end had tests because like it's the front end, you know what I mean? And I think that's the philosophy that where I want to go like don't... dave (10:00.838) Yep. dave (10:07.708) Mm -hmm. dave (10:15.902) Yeah. Daniel (10:23.08) try to be professional too early. But just listen to how it feels. If it feels like you're spending all your time suddenly doing some chore, then it's time to automate that chore or to make sure that this is somehow automated or go up one step on the professionality ladder. And I feel also it's the same way about... dave (10:26.206) Mm -hmm. dave (10:45.278) Yeah. Daniel (10:51.944) like hosting stuff, like for example, at some point it was like, it made more sense for telemetry deck to host on Docker and Kubernetes, but that point is not immediate immediately like, but at some point the complexity was actually less using that compared to like doing everything by hand. And so it also applies to that kind of like all these, the things that professional large scale software development processes do. dave (11:04.444) Yeah. Daniel (11:19.912) It also applies to frameworks and stuff like that. For example, React Native is one of those things. There is a long -standing, let's say, discussion between fans of or users of React Native and people who dislike it. And one of the reasons is that React is very verbose. And... dave (11:25.756) Mm -hmm. Daniel (11:48.04) You actually have to write a lot of code, but it makes complete sense for a large scale operations with lots of developers who can actually produce that amount of code and that amount of work. But it maybe doesn't make sense for you at this point, unless you have a of experience and then can just like be faster than if you would have learned another language or something like that. I have one more, I had one more last example, which was, nah. dave (11:58.622) Yep. dave (12:02.588) Mm -hmm. dave (12:10.494) Yeah. Daniel (12:18.076) It'll come to me later. But yeah, so the basic gist of my philosophy here is like, do the bare minimum, and then like, increase the stuff as like as it's beginning to hurt. Oh, yeah, I'm remembering, I'm remembering again. Sorry. Yeah. dave (12:18.782) That's fine. dave (12:26.94) Mm -hmm. dave (12:33.278) So you're advocating, I'm going to cut you off a second because I want to get the pun in, you're advocating for PDD, Pain Driven Development. Daniel (12:41.224) Bring the pain. Yeah, I feel like this is also very important regarding how do you find about failures in your application. And there's a scale here as well. It goes from, I want to know when my services are completely down. That's like the bottom of the scale or the ladder. Or. dave (13:00.38) Mm -hmm. dave (13:09.214) Yeah. Red alert. Yeah. Daniel (13:15.048) Maslow's hierarchy of needs, I guess. How many metaphors can we cram in? I'm going to stay with the letter, I think. Bottom of the letter is, lowest rung is just like, inform me when the thing goes down. Below that is my users are telling me when my service is down, which is kind of, you know. And then next up is inform me when a crash happened, like a specific crash. Then next one is inform, actually tell me the crash log of what happened. dave (13:17.406) Hahaha dave (13:21.724) Go for it. dave (13:31.804) Mm -hmm. Daniel (13:44.328) And then it goes up and up and then you end up at test -driven development and even further you end up with like UI automation and stuff like that, which is very brittle, will easily break, will actually like UI automation will usually cost you a lot of work. Not only at the beginning, but also just to keep it updated with your actual UI. But at some point, the pain of not having it is greater than the pain of having it. So that's where you... You flip the switch basically. dave (14:18.046) To be honest, I completely agree, Daniel. In terms of all of that, that makes total sense to me. And I think that really is it. What you're arguing for is in an indie environment or a startup environment, even, don't over -optimize too early, right? Is the thing. And that can take many forms. We say that about code, right? Don't over -optimize your code. Daniel (14:20.68) Hahaha. dave (14:47.516) Just write something that is clear, that works, that does the job. And think about the optimizations, again, as you feel the pain, as they become obvious. And that can take many forms. I've written quite a few things where, for example, in Govj, my video mixing app, I don't even have a database layer for the user's project. I use JSON. All right, so I store it in memory. And every time they change one of the videos in the slots, the memory representation gets changed. So the app works. And then it runs a background thread to persist it back to disk by writing the file out. Now, that's not very optimal. But also, I only have. Daniel (15:15.932) Shocking. dave (15:39.71) five slots of 16 videos, there's 80 options in total, the sheer size of it's not gonna get much bigger than a certain amount. And it hasn't caused me any issues so far. There is no point me going back and turning that into, say, Swift data or Core data right now. There's a world where that might make more sense. I'm talking about building this pro version of the app. Daniel (15:59.752) Yeah. dave (16:09.246) it might make sense for me to use some sort of shared container. And so if you've imported media into one of the apps, you can access it in the other, for example. And at that point, having something shared with settings could also make sense. Or maybe not. I've not gone there yet. And that's... Daniel (16:27.784) Yeah, it's also about your personal experience, I feel like, because if you had like 1000 hours of experience with Swift data or something else, then it would probably be like, like just like second nature to you to just implement something with a database. And then you just go for it and wouldn't cause you pain at all. dave (16:36.178) Mm -hmm. dave (16:42.462) Yeah, yeah, exactly. Yeah, yeah, exactly. And you know, these days, because that was where I was at sort of 18 months, two years ago for this rebuild of the app. These days, I might be more inclined to start with GRDB, for example. And then I know I've got a pretty stable, clear migration routes if anything changes and all of that. But that's the thing is you've got to find where your experience is. Daniel (16:59.176) Mm -hmm. dave (17:12.538) work in a way that leaves you being productive as an indie because typically your time is at a premium, right? That is your biggest upfront cost on anything, if you're bootstrapping especially, right? And... Yeah, don't get too bogged down in those details. If something's giving you pain, if something is obviously critical to what you're doing, then yes, you should prioritize that. But if you're literally building something brand new, you don't know what the market fit for it is even yet. You don't know whether anybody's really going to buy your app or whatever it is. Is it going to? That's the question you want to answer straight up front. And no amount of test automation, no amount of localizing to every single language and locality that it could be is going to make that question easier to answer. The users don't care how many tests you've got. Daniel (18:13.64) You dave (18:15.134) And by and large, people appreciate localization, and it can be a game changer when you're at a certain scale. And obviously, everybody likes to be respected in their home language. So it's a good thing. But if you want to answer the question of, is anybody interested in this app, typically, you could launch on one language and go from there. But as you say, don't box yourself into a corner. Make sure that you're using the appropriate tags or whatever that is so that later on if you do want to go that route, it's not a big pain. Obviously, pick your level of difficulty. Try and make sure you don't close any doors too early on things. It's all a balance. One final thing I wanted to add on that, because I've had a bit of experience with typically whatever I'm writing in my day job, I will try and echo in my side projects, right, in terms of coding style. And so when I was working in an environment with the coordinator design pattern and MVVM or MVP, whichever one of those I was using in my day job, my side projects were sort of echoing. All the way up until two years ago, I came up with the router pattern for SwiftUI that I was then using with my teams in my day job. So of course, I was using that at home. Now, these days, my job's a little different. And I'm the... environment I'm working in is in the financial sector. It's a bank and we've got a very layered, very, very opinionated code base that we're working with. I just wouldn't dream of trying to re -implement that sort of approach in my side projects, right? And I call on this because what's also happening is that as I'm revisiting old code bases recently and looking back through some of my projects, I'm like, dave (20:24.094) All right, I've got to remember where my headspace was at outside of this project at that time, right? Because I've kind of written it according to my old job rather than anything else. What I've done recently, like in the last six months or so, is as I've been building new things, I've just lent purely into doing basic SwiftUI. Everything's in state, environment, bindings are passed through the view layer. Not particularly worried about layering, dependency injection, and all the other things I might have worried about in the past with the router design pattern. So a lot of my code looks like Apple example code or hacking with Swift example code or whatever you will see out there, right? Very Swift UI 101. Daniel (21:12.712) Which is not too bad, right? You don't have to reinvent the wheel all the time. And if it's a good default pattern, then it's probably the right one. dave (21:17.478) Yeah. dave (21:21.534) Yeah, and so what's happening with that is I feel like it's now providing a very simple base that means that when I come back to things that have been dropped for a while, it's not so jarring. And actually, in terms of getting something together, it's a speedier way of developing as well, because I'm not worried about, like, OK, have I got a mock for this? Have I got the ability to pass this around and test that in isolation? At the same time, I'm not boxing myself completely into a corner because all the dependencies I'm creating can have tests written around them. I'm not making views to bog down with the logic. I'm trying to push those to objects that are then shared. Daniel (21:48.264) Yeah, it makes sense. dave (22:06.142) And just by making that basic tweak, you know, that then means that if I need to wrap test automation around these things later on, I'm not going to have to unpick them all and do that job. Because I know that would annoy me. So I'm kind of, that's my, that's my nod. to that end of things, if you like. I will make managerial service classes and I'm being very specific about what functions are public and what are private and internal as well. So that I'm kind of marking like, this is the API layer of what this is. But beyond that, I'm not thinking too hard about it. I'm not doing protocols for everything so I can create a simple mark. It's very like, just write the thing, get it done. You know, and... it's felt a lot more fun as well because you can be quite speedy at that point. Daniel (22:57.48) Yeah. That brings me actually to my last point about this. Like we've talked already about avoiding pain, but at the same time, if possible, you should also try to be seeking fun. Like your motivation is probably one of the resources that you need to manage. Like with your indy side, you're not in a big corporate job. You need to be motivated to do. dave (23:05.052) Mm -hmm. dave (23:10.174) Yes. Daniel (23:24.52) be to work on a project for the long haul before it gets successful. There will be a time where you have to keep plugging away at the things that need to be done. And of course, these are not all technical. This is a discussion that we've had multiple times. But the technical stuff should also kind of motivate you. And so if you structure your development environment in a way that is fun for you to work on, dave (23:27.998) Yes. dave (23:43.582) Mm -hmm. Daniel (23:50.184) that will be easier. And that means on the one hand, avoiding the pain, but also on the other hand, picking technologies that are enjoyable to use for you specifically. Like maybe it's something new that you want to try out and you just use it because you want to try it out. Like for example, that's basically the main reason behind why the telemetry API is written in Swift Vapor, just because I wanted to try out Vapor back when it was a... a fun project because I wasn't expert at writing APIs in Python. But I didn't use Python for the API because I wanted to try out, hey, what would it be? And it turns out it is actually a very good way to write the API. So I never felt the need to rewrite everything. But yeah, also seek your pleasure, basically. dave (24:40.154) Yeah, yeah, I totally agree with that and I think that's a very good note to end this section of the show on to the Alistars, like keep it fun. If it's a side project, you know, you're doing that after hours after work or whatever. You don't want to recreate work at home as well at that point probably, you know, and if it becomes a going concern, if it becomes a big, big business, you've had some success. Daniel (24:59.75) Yeah. dave (25:07.134) Well, you'll be quitting the day job at that point and then you can shift things, right? But yeah, keep the fun. Daniel (25:14.824) Yeah, exactly. All right. Next up is actually because we're now a professional podcast, right? I mean, look at my lighting, look at our video recording and everything. We have a follow -up section now. I'm hereby creating a follow -up section. And the only topic in the follow -up section is, Dave, you were right and I was wrong. Can you guess what this is about? dave (25:22.046) Oh yes, yes. dave (25:28.828) Mm -hmm. dave (25:37.31) Oh no. I'm not sure. Go on, enlighten me. Whereabouts? Daniel (25:41.8) It's right in front of you in the show notes. Daniel (25:51.816) Further up. Yeah, exactly. I said, now you said you reference Jurassic Park with it's a unique system. I know this. And I said, I'm reasonably sure, or I said I was sure this is from Jurassic Park 2, either the book or the movie. I double checked and it's both in the book and the movie. It's from the first Jurassic Park. So you were right. I was wrong. And I'm... dave (25:52.062) Oh, Unix system. dave (26:18.782) there. Daniel (26:21.288) I'm big enough to admit that. dave (26:23.358) I'm gonna be dining out on that one for a little while, Daniel, I'm sorry. Daniel (26:28.54) Fantastic. And I've had this lying around in the topic list for at least two episodes now and I've completely forgot it and now I'm just like my eyes kind of landed on the thing and I was like, yeah, that's actually what... dave (26:32.734) right. dave (26:37.278) Hahaha dave (26:42.622) Hehehehe dave (26:47.454) Yeah, yeah, I know my old memes. Daniel (26:51.592) You know your memes. Yeah. I've put a link to the video clip in the show notes for our esteemed listeners to click on and enjoy and learn from my mistakes about Unix systems. dave (26:54.846) Alright. dave (27:00.126) Brilliant. dave (27:09.182) Fear, fear. And I think you need to re -watch the Jurassic Park stand, you'll see. Daniel (27:14.824) I do actually, like I haven't watched the first one or actually any of them in ages. The Jurassic World kind of destroyed the series for me a little bit, but maybe it's time to revisit the very first one. The score alone is like one of the best movie scores ever. And it's like just sticks in your head for so long. dave (27:26.366) Oh fair, not a... Yeah. dave (27:38.556) Absolutely. That's kind of scary. It's going to be, it's got to be 30 years old now this year, right? Or was it last year? It's 93 or 94, I'm sure. You watch it, it'll be 92. I'm wrong this time. No, no. Let's stick to the show. Let's get back to Apple, Indie and all things tech. Daniel (27:44.456) Yeah. Daniel (27:48.456) There. Daniel (27:52.584) I'm not looking it up right now, actually. Daniel (28:03.336) Yeah. Do you want to talk about Vision Pro? dave (28:08.062) I do and I don't. I don't know when this show is going to go out exactly and so it could end up being quite out of date, you know, if I don't get my act together and get this uploaded quickly enough. Yeah, but hey, let's let's talk about it as it is because right now as we speak, it's early January, the Vision Pro is not released yet. It's about to be. There's been some rumblings and announcements of yeah, yeah. Daniel (28:18.632) Which is fair. Like, I mean, you got a life, you know? Daniel (28:24.87) Mm -hmm. Daniel (28:33.48) Yeah, because it has been announced. And I'm, has the announcement actually changed your views towards the Vision Pro? Like has anything changed for you, just like for how it feels? Because somehow it has for me. Like I still won't buy one because it's incredibly expensive. And also for me, I would have to pay another thousand bucks just to fly to the US and pick one up. I mean, in theory, my family in, dave (28:46.878) Not for me. dave (28:52.444) Okay. dave (28:56.7) Mm -hmm. dave (29:03.772) Yeah. Daniel (29:07.176) in Virginia could probably pick one up for me and send it to me, but then you have to deal with customs and stuff like that. And yeah, whatever. So I'm not gonna get one, but in my mind, the Vision Pro as it existed before the announcement of, yeah, it's actually releasing on February 4, 3, 2, 2, I think. I'm gonna look it up in a second. dave (29:16.476) Yeah, yeah. Daniel (29:37.672) In my mind before that announcement, it was kind of like, yeah, it's just like a nebulous thing and it might change in the future. And actually the device that has been shown in various Apple events, it might not be the exact thing that is actually then released to the public. And then now it's like, oh no, this is exactly what we're releasing. And I'm wondering why, wait then, was it just to produce enough of the things? You know what I mean? dave (29:55.1) Yeah, that's fair. dave (30:05.118) Yeah. Daniel (30:05.544) Like why, why even pre -announce it that way? dave (30:10.334) Well, yeah. OK, so this was announced last June at www .dc as a product as a thing. And I understand that. And you've been to some of the developer apps as well. So you've had Apple's, I don't know how to call it. They're readying the developers. They're trying to warm up the market, warm up the ground for. people to start building experiences for the platform. So it makes sense to have an earlier announcement for that. Are you meaning that it doesn't make much sense for them to announce that it's going to be released next month, whereas they could have just waited and gone, hey, here it is? Or? Daniel (30:55.208) I'm actually not 100 % sure myself. Like, maybe I need to think about this some more. So what I mean is, I think that, like, so they announced it in like last summer, or let's say June. And then what happened between then and now? They probably wrote, like worked on the OS, because that's probably the thing that gets finished last. And also they kind of try to educate. dave (31:00.156) Mm -hmm. dave (31:09.854) Yep. dave (31:17.862) Yep. Daniel (31:23.272) the developers on like, hey, this is actually like, this is how you write software for vision pro. And, and I think maybe they won't. I say maybe, but yeah, probably they also started just manufacturing the things which probably also need a bit needs a bit of headstart. dave (31:29.478) Yeah. dave (31:37.918) Yeah. dave (31:42.494) But that's a... point inside of this, I think, where you're probably right about them continuing to update and enhance the OS. And I can imagine that they were bits from the sort of developer roadshow type stuff that they did that has then fed back and tweak things, right? And we've seen this before with Mac OS releases, iOS releases, you know, when they're in beta, effectively, sometimes you get things that, you know, the developers see first, before it's even through any sort of public Daniel (31:46.822) Mm -hmm. dave (32:14.56) data, for example, with iOS, that go a couple of rounds of iteration in the interweaving time. We've seen them go back and forth on one or two things like that in the past in terms of, I seem to remember Stage Manager had a couple of things for iPadOS where that kicked around. Daniel (32:29.96) Also remember that that time when Safari for iPad and iPhone was like super weird? dave (32:36.926) Yeah, yeah, so there's this prior form for that sort of period. And I'd imagine a brand new platform needs a whole load of that. So they'll be using the developers in that point to get some early beta feedback, early beta testing, right? They've gone from being a closed audience, internally secret project to now we've announced it's on its way. We're going to do these developer labs. Daniel (33:02.818) Mm. dave (33:06.616) And that marks then a level of wider user testing as well, which I would hope they're then feeding back. Whether they needed it or not, I don't know. It depends on how close they were to begin with. But. Daniel (33:20.738) Yeah, now that we're talking about it, I wonder about like, none of the previous Apple hardware launches that had a beta periods for the hardware, like for example, the Apple TV, or the, yeah, or various like Macs or whatever, like, like, like, think of the, the, the trash can Mac Pro, for example, that got pre announced. And where you knew how the device was looking like none of those got it. dave (33:30.616) Mm -hmm. dave (33:43.256) Mm -hmm. Daniel (33:47.938) go to hardware update before the actual launch. I wonder why I'm expecting this to change how it looks like before it launches. That was just in my head somehow. dave (33:54.616) So there is one bit about the Vision. There's a bit about the Vision Pro that I think wasn't clear when it was announced or not so clear that is now clear now that we've had this official launch date announced. And that is what the plan looks like for lenses, for glasses wearers like you and I. Daniel (34:13.984) Mm -hmm. dave (34:18.424) And that is now clear, right? You've got the options of what you can buy on the site and everything else. I wonder if there was a last bit of figuring out how they were going to get those manufactured and distributed and that sort of stuff sort of coming together in this time as well. Because that feels to me like that is perhaps one of the areas that is just slightly different about this technology, right? is that you've got the hardware, you've got the software, but within the hardware you've also then got this requirement of some people are going to need custom optical lenses to make it work for their eyesight. Maybe that's been part of it that's been needed to have this time to get to where it's needed. Daniel (35:07.17) Yeah, maybe that's it. I am opening up the Apple page right now. Let me share this with you. And I'm confused. I was at the store page first and it didn't say pre -order Vision Pro anywhere. So I clicked on Vision and this says pre -order starting 1 .19, which is not today actually. But there's no pre -order button or anything. dave (35:13.12) Yeah. dave (35:20.856) Yeah. dave (35:25.558) Mm -hmm. dave (35:29.356) Mm -hmm. dave (35:33.688) No, that's, yeah. No, it's nothing to. Daniel (35:36.546) It's just not there. And I scroll the whole page and there's just nothing, which I mean, okay, if they say, okay, pre -order starts later than today. Yeah, that makes sense probably. I was hoping for prices because I thought I saw prices online, which were like 150 bucks per eyeglass and then three, five for the device, but some... dave (35:41.528) Hmm. dave (35:47.818) Yeah. dave (35:51.832) Yes, so did I. dave (35:59.64) Yes, yes I saw that. Daniel (36:03.49) but some configuration options. I kind of wanted to see configuration options, but apparently that's maybe in the press release or something. We are very prepared here. dave (36:10.296) Yeah. I'm looking at MacRumors and their specific Vision Pro page right now. They've got a thing about here's everything you get in the box. And that says that it starts at the $3499 US. Goes on sale in the US on Friday, February the 2nd, and then availability in Canada and the United Kingdom to follow later this year. Daniel (36:20.416) Mm hmm. That makes a lot of sense. dave (36:39.704) So this is a reasonably constrained rollout to begin with, right? That's not. Yeah, yeah. And obviously I guess like Canada's a system market to the US in some ways, right? That makes sense. Even down to supply chain and that sort of stuff. And then I guess the United Kingdom, yes. Daniel (36:47.01) Only English speaking countries, right? dave (37:07.896) English speaking market right next door to Europe and it would make sense to then go out from there. I don't know, like this feels like it's going to be very quiet and exclusive and drip drip drip as people sort of start to bite the bullet and buy it. Daniel (37:27.298) Yeah, especially also because there was no event at all. It was just a press release. I found the press release, by the way, and it says the pricing and everything as well. Same info that you had in the MacRumors article. But the thing I'm tripping over right now is Zeiss optical inserts for readers cost $99 US, but for Zeiss optical inserts for prescription costs you $149, which is come on. dave (37:31.734) Yeah, which... Right. dave (37:44.502) Mm -hmm. dave (37:55.64) Yep. Yep. Daniel (37:57.57) It makes probably sense in the production and everything, but... dave (38:01.624) Yeah, so I mean like on the other hand at least their inserts right which will make things a little easier for resale. That was something I was wondering about what the story was going to be with that because you wouldn't want it to be locked down to your prescription and your prescription can change over time so you know it needs to be... Daniel (38:10.882) Yeah. Daniel (38:24.034) Yeah, and you also don't want to wear your glasses underneath the device. That feels wrong. Although, like, I have that with the PSVR, and the advantage is that it's easy to switch, you know, like, just take it off, and then you're in the real world again, and you don't have to grab your glasses or whatever, but, you know. dave (38:27.936) No. Yep. Mm -hmm. dave (38:37.282) Yeah. dave (38:43.544) Yeah. But the, hey, you know, you could just wear the Vision Pro all the time instead of your glasses, right? Daniel (38:48.194) Hahaha! Daniel (38:52.802) I want to hear, I want to hear from parcel delivery people who in a month or three, when people have the Vision Pro like ring a doorbell and then some, some weirdo opens with their Vision Pro on their head is just like, I'm just taking the package. It's so weird. Like I remember WWDC 2012 or so. dave (38:58.294) Mm -hmm. dave (39:11.8) Ha ha. dave (39:22.26) Yeah. Daniel (39:22.402) was my first WWDC, I think. I have to look up the actual year. I was at a WWDC and that was the same time when Google Glass came out. And there were a few people walking around with the Google Glass and they were met immediately with a lot of hostility. Like they were stairs and like people were moving, trying to move out of their... dave (39:35.) Yes. dave (39:43.958) Yeah. Daniel (39:49.728) eyelines and whatever, because they didn't want to be weirdly, they didn't want to feel filmed and watched all the time. And also just felt very weird and pretentious. And I wonder. Yeah. And I mean, the Vision Pro is like even as this is way, is way huger than, than just like Google. I mean, your eyeglasses look kind of like, like Google glass, like it was actually very slim, just a bit thicker on the side, maybe. And so. dave (39:51.424) Yep. dave (40:01.4) Well, it kind of was at the time. dave (40:09.144) Yeah. dave (40:16.128) Yeah. Daniel (40:19.552) The question is like, how will people deal with people wearing, with others wearing their Vision Pro because it feels weird. Or maybe people will get used to it, I don't know. dave (40:28.408) So I put a couple of theories on how it all start to look. So I think what you've described about the person coming to the door with them on, I think that's going to be a more typical first interaction for a lot of people. You visit somebody at home and they happen to have them on. I don't think it's going to be so typical that you see people going around on public transport and out in day -to -day life with them. There'll be that one guy who has to walk down the middle of the high street with it on just to prove he spent three and a half thousand dollars on it. I know those guys exist, right? Don't get me wrong. Yeah, yeah, yeah, yeah, exactly. You know, I don't even have a Mac anymore. I've just got my Vision Pro and my watch and that's that. You know, they'll be like... Daniel (40:51.362) Yeah, probably not. Daniel (41:03.554) They're tech entrepreneurs. Daniel (41:14.178) Yeah, oh, I can't imagine exactly the type. dave (41:14.872) all the digital nomads and minimalists. Yeah, those people to one side, I think day to day, if you think about like how ubiquitous AirPods have become over time, right? That took a little while. And initially to see AirPods out and about was a bit like, huh? But I don't think the Vision Pro will have that same journey to begin with. in the form it's in. I actually think it's going to be more like it will be a monitor replacement for developers and people using computers all day. It will be used in specific environments where it adds something to what people are doing in some way, in a working environment is what I'm thinking. And then it's going to be used for leisure at home. And again, you're talking about a situation where it's not getting really taken out and about. I'm using it to watch a... a movie and have an IMAX experience type thing sat on my sofa or maybe I take it with me and I'm using it in a hotel, that sort of thing, right? I don't think... Daniel (42:22.53) That's actually one of the only really good use cases that I can think of right now. I mean, that will probably change as more software gets available for the device. But right now, if I had a Vision Pro, I would take it to, like, yeah, what you said, like hotel rooms and stuff like that. I had a job once where I was working in either Munich or Berlin or San Francisco, and I was kind of switching between the three. dave (42:30.326) Mm -hmm. Daniel (42:51.906) And so I spent a lot of time in either hotel rooms or company owned apartments that didn't have any of my, um, like my devices or whatever. And I had a Nintendo switch at the time. And that was like really nice to have because I could game all the time, but the screen is comparatively small. Uh, and so if I have nothing but one device and then I can actually have a big screen somewhere that's kind of neat. dave (43:07.766) Yeah. dave (43:14.488) Yep, yep, absolutely. Daniel (43:15.618) But then again, I don't want to wear any VR headset more than say two hours a day. dave (43:22.072) Yeah, yeah, but that's the area I can see it really taking off in though is, you know, for entertainment and then for work, essentially for having, you know, a big screen that you can take with you to anywhere. And I know you're saying, yeah, you wouldn't want to use it for longer than two hours. Not everybody's going to feel that way. If future iterations, they will probably get lighter. That side of the experience will be improved. Daniel (43:34.658) Mm -hmm. dave (43:51.704) But I sort of see it kind of operating in that space, not least of which for sort of price. So if I was looking and going, okay, do I buy a new monitor? There's now a point where I go, do I buy a new monitor or do I buy the Vision Pro to use for that? Daniel (44:09.218) So far, I think the scale is on the new monitor. Price -wise and quality -wise and stuff like that. But yeah, I mean, there might be a point where this changes and most people will go for some vision devices instead. dave (44:13.656) Yes, but I think there'll be a tipping point. dave (44:23.532) Yeah. dave (44:28.152) And there's also a point further down the line, right, where you assume that this technology gets improved, it becomes cheaper, that certain problems and edge cases get solved, all that sort of stuff. I think there's a point where it will get potentially used for helping people co -locate across space. I'm sort of thinking like, well, okay, it costs $3 ,500 US right now. Say it costs closer to 2 ,000 for an SE version in a couple of years or whatever that looks like. Does it make more sense for a company to give its people those and say, hey, when you really need to get together, we've got a VR workspace that you can all come together in and do. Daniel (45:13.106) Haha, the metaverse. dave (45:14.78) Yeah, yeah, yeah, yeah, yeah. Does that make more sense than a spending on travel? Right? And that, for some companies, that will make a lot of sense. So, yeah. Daniel (45:21.33) I mean, yeah. Daniel (45:28.882) make sense. But yeah, I, I'm very much looking forward to the discussions we actually will have once, once the device has been out for let's say a month or three months or something like that so that a larger number of people has actually used the device and there's like some consensus of like, what it can do and which part of your life it can improve maybe or like just bring some joy into you know. dave (45:42.512) Mm -hmm. Daniel (45:58.7) Um, yeah. dave (45:59.592) Yeah, I think the potential for connection, like I say, across space for people with it, I think that's potentially quite a deep avenue for what the device is capable of, what the applications and experiences we could have on it. That potential seems compelling to me. You're shaking your head slightly. You know more than I do. Yeah. Daniel (46:25.356) I am very skeptical. We had this discussion before, I think, so let's just, I don't know, let's keep it brief for now. But like, I still think that I don't think that any VR experience that we can do with current technology will be like significantly better than video calling us right now. And so yeah, and it might even be worse because like you're not looking at people's actual eyes. dave (46:34.3) and dave (46:47.164) Yeah, okay. dave (46:54.172) Mm -hmm. Daniel (46:55.168) And so, yeah, like right now I'm skeptical. Let's see what the future brings. But if we don't have anything else about it, like I thought we would look at the prices together, but yeah, the price is actually like, there's no configuration, anything. It comes with a solo knit band and a dual loop band, which is cool. But like I was hoping for options and stuff like that. Like. dave (47:00.252) Yeah, yeah, for sure. dave (47:13.594) Mm -hmm. dave (47:23.194) Mm -hmm. Daniel (47:23.418) just configure the thing just for fun, but you're not there yet. Soon, soon. I did bring another topic, though, if you're up for it, which is I, oh, God, I had the longest day, by the way. My day was several years long. But today, one of the things that I did today is I showed someone my code, the server code and the front -end code. dave (47:29.308) I want it in purple. Go for it. Daniel (47:51.092) And if you had asked me yesterday or even before that incident, how clean and organized is your code base? Especially for the server, I would have told you this is spotless. It's pristine. It's fantastic. Because I actually, especially on the server, try to work without leaving too much of a mess. Really think about where I want to go, try to reduce clutter, try to reduce technical debt a lot. dave (47:59.098) Yeah. dave (48:15.388) Mm -hmm. Daniel (48:20.052) And I feel like I'm pretty successful at it. Like, this is not my first Swift project. So like, I have a lot of experience and I feel like it shows. But then I showed this person my project today and tried to guide them through and like try to make them understand the structure and architecture that I built up. And suddenly I was always tripping over like, oh, yeah, this is like, hi, this is legacy. Just ignore that one, that part. And I was like, this is, yeah, okay, this is an old thing. And oh yeah, this is a workaround that I did, which is kind of, it kind of works right now. And so I didn't want to touch it again. And I want to ask you, have you ever felt like that? Where suddenly you're seeing your code or your projects through another person's eyes and it's like, wow, okay, this is... dave (48:51.836) Hehehe dave (49:07.79) Yep. Daniel (49:15.828) Actually, I just live in this mess and so I don't see the mess anymore. dave (49:21.756) Yeah, yeah, I've had bits of that experience for sure. You know, in my day job life as it were, I've had that experience when I've pulled together a proof of concept and then it's become a going concern and I've had to hand it over to another team member and it, you know, they then they're going, what's that? Why is that like that? Why is this bit commented out? Did you really need that there? All that sort of stuff. And I've been like, Yeah, but, yeah, but, yeah, but, yeah, but. And it's like, it's an unnerving feeling, but I think it's to be expected. Like, do you ever remember, it was a Simpson sketch. Everything in my life devolves down to Simpson sketches eventually, but there's a bit where the character Lenny, one of Homer's workmates, the side of his house falls off. Daniel (49:50.514) Mm -hmm. dave (50:16.442) he sat in there eating beans out of a can like wearing just some some shorts or something as you do and he just looks out and he goes please don't tell people how i live yeah okay so you understand if you've seen that and i'll see if i can dig up a youtube link to put in the show notes because i have to remember not everybody is was brought upon Daniel (50:22.42) as you do. Daniel (50:28.532) I've seen that, I've seen that. dave (50:42.624) early season Simpsons in the way that I was as a child and I'm showing my age now with the references so I'll put it in the shadows but anyway the vibe there though is like you know you suddenly feel quite seen quite vulnerable in a sense because you're trying to sort of justify some of the some of the stuff in front of you and then you're like yeah no they're right that that is a bit crafty or that is messy or no I can't remember what I was thinking at that point yeah I've experienced that and It's natural because as you're adding to something, and you're making these decisions as you're just trying to build something and get it working and all of that, I think it's quite natural for a bit of cruft to build up in that sort of sense. I've certainly got it in my projects. there would be a whole thing. Like if I was to take any of my apps that I've got in the store and then hand over to a junior, for example, say I've made my millions and I was now employing people with me, I would have to spend a bit of time cleaning stuff up ahead of that, I think, because of that. Or I would have to make that their first job, you know, it's like, well, okay, whatever you see here, yeah, yeah, yeah, sweep the floor first sort of thing. Daniel (51:57.476) Well, this is your problem now. Yeah. The thing is though, I wouldn't even, I don't think that even with a concerted cleaning effort, like I don't think this code can get much cleaner. It is actually pretty clean. It's just that it's not as self -explanatory or as pristine perfect as I, it wasn't my dave (52:05.588) Yeah, it's uh... dave (52:18.972) Yeah. dave (52:28.244) Yeah. Yeah. Daniel (52:31.992) tiny bit disappointed in myself. I was like, okay, it's like, yeah. dave (52:35.488) That's the thing, right? If you've gone through your code base and annotated everything as you might do if it was going to be public facing, for example, every single function call, every single property, is it all tagged? Daniel (52:48.904) Most of it actually because I'm writing Swift code that is not for iOS or Mac OS. So I don't have an Xcode project file. This is just a huge Swift package with sub -packages. And for Swift packages, like this public, private annotations, they're actually very important. So those are on par. But the... dave (52:55.56) Mm -hmm. dave (53:02.428) Yep. dave (53:09.192) Yes. dave (53:12.724) Yeah, but do you have descriptions against every single thing? You know, like ready for Doc C to generate something? No. Yep. Daniel (53:16.054) Yeah, no. No, like many, but not all of them. I also have like various helper functions that replace like three or four lines of code. But then there are a few instances where I just haven't replaced the three or four lines of code and they're just there. And I was like, why is this there? Like I was trying to explain a different point. And I was like, yeah, this shouldn't be like, this should be one line that is very self -explanatory instead of like four lines that are slightly this. dave (53:30.388) Mm -hmm. dave (53:37.532) Right, yeah. dave (53:47.316) Yeah, I'm living a bit of that world at the moment. One of my slightly older projects I came back to, and I had exactly that, like, why is there these three or four lines being copied everywhere? And then I was trying to, yeah, and I realized what I'd done, you know, I'd created a view modifier that wrapped it all up, that is now in my, one of my packages that I've got, one of these Lego blocks that we've talked about before. Daniel (53:59.224) I have no memory of this place. Daniel (54:12.47) Mm -hmm. dave (54:13.876) And so I stopped doing that and I just used, you know, .lightbin theme or whatever I've called it. And yeah, so I've experienced that. Even just going back and looking at your older code sometimes can give you that feeling, right, of sort of fresh eyes and why is that like that? Yeah. I think you have to, at a certain stage, if you've got so many things going on, you have to expect a little bit of entropy to be around in these senses. Like you're saying, you felt like it's probably almost perfect, and then you found out, yeah, there's a few bits that could be improved. That's... Daniel (54:55.096) Yeah, it probably goes back to like, find the pain points and you know, like, where, where, like a lot of additional process and work could probably make it even more perfect. But I'm probably, I'm probably at the right level of technical debt, which is not a lot, but some. dave (54:58.836) Yes. dave (55:08.116) Yep. dave (55:17.172) Exactly, exactly. And I think that is the right level of technical debt in any sort of active project, if you like, because, you like you could go through and you could check the entire code base for all of those bits of repeated lines and replace them, right? Great. Okay. You've standardized it. You've got it. Or you could say every time I see this and I'm working on an area, I remove it and do it. And I would say the latter probably helps you out more than doing a general rewrite just for those bits. Because again, there could be bits that you go through and you update them, make everything perfect. And then two months down the line, you actually rip that feature or bit out or you've refactored it anyway and you're working on it then at that point. Like there's a point where it's like, did you really achieve anything by finding those things and proactively fixing them versus is it better to just fix it when you're there? And that could be a whole other show, right? We could go right down the rabbit hole there about like the nuances of when to get in to take that. But unfortunately, Daniel, I'm going to have to go, so it's time. Daniel (56:25.88) Yeah, it's time. It's time to leave. This ends our first video show. But before you go, I have a question for you. But before even that, I want to thank our listeners for listening. I want to thank our viewers for viewing. And I want to ask you to please rate us on iTunes and or smash that like and subscribe button. And don't forget. dave (56:43.1) Mm -hmm. dave (56:53.748) Oh, you went there. Daniel (56:54.936) Don't forget to ring the bell. it a bell? I think it's a bell. Don't forget to ring the bell, of course. I don't know what that does. I think it gives you notifications whenever we put up a new episode, which sounds horrible. If you want to contact us, send us emails to contact at waitingforreview .com or mention us on Macedon. And now I'm going to ask you where people can find you on the internet to mention you. dave (56:58.214) Yeah. dave (57:06.46) Mm -hmm. dave (57:22.772) Yeah, so you can find me on Mastodon and the Fediverse at dave at social .lightbeamapps .com. And how about you, Daniel? Daniel (57:32.514) Fantastic. Find me at daniel at social .telemetrydeck .com dave (57:41.268) Yeah, and we actually have an account for the podcast as well, which is, it is waiting for review or one word, like all the words can come together, at iosdev .space. And I will link it in the show notes to make that a bit easier for anybody to click through and find. Daniel (57:45.814) Oh yeah, say it. Daniel (57:57.784) fantastic instance. Daniel (58:02.068) Send us feedback, we love hearing from you and thanks a lot to everyone. That's it for today, have a great day. Bye Dave dave (58:13.108) Catch you later. Daniel Bye!