AI-Powered Decentralized App Generation with DappThat
Developer DAO · March 2025 · 39:06
DappThat core developer Jonathan Else gives DevNTell host Narb an overview of an AI-powered tool that generates decentralized apps for developers. He demonstrates how teams can start using it to build faster, a case of AI-assisted development applied to blockchain applications.
Speakers
Topics
From Developer DAO, hosted by Developer DAO.
Transcript
GMGM. Welcome to what's going to be another great episode of Devantel. So, if you didn't know, Devantel is a 30-minute podcast held every week allowing founders, hackers, and anyone in between to come on the show and showcase their product. And today, I'm excited to welcome Jonathan, who's a core dev at DAP that. If you didn't know, DAPAT is an AI powered decentralized app generator for developers so they can innovate 1,000 times faster. If you stick around for today's episode, you'll see Jonathan give us an overview of DAP app and show us how we can get started using it today. All right, let's get into it.
[Music] GMGM, welcome to the show, Johnny. Pleasure to have you on. Thanks for having me. It's pleasure to be here a part of the community for a while. Awesome. We always love having community members come aboard the show. Um that's actually how uh the show was uh was started its roots. So uh excellent. We're still living up to that. Um I guess uh before we get into all the great content you have prepared for us, um would you like to give a brief introduction about yourself? Sure. Um I've been a blockchain engineer for about six years. I didn't go to university. Um instead I actually
started a study group on Discord. I'm entirely focused on solidity. Went through the headache of um making tutorials um you know having to go and learn and figure all that out and every time I made something I made the tutorial on it and I left a link to the study group and I surrounded myself with blockchain engineers for about 3 years. um got really good at micro macro kind of design thinking and problem solving in uh blockchain engineering um and kind of eventually trans uh translated that to automating uh the developer experience um or at least semi-automating like it's so at each stage of the way it gives you suggestions um instead of uh you know giving AI full control in such a high
stakes industry you don't want to give AI full control. Yeah, indeed. Uh you you you want to rated it in a little bit, wanted to be a companion instead of the the decision maker, so to speak. Um and I I guess uh have you always been in the in the tech industry or or um before starting your journey in web 3 or um I was I was in data analysis before I got into solidity. Um and I got really bored of that role because you know they were they were like right we all use Excel and I was like okay as a programmer like taught myself some game development and uh some
machine learning. So um like at that stage so I was just I was so bored with that I was like you know what I want to I want to go into a new space and I chose blockchain. Awesome man. Yeah, I I I can imagine how uh monotonous it would get just working with Excel sheets every day. Um so I I think I think you made the right switch. Uh so uh I I guess um in terms of um starting with Solidity, was there a particular reason you you chose that? Um I imagine it was because of its popularity, but um is there anything that particularly stood out um that's like that was like, "Yeah, I need to go do this now."
Well, I always knew that uh I I liked problem solving. Um and I always knew that I wanted to start my own companies. So when I seen the price of ETH go up skyrocketing, I was like, well, that is nothing but proof of demand. Um and so I figured, well, I'm going to go and explore this space. Um and yeah, met so many amazing people during this time. Uh yeah, it's been phenomenal. Uh I've definitely, as you said, right, definitely the right choice. Yeah, 100%.
And I guess um uh of all those people that you met um were the co-founders of uh DAP FAT, uh one of them. And how and uh how how did you basically um end up at DAPFAT? What's the origin story? Um okay. Um so by going through this journey, Iworked with a lot of people. Um actually one of the co-founders um is sitting right next to me. Um we've been working together for almost six years. Um two of the co-founders are over in Toronto. Um this is actually a child product of our um one of our main company products which is Spark Engine.
Um so Jordan the CEO of Spark he came up with uh this noode platform for kind of connecting different AI models and responses to each other. So we could automate large scale thought. Um and it was because of that that I was like wow this is this is the thought engineering right and that eventually actually led to me starting the thought engineering network as well. Um so kind of tying these all together. Um I was like I'm going to automate my intuition here with Spark and create adapt that. Amazing.
Amazing. and uh you're uh kind of um not treading on the same social path in terms of the rest of crypto where everybody is mostly on X. Uh I I hear that you had a recent big milestone on LinkedIn. Uh did you want to share that? Um sure. Uh I just got to 3,000 followers on LinkedIn. Um, yeah, I'm definitely much more active on LinkedIn than I am on uh on X. Um, I prefer to kind of stay away from a lot of the hype and um and and kind of that. Uh, yeah, I I prefer focusing on like the fundamentals and I find that a lot more
common on LinkedIn than uh than X. Don't get me wrong, like I I enjoy going to the Twitter spaces on X. Um uh but in terms of just like general content like it's it's much more focused on the fundamentals there. Excellent. And and I've dropped the link to uh Jonathan's uh LinkedIn so definitely give him a follow there. Uh and congrats on crossing uh 3K. Uh well done. Well done. Um yeah, I guess um with that uh I'm very eager to see what you have prepped for us today. Um I I I certainly would love to be thousand times uh uh more efficient in my uh development day today.
For sure, man. Well, I'm happy to uh happy to show. All right. Uh yeah, the floor is yours. Go for it. Okay. Perfect. Okay. So we have DAP that um as said you know we've got a couple of networks that we've integrated with the moment um and we're looking for more EVM chains to connect with um and do co-arketing with. Um I do have you know if you do want to kind of go over things a bit slower then there is a demo video here for you to go through. Um and there's also some example DAPs here. These were made with an earlier version of the generator. Um, so these are um, you know, they're not as good as what's actually, uh, coming
out of the generator these days. Um, but I'll kind of get started on this. We do have, um, a thing right now. If you go on to daplat.com, you can join Discord and, um, you can get some free credits to be able to use the generator. Um, and then, uh, if you've run out of credits, then you can just purchase it with ETH. We don't have our own token yet. Um but the reason that we would be looking to make our own token in the future is uh because we'd look to decentralize the AI uh kind of aspect of the generator. Um and kind of open up to that side of the market as well in different vertical. Um if you have a spark engine account then you can use an API key for that. Uh but
most people in web 3 won't. So um here you can just connect your web 3 wallet. um is in beta, right? So, it is buggy sometimes. Uh I'd say like one out of every 10 to 20 times um it'll have an application error at some point. Um but uh other than that, it's good. It's going to ask you to sign a message. If you're on Mac, then that sometimes doesn't come up um with but you need to sign that message in order to actually log the application to use the credits.
Um today we're going to make like a tokenized fund. Um so I'm just going to say crypto ventures is the name. Um the purpose of the fund is to manage um investments across um uh across the web 3 industry um and uh manage investments across web three industry uh for a tokenized fund. Um and who's going to be part of the community is going to be a fund manager. Um really uh I should have put investors there as well. So this first of all it's going to take the this
small amount of details we just gave and it's going to give a summary um kind of the name the purpose the target community the requirements um and then you can either give some feedback and reiterate on that or you can accept and continue. Um here I'm just gonna for the purpose of this demo I'm gonna ask for a single page uh application. Um if you do want to kind of push those boundaries a bit and do a multi-page I wouldn't recommend doing any more than four right now. Um just because it can really get um uh it buggy right down the line. Um but for that it's fine. Uh for this I'm just going to choose for the UI um black and two shades of gold. Right. Kind of
want a luxury feeling for the uh the um the investor. Um the features I like on the DAP something kind of simple let's say um uh manage investments um investments um uh token allocations um and uh uh investors into the fund. Um it should be fine and we'll just go ahead from here. Um, if you haven't got any credits in your wallet, then you're going to get to this stage and it's going to um it's it's not going to let you go forward and it'll push you to get credits. Um, but I said if you
want to join the Discord, then you can get a bunch of credits. It should be enough for you to go through the generator fully once. Um, we have first of all the smart contract functional requirements generation. So, this is going to come from two different levels. one the global requirements um and then two the um the actual requirements of the smart contracts as well. Um I'm going to I'm going to remove the fee handler right now. I tell you now right like you can near enough assume that most these functional requirements are right but if you have any specific changes you'd like you can always change them here. um delete functional requirements, delete
contracts, add new contracts and functional requirements uh before you proceed to the next stage. And even as so you can rename the um the contracts as well. Um but I'm I'm good with this. I'm just going to for the purpose of the demo kind of fire through it. Um now it's going to take about 90 seconds, right? Um, so what this is now doing is it's going to take these functional requirements and it's going to generate an array of tasks. Each task doesn't need any information from the other task in order to complete the task. And the task is like the general plan of a smart contract. It's then going to generate some highle details and slightly lower level details. And then it's going to combine those high and low level details
and go and use these to actually generate the smart contract themselves. So this is why it takes about 90 seconds um for this stage. U but during this uh while it's going through that I can show you some of the example DAPs. So I've been doing a build 30 DAPs in 30 days challenge. Um something I'd never seen anyone ever do before. So I thought well it's a good way to kind of stick out from the crowd. Um some of these are open source, some are not. Some are client requests. So, they've been kind of behind closed doors, but um I can kind of show you um a little bit about these. So, this one's uh one I made, which is an NFT loyalty app um where
you're able to set up different rewards for different um NFT projects. Um this is mostly the generated UI. I made some little changes, but um it made it very fast. Um and I've got these deployed to the AVAC Fuji test net. So, thanks to um thanks to Avalanche for going ahead and giving me um way more test net funds than I needed to in order to go through that. Um and if, as I said, if you these are on my Twitter, these are on my LinkedIn. So, if you kind of want to go over these then um and give me some feedback, you know, they're open source, so if you want to contribute to them, go ahead. Um all the smart contracts are
tested um quite in-depth. Uh this one is timestamp docs. So this is essentially being able to uh take any document uh cryptographically hash it and store that on the um the blockchain as a sort of like time stamp notary um for protecting IP and whatnot. Um so that's yeah that's one thing that um we've been working on uh which I worked on here. Again, these were all made in these were made in 24 hours. Um, you know, with some uh the bulk of it being made by uh the generator and then just whatever uh things I want to do after that. Um I have no idea why I have so little
credits. Um that's an interesting one. Anyway, um hopefully that doesn't cause any problems. uh before once you get to this stage and you're generating your smart contracts um it's going to give you the option to compile your smart contracts. I have an API on the back end boots up and destroys a docker container on command which essentially is a remote test execution environment where you can compile your smart contracts remotely execute tests um flatten your smart contracts and whatnot. So um this will give you know even a detailed error on what the uh error was of the compilation if there was any. Um and uh if not then
uh you're kind of good to go. Um this is using uh we use such a a varied range of AI models in this um in this setup. Uh so you see here skull the the code there. I'm going to hit compile. Um, I need to change that to say compiling once it's been pressed. Um, but this should come back in uh just a few seconds, right? So, it failed. That's fine. What's the error? Um, uh, identifier is not a library or a name. Contracts uh on line 16.
Um, address. Yeah, address isn't even imported here. Okay. Well, some things happen. Um, but let me see one of the other ones. This one is not using address. So, that should be fine. Um, obviously you can always edit these. So, going back to like this fast one. Um, based on the compilation error. Um, I can go in here. Um, we only support uh Open Zeppelin contracts at the moment. So, but you can go in here and you can uh change the code um as you need it um before uh you know going to compile again. Um and again it will show you the updates and whatnot. So this one the
compilation successful. So kind of continue. I'm just going to kind of skip past this last one for now. We do have um uh we go and generate some tests here. Um again this takes about 90 seconds. Uh it's going to generate first of all the highle test cases. So um not the code itself initially um just the highle test cases and we use about six I think six different models here um to analyze smart contracts from different points um and find out okay well this is of and then we combine them all together um so we have a very comprehensive test coverage suite um a high level and then you can generate the test code as well.
It's also going to find uh analyze the contract and find if it needs any mock contracts in order to make sure that this contract standalone is being tested with these mock contracts and then it will generate those mock contracts as well if there are any that are needed. So this should um this shouldn't be a uh a massive amount of time. But during this time I'll go back to some of the other DAPs. This was probably my favorite one that I made out of all of the DAPs so far. Um, I made a Dex in 24 hours. Um, where it kind of adds in a bunch of different uh
features like uh whale protection, right? So dumping protection when you're deploying the D uh DEX you can set a percentage that uh uh is the maximum percentage that a token can be impacted by on price on a purchase. Um and then also uh MEV bot protection. So for those that don't know me is maximum extractable value bots and they'll essentially frontr run your transaction. So, they'll put a higher transaction fee than your transaction um to buy before you buy and then they'll sell right after you or you know the opposite way.
They'll sell first and then they'll buy after. Um but that way they're able to kind of sandwich your transaction and take a bunch of value out you there. Um and so this is uh resistant to that because purely because there's a 4-se secondond delay. Um, and for blockchains that have a lot of um a lot of uh transactions going through them, but um that 4 second delay is is enough to kind of stop your transaction a being able to be front run because then just your transaction would fail, right? Um and uh you can you can definitely get some interesting stuff here. So I can just see that, you know, I've got one um and I could swap that now. Um let's check on here. Okay, so this has now got the mock
contracts it's required uh it's found that it needs to make. Um I've never actually had uh one which uh comes with so many uh different lock contracts required. So here you have your test cases. It should successfully deposit tokens and update balances correctly. You can see here that there's a number of different types of tests. So functional, security, stress type, and uh edge case tests. You can edit these. It shows which smart contracts being tested. Um you can delete them. You can add new ones um if they're not kind of meeting the requirements that you have.
Um and then you can generate the code here. It's running um for hard hat. Um not foundry support yet. Um but that is something that we are looking to add. Um this is should generate now. Um so you've got your uh your expect from chai scribe statement your it statement um it's getting the contract factory deploying it um getting the signers doing everything that it needs to do in order to actually uh go ahead and uh generate the uh uh and execute the test.
Um I haven't seen Okay, so it's came up with the the mock contracts now. Um uh is there a mock ERC20? Just a mock ERC20. Yeah, this one mock ERC20. So that should um ideally run first time. If not, it's going to give me uh an option here to edit the code. I got to say the testing of the smart contracts um and the integration of the smart contracts into the components the area where needs the feel in most work in the generator um to make it better. Um but you know it's it's getting there. um missing in
constructor argument um for uh what the is this the huh that must be the um the mock or C20 um yeah the initial supply okay so let's add in here let's edit this code um and let's add in here that you know a million or whatever that is um save that uh run that test again. So we'll see here that ideally this works now, but it kind of goes through that uh that kind of process.
Um right now when I'm using the generator at its like optimal speed, I'll completely skip past the tests. Um just because I know uh ah but you see here insufficient allowance. Now I just need to go in and add that kind of uh part to the code. Um, the reason I kind of skip past this when I'm using the generator in my build 30 DAPs in 30 days is because currently I haven't got it so the tests actually download at the end. Um, but generally uh at the end you can download a uh an Nex.js project with um an X.js project with uh APIs and database uh well SQL. Um so this is the fund token. I'm not going to do that
one, but I'm going to look at the investment vault. So, I can compile this contract. And you're about to see the entire AI bite code on on the page because that's not beautiful yet. Um, but it's it's getting there. Um, once that happens, just scroll all the way past that and you can go down to deploy contract. Um, you can select the network here. So we have Solia test net IOTA EVM uh test net moon beams moonbase alpha chain and then Avalanche Fuji. If you haven't got these in your wallet already it's going to um request that you connect to that chain. So here if I want
to do IOTA it should ha maybe it doesn't want to today. Um generally it asks me uh to connect to that chain maybe because I've already done it before. Um yeah you can hit and deploy. Um, and then you can go ahead and send that through. Um, I'm just going to for this I'm not going to deploy for the speed. Um, we're just going to go next and we're going to focus on the web application side. So, this is now going to uh analyze the smart contracts first, figure out what functions would need to be integrated into the front end. Um, and then uh it's going to bring up, you know, what the pages are, what the components are for
each one. So, um, a hero section, fund overview, portfolio stats, recent transactions. Instead of recent transactions, I'm going to make this a fund management dashboard. Um, and then I'm going to be fine with that. So, if I wanted to re rearrange these, you can let me just drag and drop them to rearrange them before you confirm. Once you've confirmed, it's now going to generate context for each of the components. what's the primary function user goals um and context um content even uh functional requirements some key elements you're able to again you're able to change these as you go um as you go through it but for the point of speed
I'm just going to go on to the next stage so this is where it starts mapping the smart contract functions to the components um kind of getting ready for uh before we go and generate everything up Um, after it's done that, it's then going to generate the styling. So, a primary, secondary, and accent color. Um, if you remember at the start, I asked for black and two different colors of gold, but it brought up one of these. You can just click on here, and you can go ahead and change that up. So, uh, now we have those there. I'm just going to hit next here. Um, and this is going to focus on creating the highle plan for the, uh, APIs. So these are Verscell
serverless APIs. Um it's generally made so it can be deployed on Verscell. I know um centralized provider but we're in beta. We will get to decentralized tech as fast as possible. Um this will then give you the API name, endpoint, method, description. You can go through, you can regenerate, you can add new ones. You can uh go through all these different stages uh before you actually go to the generation. for the purpose of this just kind of kind of skip over them. Um, and then it's going to use all of the information it's kind of got so far in order to generate a database schema. So, you know, what's the table name, what's the column names, what's the types, what's the primary key, is it required, can it be null? Is
there a foreign key restraint? You can delete these like full essentially cor operations on here. Um, and then able to go to the next one. So this is where it gets to the final dashboard before uh the components. This is like review section. It's going to set uh show you what the um uh what components there are for the pages, the context, the um smart contract functions and APIs that are integrated into what components, what environmental variables are required for the APIs, what's the data format going to and from the API from the uh front-end components. Um, and then again the database schema is just so you can kind of review it all before it goes
into this uh next stage. Um, that's funny. There's a login and log out function for smart contracts that I never noticed. Uh, BC here has like the APIs up here and then it's got the uh smart contract functions. It will tell you what uh smart contracts being integrated uh the color scheme, the environmental variables required for it. um data formats and then uh into the schema again one more time before kind of go through save and submit. This is probably the part where actually has the best user experience and showing you what the hell's going on. Um so we've got uh the components. The components here take the longest to generate, right? Uh the reason for that is because
we just upgraded it from uh I think it was it was either GPT or Claude 3.5 to Claude 3.7. Um and the components come out so much better than they did before. Um so you know taking that little bit extra time is uh it's not it's not terrible at least. Um, if they do fail, it retries generating that component up to three times before it gives up on it. Um, and but the APIs and the SQL way quicker at generating than the components. Um, it will generate the uh the components first. Um, just wanted to make sure that we don't get like rate limited um on these.
While that's kind of going through, we're go through move one more of these uh DAPs that I made. So, oh, this is the procrastination pool. Um, essentially, you would um stake tokens and the longer you take to unstake, the more you um uh are rewarded. But you have a fixed amount of time. So, if you procrastinate so long that you missed the deadline, you'd lose your tokens that you staked, right? So, it was just like a funny kind of joke kind of DeFi thing that I made here. Um, and uh yeah, it was uh it it didn't take uh long this one. Um but uh you can see like how much you're uh
you're able to stake here and whatnot. Um and a calculator as well. Um for the purpose of this, I'm not going to go into the actual uh outcome. Ah, come on. Anyway, so it's retrying these. Um, while it's retrying these, I'll go into DAP number five, which is a the roommates republic. Uh, which is a DAO for the household. You know, who's making what payments for the bills, for who's got the doing what chores. Um, yeah, it's it's there's a lot lot to go through here. I mean, if you want to find these, you can find them, as I said, on my Twitter or on my uh on my
ex, sorry, or LinkedIn. Um, I can post them there uh under hashtag 30 daps in 30 days. Um, yeah. Uh, I'm trying to like make sure we can do this full time and I noticed that we're at the half hour. Um, these these won't take much longer. No, it's fine. It's fine. Um I I guess um while these are cooking up um I have a few questions uh I can ask. Uh yeah. So um these credits um like do you get a um starter starter pack amount uh when you sign up and like on average how much how much does it cost um creditwise to
generate a DAP? Um, okay. So, this is um you get if you join the Discord, you get 1.5 um million credits. Um, which is why I was so confused at why I have so little credits um on here. Um, but uh it costs somewhere between like one to maybe three 4 million depending on how big of a DAP you're making. Overall, that costs about between $2 and $10, let's say, um to generate a DAP, right?
Um hopefully these actually succeed. Um I haven't had these fail on me uh while going through um going through the generator uh and with such a small amount of components being generated. So, uh fingers crossed that works. Um but yeah, no, you get a you get some usage for going through uh and joining the discord. Um just submit a ticket. Make sure that you've connected to DAP that first and you've signed the message. That'll add you to uh that'll add you to the um the what's it called? Uh the database. So we can just easily give you the credits there. Um oh my
gosh. Uh, that's that's a shame. Um, yeah. Um, and I need to go and answer the door. All good. All good. Yeah, there you go. Anyway, um, that's a shame that uh that those failed to generate. Um, you can always kind of go back and restart the uh the process. Um, this was actually go back to the start of uh of the web application design. So, um, I'm just going to kind of go off of that now. Um, but you kind of get the
idea, right? Like, yes, it's buggy. Sometimes these things happen um, as we're in early stage, but uh, I mean, I've been doing a DAP a day using this, right? So, I use this to get like 98% towards the end of the project and kind of just like top it off, change little some things here and there. Um, and then push it forward into uh live. So, sometimes it crashes, sometimes it's great. Um, but yeah, I'll figure out why that bugged out today. I It's It's all part of the of being in beta, right? You got to got to fix the bugs that that come out. Um but yeah, I mean the they looked amazing. Like even those um those
ones that you had generated beforehand and were showing um in between, they look like pretty fullfeatured fullfeatured apps. Um which is pretty neat to see. Um only going through like a single tool that um basically guided you through requirements and like helped you test uh and generate components at the same time, I guess. um like once once the app is created um and I'm assuming it's deployed to forcell like like you mentioned and then um is it possible for um the end user to obtain the code that's generated or is that um like hosted by yourselves? You
you download No, we don't host it. Um this is a bit more of like a you know anarchistic point of view, right? It's like we don't want that responsibility. You take it, you have it, right? Here's there's the code. You download it. It's an next.js project. Um, and yeah, you'll have your APIs, your SQL, your um or your Next.js project. Um, and you're able to quite easily deploy that to Versel or change it up to whatever tech stack it is that you're looking to kind of change it to. Um, but yeah, it gets you the bulk away there. And we'll add more uh support for different uh technologies as we go. Um, this isn't something that we got any investment for. This is entirely bootstrapped. Um, so yeah, we've had a it's been a lot of
uh headaches, but a lot of uh, you know, really fun times with this and it's just kind of crazy how uh, how far we can really push this now. Yeah. And I mean, you're you're trying to basically automate the development life cycle, so that's it's no easy feat. Uh, so that's amazing. um how how much progress you've all have made uh up to this point and I guess um you kind of teased at some of the things um but is there anything in particular you'd like to share about the road map for DAP that coming up? Yeah. Yeah, there are. Uh I've got some I've got some really cool ideas for uh for DAP that. So um on Spark currently we have text to 3D model
um and we're kind of looking at different kind of gaming uh style AI models we can integrate there. Um so we'd be looking kind of trying to convert this into a play to earn game generator. Um and then from there into I don't know if I should say yeah well uh I want to I want to convert into a metaverse generator right so um you know people would be able to generate their own games uh their own characters and assets and kind of be able to take them across different uh all those different platforms. Um so yeah there's uh there's quite a few uh quite a bit of the road map to go. Um but uh yeah,
thanks for asking. Yeah. Yeah, of course. Of course. We we always love the alpha in the show. Um and and yeah, looking forward to all the all the all the features you you guys are cooking up there. Um and I guess um seeing as we're um pretty much at time, uh what's um what would you say is the best way for people to um get started with DAP dot? Um, it seems like it's just as easy as signing up, joining the Discord, and getting credits. Um, but if people are looking for support or want to reach out or have future requests, what's what's the best way to do that? Um, you can either message me directly or you can um contact us on the Discord. Um, we're
we've got people around the world. So, two two of us are currently in Germany, two of us are currently in Canada. Um, so we've got quite a good uh amount of uptime, so we can respond generally fast. And uh we'd be uh we we'd love to hear your feedback on where you think that we should improve um and which kind of direction we want uh we should go in. Uh because after all, like yes, I built the bulk of this because uh because I wanted it, right, for one. Um but at the same time like wherever you guys are wanting it to become um we'd love to kind of hear about that because obviously we want to build the best tool for the community.
Amazing. I love to hear that. Um and uh yeah uh just thank you again so much Johnny for taking the time out of your day to to come on the show. I really appreciate it. Um, DAP fat looks like um it's well on its way to automating uh a lot of the a lot of the headaches uh us devs go through. Um just wanted to build build cool stuff. So look, I have a repeating hairline because of coding, right? Yeah, man. I'm getting one too. I'm getting one too. So I want to get rid of that headache.
Yeah. Yeah. Yeah. Yeah. Exactly. I I feel you, man. Thank you. Thank you so much for having me, Narv. It's been it's been a pleasure. I really appreciate it. My pleasure as well. It's been it's been great. Um and for folks that have been watching us live, um I'm dropping a link for you to be able to claim your Bit Badges um attendance badge. Um so if collectibles are your thing, definitely check that out. Um I believe you'll have an hour from now to be able to claim that if you are interested. And uh with that, just want to wish everybody a very happy Friday, happy weekend wherever you may be. And we will catch you back here next week for another episode of Devon Talk. All right. Cheers. Peace.