skip to content
Video cover art for A Few Frameworks More for Dash Incubator - 3
Video

A Few Frameworks More for Dash Incubator - 3

Anthony Campolo adds Svelte, Solid, Lit, and Preact examples to Dash Incubator while restructuring the monorepo and debugging a Lit component.

Open .md

Episode Description

Anthony Campolo continues building Dash Incubator framework integrations, adding Svelte, Solid, Lit, and Preact examples while restructuring the monorepo and troubleshooting a stubborn Lit component.

Episode Summary

In this third installment of the Dash Incubator framework integration series, Anthony Campolo picks up from previous episodes where React and Vue examples were established, working through a planned set of seven sample frontend applications connecting to a shared Express API. He walks through the project's structure, cleaning up package.json files across the monorepo, verifying the wallet creation script and environment variable setup, and confirming the React, Vue, Svelte, Solid, and Preact examples all work end-to-end against the Dash testnet. Throughout the build, Anthony reflects on how ChatGPT generated nearly all the framework variants on the first try, with the notable exception of Lit, which became the episode's debugging puzzle due to JavaScript decorator support and older syntax patterns. Conversations with viewers including Fuzzy Bear and Ryan branch into the broader meaning of Dash as a functional DAO funding open source work, the relationship between DPNS and traditional DNS, and how projects like Tim Berners-Lee's Solid and Bluesky echo Web3 ideals without using the term. The session ends with Lit still misbehaving but a clear plan to revisit it.

Speakers

  • Anthony Campolo

Chapters

00:00:00 - Setting the Stage and Project Scope

Anthony opens episode three from a different setup due to family visiting and outlines the plan: continue from React and Vue by adding Svelte, Solid, Lit, Preact, and a vanilla JavaScript example for seven total. He explains why Alpine got dropped (no Vite starter) and TypeScript was pulled out, and greets early viewers in the Dash community along with an accessibility expert from Microsoft Learn.

The conversation drifts briefly into accessibility feedback on Anthony's website, particularly around link styling where removing underlines leaves color as the sole indicator. He acknowledges some undocumented CSS tweaks that broke parity with the original template and notes he wants links to both change color and underline on hover, setting up the housekeeping mindset that runs through the rest of the session.

00:04:14 - Walking Through the Monorepo Structure

Anthony reviews the project layout, demonstrating how a fresh user would clone the repo, install dependencies, copy over the example environment file, and run the create-wallet script. He explains that the network defaults to testnet and walks through how the client module was split in two so pieces can be imported independently, while flagging that the wallet creation flow could be smarter about detecting an existing mnemonic.

He follows his own README instructions step by step, popping the generated mnemonic into the env file and confirming the path forward. Along the way he gives his verdict on package managers, recommending pnpm and dropping yarn instructions entirely, while leaving npm support in place for newcomers.

00:08:51 - Express Server, React Frontend, and Vite Environment Variables

After fixing a missing package.json reference, Anthony gets the Express API serving and curls the name endpoint with a test domain, confirming it pulls in the Dash identity correctly. He then attempts to wire a server URL through environment variables into the React frontend but pauses, noting React 18 and Vite handle env vars differently than older Create React App conventions.

He moves on rather than getting bogged down, hardcoding localhost for now and acknowledging deployment to Railway is a task for another day. The React example renders successfully, and he transitions to verifying the Vue example, where he spots a small inconsistency: Vue displays "null" before fetch where React simply showed blank, which he files away as a polish item.

00:13:36 - Svelte, Solid, and a Tour of ChatGPT-Generated Code

With Vue confirmed working, Anthony tackles Svelte and Solid, noting that nearly every framework variant was written by ChatGPT and worked on the first attempt. He's struck by how consistently the model translates variable names and patterns across frameworks when viewed side by side, saving him from writing half-hearted versions for half the frameworks.

He mentions an upcoming Dash Weekly appearance to discuss using ChatGPT for this kind of multi-framework scaffolding, and observes that frameworks predating September 2021 fared best, with the only notable failure being Analog (an Angular meta-framework) due to its recency. Solid surprises him by serving on port 3000 instead of the usual Vite ports, and renders cleanly without the null-state issue Vue had.

00:26:51 - Fuzzy Joins and the Pitch for Dash as a Functional DAO

Fuzzy arrives in chat and Anthony catches up about the new gig at the Linux Foundation, which becomes a launching point for explaining what Dash actually is for someone outside the crypto world. Dash is a cryptocurrency aiming to be genuinely useful, with a DAO that allocates a percentage of mining fees to fund work, which is how Anthony is being paid to build these examples.

He frames this as evidence for a long-running argument he's made since 2018: properly designed Web3 projects offer a real solution to open source sustainability beyond VC-fed nonprofits. The money landing in his bank account, he notes, makes it harder to dismiss the model. Ryan offers to send Fuzzy some Dash to play with, and Anthony recalls his own habit of onboarding people via small NFT gifts like the Loopy Donut.

00:33:32 - Dash Identities, DPNS, and the DNS Question

Anthony shifts to explaining what the Express server is actually doing, which is keeping the Dash client and its credentials safely server-side and exposing a name lookup endpoint. He sketches future plans to move this onto Vercel or Netlify serverless functions and eventually edge functions, while noting that Dash library dependencies have made each platform's quirks bite the first time through.

He compares Dash's DPNS naming system to Ethereum's ENS, IPFS's content addressing, and traditional DNS, observing that the Dash docs read as slightly contradictory about whether DPNS names are "domain names" in the conventional sense. The discussion expands to Tim Berners-Lee's Solid project and Bluesky as Web3 ideas rebranded to escape the toxicity attached to the Web3 label.

00:46:50 - Preact Works, Lit Begins to Fight Back

Preact comes online cleanly with no null or undefined states, completing the easy half of the remaining work. Anthony then turns to Lit, which is the one framework he had not actually imported yet, and immediately runs into trouble because ChatGPT's older training data and Lit's class-component idiom create friction with what he is trying to build.

He starts hand-editing the component, splitting render functions, removing unnecessary slots and constructors, and quickly admits class components are not in his comfort zone. He pastes the broken component into ChatGPT for help, hoping for a quick fix to get the button rendering alongside the heading.

00:54:36 - Decorators, Dependencies, and Wrapping Up

Suspecting environmental rather than logical issues, Anthony nukes node_modules and lockfiles to do a clean reinstall, swaps from pnpm to npm to rule out compatibility weirdness with Lit's tooling, and commits the in-progress changes. The new error message is different from the previous one, which he treats as informative progress, and a hint about JavaScript decorators not being supported points him at a likely root cause.

He confirms decorators work in TypeScript but he has stuck with plain JS for the project, leaving Lit unfinished and acknowledging he mostly wanted the exercise to learn the framework rather than because anyone would request it. He floats Enhance as a possibly better fit for a future episode, thanks viewers including James Doe, and signs off promising to return next week to finish the build out. The episode ends at 01:03:00.

Transcript

00:00:03 - Anthony Campolo

All right, hello everyone.

00:00:05 - Anthony Campolo

My name is Anthony Campolo.

00:00:07 - Anthony Campolo

Welcome to episode three of building frameworks with Dash's stuff.

00:00:13 - Anthony Campolo

I'm in a bit of a different setup because I got relatives here, but should be fine.

00:00:20 - Anthony Campolo

We're gonna be continuing on where we were before.

00:00:23 - Anthony Campolo

We had done React and Vue.

00:00:26 - Anthony Campolo

And so we're going to do Svelte, Solid, Lit, and Preact.

00:00:32 - Anthony Campolo

Then a vanilla JavaScript example, so that would give us like seven examples, which is probably more than enough.

00:00:39 - Anthony Campolo

I decided to take Alpine out because there wasn't like a Vite starter for that, so it kind of stuck out.

00:00:45 - Anthony Campolo

And then I took out TypeScript.

00:00:48 - Anthony Campolo

So, because.

00:00:55 - Anthony Campolo

Let me go ahead and ping Ryan in case he wants to come watch.

00:01:00 - Anthony Campolo

We got one person watching.

00:01:01 - Anthony Campolo

All right.

00:01:02 - Anthony Campolo

Hello, person out there in the world.

00:01:07 - Anthony Campolo

Ooh, I got the AJC Web Dev Discord handle before anyone sniped it from me.

00:01:19 - Anthony Campolo

What's up, Ben?

00:01:23 - Anthony Campolo

And you're watching on Dash Incubator's YouTube?

00:01:27 - Anthony Campolo

Oh, no, you're watching on mine now.

00:01:29 - Anthony Campolo

I'm streaming from four places.

00:01:34 - Anthony Campolo

This is people from the Dash community.

00:01:38 - Anthony Campolo

Probably don't know you, but this is accessibility expert and developer at Microsoft.

00:01:44 - Anthony Campolo

What's the name of your team?

00:01:45 - Anthony Campolo

Because I remember the name changed.

00:01:47 - Anthony Campolo

So remind me of that.

00:01:51 - Anthony Campolo

Something to do with education or learning, pretty sure.

00:01:55 - Anthony Campolo

But Microsoft Learn.

00:02:00 - Anthony Campolo

A longstanding ally.

00:02:02 - Anthony Campolo

Ooh, really interesting.

00:02:03 - Anthony Campolo

Feel free to say more or not.

00:02:07 - Anthony Campolo

Yeah.

00:02:11 - Anthony Campolo

We should figure out a way to make it worth your time where you can give me some accessibility tips.

00:02:17 - Anthony Campolo

I feel like my actual website could probably, I don't know if there's, I hope there's no glaring holes with it.

00:02:21 - Anthony Campolo

There's always going to be stuff we can improve, you know.

00:02:24 - Anthony Campolo

You're not really streaming anymore, though, so I can't just hop on a stream and make you fix stuff for me.

00:02:33 - Anthony Campolo

All right, let me start sharing my code here.

00:02:38 - Anthony Campolo

We can just jump right into it.

00:02:45 - Anthony Campolo

Double check all my windows.

00:02:47 - Anthony Campolo

Yeah, see, there's a window.

00:02:57 - Anthony Campolo

All right, we remove link underlines, which makes them indicated by color alone.

00:03:02 - Anthony Campolo

So you're saying to underline.

00:03:03 - Anthony Campolo

It's like, that's really funny.

00:03:05 - Anthony Campolo

This is part of, there's like weird CSS stuff that's been happening in mine because

00:03:12 - Anthony Campolo

I had changed lots of like little things.

00:03:14 - Anthony Campolo

This is one of the things that I tweaked and changed in the styling a little bit.

00:03:18 - Anthony Campolo

And so there's like some small changes I made but never documented.

00:03:21 - Anthony Campolo

So now that I'm trying to get parity back with the original template, I'm like reversing all these small changes.

00:03:28 - Anthony Campolo

So I had to like rethink whether it was actually the right thing or not.

00:03:31 - Anthony Campolo

But getting the links to both change color and underline is the thing.

00:03:38 - Anthony Campolo

I think it might be, it's already underlined, and then when you hover, both the text and the underline change color.

00:03:44 - Anthony Campolo

I think that's what the ideal thing I wanted was.

00:04:00 - Anthony Campolo

All right, you heard it here, folks.

00:04:02 - Anthony Campolo

That's a fine approach.

00:04:05 - Anthony Campolo

Yeah, it's not what it's doing right now, though, so I need to get it to go back to doing the thing I want it to do.

00:04:14 - Anthony Campolo

Okay, so let's kind of review just the last couple projects so we can get some context for what's going on.

00:04:24 - Anthony Campolo

I've also got most of the structure of this kind of figured out.

00:04:30 - Anthony Campolo

Maybe I'll find the links.

00:04:32 - Anthony Campolo

You can do whatever you want on it.

00:04:35 - Anthony Campolo

So I shouldn't make all of my links clickable divs.

00:04:40 - Anthony Campolo

That would not be the thing to do.

00:04:45 - Anthony Campolo

So one thing that might make this a little cleaner is if we created then one more subfolder that had all of them.

00:04:58 - Anthony Campolo

So I think I'm just gonna keep it like this.

00:05:04 - Anthony Campolo

There's the API, which right now has this Express server.

00:05:11 - Anthony Campolo

So the first thing you want to do is you want to get this one running because this is what's going to power everything.

00:05:20 - Anthony Campolo

And I also have readme instructions.

00:05:24 - Anthony Campolo

That should work with pnpm, npm, or yarn.

00:05:30 - Anthony Campolo

I would recommend not using, actually.

00:05:33 - Anthony Campolo

Yeah, okay, it's time.

00:05:35 - Anthony Campolo

It's time.

00:05:37 - Anthony Campolo

Don't need to include instructions for yarn.

00:05:40 - Anthony Campolo

People should not use yarn.

00:05:42 - Anthony Campolo

But it's set up pretty well for pnpm right now.

00:05:49 - Anthony Campolo

So this will get, actually.

00:05:54 - Anthony Campolo

So I'm going to create another new wallet for if you're just getting started, I'll clone this down to show you.

00:06:02 - Anthony Campolo

Let me just follow my own instructions.

00:06:04 - Anthony Campolo

So first you clone it.

00:06:06 - Anthony Campolo

Let me take that out.

00:06:09 - Anthony Campolo

And then install dependencies.

00:06:12 - Anthony Campolo

And then this will copy over your environment variable examples to this.

00:06:19 - Anthony Campolo

It already has your network set to testnet because I think that's like the only net running right now.

00:06:24 - Anthony Campolo

And you can put a, if you already have a wallet address, a mnemonic,

00:06:29 - Anthony Campolo

you can go ahead and fill those in.

00:06:31 - Anthony Campolo

But if you're starting from scratch, you can run the create wallet script, which is here.

00:06:44 - Anthony Campolo

So this is using the client.

00:06:49 - Anthony Campolo

I ended up splitting the client up into two things, mostly because I wanted to be able to import client stuff separately.

00:07:05 - Anthony Campolo

So that's why I'm importing and exporting client just right here.

00:07:11 - Anthony Campolo

But the client, some of the stuff I need to decide whether I want this to actually do this or not.

00:07:19 - Anthony Campolo

But what would be nice is if it were to check whether you had a mnemonic or not, and then was able to handle that.

00:07:30 - Anthony Campolo

Because if you were to run the create wallet command, I think you can get it to — and you already have a wallet —

00:07:37 - Anthony Campolo

then it'll know what to do with that.

00:07:40 - Anthony Campolo

But let's do this for now.

00:07:50 - Anthony Campolo

But where we want to start is we want mnemonic to be null.

00:08:01 - Anthony Campolo

Let me just pop it in here for now.

00:08:08 - Anthony Campolo

This should do what we want to do, I think.

00:08:29 - Anthony Campolo

That is the thing we wanted.

00:08:32 - Anthony Campolo

And just copy paste that, pop it in here.

00:08:37 - Anthony Campolo

At this point, we're all set up to run the server.

00:08:41 - Anthony Campolo

So the server, you'll pnpm serve it.

00:08:47 - Anthony Campolo

And so I'm just gonna step here, I believe.

00:08:51 - Anthony Campolo

I gotta tell us to go into the API folder.

00:09:04 - Anthony Campolo

So I've got this package.json, but not a package.json here.

00:09:11 - Anthony Campolo

So I don't want to do that.

00:09:17 - Anthony Campolo

Let's see.

00:09:41 - Anthony Campolo

Okay, so it's trying to find the API server, but it's in Express.

00:09:48 - Anthony Campolo

There we go.

00:09:59 - Anthony Campolo

Now we can get this going again.

00:10:02 - Anthony Campolo

So let's do a couple things here.

00:10:07 - Anthony Campolo

Cache up on 3X.

00:10:10 - Anthony Campolo

Yeah, so they're slow rolling the Discord usernames like Chantastic and Theo.

00:10:16 - Anthony Campolo

They got theirs a couple weeks ago.

00:10:21 - Anthony Campolo

What was as popular as Chantastic and Theo?

00:10:23 - Anthony Campolo

By that logic.

00:10:25 - Anthony Campolo

And more popular than you.

00:10:28 - Anthony Campolo

But yeah, I mean, AJC Web Dev, who else would want it at this point?

00:10:37 - Anthony Campolo

So this, we're going to go localhost:3001, name, ajc-webdev-test.

00:10:50 - Anthony Campolo

Save the Trexes.

00:10:53 - Anthony Campolo

I'm not sure if I fully get that.

00:10:57 - Anthony Campolo

I mean, I know it's like a plan to save the trees, but what is the X?

00:11:03 - Anthony Campolo

Like Star Trek's?

00:11:06 - Anthony Campolo

Save the T-Rexes.

00:11:07 - Anthony Campolo

Oh, I see.

00:11:09 - Anthony Campolo

Ambiguous.

00:11:10 - Anthony Campolo

Save the T-Rexes.

00:11:11 - Anthony Campolo

That makes a lot more sense.

00:11:13 - Anthony Campolo

I was imagining Trex or Trexes as a single word.

00:11:19 - Anthony Campolo

This is now pulling in our Dash domain name.

00:11:26 - Anthony Campolo

So let me put this here.

00:11:43 - Anthony Campolo

I like this one.

00:11:45 - Anthony Campolo

Yep.

00:11:49 - Anthony Campolo

Okay.

00:12:05 - Anthony Campolo

And you can also

00:12:09 - Anthony Campolo

set this, if you're so inclined, to here.

00:12:15 - Anthony Campolo

And then I can bring in here.

00:12:24 - Anthony Campolo

Server URL.

00:12:29 - Anthony Campolo

Wait, this is the frontend, not the server.

00:12:33 - Anthony Campolo

So I want this in React over here.

00:12:39 - Anthony Campolo

Yep.

00:12:47 - Anthony Campolo

I think React 18 doesn't make you do all the weird environment variable stuff you used to have to do.

00:12:54 - Anthony Campolo

Actually, I haven't even verified this works yet, so let's hold off on that.

00:13:10 - Anthony Campolo

So.

00:13:14 - Anthony Campolo

Now, since we're going to be using the React example, so we're done with this stuff.

00:13:19 - Anthony Campolo

There's nothing.

00:13:20 - Anthony Campolo

That's all the steps.

00:13:21 - Anthony Campolo

So the steps were clone it, install dependencies, set up your .env file, create your wallet, serve your

00:13:33 - Anthony Campolo

Express server, and then curl it.

00:13:36 - Anthony Campolo

So at that point, any of the frontends are going to hit something like this.

00:13:48 - Anthony Campolo

This I definitely want to change.

00:13:52 - Anthony Campolo

So this should be mnemonic here.

00:14:02 - Anthony Campolo

I'm going to try leaving off the command for syncing and just see if it actually makes a difference.

00:14:09 - Anthony Campolo

Okay, so now what we want to do is we're going to want to go into the readme of our React.

00:14:14 - Anthony Campolo

So we can go there from here.

00:14:20 - Anthony Campolo

So if we look at this,

00:14:22 - Anthony Campolo

you can kind of click into any of these projects from here and it takes you straight to the readme.

00:14:32 - Anthony Campolo

And let's see if those steps still work.

00:14:36 - Anthony Campolo

So now we're back here.

00:14:38 - Anthony Campolo

Keep this running.

00:14:39 - Anthony Campolo

Back to Dash examples.

00:14:44 - Anthony Campolo

And whether you want this step to also be in there, I'm probably going to leave them in there because they're helpful.

00:14:56 - Anthony Campolo

I should probably warn them, though.

00:14:57 - Anthony Campolo

They need to set up their server first, though.

00:15:02 - Anthony Campolo

For now, though, let's do this.

00:15:06 - Anthony Campolo

So it would have been like that.

00:15:17 - Anthony Campolo

And then I also included the component in the README of each because each of them, this logic is all the same.

00:15:27 - Anthony Campolo

And it's kind of cool seeing them all in comparison because since they're all written by ChatGPT except

00:15:36 - Anthony Campolo

the React one, it's so consistent in terms of how it names each variable, like what it, how it translates, like when you look at them side by side.

00:15:44 - Anthony Campolo

And it's pretty awesome.

00:15:47 - Anthony Campolo

It would have taken me a while or I would have just done like half-assed versions for half the frameworks.

00:15:56 - Anthony Campolo

So, ChatGPT. Oh yeah, and on Monday, I'm going to be with the Dash Weekly show again to kind of talk about using ChatGPT for this.

00:16:12 - Anthony Campolo

It was really easy.

00:16:13 - Anthony Campolo

Like, the Vue one worked out of the box.

00:16:17 - Anthony Campolo

The Svelte one worked out of the box.

00:16:19 - Anthony Campolo

I think all of them worked out of the box except Angular, and that's because I was using Analog, which is a new framework.

00:16:27 - Anthony Campolo

If a framework did not exist prior to September 2021, then you're going to have significantly worse results.

00:16:38 - Anthony Campolo

So if I kind of fed it a bunch of individual files of an Analog project, it would be able to figure it out.

00:16:46 - Anthony Campolo

But there was something in the router.

00:16:49 - Anthony Campolo

And luckily, I'm good friends with the creator of that framework.

00:16:51 - Anthony Campolo

So I'll ask him, hey, what's happening?

00:16:58 - Anthony Campolo

But aside from that, the Lit example, I think, even worked.

00:17:04 - Anthony Campolo

So let's look at this one right now.

00:17:08 - Anthony Campolo

pnpm dev, but I need to fix the package.json in this one.

00:17:14 - Anthony Campolo

This is kind of a holdover from when this was all in the one package.json and I had npm run all commands.

00:17:25 - Anthony Campolo

That's still pretty nice to do.

00:17:29 - Anthony Campolo

And I might go back and include those steps and just throw it in the readme if someone wants to just run all.

00:17:39 - Anthony Campolo

Or even be cool, like do, and that would run the server.

00:17:42 - Anthony Campolo

And then every single frontend framework on a different port.

00:17:46 - Anthony Campolo

Just because chaos is fun.

00:17:50 - Anthony Campolo

Okay, this looks good so far.

00:17:54 - Anthony Campolo

Will it fetch the data?

00:17:56 - Anthony Campolo

Fetch the data, all right.

00:17:59 - Anthony Campolo

So now let's go back and see if we can do this like that.

00:18:12 - Anthony Campolo

Yeah, no.

00:18:16 - Anthony Campolo

Because you need to do, there's a thing, there's a thing.

00:18:21 - Anthony Campolo

Actually, no, it's because it's Vite.

00:18:24 - Anthony Campolo

Vite is the one who has the thing.

00:18:25 - Anthony Campolo

Vite environment variables.

00:18:28 - Anthony Campolo

import.meta.env.

00:18:31 - Anthony Campolo

I always forget.

00:18:38 - Anthony Campolo

Give it.

00:18:49 - Anthony Campolo

I probably freaked out because it didn't turn into a string correctly or something.

00:19:08 - Anthony Campolo

Not worth it to figure out right now.

00:19:12 - Anthony Campolo

Because you can just kind of, for now, just hard code localhost in there.

00:19:18 - Anthony Campolo

And then I still haven't deployed this anywhere yet.

00:19:24 - Anthony Campolo

Let me just try this on Railway.

00:19:31 - Anthony Campolo

That's another thing for another time.

00:19:34 - Anthony Campolo

Okay, so we got the React one, and then let's just double check the Vue one.

00:19:38 - Anthony Campolo

That should be all good.

00:19:40 - Anthony Campolo

So we're going to kick out of here, go into Vue.

00:19:45 - Anthony Campolo

I gotta fix these package.jsons also.

00:20:09 - Anthony Campolo

Okay, cool.

00:20:11 - Anthony Campolo

Okay, so you do notice just a slight thing that's different now.

00:20:15 - Anthony Campolo

It's showing null here, whereas React, I think it was just blank.

00:20:21 - Anthony Campolo

So that's something to fix. Right now, though, I want to just get all the examples working.

00:20:25 - Anthony Campolo

So let's make a note of that.

00:20:41 - Anthony Campolo

Readjusting.

00:20:45 - Anthony Campolo

Screen.

00:20:46 - Anthony Campolo

Real estate is valuable.

00:20:50 - Anthony Campolo

Okay.

00:20:53 - Anthony Campolo

We need this, these separate.

00:20:55 - Anthony Campolo

That's what I want.

00:20:59 - Anthony Campolo

Okay, great.

00:21:02 - Anthony Campolo

So Vue works.

00:21:04 - Anthony Campolo

Changed anything yet?

00:21:07 - Anthony Campolo

Of course we have.

00:21:09 - Anthony Campolo

That's good.

00:21:12 - Anthony Campolo

That's terrible.

00:21:21 - Anthony Campolo

That's good.

00:21:24 - Anthony Campolo

Let's do this though.

00:21:39 - Anthony Campolo

Save this also.

00:22:01 - Anthony Campolo

Actually, I do want this here.

00:22:40 - Anthony Campolo

Just to make sure.

00:22:43 - Anthony Campolo

I'll link back up to here.

00:22:55 - Anthony Campolo

Good housekeeping.

00:22:56 - Anthony Campolo

Let's commit this.

00:23:25 - Anthony Campolo

Okay.

00:23:27 - Anthony Campolo

So that was two.

00:23:35 - Anthony Campolo

Close, close, close.

00:23:37 - Anthony Campolo

Close, close.

00:23:45 - Anthony Campolo

This, I don't know if either of you or anyone else watching watches Dax, one of the people behind SST.

00:23:53 - Anthony Campolo

He did a Between Two Ferns parody with Fred Schott a while ago.

00:23:59 - Anthony Campolo

He just put out one yesterday with

00:24:06 - Anthony Campolo

Rich Harris and the creator of Svelte.

00:24:09 - Anthony Campolo

It's really funny.

00:24:20 - Anthony Campolo

Bring back on Lex Fridman.

00:24:23 - Anthony Campolo

Yeah, this is the stuff.

00:24:25 - Anthony Campolo

It's so funny.

00:24:28 - Anthony Campolo

Okay, let's get back to this.

00:24:31 - Anthony Campolo

Get the Svelte one going.

00:24:41 - Anthony Campolo

Okay.

00:24:50 - Anthony Campolo

Great.

00:24:52 - Anthony Campolo

There's also, oh, I was going to make a note.

00:25:15 - Anthony Campolo

And then also,

00:25:22 - Anthony Campolo

you'll notice that should be here.

00:25:25 - Anthony Campolo

I had it correct with a little bit of CSS that got lost in the process at some point.

00:25:43 - Anthony Campolo

And then, okay, so that was undefined.

00:25:47 - Anthony Campolo

I was a little sad it was undefined because JavaScript.

00:25:51 - Anthony Campolo

That's really funny.

00:26:04 - Anthony Campolo

Great, great.

00:26:09 - Anthony Campolo

Do Solid now.

00:26:23 - Anthony Campolo

That's obnoxious.

00:26:24 - Anthony Campolo

This one, unlike all the others, went to 3,000.

00:26:29 - Anthony Campolo

Solid.

00:26:30 - Anthony Campolo

Having fun with us.

00:26:33 - Anthony Campolo

Previously, it has been

00:26:38 - Anthony Campolo

the one that's hard to remember.

00:26:41 - Anthony Campolo

Five something, something, something.

00:26:51 - Anthony Campolo

Hey, what's up, Fuzzy?

00:26:54 - Anthony Campolo

How you doing?

00:26:56 - Anthony Campolo

Have you started your new job yet?

00:27:00 - Anthony Campolo

That's super exciting.

00:27:01 - Anthony Campolo

Congratulations.

00:27:09 - Anthony Campolo

Yeah, good to see you too.

00:27:13 - Anthony Campolo

Your new gig is at the Linux Foundation, right?

00:27:16 - Anthony Campolo

Like a thing that's under or a part of.

00:27:19 - Anthony Campolo

I know that's many interlocking chambers of things.

00:27:25 - Anthony Campolo

So I have no idea what their structure is, but I'm pretty sure that's where you end up.

00:27:29 - Anthony Campolo

Something in that area.

00:27:40 - Anthony Campolo

You'll notice this looks like just create-react-app.

00:27:44 - Anthony Campolo

I mean, I can't believe it because you're a fuzzy bear, obviously.

00:27:49 - Anthony Campolo

Who wouldn't want to hire a fuzzy bear?

00:27:55 - Anthony Campolo

I'll hire a Fuzzy Bear in a second.

00:28:00 - Anthony Campolo

Okay, so this one needs a lot of work on the styling.

00:28:12 - Anthony Campolo

This one starts with, hey, look at that.

00:28:14 - Anthony Campolo

No null or undefined.

00:28:17 - Anthony Campolo

And I bet going from JSX to JSX probably made that smoother.

00:28:24 - Anthony Campolo

One of my now bosses said — which thing specifically?

00:28:32 - Anthony Campolo

Oh, this is where I had.

00:28:34 - Anthony Campolo

Did this actually work?

00:28:37 - Anthony Campolo

I think it did.

00:28:43 - Anthony Campolo

So.

00:28:57 - Anthony Campolo

Oh, I know why.

00:28:58 - Anthony Campolo

Because I just set it as a string here.

00:29:01 - Anthony Campolo

I didn't do a process.argv at all.

00:29:03 - Anthony Campolo

Of course that works.

00:29:08 - Anthony Campolo

Wow, hire Fuzzy Bear here.

00:29:09 - Anthony Campolo

Yeah, that's right.

00:29:12 - Anthony Campolo

So what was your connection to that?

00:29:14 - Anthony Campolo

Like, did you know someone there already who was working, or did you reach out, or did they reach out to you?

00:29:20 - Anthony Campolo

I'd be curious.

00:29:23 - Anthony Campolo

They're like, hey, we want some of that Scottish energy.

00:29:26 - Anthony Campolo

You know, we don't have enough Scottish people, obviously.

00:29:34 - Anthony Campolo

So what is Dash?

00:29:36 - Anthony Campolo

So I don't remember where you fell on the whole cryptocurrency thing, but Dash is a cryptocurrency.

00:29:43 - Anthony Campolo

I know you, I think you're someone.

00:29:45 - Anthony Campolo

The Express is Solid.

00:29:46 - Anthony Campolo

Yeah, so you almost can't tell at all this is a crypto project, can you?

00:29:53 - Anthony Campolo

So it's a...

00:29:56 - Anthony Campolo

That's a very fuzzy story.

00:29:59 - Anthony Campolo

Yeah, I bet. I can imagine you would have dabbled in this at some point.

00:30:03 - Anthony Campolo

But Dash is aimed at trying to make a cryptocurrency, which is the Dash cryptocurrency, something actually useful.

00:30:19 - Anthony Campolo

More fuzzy than Astro's story.

00:30:21 - Anthony Campolo

There, well, actually, so I got a funny crypto Astro story.

00:30:29 - Anthony Campolo

You go to this, Ben Holmes, and me

00:30:37 - Anthony Campolo

had built out a project using

00:30:40 - Anthony Campolo

this one, taking Astro to the moon with QuickNode.

00:30:43 - Anthony Campolo

So we connect Astro to just an Ethereum smart contract.

00:30:50 - Anthony Campolo

So this is the thing, every Web3 stack has a frontend framework, and Astro is like a perfect one to use.

00:30:56 - Anthony Campolo

That's why I always say Web3 is Jamstack by default, because they all have a decoupled client that's

00:31:04 - Anthony Campolo

it just doesn't fetch Markdown or JSON or from a database.

00:31:08 - Anthony Campolo

It just does it on the blockchain.

00:31:12 - Anthony Campolo

It's just any other endpoint.

00:31:15 - Anthony Campolo

So I'm doing this, and yeah, so Dash is paying me in Dash to build these examples and to stream it.

00:31:22 - Anthony Campolo

And they have a DAO that is apparently functional and they have a certain percentage of mining fees that go into it.

00:31:35 - Anthony Campolo

And this is, so I've been saying this for years.

00:31:38 - Anthony Campolo

I read about this back in 2018.

00:31:40 - Anthony Campolo

I made this pitch many times in 2022 that Web3 and DAOs, if they're set up correctly, have a solution to open source sustainability.

00:31:49 - Anthony Campolo

Like we've always talked about, there's no solution to make sustainable open source.

00:31:54 - Anthony Campolo

And so that's why we have all these VCs feeding all this money.

00:31:56 - Anthony Campolo

And it's like, no, we actually have a perfectly viable solution.

00:31:58 - Anthony Campolo

And I now know it's a viable solution because the money is in my bank account.

00:32:06 - Anthony Campolo

It's pretty rare, I think, for a project to get to this point.

00:32:12 - Anthony Campolo

But this is why Dash is a very interesting project and has been around for close to 10 years now.

00:32:20 - Anthony Campolo

Okay, so I missed this one.

00:32:21 - Anthony Campolo

Comparing Rich to the game with him.

00:32:23 - Anthony Campolo

Oh, yeah, he's watching the video.

00:32:25 - Anthony Campolo

So, Ryan, you should make more of a pitch to Fuzzy about why Dash is cool.

00:32:31 - Anthony Campolo

I think I covered most of the things you usually cover.

00:32:33 - Anthony Campolo

Here we go, the original DAO.

00:32:36 - Anthony Campolo

I like that someone wrote this article already for me.

00:32:39 - Anthony Campolo

Seven years ago.

00:32:40 - Anthony Campolo

Is this really that old?

00:32:41 - Anthony Campolo

Wow.

00:32:51 - Anthony Campolo

Disclaimer, we take no responsibility for this article you're about to read.

00:33:05 - Anthony Campolo

Yeah, I mean, one did.

00:33:11 - Anthony Campolo

As those come out, as it started.

00:33:19 - Anthony Campolo

Yeah, proposed in 2014, that's what I thought.

00:33:21 - Anthony Campolo

Because this also has governance stuff in it.

00:33:26 - Anthony Campolo

So it would have been around the same time.

00:33:32 - Anthony Campolo

I mean, I'd be curious to see, like, what is, I would, when I'm recommending any of these things to people, I would say...

00:33:44 - Anthony Campolo

Do you have, or have you used a wallet?

00:33:46 - Anthony Campolo

Do you want to figure out how to build apps with them?

00:33:49 - Anthony Campolo

Do you want to learn how to interact with them?

00:33:51 - Anthony Campolo

I mean, I know you're not trying to get into Web3 right now, but I know you're a naturally curious dude.

00:33:56 - Anthony Campolo

So I think that if you wanted to kind of check out what is

00:34:02 - Anthony Campolo

an interesting cryptocurrency project right now,

00:34:05 - Anthony Campolo

Dash is one that I'll point you to.

00:34:07 - Anthony Campolo

Also, I don't know if you know AJ from, oh, Jabber.

00:34:12 - Anthony Campolo

Yeah, so let me show what I did in the beginning.

00:34:19 - Anthony Campolo

So ultimately, so there's this thing called the Dash.

00:34:25 - Anthony Campolo

So there's this Dash client.

00:34:27 - Anthony Campolo

So what the Dash client does is it's connecting us to the Dash blockchain network and it's feeding information in.

00:34:39 - Anthony Campolo

This is like an API key.

00:34:41 - Anthony Campolo

This is something you wouldn't want to leak, something you wouldn't want to expose on the client.

00:34:45 - Anthony Campolo

So it has to be server side.

00:34:47 - Anthony Campolo

It's very, very important that this never, ever is client side.

00:34:52 - Anthony Campolo

So Express right now is managing that.

00:34:55 - Anthony Campolo

What I eventually want to do is have them run as serverless functions.

00:34:59 - Anthony Campolo

So this allegedly should be what I would want to do, where it's using a Vercel function.

00:35:09 - Anthony Campolo

And then this is using a Netlify function. Both of these hit weird snags due to some dependencies in the Dash library because

00:35:19 - Anthony Campolo

just with any of these platforms, it's guaranteed to break the first time.

00:35:23 - Anthony Campolo

Then you test it and you figure out where it breaks, and then you make a change, and sometimes you have to ask the deployment company what the heck's going on.

00:35:30 - Anthony Campolo

Because both of these things are AWS Lambda, but because Netlify built many conventions and Vercel built many conventions,

00:35:41 - Anthony Campolo

you arrive at two slightly different implementations of the same thing, which is kind of frustrating.

00:35:47 - Anthony Campolo

But the thing we're going to want more so is we're going to want these to run on edge functions.

00:35:53 - Anthony Campolo

So that's even more complicated because then it can't use a Node environment at all.

00:36:00 - Anthony Campolo

So I kind of punted on all that and I'm just using the Express server right now.

00:36:04 - Anthony Campolo

And the Express server is barely doing anything.

00:36:07 - Anthony Campolo

So all it's doing —

00:36:10 - Anthony Campolo

all it's doing is, you know, initialize the app, set your CORS thingy.

00:36:15 - Anthony Campolo

And then I have a route for name and then it's going to take whatever name you gave it.

00:36:21 - Anthony Campolo

So that's why when we're curling it, we are doing the —

00:36:27 - Anthony Campolo

let's see.

00:36:30 - Anthony Campolo

Basically like that.

00:36:38 - Anthony Campolo

So that's what I want.

00:36:45 - Anthony Campolo

Is this still on?

00:36:59 - Anthony Campolo

I broke something somewhere along the way, but

00:37:03 - Anthony Campolo

I guess you two are the same.

00:37:05 - Anthony Campolo

Yeah, for sure.

00:37:06 - Anthony Campolo

And that's a whole thing.

00:37:09 - Anthony Campolo

So anyway, when you curl name forward slash whatever.

00:37:13 - Anthony Campolo

Oh, I know why.

00:37:16 - Anthony Campolo

Okay, so this is our endpoint.

00:37:19 - Anthony Campolo

What it's doing —

00:37:21 - Anthony Campolo

is it's — these functions are kind of the most important thing of what's happening here, so it takes your identifier,

00:37:36 - Anthony Campolo

webdevtest.dash, and then that is the name that resolves because this is like how Ethereum has ENS.

00:37:48 - Anthony Campolo

You can have ajcwebdev.eth and then you can like send money to it or create websites based off of it.

00:38:00 - Anthony Campolo

It is connected to the actual web because it's, you know, there are domain names and it's DNS and all that kind of stuff.

00:38:06 - Anthony Campolo

But it doesn't entirely work with DNS out of the box in normal browsers, which in one sense is

00:38:18 - Anthony Campolo

you know, work for normal people, but it's also kind of fun because then you realize there's ways to build things with and without DNS, which is a strange thing.

00:38:31 - Anthony Campolo

Because if you're someone who went to a boot camp and just learned the basics, all this stuff, you didn't even learn DNS.

00:38:35 - Anthony Campolo

So DNS is the thing that was just going on in the background.

00:38:39 - Anthony Campolo

I don't do sales. I just want to — but Fuzzy, if you download Dash Wallet and post an address, I'll send you a bit to play with.

00:38:47 - Anthony Campolo

Yeah, no, you should definitely take him up on that.

00:38:49 - Anthony Campolo

This is how I would get people into this.

00:38:51 - Anthony Campolo

I would tell them to download a MetaMask wallet and just give me their address.

00:38:55 - Anthony Campolo

And then I would send them a Loopy Donut.

00:38:57 - Anthony Campolo

You all know what the Loopy Donut is.

00:38:59 - Anthony Campolo

It's my avatar now for over a year.

00:39:03 - Anthony Campolo

Because they're like five or ten bucks.

00:39:04 - Anthony Campolo

They're super, super cheap.

00:39:06 - Anthony Campolo

So I have like five on hand at any point in time.

00:39:09 - Anthony Campolo

And just give people —

00:39:13 - Anthony Campolo

it is not the web.

00:39:15 - Anthony Campolo

Well, it's not DNS, but there's the web that is also outside.

00:39:21 - Anthony Campolo

Like, is email the web?

00:39:25 - Anthony Campolo

Yeah, maybe, maybe not.

00:39:30 - Anthony Campolo

Or, you know, are mobile apps the web?

00:39:34 - Anthony Campolo

Yeah, I don't know.

00:39:35 - Anthony Campolo

I don't know if all those work exactly the same way.

00:39:38 - Anthony Campolo

IPFS is the really cool one, though, because IPFS

00:39:42 - Anthony Campolo

is not DNS, but it's very obviously the web.

00:39:45 - Anthony Campolo

It's just a different way to

00:39:48 - Anthony Campolo

access the web.

00:39:50 - Anthony Campolo

So, yeah.

00:39:52 - Anthony Campolo

I mean, even Tim Berners-Lee is all in on Web3.

00:39:56 - Anthony Campolo

He will never put it that way, but Tim Berners-Lee is building a rebranded Web3 project.

00:40:09 - Anthony Campolo

Father of the internet says we can't be locked in silos like Facebook and Twitter and YouTube.

00:40:17 - Anthony Campolo

This is the first thing, the first pitch I would make every interview I ever gave about Web3.

00:40:22 - Anthony Campolo

Then you can add Solid where you have user data where users get to share what the users want to share.

00:40:29 - Anthony Campolo

So you give the power back to the users away from the platform.

00:40:33 - Anthony Campolo

That was the second thing I would always say on every

00:40:35 - Anthony Campolo

interview I gave about Web3.

00:40:37 - Anthony Campolo

But you won't see the term Web3 anywhere on here because no one wants to use that term because

00:40:51 - Anthony Campolo

that's what people think now when they think of Web3.

00:40:54 - Anthony Campolo

So he's like,

00:40:56 - Anthony Campolo

no, I'm just going to build the thing that they're already building and call it something else.

00:41:10 - Anthony Campolo

Let me get my tabs back under control.

00:41:15 - Anthony Campolo

It's only with the Portal project.

00:41:25 - Anthony Campolo

I don't know what the Portal project is.

00:41:33 - Anthony Campolo

There's a lot of those.

00:41:34 - Anthony Campolo

I just know Portal, like the video game.

00:41:38 - Anthony Campolo

Yeah, he calls it Solid, which is also extremely confusing.

00:41:43 - Anthony Campolo

It's like, bro, that name is taken.

00:41:51 - Anthony Campolo

It's like cool tech, though.

00:41:52 - Anthony Campolo

It's a similar thing with Blue Sky.

00:41:54 - Anthony Campolo

Blue Sky is a Web3 kind of project, like innately, and makes the same pitch and has the same benefits.

00:42:06 - Anthony Campolo

And that worked out well for it, I think.

00:42:11 - Anthony Campolo

I don't care. Before, I renamed it a bunch of times.

00:42:13 - Anthony Campolo

It used to be Bitcoin or Blockchain, Not Bitcoin, and Web3, Not Blockchain.

00:42:20 - Anthony Campolo

Now we're going to come up with another name.

00:42:29 - Anthony Campolo

Yeah, so, yeah, that's interesting.

00:42:33 - Anthony Campolo

I'll be curious to see what that looks like when you actually do this, Ryan, because

00:42:43 - Anthony Campolo

I got a .eth one set up pretty good, and then things happened.

00:42:48 - Anthony Campolo

Mistakes were made.

00:42:50 - Anthony Campolo

And then I got some unstoppable domains that were pretty cool.

00:42:55 - Anthony Campolo

And then Cloudflare has the .xyz domains, which is really interesting.

00:43:01 - Anthony Campolo

So I have a whole bunch of crypto domains, but I never obviously implemented any of them.

00:43:20 - Anthony Campolo

It was registered as an identity.

00:43:28 - Anthony Campolo

Okay, this is what I'm looking for.

00:43:37 - Anthony Campolo

Given the DNS compatible nature, they're technically domain names to register under.

00:43:45 - Anthony Campolo

Okay, so this is in conflict with this.

00:43:48 - Anthony Campolo

Someone here is lying.

00:43:52 - Anthony Campolo

Unless they're like, it's compatible DNS.

00:43:54 - Anthony Campolo

They're technically domain names.

00:43:56 - Anthony Campolo

That doesn't mean you have a domain, though.

00:44:00 - Anthony Campolo

Because obviously, if you go to ajcwebdevtest.dash, nothing's going to happen, you know.

00:44:09 - Anthony Campolo

Download Brave.

00:44:13 - Anthony Campolo

Brave browser can do that kind of stuff automatically.

00:44:31 - Anthony Campolo

Okay, so it looks like this is the part I haven't gotten into yet, this stuff.

00:44:39 - Anthony Campolo

Oh, this is the thing, this is just what's generated for you, I think.

00:44:53 - Anthony Campolo

Yeah, I don't know.

00:44:57 - Anthony Campolo

Yeah, I would say in general, I think you need more docs about DPNS because it shows up throughout when you're using it.

00:45:08 - Anthony Campolo

And then you have this thing right here.

00:45:10 - Anthony Campolo

It's not really enough context, I don't think, especially if you're saying this is DNS compatible and then

00:45:21 - Anthony Campolo

do I need a text record?

00:45:22 - Anthony Campolo

Like, because when you do,

00:45:27 - Anthony Campolo

this was so complicated.

00:45:30 - Anthony Campolo

A lot of steps.

00:45:37 - Anthony Campolo

So you're doing stuff like this.

00:45:41 - Anthony Campolo

And then you have DNSSEC coming into it.

00:45:44 - Anthony Campolo

So you can add a text record.

00:45:47 - Anthony Campolo

This would be one way to do it.

00:45:58 - Anthony Campolo

And then I know with IPFS, do they have DNS link?

00:46:07 - Anthony Campolo

And this is going to be, I imagine, what you guys are doing is going to be more in line with ENS and the way ENS works.

00:46:15 - Anthony Campolo

Because IPFS is linking you to a whole file system.

00:46:19 - Anthony Campolo

Whereas ENS, you're just linking to an address on the blockchain at the end of the day.

00:46:26 - Anthony Campolo

I never really fully understood, though, how then you would also be able to grab an IPFS hash and store that on ENS.

00:46:50 - Anthony Campolo

Okay, not meant for today.

00:46:50 - Anthony Campolo

Okay, where was I?

00:46:51 - Anthony Campolo

I think I was

00:46:56 - Anthony Campolo

in Solid.

00:46:59 - Anthony Campolo

We still got Preact.

00:47:02 - Anthony Campolo

Let me save myself

00:47:03 - Anthony Campolo

the context switching.

00:47:17 - Anthony Campolo

It should work now.

00:47:20 - Anthony Campolo

Boom, boom, boom, React, yes.

00:47:23 - Anthony Campolo

And this one, no null or undefined.

00:47:34 - Anthony Campolo

Yeah.

00:47:35 - Anthony Campolo

Get out of here.

00:47:41 - Anthony Campolo

Why can't I close this?

00:47:43 - Anthony Campolo

There we go.

00:47:46 - Anthony Campolo

So Lit.

00:47:53 - Anthony Campolo

So that makes sense.

00:47:56 - Anthony Campolo

This was the last one I hadn't actually imported.

00:48:03 - Anthony Campolo

This might be it.

00:48:07 - Anthony Campolo

Okay, we're all going to get to find out together whether this works.

00:48:09 - Anthony Campolo

Isn't that exciting?

00:48:24 - Anthony Campolo

Yeah, this is the problem with Lit being the only framework that ChatGPT might have gotten wrong, since it's

00:48:40 - Anthony Campolo

Okay, I think, I think, I think I can figure this out.

00:48:46 - Anthony Campolo

Start by doing this.

00:49:06 - Anthony Campolo

That all goes above render.

00:49:39 - Anthony Campolo

Here's where there's something going on right here.

00:49:43 - Anthony Campolo

I got a feeling.

00:49:46 - Anthony Campolo

So let's stick with my element.

00:49:58 - Anthony Campolo

And then we're going to have two render functions for a second.

00:50:16 - Anthony Campolo

I need a slot.

00:50:19 - Anthony Campolo

Pretty sure I don't.

00:50:25 - Anthony Campolo

I'll need a button.

00:50:26 - Anthony Campolo

Don't need that.

00:51:00 - Anthony Campolo

Yikes, my click.

00:51:01 - Anthony Campolo

It's just throwing that function right in there.

00:51:07 - Anthony Campolo

This is still humming along.

00:51:16 - Anthony Campolo

Good.

00:51:20 - Anthony Campolo

Pretty close, pretty close, I think.

00:51:34 - Anthony Campolo

I don't need that.

00:51:35 - Anthony Campolo

I don't need the constructor at all.

00:51:39 - Anthony Campolo

I need a constructor just because.

00:51:43 - Anthony Campolo

This is why I don't know how class components work.

00:51:51 - Anthony Campolo

Yeah, the problem is because I had to mash the two components together in a way that I probably didn't need to.

00:52:01 - Anthony Campolo

That's right, so I can't do this.

00:52:08 - Anthony Campolo

So let's ChatGPT it up at this point.

00:52:16 - Anthony Campolo

This Lit component is only displaying the H1 and not the button for fetching the Dash.

00:52:35 - Anthony Campolo

It'd be something super obvious, I'm sure.

00:52:41 - Anthony Campolo

Probably only two of those.

00:52:54 - Anthony Campolo

This is a

00:52:58 - Anthony Campolo

JS file.

00:53:07 - Anthony Campolo

Oh, yeah, let's see what happens.

00:53:14 - Anthony Campolo

That's not good.

00:53:19 - Anthony Campolo

Ooh, I think that's the issue.

00:53:33 - Anthony Campolo

I just realized —

00:53:35 - Anthony Campolo

nope, no one's talking at me.

00:53:36 - Anthony Campolo

Let me fix my screen real estate a bit.

00:53:40 - Anthony Campolo

Oh, is that running two servers at once?

00:53:43 - Anthony Campolo

Oh, no, that's Lit.

00:53:44 - Anthony Campolo

This is Preact.

00:53:51 - Anthony Campolo

I'm probably going to have to hop off fairly soon.

00:53:55 - Anthony Campolo

Let's see if I can get this last one working.

00:54:36 - Anthony Campolo

Let me first, before I go down too deep with this, I'm going to do a couple sanity things.

00:55:03 - Anthony Campolo

I'm just deleting all extra pnpm locks and node_modules.

00:55:10 - Anthony Campolo

Because I'm not sure if Lit keeps up with all the hot new — sometimes pnpm, like, Edge doesn't really support pnpm which makes me very sad, but sometimes it's good to check.

00:55:32 - Anthony Campolo

Okay, great.

00:55:33 - Anthony Campolo

This will take five hours to empty.

00:55:42 - Anthony Campolo

Let's see, I probably got changes to commit.

00:55:46 - Anthony Campolo

Yep, notes, notes, form good, notes.

00:55:53 - Anthony Campolo

And then this travesty.

00:55:57 - Anthony Campolo

Maybe I should just be doing that.

00:56:06 - Anthony Campolo

So start by installing and then run the server.

00:56:11 - Anthony Campolo

This will take a little bit longer because npm is slow.

00:56:24 - Anthony Campolo

Okay, so I'm gonna commit all this.

00:56:31 - Anthony Campolo

Yeah, yeah.

00:56:58 - Anthony Campolo

And then this will be npm run serve.

00:57:06 - Anthony Campolo

Let's see what happens with this.

00:57:25 - Anthony Campolo

James Doe.

00:57:26 - Anthony Campolo

What's up, James Doe?

00:57:30 - Anthony Campolo

Yeah, so you notice how the fact that this is a different error at all tells you that something funky is going on.

00:57:37 - Anthony Campolo

And this makes sense because we're talking about dependencies and monorepos and stuff always gets dicey.

00:57:49 - Anthony Campolo

This might be it.

00:57:54 - Anthony Campolo

So if JavaScript decorators aren't supported,

00:58:01 - Anthony Campolo

what does that mean for Lit?

00:58:04 - Anthony Campolo

And ChatGPT, you're writing me out of date.

00:58:07 - Anthony Campolo

I thought, is this using the platform?

00:58:09 - Anthony Campolo

Shouldn't it never break?

00:58:11 - Anthony Campolo

If it's using the platform.

00:58:23 - Anthony Campolo

Here's my current component.

00:58:26 - Anthony Campolo

I switched to npm.

00:58:31 - Anthony Campolo

But this might be an issue as well.

00:58:33 - Anthony Campolo

Let's see.

00:58:37 - Anthony Campolo

Oh, that should be okay.

00:58:45 - Anthony Campolo

It's telling me, and in this example, I'll make sure ChatGPT knows what I'm asking it, so I'm going to feed it

00:59:03 - Anthony Campolo

probably more information than it necessarily needs, but it's good to give it more than too little.

00:59:13 - Anthony Campolo

But if you just give it all your stuff and junk,

00:59:18 - Anthony Campolo

they'll be like, okay, I can see all your code.

00:59:20 - Anthony Campolo

I know how to fix this because I'm a godlike robot.

00:59:23 - Anthony Campolo

Okay.

00:59:33 - Anthony Campolo

Here's my package.json.

00:59:38 - Anthony Campolo

Here is my main.js file.

00:59:52 - Anthony Campolo

Should probably just delete stuff.

01:00:12 - Anthony Campolo

Let me go back to

01:00:16 - Anthony Campolo

this. What was the original thing.

01:00:56 - Anthony Campolo

That's where you're wrong.

01:00:58 - Anthony Campolo

So we went through all these examples, right?

01:01:01 - Anthony Campolo

So I had a Preact example, a Solid example, a Svelte example, and a Vue example.

01:01:07 - Anthony Campolo

All of those were written by ChatGPT and worked on the first try.

01:01:11 - Anthony Campolo

So it's only once we got to this one obscure older framework that was using all this stuff.

01:01:19 - Anthony Campolo

Yeah.

01:01:20 - Anthony Campolo

Thanks for hanging out.

01:01:42 - Anthony Campolo

Too many windows.

01:01:49 - Anthony Campolo

Let's just do this.

01:02:13 - Anthony Campolo

Oh, they are supported in TypeScript.

01:02:14 - Anthony Campolo

Interesting.

01:02:20 - Anthony Campolo

Oh, God, I already hate this.

01:02:25 - Anthony Campolo

Yeah, no.

01:02:31 - Anthony Campolo

Okay, that was easy.

01:02:36 - Anthony Campolo

No one's going to ask you for Lit.

01:02:37 - Anthony Campolo

So I mostly just want to do that so I can kind of learn how to use it a little bit because I've never used Lit before.

01:02:41 - Anthony Campolo

It was pretty much what I expected.

01:02:43 - Anthony Campolo

Enhance would be a better one.

01:02:46 - Anthony Campolo

Okay, I got to hop off.

01:02:49 - Anthony Campolo

This was super fun.

01:02:50 - Anthony Campolo

I will be back sometime next week.

01:02:51 - Anthony Campolo

Find out later.

01:02:55 - Anthony Campolo

Thanks, everyone, for watching.

01:02:57 - Anthony Campolo

Bye.

On this pageJump to section