
Dash Platform Walkthroughs Part 2c - Nick Taylor
Anthony Campolo and Nick Taylor wrap up their Dash Platform tutorial with document creation, updates, deletion, and a full-stack Express and Next.js DApp.
Episode Description
Anthony Campolo and Nick Taylor wrap up their Dash Platform tutorial walkthrough, covering document creation, updates, deletion, and building a full-stack DApp with Express and Next.js.
Episode Summary
In the third and final session of their Dash Platform walkthrough series, Anthony Campolo guides Nick Taylor through the remaining portions of the tutorial, picking up after the contract creation steps completed in the previous streams. The pair work through submitting a note document to the testnet, retrieving documents, updating them, and finally deleting them, with Anthony explaining how blockchain state transitions differ from traditional database operations and why deletion on a blockchain only nullifies data rather than removing history. Along the way they hit familiar testnet stability issues, recreate identities and contracts that had been wiped, and use Mikhail's Platform Explorer to verify their transactions externally. Ryan Gull pops in briefly to suggest registering a name on the Platform Explorer's data contract for better discoverability. The second half shifts to building a minimal Express API server and a Next.js frontend that fetches identity data, demonstrating how the JavaScript SDK can power a complete DApp. Nick closes with reflections on the tutorial's clarity, the strength of the JavaScript SDK despite some neglect, and his cautious curiosity about where decentralized applications and social networks like Nostr might head.
Speakers
- Nick Taylor
- Anthony Campolo
- Rion Gull
Chapters
00:00:00 - Reconnecting and Streaming Setup Hiccups
Anthony and Nick reconvene for the third installment of their Dash walkthrough series, noting that earlier network issues encountered during previous sessions have largely been resolved since then. They commiserate about recent changes to X requiring premium membership for live streaming and discuss how their multi-platform streaming setup handles concurrent broadcasts on YouTube and Twitch.
The conversation establishes where they left off in the tutorial, having created and updated the contract that defines the note schema with an author property. Anthony recaps the journey and prepares Nick to move into the next phase, which involves actually writing data to the contract by submitting documents.
00:02:53 - Recapping the Contract and Document Concepts
Nick pulls up the tutorial blog post on Anthony's site while briefly stepping away to deal with an oven delivery. Anthony fills the dead air with conversational filler before Nick returns and they orient themselves on the next section covering document submission and retrieval.
Anthony draws an analogy to MongoDB to clarify the distinction between contracts and documents, explaining that a contract functions like a schema definition while documents are the actual instances of data being written. He emphasizes that this section is the payoff of the entire tutorial, finally tying together identity, contract creation, and persistent data into something resembling a real application.
00:06:03 - Understanding State Transitions and Broadcasting
Nick reads through the submit note document code, identifying the components involved in creating a note with his identity and broadcasting it to the network. Anthony explains the concept of state transitions in blockchain contexts, contrasting unlimited reads from any node against writes that must propagate through the network to update everyone's view of the chain.
When the script fails on first run, Anthony quickly diagnoses missing client configuration. He walks Nick through the tutorialContract.note syntax, explaining how naming the contract in the client code allows direct property access for write operations. The error reveals that Nick's identity data has been wiped from the testnet, requiring them to recreate it.
00:10:09 - Recreating Identity, Contract, and Top-Up
Anthony notes that the testnet occasionally wipes data in preparation for the upcoming mainnet launch, something that will become a non-issue once real costs are attached to identity creation. They run through the create identity, top-up identity, and register contract commands in sequence to restore Nick's working state.
A small detour addresses a casing bug in the topUpIdentity command name, with Anthony confirming the fix has already been merged. They populate the .env file with fresh contract and identity IDs and prepare to retry the document submission with all the prerequisite data now in place.
00:13:46 - Submitting the First Note Document
Ryan Gull joins the stream and Anthony confirms they've reached the hello world moment. Nick successfully submits the note document to the network, with the script outputting confirmation of the created document. They verify the result by viewing the get documents output showing the Jake Peralta-labeled note.
Ryan suggests they validate the work externally on platform-explorer.com rather than continuing to query through code. Nick navigates to the transactions section, finds his recent transaction at the top of the list, and confirms the contract document is visible on the public explorer, providing a satisfying external verification of the work done locally.
00:18:21 - Mikhail's Platform Explorer Data Contract
Ryan introduces a deeper feature of the Platform Explorer, explaining that the explorer itself is backed by a data contract that anyone can submit documents to. He walks through how registering a name on this contract would replace the long hexadecimal identifier with a human-readable label in the explorer interface.
The discussion clarifies how this name registration creates a more discoverable presence for user-created contracts on the network. Ryan steps away to test StreamYard functionality on the parallel stream while Nick continues with the tutorial, noting he'll attempt the name registration later if time permits.
00:20:47 - Updating the Note Document
Nick copies in the update script and reads through its logic, noting how it retrieves the existing document, modifies it with a new timestamp, and broadcasts a replace operation rather than a create. The first execution fails with a max retry network error, prompting investigation into whether testnet congestion or missing configuration is at fault.
Anthony suggests adding a specific DAPI address to the client configuration to target a known-working node directly. After adding the IP and port, a different error surfaces, leading to the realization that the document ID was never saved to the .env file. Nick retrieves the ID from the explorer, adds it, and the update succeeds with the timestamp visibly changing on refresh.
00:27:17 - Deleting Documents and Blockchain Permanence
Nick walks through the delete script, which retrieves the document by ID and removes it from the active state. After running the delete, they refresh the Platform Explorer to see what happens to the deleted document, finding the identifier persists but the data shows as null with a "can be deleted" flag set to false.
This sparks a broader discussion about the impossibility of true deletion on a blockchain. Anthony explains that while the SDK has no built-in undelete function, the entire history of state changes including the original creation remains queryable through the chain itself. He notes a current UI bug in the block explorer where only the first ten state changes for an identity are visible rather than the most recent ones.
00:31:09 - Setting Up the Express API Server
The tutorial shifts to building a backend, with Nick installing Express and CORS, then echoing the server boilerplate into place. Anthony acknowledges Express is showing its age and Nick suggests Hono as a more modern alternative, but they agree Express remains the lowest common denominator for tutorials since everyone can read it.
Before testing the endpoint, Anthony has Nick run the register name command to ensure the dash name is still active on the network. The server starts successfully and a curl request to the name endpoint returns a substantial JSON payload of identity information, confirming the API can fetch on-chain data through the SDK.
00:34:24 - Building the Next.js Frontend
Nick scaffolds a new Next.js app accepting all the defaults including Tailwind, source directory, and App Router. He creates a new page file and starts the dev server to verify the basic shell renders before wiring in any data fetching logic.
After creating the .env.local file with his name as an environment variable, Nick copies in the updated page component that fetches from the Express endpoint and renders the JSON response. An initial null result is resolved by restarting the Next.js dev server to pick up the new environment variable, after which the full identity payload displays on the page.
00:40:26 - Tutorial Reflections and SDK Assessment
With the full stack now operational, Anthony declares the tutorial complete and invites Nick to share his impressions. Nick praises the clarity of the written tutorial and the value of having copyable code blocks, noting that the main pain points he encountered were testnet stability issues already known to the team.
Anthony floats the idea of extending the tutorial with an open-ended challenge to build a complete note-taking app, drawing on his Lambda School experience with API specifications. They discuss how Nick's web development background made the JavaScript ecosystem familiar territory, and Anthony shares his frustration that the Dash JavaScript SDK is genuinely well-designed but seemingly abandoned by its original author.
00:44:24 - Open Source, DApps, and Decentralized Social
The conversation broadens to the open-source nature of the entire Dash Platform codebase on GitHub, with Anthony pointing out that any closed-source blockchain would be an oxymoron. He highlights the upcoming mainnet launch in thirteen days as a historic moment Nick has caught right at the cusp.
Nick expresses ongoing curiosity about practical DApp use cases beyond financial applications, mentioning he has heard of Nostr in passing. Anthony explains Nostr's decentralized social network model and argues that decentralized social may be the real killer use case, since enough people want out of current social media platforms even if they remain skeptical of blockchain technology generally.
00:47:56 - Wrap-Up and Sign-Off
Nick reflects on the negative reputation Web3 acquired and how the term itself has fallen out of favor, while maintaining his open curiosity about where the technology heads next. Anthony credits Nick's open-mindedness as the reason he was willing to take on the three-part tutorial journey in the first place.
Anthony invites people to follow Nick at nickyt.co for links to his blog, streams, and work at OpenSauced, while Nick reciprocates by mentioning Anthony's AI work and AutoShow project for processing the Dash streams. They sign off with Anthony heading out to pick up medication for his cat, ending the episode at 00:50:37.
Transcript
00:00:00 - Nick Taylor
Just check.
00:00:00 - Anthony Campolo
All right, we're back for the first part C of any of our Dash walkthroughs. Nicky T had a journey getting you to the end of this tutorial, but I think we're going to make it this time. I'm feeling good about this one. How you doing, man?
00:00:19 - Nick Taylor
I'm doing good, I'm doing good. Yeah, like you said, there was a couple snags, but I mean, on the plus side, I think those things got addressed after we ran into them, or they've been improved.
00:00:29 - Anthony Campolo
So, uh, they have been. Yeah, the, the network's been running pretty good since, since we did yours. We, along the way, we learned how to set the specific DAPI address node. Okay, it looks like we're still going to YouTube. Our streaming setup's getting a little funky. X recently, I think, changed something so that StreamYard can't connect to it unless you're a premium member. Do you know about this?
00:00:57 - Nick Taylor
Yeah. Yeah, it happened to me yesterday, or yeah, yesterday I had a live stream. Uh, it has nothing to do with StreamYard. It's, it's, I, I use Restream, but it's literally like if you were to say I want to go live on X, like just with X, it won't work unless you're a premium. Uh, which I think is kind of silly because if they're trying to grow the video platform, I don't like that.
00:01:21 - Anthony Campolo
Yeah, so yeah, and so, and we're also streaming, we're already streaming on Twitch. And Twitch, I'm assuming, can't do two streams at once, right?
00:01:30 - Nick Taylor
Uh, oh, I see what you mean. Because like, uh, somebody else from Dash is streaming on it?
00:01:37 - Anthony Campolo
Yeah, yeah, we have multiple people who have access to the stream account.
00:01:40 - Nick Taylor
Yeah, yeah, yeah, somebody's on the account right now. I don't know what would happen actually if you started a new one, if it would just overwrite the current stream. I have no idea.
00:01:50 - Anthony Campolo
Yeah, Ryan's asking, are you able to stream while we're streaming? YouTube can. So YouTube lets you stream two different things at once. We have two live streams going. I can, I can see them both, both here.
00:02:06 - Nick Taylor
And yeah, that makes sense. That's actually fine. I, I never thought about it for YouTube, but it makes sense because it's a different address. It's not like your Twitch account where it's like it's your profile.
00:02:16 - Anthony Campolo
You have a URL.
00:02:19 - Nick Taylor
Yeah, cool.
00:02:22 - Anthony Campolo
Anyway, yeah, so I was just revisiting your last stream and just for anyone who's kind of jumping in here who's watching, we got up to the point of creating the contract, which is our hello world message, and then updating the contract, which attaches an author property to the note. And then we're about to start writing to it. So, let's get your screen back up.
00:02:53 - Nick Taylor
Cool. Let's go back to the tutorial, I guess.
00:02:54 - Anthony Campolo
Yeah.
00:02:55 - Nick Taylor
Let's get the—
00:02:55 - Anthony Campolo
Yeah, yeah.
00:02:56 - Nick Taylor
Let's do that. You want to actually—
00:02:59 - Anthony Campolo
If you go to ajcwebdev.com.
00:03:02 - Nick Taylor
Yeah. Cool.
00:03:04 - Anthony Campolo
And go blog. The most recent one. Yeah.
00:03:08 - Nick Taylor
Cool. Uh, let's go. Let's get this up. So, okay, so we, uh, you mind giving me one second? Yeah, I'll be back in a second.
00:03:24 - Anthony Campolo
Okay. Yeah, sure. Okay, so it's just you and me, everybody. Hopefully, if anyone is watching this, you're watching it later, and you can fast forward this bit, 'cause I have nothing interesting to say right now. Let's talk about what we did. So, luckily he's got the outline right here for us up. Beautiful outline on my beautiful blog that lets you link individual headers on your page. So in part 1, we just tried to— oh, he's back.
00:04:05 - Nick Taylor
Oh, my camera did something funky. Hold on a second. Yeah, no, sorry about that. I had an oven delivered today, and it was so—
00:04:14 - Anthony Campolo
It's like, like a literal oven, like, yeah, in your house?
00:04:19 - Nick Taylor
Yeah, yeah, exactly. And it's like, uh, they're like, we'll be there between 9 AM and 1 PM, and of course they don't show up between that time and then they showed up at like, I think 1:30 where I basically rescheduled the meeting 'cause I said, I guarantee you that they're gonna show up like literally when my meeting starts. So anyways, I digress.
00:04:41 - Anthony Campolo
Yeah. Cool, cool.
00:04:43 - Nick Taylor
So yeah, so yeah, you were saying, so I honestly don't remember how far we got. We created the contract and then, um, trying to—
00:04:54 - Anthony Campolo
Created it and then updated it. Okay, yeah, so there should be after that will be the submit and retrieve documents.
00:05:03 - Nick Taylor
Okay, cool. Here, so let's do this. I'll just put it side by side. Yeah, can you see that pretty well? Okay, yeah, yeah.
00:05:11 - Anthony Campolo
So this is— so this is what's kind of confusing about this, this nomenclature, is that the contract is like the schema or like, you know, in Mongo, if you have, you know, you're saving objects to your document database and there's some sort of like, you know, you may be saving a user object and that user has like a username and a password and a, you know, address and stuff like that. So like there's the schema, which is what is the user, and then it's actually your user objects itself when a user logs in. So we created the schema, which was the contract, and now we're actually writing data to it. So that is what the, the document is. Or in this, it says note document because our document that we create a schema for is a note with an author. So does that all make sense?
00:05:57 - Nick Taylor
Oh yeah, yeah, yeah, I know, I'm, I'm remembering what the contract we had built was now. Yeah, okay, yeah, yeah, okay, cool.
00:06:03 - Anthony Campolo
So this is like the entire tutorial gets you to this point so that it all makes sense. Like, this is what ties together everything, because now you have an identity with a name. I can create a contract. I could write to the contract. This is the entire— this is actually the app part that lets this be an app with persistent data.
00:06:22 - Nick Taylor
Okay, cool. And so like just looking at the code here, so, uh, just, I just kind of want to read through it. So I get my identity, uh, I create a new note document with my identity, I put in a message, and then we're broadcasting it to all the nodes on the network. Is that what the broadcast here is doing?
00:06:44 - Anthony Campolo
Yeah, the broadcast is— there's something called a state transition, which basically means there's reading and there's writing when you're working with a blockchain. So everyone can read from it like an infinite amount of times because every node has the same history. So you can hit any node to get a read of a historical thing, but a write requires broadcasting a state change that then needs to be propagated through the network so that they can all update and know that this is like a new state of the blockchain. So that's— so broadcast is when you have a write or a state change that happens.
00:07:23 - Nick Taylor
Okay. And like we're doing a create, like you said, but there's— we're not using these at the moment, but we could also update a contract or delete it, I guess.
00:07:32 - Anthony Campolo
Or a note, sorry, not the contract.
00:07:34 - Nick Taylor
Yeah, yeah, the document, exactly. Okay, cool.
00:07:37 - Anthony Campolo
Yeah, yeah.
00:07:38 - Nick Taylor
Cool, and then just some console logging to see what we did. Okay, cool. So, let's go back here. So, I've copied this into the submit note document. Let me just save that. And then we're gonna run it, obviously. So, let's do that. And let's see what happens.
00:07:57 - Anthony Campolo
Okay.
00:08:00 - Nick Taylor
All right, so it's talking.
00:08:03 - Anthony Campolo
I know, I know what happened. I know exactly what happened. After you update the contract, you need to update your client, which we skipped that step because we jumped straight to, straight to this section. Okay, so is there an update?
00:08:16 - Nick Taylor
No, no, no, don't do any of that.
00:08:18 - Anthony Campolo
Oh, okay, there's, uh, so scroll up right there. Yeah, copy paste that and put it in your client.js file. So this is— I'll, I'll explain this in a second. Let's first get in there. So it says tutorial contract, contract ID. So the tutorial contract is where you're basically giving a name to this contract. So go back to your, um, submit note document file and scroll up just a little bit. So you see where it says tutorialContract.note? Yeah, yeah. So the only reason why we can do that is because in our client we said this contract we're going to be calling tutorialContract. And since that tutorialContract has a property called note, we can then select that specific note property with this syntax and say we want to write this data to a note property.
00:09:14 - Nick Taylor
Okay, cool. So let me just scroll down. So we're going to run it now. Okay. Um, Cannot read properties of null.
00:09:25 - Anthony Campolo
So I think— so let's check your .env. I think this might be because we never saved something that we were supposed to in here.
00:09:33 - Nick Taylor
Okay, I guess it's all test stuff. I can show these, I guess.
00:09:37 - Anthony Campolo
Yeah, this is fine. Yeah, cool. Okay, so you have an identity ID, but I feel like there's something else that should be in here. Um, let's see, let me double check my—
00:09:54 - Nick Taylor
Yeah, so we got the testnet. I created my wallet, my mnemonic. Uh, yeah, I remember creating that, and then the label was my username, I believe, like on the network.
00:10:09 - Anthony Campolo
This might be because it's been so long since we did this that some of your stuff has been blown away. We may have to reproduce some of this stuff. So, this shouldn't be too hard. Actually, let's start by— let's do npm run registerIdentity. Capital I for identity. Yeah.
00:10:36 - Anthony Campolo
Create identity, not register. Okay.
00:10:39 - Nick Taylor
Yeah. I can almost do these commands on the fly. Okay, so we're basically recreating my identity because it, it's a testnet, so it gets wiped every now and then.
00:10:52 - Anthony Campolo
Is that the— it's— yeah, it shouldn't be wiped that often, but I know Ryan said sometimes the last couple of weeks that they wipe the whole thing because we're getting ready for like mainnet launch. Okay, so this, this shouldn't be an issue, especially in a month once we're actually like on mainnet and these things require like a dollar or two to create. Then that stuff will kind of stay forever right now. And this is the same issue if we were to do like the Dashmate local setup. You are really only saving like data in the chain itself to this like ephemeral kind of pretend network. Okay, this is good. So let's grab that identity ID and replace it with your other identity ID. Yeah. Okay.
00:11:33 - Nick Taylor
Ba-ba-ba-ba. This guy.
00:11:37 - Anthony Campolo
Okay. And then let's run npm run topUpIdentity. Capital U for up and capital I for identity. Okay. And maybe identities. Yeah.
00:11:55 - Nick Taylor
Cool. Yeah. Let's go in the package.
00:11:57 - Anthony Campolo
Oh, okay. Yours was back when that U was lowercase.
00:12:02 - Nick Taylor
Okay. Let's just double check.
00:12:04 - Anthony Campolo
Yeah. Someone told me to fix this. Not technically correct camel case. Okay. Yeah, yeah.
00:12:14 - Nick Taylor
Gotcha. Okay, cool.
00:12:16 - Anthony Campolo
And then this needs to— you need to add some credits to your identity. So, that worked. That's fine. Cool, cool.
00:12:24 - Nick Taylor
That's working itself out. So, just to be clear in case people are wondering, the tutorial is still working fine. It's just we were just recreating some data.
00:12:33 - Anthony Campolo
That's all. Yeah, exactly. Okay, that's all good. I don't think we need to redo— or actually, let's just do it. Let's run create contract again. Okay. So that we have totally fresh set.
00:12:54 - Nick Taylor
How is it? Register contract. Yeah. Okay.
00:12:59 - Anthony Campolo
Sometimes it says create, sometimes it says register. Cool.
00:13:04 - Anthony Campolo
And grab that contract ID and put that in your .env. Okay.
00:13:15 - Anthony Campolo
And then we need to update the contract and then we can submit the note document.
00:13:22 - Nick Taylor
Okay. Oh, this is still running, it looks like. I remember last time I stopped it, remember? And then it's, uh, something didn't complete, so I'm just gonna let it, uh, we'll play some Jeopardy music or something like that. Okay, there we go. Okay, so now you said update. Uh-huh.
00:13:46 - Anthony Campolo
All right, yeah, I think, I think Ryan's trying to join the stream. He's asking me if he's gonna blow up his other stream if he leaves. I've told him like three times, like, no, you can leave, trust me, it's gonna be fine. StreamYard, it just runs. Like, there's an end stream button, but if I were to leave right now, you could stream for the next 48 hours without me. Yeah, yeah, cool, cool. Um, here we go, here he is. All right. Oh no, your other stream went down! No, I'm kidding.
00:14:19 - Rion Gull
Oh my God. How's it going, Nick?
00:14:22 - Anthony Campolo
Okay, now since we had a document, I think we just got to the point where we wanted to be. So we had to go back and recreate his identity because, um, it seemed to have been blown away.
00:14:33 - Nick Taylor
Okay, yeah, so yeah, nothing big. We, we just ran a few commands just to get stuff back up to snuff so we can create the document. And we're submitting the note document now.
00:14:48 - Anthony Campolo
Yeah, so this is— we're about to write the hello world. You showed up just in time for hello world, Ryan. It's the most important part of this 3-part tutorial experience. Yeah.
00:14:57 - Rion Gull
All right, um, and then I saw some— I saw some notes on Discord that you were doing Dashmate stuff.
00:15:05 - Anthony Campolo
That was just in case. We got it— we had it running in the background, but it looks like we're not gonna need it. Okay, cool.
00:15:13 - Rion Gull
I was gonna say I might not be in the stream the whole time this time, but I might be popping back and forth. But I wanted to suggest that maybe at the— when you get to the point where, like, we don't need to go through, like, retrieving all the identities, I think it would be more, more interesting for everybody, including Nick, to just kind of see it on platformexplorer.com or whatever it is. Okay. Seeing those things, um, show up there externally. Um, and then if you had the time, because of time saved from retrieving via code, you could try to register a name on, uh, Mikhail's data contract. Do you know what I mean, Anthony?
00:16:03 - Nick Taylor
No, I don't know what you mean.
00:16:04 - Rion Gull
So like Mikhail, um, he has a data contract for the Platform Explorer site itself. So if you go there, you can see, um, you can see certain named contracts that are registered to his Explorer, and then that gives— and then the Explorer gives them a name instead of just, um, the big hex string. Is that making any sense to you?
00:16:31 - Nick Taylor
Um, I mean, yes, but I need to see it.
00:16:33 - Anthony Campolo
Yeah. Uh, who's—
00:16:36 - Rion Gull
You're sharing your screen, Nick? Yeah, that's right. Open, uh, pop open a, uh, well, let's see, before you maybe do whatever you were doing and then—
00:16:46 - Nick Taylor
Okay, yeah, so I, yeah, I was just continuing, uh, so we were able to just recap real quick. Um, so I submitted the note document successfully, it got created on the network, and that's just output example. So now I'm just creating the get documents script here. Just copy this in. And I'm just gonna go ahead and run that. And I'll just— let's see what we get here. Okay. So, Jake Peralta is the label I have in my .env. And this is the document I just created. The hello world document. So, this is our note document is successfully on the network.
00:17:26 - Rion Gull
Okay. So, that right now would be a good time to like double-check that with the Platform Explorer. So, if you could open a web browser. Yeah. And go to platform-explorer.com.
00:17:40 - Nick Taylor
Okay. There we go.
00:17:45 - Rion Gull
And then go to— yeah. Go to— let's see. What did we just do? We did the get documents. Okay, yeah, so yeah, go to the data contracts, or maybe transactions would probably be the easier way to get to it. Okay, transactions, and click the top one. That was probably you.
00:18:14 - Nick Taylor
And then contract documents. Okay, yeah, that's me. There you go. So boom, so we're on the network.
00:18:21 - Rion Gull
On the network. So what I was saying is now go back to the home page for a minute. Okay. And actually go to Data Contracts.
00:18:36 - Nick Taylor
Okay.
00:18:40 - Rion Gull
So Platform Explorer. Platform Explorer. Scroll down. There's a data contract. This is it. This itself is a data contract for the Platform Explorer so that you can now click, click schema. Okay, and so this is the data contract that, that Mikhail wrote. And he submitted it to the network. And this is a data contract that anybody can submit documents to.
00:19:20 - Nick Taylor
Okay.
00:19:20 - Rion Gull
And the document needs a name and an identifier. The name is something that, that you, the user, give to your, uh, to your data contract. So like, okay, you've written a data contract, the Hello World data contract. And in order for the Platform Explorer to say, hey, this is a— this is Nick's data— Nick's Hello World data contract. Yeah. Um, in order to say that to everybody who might be interested, instead of— so that the Platform Explorer, instead of showing your data contract as just a big string of hexadecimal or whatever it is, it would then— the Platform Explorer backend would then say I'm actually contacting the network and I'm looking up this data— I'm looking up this other data, this Nick's data, Nick's Hello World data contract. And Nick has registered a name that says this is Nick's data contract, Nick's Hello World data contract. So if any of that made sense, you could, you could try that if you have time. But, but anyway, I might pop back in. I'm gonna jump back to the other stream just for testing StreamYard functionality myself, and then I'll pop back here in maybe 15 minutes or so.
00:20:47 - Anthony Campolo
Cool, cool. Stream Hopper, there's that— there's the start stream and end stream button. Did you figure out whether people who aren't logged in have access to that button?
00:20:56 - Rion Gull
I don't know if they have access to the, to the start and end stream button, but I know they don't have access to the to like add and remove people from stage.
00:21:04 - Anthony Campolo
Yeah, they probably can't end the stream then. They probably can't end it.
00:21:09 - Rion Gull
So, all right, I'll be back in like 15 minutes.
00:21:14 - Anthony Campolo
Cool, sounds good.
00:21:17 - Nick Taylor
Cool, so, uh, I guess we'll update a document now, or— cool. So again, just, uh, created the— well, it— the, the tutorial is pretty straightforward here. We're typically just creating a new file, which is a script we're going to run, and then we just copy in the contents here. So I'm going to go ahead and copy this. Easiest tutorial ever. Yeah, so this is to update it. So if we look at this, uh, I get my identity again. Uh, I'm saying go and get my tutorial contract note I'm guessing we're just saying a get to get— there's only one right now, so that's why this array, we're just saying get the first one. Um, and then we have that document, gonna update it with— I'm guessing we're just updating it with the date because the label is the same. And then we broadcast it, and instead of a create, this time we're passing in a replace with the array of documents, which is just the one document. Then that seems pretty straightforward. Cool. Let's go ahead and save this and boom, come back here and then let's run the script now. This will probably take a second and then we should see. Okay. Wait, let's see what happened here. Deprecation warning. Address is not permitted. Max retry. Okay, so it's a retry. So it couldn't— there was a network error, basically.
00:23:00 - Anthony Campolo
Yeah, this is frustrating. So we're at the point now where it's not going to make sense for us to even use the local Dashmate thing that we set up because I don't think that's going to have any of the data we've created up to this point, like the contract and the note document stuff. Gotcha.
00:23:17 - Nick Taylor
So, okay, so I guess the network, the testnet's too busy right now.
00:23:22 - Anthony Campolo
Or there's one, so there's one other thing we can try, which is setting the, the specific DAPI address. Um, yeah, so go to your client. Cool. And you're gonna create I think it's in between network and wallet. You could put it there. It's going to be DAPI addresses.
00:23:48 - Nick Taylor
Yeah. Okay, cool.
00:23:54 - Anthony Campolo
And then you're going to do an array with some quotes, and then we're going to write an IP address in there.
00:24:05 - Nick Taylor
You want me to just make up one?
00:24:07 - Anthony Campolo
No, no, no, I'm about to give it to you. Hold on. Yeah, there's this one video that we did earlier, and every time I need it, it's like, go back to that video and find the freaking screenshot. But, um, here we go. Okay, so it is 44.227.137.77, and then colon for the port 1443. Can you read that back to me?
00:24:45 - Nick Taylor
Yeah, uh, 44.227.137.77 colon 1443.
00:24:56 - Anthony Campolo
And then it's DAPI addresses. OK, let's give that a try.
00:25:01 - Nick Taylor
So run that command again. OK, so is this, is this hitting a specific node then, or is that what's happening?
00:25:08 - Anthony Campolo
Yeah, specific IP address. I'm assuming that means it's mapped to a specific node. I really couldn't tell you for sure.
00:25:15 - Nick Taylor
OK, so didn't like that either, but what is— it's not a— this one's not a retry it.
00:25:22 - Anthony Campolo
Did we, did we ever save the document ID to your .env? I don't think so.
00:25:29 - Nick Taylor
Okay. Let's go check that. So, I'll have to get the documents first, I guess, again?
00:25:36 - Anthony Campolo
Yeah. Yeah. Otherwise, unless you still have the history in your terminal, which you probably don't. Yeah.
00:25:43 - Nick Taylor
Okay. Cool. Let's get— get documents. Okay. This doesn't—
00:25:52 - Anthony Campolo
Okay, so if you go back to your get documents file.
00:25:58 - Nick Taylor
I'm pretty sure I have it in the Explorer.
00:26:00 - Anthony Campolo
Yeah, you do, that's right.
00:26:02 - Nick Taylor
Okay, there we go. So I need the identifier here, is that it?
00:26:07 - Anthony Campolo
Yeah, yeah, you gotta put that in your .env so that knows which document you're trying to update.
00:26:12 - Nick Taylor
Okay, okay, so and it's just document ID? Yep. Okay. Cool. All right. That should do it. So, we might not need the address. Let's just keep it there.
00:26:25 - Anthony Campolo
Because we got a different error message when we used it.
00:26:28 - Nick Taylor
So— All right. So, let's update. This is hanging a little longer. So, I'm a little more— feeling a little more positive about this one. So— Yeah.
00:26:43 - Anthony Campolo
I know. That's definitely a thing.
00:26:50 - Nick Taylor
Yeah, well, it's not your first rodeo, so you're like, oh yeah, I've seen this before.
00:26:55 - Anthony Campolo
What's going on? Yeah, yeah. I've been realizing this is— I've noticed there's a couple where things were kind of broken and I was like, I can just skip that command. But then looking back, I'm like, oh, that's probably because I forgot to save the .env. Because the way the workflow is set up sometimes. People don't always realize it, especially for the contract and document IDs.
00:27:17 - Nick Taylor
Okay. All right. So yeah, so now if I come here and refresh, it says, uh, 8:31 here. That time should be different now if I refresh. And it is. Okay, it says hello again. Yeah. Oh yeah, and hello from me. Yeah, okay, it's true. Cool. All right, so the update worked well. Let's go back to the tutorial. And okay, yeah, so this is what we just have on our screen right now. Okay, now that we can create, read, and update our notes, all we have left to do is delete our notes. All right, all that hard work down the drain. Here we go. Cool. It's like, congratulations, now let's remove it all.
00:28:04 - Anthony Campolo
It's like, you know, when you do your, you know, your AWS tutorial and always make sure you tear down your resources at the end.
00:28:11 - Nick Taylor
Yeah, yeah, cool. So I'll just read through here real quick. So we're getting my identity again. We only have the one document, so that's why we're always— we're destructuring just the first array element, and we're getting them based on where the document ID equals what I have for document ID. And then we're just saying go ahead and delete that document we retrieved. So then what we can do is, let me go just copy the command now. Let's copy that and boom. While that's running, if I come back to the Explorer here, this is the document that we just updated. When I refresh, I don't know what the Explorer does, if it gives a 404 or what it does.
00:28:55 - Anthony Campolo
Yeah, we'll find out. Because the, the identifier will still be there. Yeah. Okay.
00:29:06 - Nick Taylor
Yeah, that's, that's what I was gonna say, because it's the— because it's blockchain, it's like you don't delete the history. Like, it's—
00:29:14 - Anthony Campolo
Yeah, yeah, there's really no such thing as deleting on a blockchain. It just updates the state so that the data that was there is no longer there in the, the place where it would have been. So let's see. Happens. Okay, so it's null, keeps the identifier, but it just says null. Yeah, yeah, yeah.
00:29:31 - Nick Taylor
So cool. And can this be deleted? No, it's false. That's because it's already been deleted. Um, can you, uh, this is just a general question, but can I undelete this because it's like, oops, I made a mistake?
00:29:45 - Anthony Campolo
Let me, um, in theory you'd be able to find the history of the creating of the note that was deleted, you'd be able to find the state change that was the creation and you could find it that way to recreate it. There's not like a built-in way in the SDK to do that as far as I know. I would be very surprised if that ability was in there. Because the idea being that like if you're deleting something, you should know that you want to delete it just like anything else. But with blockchain, it's actually impossible to delete anything. So the history is there. You could find it. It may not be super straightforward, but every state change we've done is all recorded and attached to your identity, and all that's visible through the block explorer. The identity will only show you your 10 most recent state changes. Actually, no, it's worse than that. Your 10 first state changes, and then 11 on, you can't see in the UI right now. That's kind of a bug. I'm not sure if Mikhail knows about it. I'll let him know about it.
00:30:52 - Nick Taylor
I don't know. Yeah, I was just curious, like, going off script here, but if I ran update note document, I still have the document ID, which is this. I wonder if updating it—
00:31:03 - Anthony Campolo
Yeah, it shouldn't have any because there's no note document to update, so it shouldn't work.
00:31:09 - Nick Taylor
Okay, so yeah, it didn't work. Cannot read properties. Okay, so even though— okay, so even though the identifier is still there, the blockchain just knows like, hey, I'm not getting rid of this, but you've already deleted it. Okay, cool. All right, just going yellow off script here. Yeah, good questions. Okay, so now we got to set up a backend server with Express here. All right. Install express-cors. Cool. And I could have just copied that, but okay. Let's echo the API server. And there we go. Okay. I haven't written Express stuff in a while, but okay, cool.
00:31:59 - Anthony Campolo
Yeah, me neither. I tend to just default to it for tutorials. I assume everyone's gonna use whatever server they want anyway. But then if it's in Express, then everyone can figure out what it's doing since everyone knows Express, even though it's, you know, like the worst server to use these days.
00:32:16 - Nick Taylor
Yeah, probably a Hono would probably make more sense these days.
00:32:18 - Anthony Campolo
But, um, Hono. Yeah, I'm just starting to get into Hono. I'm halfway through a tutorial.
00:32:26 - Nick Taylor
Um, okay, cool. So we've got a route here. So if you go to /name/some identity name, that'll load a page assuming that was a dash file. I forget what we did in a dash file. Okay. It doesn't exist.
00:32:40 - Anthony Campolo
So, it's not a dash file. That's your name. So, when we registered the name. Oh, yeah, yeah. That's jperalta.dash. And actually, before we do that, let's run the register name function again. Cool. To do npm run registerName. This may error, in which case that's fine. But I want to make sure your name is actually on there or else this is not gonna work. Cool. Because we already set up the identity and gave it credits. So, if the name doesn't exist, it's just gonna recreate the same name you had back when we did part 2. But if you do have the name, then this will error. So, either way, we should be good after this. Then you can run the server. It's been a while, so it looks like it's doing something.
00:33:34 - Nick Taylor
Yeah. Okay. And then if I curl there—
00:33:36 - Anthony Campolo
And then after you run the Express server, or there's a curl command, but you have to update with your actual name. You can't copy paste it. Yeah. Okay.
00:33:45 - Nick Taylor
So it looks like that ran successfully. So let's copy this and then I'm gonna, I'm gonna just go ahead and stop the, well, I'll leave that anyways. Let's just start this one.
00:33:59 - Anthony Campolo
Yeah, I can tell you how to stop that gracefully in a second.
00:34:02 - Nick Taylor
Okay, all right, let's run Express. Okay, that's running. Let me just come to another terminal. So if we come here and then let's just put Jake Peralta. And I guess you could read the env file, but cool. All right, cool. So our API works. It found me. There's a lot of information in here. I'm just— Try to go to the start. Okay. Cool. So, we've got a minimal API running. And we can find my user. Cool. All right. So, we're gonna create a Next.js app now. And cool. So, this will be our frontend. And I'm assuming we're gonna hit the API. I'm just gonna accept all the— all the defaults for, uh, for Next.
00:34:56 - Anthony Campolo
Is that okay? Yeah, just make sure to use Tailwind when it asks you. Yeah, yeah, cool.
00:35:02 - Nick Taylor
Source directory. Yeah, sure. Actually, that's gonna be yes. Okay, cool. Use all the defaults except— okay, yes. Yeah, it probably would still, still work without a source directory, but you're using App Router, uh, yes. Cool. Okay. Sure. Cool. All right. So, that's gonna install. That'll take a second. And we're gonna create a new page. So, let's do that. Cool. So, page. Yeah.
00:35:41 - Anthony Campolo
And then you'll start your dev server. And the page right now doesn't have any info. This is just like a basic shell to make sure your frontend is set up.
00:35:50 - Nick Taylor
Okay, so here we go. Main, Next.js. Okay, cool. All right, that's good. So, we got our class names, little Tailwind going on. Okay, I'll just save that and then anything else before we start it up? No? Okay, cool. Should be good. Oh, I didn't create it in a Next folder. It'll still run but—
00:36:17 - Anthony Campolo
No, it did, because the way the npx create-next command— so cd into this, it did do it. Oh yeah, yeah, it did.
00:36:25 - Nick Taylor
Sorry. Yeah, yeah, yeah, cool.
00:36:27 - Anthony Campolo
That had other command setup, so it would do that. Cool.
00:36:30 - Nick Taylor
All right, and our dev npm run. Cool. All right, so we got our website. All right, we've got a beautiful website here. Oh, yeah. Okay. So, let's continue on in the tutorial here. Okay. So, we just need to set up a couple things here. So, now let's include logic to fetch our name. Okay. So, let's do .env.local. Does that exist in— I don't think it created it.
00:37:02 - Anthony Campolo
Not yet. That's the command. The echo command is for—
00:37:05 - Nick Taylor
Oh, sorry. Yeah. I should just learn to read. I'm gonna let that run. I'm just gonna create another terminal.
00:37:13 - Anthony Campolo
Make sure you're in that— hold on, hold on. Oh, yeah. Next. CD into the next directory.
00:37:17 - Nick Taylor
Yeah. Yeah. Good call.
00:37:19 - Anthony Campolo
Do you have an alias so you don't have to write CD?
00:37:23 - Nick Taylor
Yeah. It's a feature of Linux. I'm on Mac. But I can send it to you after. I forget what it is. I have it in my— if you have something like ohmyzsh, it does it automatically, but I removed— okay, yeah, I'm— there's, there's other—
00:37:42 - Anthony Campolo
Yeah, I'm not sure if I like it because I, I kind of like the explicitness of knowing when I'm changing directories.
00:37:49 - Nick Taylor
Yeah, yeah, exactly. Okay, so that created the .env.
00:37:53 - Anthony Campolo
Yeah, I just noticed that how you were just typing the directory name and then it was cd, so I'm like, how is he doing that?
00:38:01 - Nick Taylor
Okay. Wait. Did that— I don't see my .env.local. Let's try that again. Why is it not copying? Copy. Okay. There we go. All right. And then in here, I'm gonna put my Jake Peralta, I guess.
00:38:20 - Anthony Campolo
That's right. Yep. Yeah. And this is 'cause it's gonna set it with the environment variable in the endpoint. So, you don't— 'cause I used to have it just hardcoded. You'd have to go in and actually change your endpoint name, but this will ensure that it's gonna be matched to your label that you've created. Okay, cool. All right.
00:38:39 - Nick Taylor
So, I copied the updated code for the page. And so, essentially, we've got the— we've got our API running right now. That's on localhost 3— actually, is the Express server running on 3001?
00:38:54 - Anthony Campolo
Should be.
00:38:57 - Nick Taylor
Let's see here. I know this stopped it. Okay. Yeah, no, it's good. It's running. Yeah. Cool. All right. So, yeah. So, basically, we're gonna go and say go hit that endpoint for my particular user. We're gonna get the JSON payload and then we're gonna set our using some React setState, useState. We're gonna just get some blockchain data and then we're just gonna barf it out on the screen.
00:39:20 - Anthony Campolo
So, yeah. This is your React 101 right here, baby. Hit that endpoint, throw that data on the screen. You're done. All right, print, ship it. Cool, cool.
00:39:31 - Nick Taylor
All right, it said null, but let's see why is that.
00:39:35 - Anthony Campolo
So I would, um, restart.
00:39:38 - Nick Taylor
Yeah, I'm gonna restart, I guess. Yeah, the, uh, um, the— that Express server is still running, but we can, we can restart it. Let's restart it anyway, and then we'll restart Next.js as well.
00:39:53 - Anthony Campolo
Yeah, I think Next.js probably needs to restart to save the environment variable if I had to guess. Yeah, there we go. That's a common thing for front ends. Yeah. Okay, cool.
00:40:02 - Nick Taylor
So, we're just basically spitting out the entire data here now. But we could make it prettier if we wanted to. But we're just for the tutorial purpose, we're just spitting out the JSON. That's pretty cool. So, that's pretty sweet. So, we're able to get my user's information. And then we're just loading it into a frontend. So, simple API hooked up with that.
00:40:26 - Anthony Campolo
This is the end of the tutorial. This is kind of like now if you wanted to, you could create more endpoints for like your other thing. You could build a full, full-stack Dash app kind of from here on out. But this is where the tutorial ends. And we're already, you know, at the hour into part 3. So, we could probably, you know, call it quits once we get some kind of like last thoughts for for you on Dash platform and all that.
00:40:52 - Nick Taylor
Yeah, so, well, I guess the first thing I'd say is the tutorial you've made or updated is pretty clear. And it's, I think it's good that you have the copy sections and stuff. I do like to write out stuff sometimes, but it's, you know, when there's a lot of stuff—
00:41:11 - Anthony Campolo
It'd be a lot of code to write, yeah. Yeah, exactly.
00:41:16 - Nick Taylor
Yeah, I think the only problems I had with— this is our third session, but the main issues are stuff you were already aware of, like the network. The testnet wasn't stable at some point, so that basically caused some issues while we were doing the tutorial. But like you mentioned, I think a lot of that's been ironed out. I found it pretty straightforward. Like I said, I have a bit of experience with blockchain. I kind of dabbled in creating some dApps a couple of years ago, but it's not an ecosystem I'm immersed in at the moment.
00:41:57 - Anthony Campolo
Do you feel like you would have a better idea of how to build a dApp now having gone through this experience?
00:42:03 - Nick Taylor
Yeah, I mean, it seems pretty straightforward. Essentially, we've created documents. So if you were going to create an app, given this tutorial, we could basically create a note app where I say I want to create a new note, save it. We could hit an API that's accessing those documents, and then we could use a frontend like in Next.js or whatever you want, and then create the UI to say, okay, I'm creating a new one. So then we're creating it on the chain. Okay, I want to go update my notes. So then we're going to update it on the chain and then delete, obviously, if you're done with that note. So I think what could be interesting for the tutorial is, and I guess you could leave it open-ended at the end, but maybe, and now try and create your own note app. I think that could be interesting.
00:42:54 - Anthony Campolo
Yeah. Kind of give an outline of how you would do that. You need to create these endpoints to make it have something that we used to do when I was in Lambda School. They would be like, it would explain API you have to build, and it would be like, okay, yeah, yeah, exactly.
00:43:09 - Nick Taylor
But, um, but yeah, no, it's, it's been, uh, it's been pretty straightforward, I think. Uh, you know, um, I, I definitely think too, like, I've been doing web dev for a while and like Node, so like familiar with the ecosystem, like not, not the blockchain ecosystem, but like just web dev in general. So I think that helped me move pretty quick.
00:43:31 - Anthony Campolo
Totally. And that's the whole point of this, this exercise. That's why they even brought— that's why Ryan brought me on in the first place, is for the JavaScript stuff. And I've been telling him, I'm like, you know, there's a couple— like, there's a couple small but consequential issues with the SDK, mostly related to testnet. But like, from— it actually is really good. Like, it's, it's very clear. There's like the functions you want are exactly what you want them to do. You know, they're named well. Like, I think that the JavaScript SDK, I think they did a really good job with it. I think it's unfortunate the team kind of let it, just kind of let it go. They were like, here you go, you know, hopefully it works. And, you know, I just, I wish I could just find whoever on Dash actually built this thing in the first place, if they're still around, and be like, hey, can we just like do a session where we fix some stuff? Because it's like, it's pretty dang good, actually.
00:44:24 - Nick Taylor
Yeah. And I guess a question about like making improvements is, I didn't check, but I'm assuming a lot of this stuff is open source, like the platform.
00:44:33 - Anthony Campolo
Yeah. Like it's, everything is open source. Yeah. That's kind of the whole point of blockchain. If you can't read the code, it's not blockchain. Pretty much how it works.
00:44:41 - Nick Taylor
Yeah. It'd be kind of counterintuitive to say it's closed source, but it's decentralized software. Yeah, exactly.
00:44:49 - Anthony Campolo
It doesn't, it doesn't actually make sense. Yeah.
00:44:51 - Nick Taylor
Yeah, but all I have to say is like if people did want to make improvements, they can create issues and like, you know, maybe even fix some of the stuff.
00:44:59 - Anthony Campolo
So like, yeah, yeah, there's the, there's the platform, you know, just dashpay/platform on GitHub. You don't need to go to it, but that's where all of this code lives, is all these packages like the Rust package, the JavaScript package, the individual components of those, which is like Dash and Dappy and stuff like that. So like this huge ecosystem of different stuff that got built. That's all kind of leading up to Platform. That's gonna launch in 13 days. So you're like right on the cusp of history. Dash history.
00:45:34 - Nick Taylor
Cool, cool, cool. Yeah, it's, uh, yeah, curious to see where it goes. Like, like I said, I, I said this like in the first stream, but I'm always interested in new technologies. I'm not I'm still skeptical a bit, uh, about blockchain. But, but having said that, I own some, some cryptocurrency, which is not— which is the contradiction. Same.
00:45:55 - Anthony Campolo
If you're skeptical, you would not be putting money into it.
00:45:57 - Nick Taylor
Yeah, yeah, yeah, yeah. No, I, I put it in a while ago. And but, but also I'm bringing that up too because like there's two things. Like, like there is cryptocurrency, but that doesn't necessarily mean like, you know, like I guess if you're building a DApp thing, it's different.
00:46:15 - Anthony Campolo
Yeah. Because people own cryptocurrency, but actually interacting with data saved on chain, unless you have an NFT, no one does that. Yeah.
00:46:28 - Nick Taylor
I'm just curious what people in general build in terms of DApps. Financial apps make a lot of sense because it's the blockchain, but I'd be curious to see what other things people do create, you know, like a game or like, uh, like, like a practical thing, like the note-taking like we were talking about. I've heard of Nostr. That name sounds familiar. I'm not sure if I've heard Nodder talk about that.
00:46:55 - Anthony Campolo
Yeah, N-O-S-T-R. It's, um, it's not blockchain, but it's, um, it's a decentralized, like, kind of Twitter replacement, which obviously everyone was trying to build. You know, you had Bluesky, you had Mastodon. And, um, this one was— I really liked it because it was basically just like, it is a similar experience to blockchain where it's like you just kind of create like a private key and then you have access to this like decentralized network and then different people build front ends on it. But, um, I think there's still a lot of stuff to be done in decentralized social networks, and I do think that more people are going to be on them whether they realize it or not eventually as the UX kind of gets better and better. But I would say that's probably the real killer use for DApps, because whether people want to buy into this whole blockchain thing, enough people want to buy out of the current social media thing that exists.
00:47:56 - Nick Taylor
I feel like, yeah, I'm still curious where things go. I mean, obviously, Web3, as it's been coined, got a really bad rap at one point.
00:48:11 - Anthony Campolo
Just like, that's why it's gone now. You're not gonna hear anyone use the term Web3 anymore.
00:48:16 - Nick Taylor
Yeah, trust me. Yeah, yeah, no, totally. Uh, because yeah, there's, there's a stigma associated with that. And like, yeah, I know. Yeah, no, I'm— yeah, I'm just curious where it goes, you know. Like, uh, it is a technology, so like like I said, I'm always interested in things, so that's why I poke around and stuff.
00:48:38 - Anthony Campolo
You're open-minded, so that's why. That's why I knew I could rope you into this thing. Like, Nikki T. Nikki T's chill. Do some blockchain. Yeah, thank you so much, man. Really glad we went on this long 3-part journey with you. And yeah, if you're ever looking for extra work, we always got code that could use some slinging it.
00:49:00 - Nick Taylor
Dash, cool, sounds good, man.
00:49:04 - Anthony Campolo
All right, uh, why don't you, um, why don't you drop your— why don't you drop your Twitter for people who want to follow you?
00:49:10 - Nick Taylor
I don't know why I can't post in the comments in StreamYard. For some reason.
00:49:14 - Anthony Campolo
Well, I know your stuff, it's just Nikki T Online, right?
00:49:18 - Nick Taylor
Yeah, you're just, uh, if you drop nickyt.co, that, that'll have a link to everything. That's like my blog, and then it links to the streaming and stuff. So, yeah. I've been streaming a lot. I usually have— I'm a little busier lately with guests. I have more. I kind of booked a bunch. But, yeah, live streaming with guests. But also live streaming work because I work in open source. And also just digging into stuff. Yeah. You got Open Sauced.
00:49:50 - Anthony Campolo
The coolest place to learn about your open source repo needs.
00:49:55 - Nick Taylor
Thank you for the plug. Yeah, you got to come on my stream again sometime. We'll hang and we'll mess around with some stuff. Anthony's not selling himself on the stream here, but he's been doing some really interesting stuff with AI as well. I know he's big into AI.
00:50:13 - Anthony Campolo
I use it for all the Dash streams. Every stream we do, I run it through AutoShow now. Oh, cool, cool, cool. Awesome.
00:50:20 - Nick Taylor
Nice. Cool.
00:50:22 - Anthony Campolo
All right, well, I gotta go get some medication for my cat, so I'm gonna get out of here.
00:50:29 - Nick Taylor
Okay, sounds good, man. Take care and, uh, say hi to your cat for me.
00:50:33 - Anthony Campolo
All right, have a good one, everyone.
00:50:35 - Nick Taylor
Bye. Later. Bye.