 Welcome to the DevSync. It's December 2nd, and we're going to kick it off with Derek. He's got a short timeline here. Oh yeah, I'm going to have to jump a little early. So yes, my continual CAD progress on the Mark II. I've made my way to the display housing, and I've been working on that mostly today, and I've got it in pretty good order. Because of the switch and stack up, as I've mentioned many times, the way it gets mounted also had to change, but I've got that all sorted out. And tomorrow I will be working on buttons, and hopefully also spending a little time trying to get the tolerance on that a little better. They were pretty good the last time I left off on them, but they still had some room for improvement. I'll be addressing that. Nothing really on the software side. I mean, you know, yesterday I mentioned the GUI stuff was kind of ready whenever you guys are to implement on the Wi-Fi setup. I added screens and Figma. So if anyone wants to discuss that when necessary, just ping me. Yep, that's it for me. All right. Thanks, Derek. Ken, do you have a cat who's walking on your keyboard or something? No. That sure is a weird thing. No. Okay. Well, why don't you go ahead then? Okay. So let's see. So I continue working on trapping the TTSKS that Michael has experienced. And I can now produce that consistently so I can fix that or try to fix it. And it also looks like part of the problem when you get into that chaos mode is that the playback control skill has bad audio service status. So it doesn't bother sending it a stop, which is part of the problem. It doesn't know it's playing. But the important point was that I was able to reproduce the chaos. And it only occurs with long-running TTS that happen to, and when it breaks, it has to be an intermittent breaks. What I had to do is I had to actually go into Mimic 2 and simulate like every fifth request, say, okay, now I'm going to throw the timeout exception or the 304 exception. And then see what the result was on the system. And it holds up really well because all of the Q&A skills now have clipped very radically at nothing more than a sentence or two. In fact, some of them are actually clipped in the middle. So you don't see it there. You have to get a long-running answer. And the only way to do that was to ask about the story of the Odyssey. And so that takes a while. And then when the Mimic 2 will after, because I have it like every fifth or seventh, like throwing an exception when it throws an exception, the Mimic 1 will start playing. And if it catches it between sessions, they'll both go off and you can't stop either. And it's very annoying. So now that I can reproduce that, I should be able to make more progress on getting that fixed. I filed a bug for DuckDuckGo. It throws an exception on what is Helium. I noticed that most of the Q&As are timing out now. Obviously, there's the build issues with booting and losing pairing and all that. And then I also noticed that this build was running slow. I was able to actually get the Wi-Fi logs and see how the bring up sequence goes, which is cool. That's like I said, there's only three statuses from what I was doing. I'm assuming Mike will speak more to that in a minute. But I backed that off because it was like running every 15 seconds and it was slowing everything down. So I backed that off significantly for like five minutes and things are running better. But the important breakthrough was I was able to reproduce Michael's chaos because it was difficult actually to reproduce. And so I'll be fixing that relatively shortly. Okay, great. Well, it sounds like Michael might be doing some work that's related to that. So why don't you go next? Sure. So let's see. This morning I got in some tests for the network manager. So this is the software that based on Ken's stuff pings the D-Bus right now to the AW Connect on the Mark II board and asks it, you know, connectivity status for the network and the internet. And then just a little bit ago, I got in the Mark II enclosure, there's now a thread that's polling this basically every so many seconds checking connectivity and it outputs events on the bus. So it outputs both status changes. So I'm connected, I'm disconnected for network internet and every polling interval, it also outputs a status message with the same information. I did discover though, just before we got on, my internet went out while I was watching the log actually of the connectivity status on the Mark II and it continued to report fully connected. So to me, this suggests that when it connects, the network manager checks internet status, but from there on after, I don't think it continues to check. I think it believes whatever it was at the beginning, it must still be connected to the internet. So I think I'm going to have to, in the enclosure thread, make sure that it's also doing the DNS check and the URL check out to, you know, Google or something to verify that it can still actually reach a website even though that it believes it's still connected to the internet. Yeah, we need to, we are making a clear distinction between Wi-Fi network connectivity and internet connectivity, right? Yeah, what's odd is that the D-Bus network manager, the status, if you read the documentation, when it says it's fully connected, it says it can reach the internet and that's the status it's reporting. And it may have been true when it was first connected, but later on it's no longer true even if you keep asking it. Am I understanding you correctly that you're not seeing the network go down when the network goes down? I'm not seeing the network go down because the network net didn't go down, the internet went down, so my cable modem was unplugged. And it's still, at the time it first connected to Wi-Fi, it could reach the internet. And so it believes apparently as long as this connected to the same Wi-Fi, it will be able to reach the internet forever. So we need to do that. I'm trying to understand what you're saying. So what you're saying is that your router still had an internal connection? Yes. So you were connected to the edge, but not connected to the internet? Yeah, I was connected to my Wi-Fi router, but not to the internet. Got it, got it, got it. So we have all the tools necessary here and now we'll have the distinction. So we'll have network and once I add this extra thing, it'll be internet now or not, basically. Okay. Yeah, we can definitely do a workaround on our side, but we should also report that as a bug. I'll have to dig through the docs and see if there's, I don't see anything that says like internet as of right now or as of it as it started. So yeah, maybe that is just a bug or maybe there's some other property I need to dig into. That's a bug you reported to in Boontu, right? I'm not sure, who runs Network Manager? I think it's a known project that runs that. Yeah, maybe. There are other ways you can check the actual connections and see whether or not there are, maybe we should, that you were checking at the device level, right? Or even at the Network Manager level. I wonder if you drilled down into like a device or like a connection if you get the same result. Yeah, I'll have to check that too. So I'll check on that tomorrow. Let's see. The other thing I got today is my, I got my model finished, my TTS model finished to a certain level and was able to run it on the mark too. And it runs great. So I'm getting a real time factor of about 0.4 so it runs 2x faster than real time. And I mean, it's not, you know, the highest quality ever when I hear it with my headphones, but on the speakers it sounds just fine. So there should be a viable option for us to have offline neural TTS on the mark too that runs in reasonable time. As long as you, if you have, you know, gigantic sentences, it might take a second or two. But if you have short stuff or you can break it up at clause boundaries, even it'll, it should perform just fine. So I'm going to start training. I have one that's got multiple voices and no single voice sounds the best. So I'm going to train a single voice one off the, uh, who's, who saw dataset and see how that sounds. Okay. Yeah, that sounds really cool. Do we have a name for this? I don't know. Should I, I mean, should I call it mimic three or something else? I'll leave that to you guys. Yeah. And mimic is our. Yes, moniker. So, you know, you could call it mimic three or I feel like it should be like a mimic 2.5. Like it's, yeah, if it's still, I mean, it's still using the Tucketron stuff. No, no, this is using a, it's an advancement above that. It's a, it's a model called vits. So it's, yeah, it's, it's basically, they did a combination of something called glow TTS and a vocoder. They jam them together in a single network. And so it actually doesn't end to end phonemes straight out to the audio. So you don't have to run a separate vocoder stage, which is great. That sounds like a mimic three. Yeah. Yeah. That sounds great to me. Okay. I'll call it mimic three and we should be able. So I can also train for different languages. Any of the languages supported by my group and LP library. So once I get something for English, I'll concentrate on others. And then you win the award for most significant contribution in your first week of work at any workplace ever. Like a little trophy. We have these cool coins. Oh yeah. Oh yeah. I got one of those. And I got the cool, the cool book with the trolls. So, all right. That's awesome. A new, you know, getting a new TTS model in there. That's really cool. Thanks. We need, but there's a lot more than just the TTS model, right? There's the whole, all the infrastructure around it. And such as we've got, I don't know if this applies only to mimic one or it's one and two, but we've got these hints in there where just we're going straight from, you know, English as it is written, not as it is spoken, right? So we've got this database where people could write in actual transliterations, like the proper pronunciation for various words and things like that, right? Make sure it integrates with that and all that kind of thing. Yeah, I'll have to figure that out. So this is based on what I've done with larynx where it's, the model is not actually trained on English as it's written. There's a normalization step and then a phonemization step. And those are done using a library I wrote called Groot. They could also be done from using eSpeak, depending on licensing with that. So it produces, what's that? I am Groot. That's the way, yeah. I called it Groot, but I spoke with two U's just to make fun of English pronunciation. So it uses a database with the phonetic pronunciations. If it can't find it in there, it guesses it with a conditional random field model. So if you add, if you can update this database with pronunciations, what I'm saying, as long as they're in the right phonemes, I'm using the international phonetic alphabet for this. Yeah, so yeah, I would take a look at what we have. And I wasn't aware that you guys had talked about that and decided to do this project, but it sounds really cool. But yeah, let's, let's make it into, you know, at least if not, if you're not going to work on these particular aspects right now, at least record them as, you know, to-dos to turn it into a fully, you know, realized product. Yeah, okay. While you're at it, taking up where Michael just said, because I wasn't aware of this, if we do have hints for MIMIC too, I noticed that when you ask who Abraham Lincoln is, and it says Washington D.C., and they're both capitalized, it says Washington D.C. So that should be D space S-E-E. Yeah, there's actually a- Yeah, there's actually a- Sorry, we talked over each other. What did you say? Oh, just saying we have a website where you can go out and specify those things. Yeah, we were literally- Yeah, we were saying the same thing. Just warning that that website is not in an automated fashion to, like, take those and then implement them. So currently nothing, like, no one's taking those and adding them to the service. We're collecting them though. Yes, yes. I think they're also largely, I would imagine, that they're largely based on what people type in and see how MIMIC2 pronounces things. And so they're going to be, you know, what is the spelling that gives me the best pronunciation in MIMIC2 rather than, like, say, the international phonetic alphabet or something like that. So, yeah. But they'll at least give us a list of things. So they assume instead of assume and we're all confused. Wait, what do I say? There is an extra layer too that Groot does that may need to be, the website may need to be modified. So, you know, in English you can get better hints at a pronunciation depending on the part of speech, usually a noun versus a verb. And so it distinguishes that too. I don't know if we could, I don't know if we could add that to the website or if they're willing to go to that level to, or if they even, I mean, I didn't really think about this before delving into this kind of stuff, you know, just kind of automatic. If they think, oh, I pronounced that like this, but only when it's, you know, a noun or something like that. Yeah, those all sound like great issues to just start documenting as, you know, to-dos for a future sprint project. I would suggest that people generally are pretty terrible at thinking about that sort of stuff, unless they're like really deep on, you know, linguistics and things. But I wonder if asking for a sample phrase along with the word that they think is not pronounced correctly would be helpful because then we can see the context in which they are thinking about it. Yeah, that would be great. Forget the sample sentence. Yeah. But yeah, all great ideas. Okay, cool. Great, you've just made more work for us. I just made more work, yeah. Glad to help. I thought we were going to run out. All right, great. So, I guess, why don't you go? Wolfram Alpha is in release to stable. So, it's even on the stable images, which is cool. But the other QAs, QA GUIs are not in stable yet, I don't think, because they're relying on, they're waiting on these test changes that are in core. So, yes, going to do one thing that we talked about yesterday, Michael, is that we want to get the next XDU changes in, but for the last couple of weeks, I've been hitting a bunch of just bugs and things with the last round of XDU changes, and as much as we review code and everything, there's just always things that pop up when you actually start to use things in real life. So, the plan now is to do a point release of core and then merge in the next XDU changes so that there's a decent amount of time to sort of test those in the wild before they get marked as stable and all of that. Yeah, so I'm going to do a point release of core as the short version. What else happened? Oh, I also fixed the Pandora thing, so Pandora is now fully up to date in the marketplace. I haven't tested it because I'm Australian and Pandora left us long ago, but if other people have accounts, that would be good to tech. And, yes, focusing on trying to focus on community PRs a fair bit at the moment. Yeah. All right, well, I'm testing out your Pandora still now that's been pushed. Cool. I'll let you know. All right, and Chris, other Chris. Yeah, so I've been testing my changes to the boot sequence today. I got the skills service to start in 15 seconds. If you take out the Wi-Fi connect skill, which currently runs for a minute, but currently it's for a minute. So that's good. So as soon as we get that kind of straightened out, we'll get the skills loading in very, very short order. And everything else that was in the skills that what didn't belong there is now running the enclosure and it seems to be doing fine. I haven't tested the actual pairing and Wi-Fi stuff yet because I think I was waiting on some of Mike's stuff and a little worried about some of the bugs that have been reported about identity files disappearing and stuff. And I don't know, you know, I'm a little concerned that, you know, I'll try to test my code. I won't be testing my code or testing something else. Is that related to the SDG stuff or something else you think? It feels, yeah, it is. So I don't know. I mean, you just need to talk to Gaz and see where we are with that stuff because, um, yeah, I don't want to, I don't want to update my dev box because I'm afraid I'll goof it all up. I propose the change to dev because it's like it's something that's in mainstream as well. Um, and, you know, okay, pointed out that, um, it was kind of done intentionally that way so that if the, if the migration was, you know, um, not completed successfully, then it would, then it would try again in the future. Um, uh, yeah. So it, and I can, I can understand that logic, but we're seeing a genuine literal problem right now on the mark two, um, versus a theoretical problem, um, elsewhere. So I think my, I think it would make sense for us to just do this fix on the mark two feature branch, um, because the whole problem is a short-term problem because we can pull the whole migration code out, you know, after the next major release anyway. Um, so yeah. Something else I noticed in my testing today was that every time you do go get configs, if you're config valid on the right place, you get one of those deprecations. I'm getting like a hundred of them every time I boot my device. So I don't know if there's a way to, you know, make those a little quieter, but, um, they're everywhere in the log files right now. Uh, It's here, configs on the right place. Yeah, right. There shouldn't be that many of them, but so. Just on closure, start up alone. I have six. Okay. We should look at that. Anyway, um, I mean, it's a minor, it's kind of minor compared to everything else, but it's just something I noticed while I was. Yeah. Yeah. And the quieter we can make the logs, the more the actual problems jump out at you. Yes. So, um, So I think what I need to do now is integrate with the stuff that Michael pushed up today. Hey, I'm working on the same branch right now. So kind of working on the same thing. Um, so, um, I do want to talk to him too about what he's done because I think I want to see some changes, but, um, But yeah, so I mean, we're, I'm getting, I think we're getting pretty close on the, uh, On the happy path at least of the startup sequence. Then when I need to start getting into, you know, what happens, you know, how do we, um, use this stuff to trigger the wifi skill and how to use it to trigger the bearing skill. Cause right now I'm just saying, okay, I'm paired. I'm, I'm, I'm paired and connected. And, you know, what happens on a normal boot and that's what I'm doing right now. So there'll be extra testing for that. And then there'll be extra changes for that as well. But we are making progress. Michael and I make good progress. We should be able to formulate the startup sequence in terms of these, these network connected and internet connected events now too. Right. You have a no internet. In the spec. But I wonder like for the, for the non happy path, we probably were needed to handle cases where it's connected and connected and all that, right? Uh, not, well, for boot up sequence, I think we don't be as, are you talking about just the boot up sequence or about like in general, if we lose connectivity? I don't think the boot up sequence too, or if, you know, instead of having timeouts, I guess is what I'm getting at is we, we should wait for particular connected events, right? To, to move steps forward in, in stuff, right? Yeah. Yeah. That's one of the things I want to talk to you guys. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. So if I understand what you're saying there, Michael, that move away from more of a polling mechanism and into an, an event driven system. Yeah. It should be, there should be no timeouts and unless you're, I mean, if it's interacting, direct with the user, that's a different story. But if it's booting up, it should be an event driven, I would think. Yeah. Yeah. You don't want to, you know, if you tie it out of trying to get to a network connection, then what? Yeah. There's no human there. Well, we know, we know that and what then in the middle of the night it says, why if I disconnected? Right. Well, yeah. Same thing with Barry. There's a lot of, we probably shouldn't tie not have anything during the initial boot. Or at least until you get past pairing. Yeah. Can I, can I just double check? Chris, did you say it takes 15 seconds to boot the skills service? Until you get to the Wi-Fi connect? Yes. That is incredible. Nicely done. Cause just memory, if my memory serves me correctly, it used to be right. Yeah. That's what I thought. Yeah. A major improvement for sure. Yeah. That's great. And so, um, and the Wi-Fi, you're saying, and then you get to the Wi-Fi and then it takes another minute or whatever it right. And that's, that's because the init method of the Wi-Fi skill actually goes through all 60 seconds of, of what it does right now. Right. So as soon as we yank that out and make it event based, then it will be 15 seconds. Awesome. That's really great. Yep. Cool. So we get to an initialized state that fast because that's, that's still the slowest at 15 seconds with all the, all the things. So we'll get to initialized state pretty quickly. That's great. Yeah. Cause that's, that gets us really close, if not to the point where, you know, the device boots up and it's, it's ready. Like Microsoft, like we were talking about, like, the Microsoft system can be ready before the internet is connected and before Wi-Fi is connected, right? Like we've got an operational system. Now it goes out and tries to find all the things that it needs. Right. But the system, I'm really happy with what work we're doing. I think it's going to be some pretty cool stuff when we're done. Yeah. Great. And hopefully a lot more stable. Yeah. God, I hope so. Oh, and I have, I found a bug today. So I think you will all find interesting things. Yeah. Because I think it might be causing some of our problems. So, um, there's logic in the, uh, message bus client that. Something about on error. It retries getting, um, the message bus connection because, you know, obviously you couldn't get one switch for future trying. Um, but I think that might be happening on, um, On an error when you try to admit a message. Because I, so I'm, I'm emitting messages. When each of the services are done initializing. And when I, when I admitted. At a, the first one, which is the speech is done. Um, that never got admitted because I think it triggered this loop. That wasn't connected to the. Message bus. So I haven't completely nailed it down yet. But I found it very interesting that. And my, my whole startup sequence just stopped because I'm, I wait for all three services to be ready. And I never, I never got the speech one because, you know, like got swallowed somehow. Um, which I thought was very interesting. So I'm going to, I'm going to look into that deeper and provide more information when I have it, but. You sure it didn't get admitted before you, uh, on the, onto the message bus. For your client was connected. No, because my connection. Not like, it's not like they're stored and saved. Yeah, they are. And yeah. So what, what I'm doing here is, you know, if I don't get it initially. Then I go back and look and do, and check the process status and see if it's there. So. Um, anyway, I'm going to take a further look at it. But I think, you know, if that really is a problem, I think that could be. The culprit for some other things that we've been. Seeing some weirdness. As you every start thing. Cool. Well, keeps up to date on that too. Um, All right. So how are we doing with respect to, um, all of the administrative stuff? You know, uh, keeping our JIRA up to date and. Uh, you know, the sprint 22 is done. Nice. Close it. No, I thought I wanted to wait. Didn't want to just like quietly do that by myself. I think we need a celebration. Have a little, yeah. Look at that. You didn't want to, didn't want to unceremoniously close the sprint. Yeah, exactly. All right. I'm going to push the button right now. All right. We need a little trumpet. You. Awesome. All right. So now our official sprint is. 22 and a half. Excellent. We've moved a half sprint forward. Uh, yeah. Oh, so for, uh, Have you gone over with Michael? Uh, how are our sprints are not really sprints. Um, yes. Okay. Yes. Yeah. He has a ticket in this print actually too for his network connectivity work. So it's, I mean, maybe it's helpful for the community too. Like the, we use the term sprint because it's the, the concept in JIRA that we use to manage our work is in sprints, but we're not actually using them in the. Like in the pure. Agile sense of the term sprint. So no to the moment at least. We're changing that from what I understand. We'll actually start doing that soon. Yeah. It seems like it'll be. Yeah. It'll be useful to adopt that going forward. Yeah. We basically a sprint thus far has just meant. All of the tasks related to achieving a particular milestone. However long that happens to be. Years. But yeah, we are going to be refactoring those into ethics, which will be the new home for groups of related tasks. And then the sprints will just be, you know, fixed time periods. I think we've been getting better at getting some tighter scope around our current sprints as well. Um, because yeah, previously sprints for months and months and months of work. Um, because people would dump things in the sprints just because it was the active sprint. Yeah. Yeah. Yeah. Who did that? So it became a slog instead of a sprint. Yeah. Something like that. Uh, I think my, my tickets are up to date. I am working on what I'm working on. Okay. Although the, uh, skill update has got a bunch of stuff in there that may not be done in phase one. Um, The skill. I'm sorry. I didn't quite follow you. The skill. My C9 40. Oh, I can share my screen share. That would be too easy. Or maybe it's not that easy. Hold on. So this ticket here. Um, there's a lot of things we wanted to do the skills. Startup sequence. There's also stuff we wanted to do. After the startup sequence is over. Like how do we identify, how do we update? Um, The skill. I'm sorry. I didn't quite follow you. The skill. My C9 40. I didn't know. Oh, I can share my screen share. That would be too easy. I'm sorry. I'm sorry. I'm sorry. I'm sorry. I'm sorry. I'm sorry. How do we identify? How do we update skills? Um, Going forward. And I didn't know if you wanted me to go as far as, you know, there's some of these things in here. Like, um, You know, only updating one skill at a time. Um, non-scrystal skill updates may be formed at certain times at that kind of stuff. I didn't know if that was. Phase one type work or if that was suffocating. Put it in an epic and do it another. Yeah. And definitely we should. Recall these out the ones that aren't already done and put those into an epic. And, um, and I think, um, Because it's probably going to require some MSM changes too. I would think. Well, yeah. And I think there's, you know, we've talked about having another pass at the whole, at the skills. Stuff anyway, like more holistic things. So maybe we can wait for that. I don't know. Yeah. Um, so yeah, I think that maybe to a is, um, We're doing now it's pretty straightforward. Yeah. We'll, uh, I think yield a better user experience. And in fact, me, you know, we might want to just totally hack that and say, make it 30 minutes. Because, you know, if we're doing demos. You know, Probably, uh, don't want to have any skill updates happening in the middle of a demo. Yeah. It's going to happen once an hour. I could just say the first hour is after, you know, an hour after you boot it. Yeah. Yeah. You know, Instead of, you know, whatever the last hour, it knows about is. Yeah. That sounds great. Yeah. And then the other ones can go into, you know, Yeah. Uh, uh, an epic around fixing up the M. Oh, yeah. MSM and, uh, you know, aggregate the other MSM issues we've got in there. Cool. Cool. That makes me very happy. Yeah. That'll be great. The other thing I'm going to run into too is I don't know. We talked to, like right now is a microp ready event. We're talking about either adding or replacing it with a microp started event. And I don't know how, like, how that might impact other parts of the system. I don't know if anything actually looks for a microp credit event right now. There may not be anything that actually looks for it. Um, Last time I checked, there wasn't anything, but if I do change the name of it, that's a, that's a change in. Hmm. There's probably, yeah, there's probably downstream projects at the very least that are using that. But I would wonder, because microp started is like the system, the system is, is initialized. Right. But I wonder if, like, microp ready in my mind, I can still get ready as the, as a, you can talk to it now. Right now started. We're going to be. Hey, all initial nation stuff's done. So I could still use ready as okay. This is when you can interact with the system. Yeah. Yeah. I can still admit it just maybe later than we normally would. Or a different time and different and do it in different code that we normally would. Well, but like, for example, if, um, if some, if, if someone's got a, a version of core that, that doesn't connect to the back end, for example, so there's no pairing, you know, then started and ready are going to be much closer together when you don't need to worry about that sort of stuff. But yeah. I'm trying to do with some of this new code is, um, is implement the activity. Um, framework too. If we're running, if we're running something new, I want to get that tested out. Yeah. Examples of it in code. Yeah. Uh, yeah. I think that's good because it's, um, right. It's just really a naming convention at this point and. Yeah. And it'll give us, you know, it'll give us, um, some real world examples of seeing it in practice and, you know, maybe see how, see how useful it is. And, uh, maybe start to use it and debugging and whatnot. So, uh, yeah, it's good. Thanks. Okay. Sorry. That was a lot of yapping. Um, Well, you know, uh, I don't know how often you guys are able to get together throughout the day, but, um, you know, there was a lot of this stuff to catch up on. Um, and, uh, you know, I hope you're able to keep the communications, uh, fluid and flowing and, and, you know, not get stuck in a, uh, corner by yourself too often. No, I think, I think we're all pretty good about talking throughout the day. I think a lot of this is keeping you up to date because you haven't been here in a couple of days. So. And some of this stuff, you know, like I, I haven't talked to Michael and like, the mic in like two hours. But yeah. Awesome. All right. Well, thanks. I appreciate it. It looks like a really good progress this week. Um, so good job. All right. Well, Sounds like it. Yeah. Well, there I will see you guys, uh, next Monday and, uh, Have a good weekend. If I don't see you before then. Michael, do you have? Yeah, sure. Do you want to hang on after? No, Michael, Michael Lewis. Oh, I'm sorry. Yeah, sure. I got, I got. I thought, I thought Michael Hansen, Mike. I'm, I'm, I'm Mike. I gotta remember. Michael Lewis sparked that rule by say. Did I? Did? I'm here to learn the rule. Also your, your, your, uh, Name tag says Michael Hansen. So. Yeah. Yeah. Touché. All right. How do you also? Yeah. Who wants to take the lead? Oh, Um, I can go first. It's been an eventful day. We got the announcement of the, Oh, Derek. Yeah. This is the well run, the well oiled ship here. Yeah. I forgot. Well, well first, First, we have to say the date and all that. I've never done that. So I guess I could try. Yeah. Uh, yeah. If, if, if, if, If Giz is going to cut out the beginning, then. Then yeah, I'll just, I can do the intro. Okay. I'm leaving this whole thing in. This is the blooper reel. That would be my recommend. Cut it out and put it at the end. Okay. All right. Take, I'll take it away, Michael. All right.