All Episodes

April 7, 2026 92 mins

React made a lot of us feel powerful, then maintenance made a lot of us feel tired. Drew Bragg sits down with Delaney Gillilan, creator of Datastar, to argue for a different kind of “modern web” one that keeps the browser’s strengths front and center and keeps your app logic where it belongs: on the server. If you’ve ever looked at your dependency graph and wondered how you got here, this conversation is a reset.

We get concrete about what Datastar is and how it works: a tiny reactive framework built around HTML, data attributes, and signals, with a plugin system that stays out of the way. Delaney explains why most state should live on the backend, why duplicating validation and business rules in the client is wasted effort, and why hypermedia is still the simplest way to communicate what a user can do next. We also unpack the “send strings to the browser” philosophy and how that changes performance, complexity, and even team collaboration.

Real-time is where it gets spicy. Delaney makes the case for Server-Sent Events (SSE) over WebSockets for many apps, leaning on normal HTTP semantics, built-in reconnects, and streaming compression to ship tiny DOM diffs efficiently. From there we talk CQRS as a mental model for command intent vs view updates, plus what this means for Ruby on Rails developers weighing Hotwire, Stimulus, and upgrades. We close with two bold companion projects: Rocket, which makes Web Components more declarative, and Stellar, a Tailwind alternative that uses parametric CSS variables for a modern design system workflow.

If you enjoy deep technical takes on reactive UI, server-driven rendering, SSE, Rails, and modern CSS, subscribe, share the episode with a friend who’s stuck in SPA fatigue, and leave a review with the part you disagreed with most.

Send us some love.

Judoscale
Autoscaling that actually works. Take control of your cloud hosting.

Honeybadger
Honeybadger is an application health monitoring tool built by developers for developers.

Judoscale
Autoscaling that actually works. Take control of your cloud hosting.

Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.

Support the show

Listen
Watch
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
SPEAKER_03 (00:00):
Hello everyone and welcome to another episode of
Code and the Coding Coders WhoCode It.
I'm your host, Drew Bragg, andI'm joined today by Delaney G.
Delaney, I'm gonna let youpronounce your last name since I
keep screwing it up.
And also give us a briefintroduction of who you are in
case folks don't know who youare.

SPEAKER_00 (00:16):
Sure, my last name is Gillilin.
It is phonetic, but it is hardto say.
So, yeah, my background is I'vekind of been in and out of the
web space for since the originaldot com rush.
And for me, it was more of aninteresting platform because
it's the one sandbox thateveryone can kind of agree on.
So I've done a lot ofinteresting stuff around

(00:38):
gambling, video games, militaryapplications, all using the web
more as a platform and a sandboxthan in the way that it's
normally intended to be used.
So I've kind of used and abusedGLSL and all kinds of crazy
stuff to do some interestingprojects.
But in doing all that, I kind ofcame to a moment where I'm like,
this is too hard, this is crazy,this is the wrong thing, and

(00:59):
started with first principles,ended up with this project
that's now called Datastar andsome other projects around it to
basically try to fix the web,not just take it back to the
early 2000s, but actually usethe modern web with the
simplicity that we missed out onfrom those days.
So that's kind of what I'm nowknown for.
Unfortunately, I ironically hateJavaScript.

(01:21):
So the idea of being known as aJavaScript framework author
makes me really sad.
But sometimes you have to havesomeone that hates something to
make it better.

SPEAKER_03 (01:28):
So you hate it, so you want to do less of it, and
you figured out a way to makeyourself have to do less of it.
I guess that.

unknown (01:35):
Yeah.

SPEAKER_03 (01:36):
So the way this is gonna work for anyone new to the
show is I'm gonna ask Delaneythree questions.
I'm gonna ask him what he'sworking on, kind of blockers he
has, and what's something cool,new, or interesting that he
wants to share with all of us.
It can be something he recentlyread, discovered, learned,
built.
It doesn't have to be codingrelated, but this is code and
the code encoders who code it.
So it absolutely can be.
So let's get this party started.

(01:58):
In pre, I was expecting you tosay, I'm working on Data Star.
But according to you, Datastaris done.
So before we dive into DataStar, what are you working on?

SPEAKER_00 (02:11):
You know, I'm just trying to do a quick little in
and out project, 20 minutes inand out.
I'm just trying to fix the webcompletely.
So yeah, I have some attempts atthat.
So basically, I think HTML forthe most part is a really good
declarative syntax.
So that's kind of good enough.
That's fine.
JavaScript has been a bane foreverybody, and so I fixed that

(02:32):
with Datastar.
And I have one other projectwhich is basically I understand
all the reasons why Tailwindexists and why it was built, but
it doesn't match the modern web.
So I built a thing calledStellar, which all the problems
that you have with Tailwind arenow solved with Stellar, which
has just come out.
So basically, I'm just trying tosolve the web first.

(02:54):
The irony of all this is that Ibuilt all these things because I
was starting to build my owndatabase and said, man, I would
really like to have an embeddedUI that looks really nice, that
works everywhere.
Hey, the web would probably bethe best way to do this.
So the irony is I've now prettymuch solved the web so I can go
back to building my database.
So it's like a three-yearjourney in and out.

SPEAKER_03 (03:12):
Yeah, it's super easy to just solve the web.

SPEAKER_00 (03:14):
Yeah.

SPEAKER_03 (03:14):
Can't be that hard, right?

SPEAKER_00 (03:16):
I mean, the thing is that we're pretty close.
That's the people I don't thinkpeople realize because there's
so much hatred for the NPM nodemodule black hole and like the
sysyphis and task of gettingsomething built nowadays.
But yeah, the actual platform ispretty solid.
There's a lot of things that arereally great about the platform.
We just have done this crazylayering on top that's made it

(03:37):
very hard for people to see howmuch has been solved in the
meantime.
Sure.
Yeah, we can actually get backto that.

SPEAKER_03 (03:44):
Yeah.
The first web pages I everwrote, I was like, this is so
cool.
And then I learned React, and atfirst I was like, this is so
cool.
And then I started maintaininglike React spas, and I'm like,
this is no longer cool.
Yeah.
This feels way harder than thestuff I used to do for not much
benefit, which the reactivitypart of it is super cool.

(04:06):
Like we have some React at work,very small amount because it's
designed to solve a very smallproblem we have of a high user
interaction part of our app.
But it sounds like, at leastfrom reading through the
Datastar guides, and for anybodywho doesn't know, I learned
about Datastar when I had arecent episode go out where we

(04:28):
were talking about livecomponents and it was very
reactive view components.
And someone was like, This isreally cool, but datastar
already solved this.
Why don't you talk to Delaney?
And I was like, I don't knowDelaney at all.
Now I know Delaney.
And after looking up someDatastar stuff, it sort of
sounds like, why would you useReact when Datastar exists?

SPEAKER_00 (04:48):
It's a really good question.
And the thing is that this isn'tborn out of like me being a
contrarian.
The irony is I've put out, likeI used to have top secret
clearance and I worked on abunch of military stuff, and I
would use the web because it wasvery hard to get a binary to go
through all the processes ofbeing signed off on.
Like there's a lot to do there.
Whereas making a web appbasically allows you to get

(05:10):
things sandboxed in a very goodway.
So to me, it was a deploymentplatform, and I was doing really
low-level stuff, but I wasbasically pushing against Vue
and React install it.
And I basically got into theweeds of like, okay, this isn't
good enough.
How do we fix this?
And I started like trying to fixit.
And what I ended up doing isbasically the equivalent of

(05:31):
Phoenix Live View.
Because I was doing a bunch ofspa stuff.
Like I know the internals deeplyof View and React and all that.
Like I got into the weeds tryingto say, okay, how do I fix it?
And I basically made a Goversion of that protocol where
it's basically doing theequivalent of diffing on the
back end and sending down thediffs, then you update that and
then you get a live overWebSockets.
And the irony is I spent a yearand a half on that, making a

(05:53):
really low-level binaryprotocol.
And I looked at some stuff fromlike an HTMX example, and it was
faster and better than the thingI did.
So the irony is that I willthrow shade at the spa community
completely because I was part ofit and it said, hey, I'm trying
to do it this way, and it's justterrible.
And the weird thing is forpeople that don't know Datastar,
we are even like people compareReact or something and Hotwire

(06:17):
in size, like oh, hotwire is somuch smaller and stimulus.
Data star is five times smallerthan hotwire.
It's tiny.
It's 11K, it is the world'sfastest signals library, it's
the world's fastest morphingstrategy.
It does all this in 11K, and itis dead simple to do.
And it's also language agnostic.
So the thing is, what you can dois what you learn from,

(06:39):
hopefully, we'll get into isthat as a Rubyist, you can be
using the same style of mentalmodel as you would in C or any
other language.
So you can actually have acommunity of people that are
actually talking about the webagain, not talking about this
framework of the week.
So the weird thing is we're aback-end agnostic backend
framework for the most part.
But we still have when it comesto reactivity on your page, we

(07:00):
are literally the fastest thingthere is in the world of
JavaScript.
So we're in this weird dichotomythat we believe most of your
state lives in the back end, butthe stuff that you do in the
front end, we are by far thebest in class.
Nothing competes right now.

SPEAKER_03 (07:12):
Yeah, it does seem that way.
I haven't fingers to keyboardplayed with it, but I've seen a
few videos now.
I've gone through the guide ahandful of times, like at
various levels, and the deadsimple part is 100% accurate.
I think it was really smart tojust use the data dash
attribute.
The one thing that I guess threwme off or prevented me from just

(07:36):
being like, oh, HTMX clicks islike it's HX-whatever.
And I'm like, okay, whole newset of things to learn.
But like data-anything justfeels like it belongs in my HTML
anyway.

SPEAKER_00 (07:48):
Well, here's the thing that I've gotten into
fights with Carson, who's theguy behind HTML.
I love what they're doing there,but like it doesn't go far
enough in my opinion.
Like it doesn't solve the wholeproblem.
It's a library, not a framework,first of all, and that's fine.
But it also doesn't actuallysolve the problem.
Here's a perfect example of Ifollow the specs of HTML
specifically.
And the reason why is there'salready, for people that don't

(08:10):
know, there's data-starattributes are part of the spec
that says you can put any stringin there that you want, and it
becomes an insertion mode keyvalue store that you can do
whatever you want with on thatelement.
The reason why that's importantis because you put a spot into
it, that means that the backend, the actual like turbofan
and the optimizers and all thatstuff, they know that that data

(08:32):
set exists and they do all theright calculations on that.
So instead of trying to dealwith unknown attributes and do
all kinds of crazy stuff, you'reactually letting people optimize
for the optimized case.
So the thing is that inDatastar, we actively tell you
we don't wrap things and try tohide things.
Most people come in and go, ohman, I didn't know this existed
in HTML.
Oh, I didn't know this existedin CSS.

(08:52):
We are not trying to hide thingsfrom you.
All we're trying to do is get toa declarative, reactive
expression, and that's it.
Because the thing is, thosedon't exist in JavaScript.
And what I mean by that is likewhen you set up a Excel
spreadsheet and you're doingformulas, you're setting up a
reactive relationship betweenthings, right?
When you say like this plus thisis the sum of these two other

(09:13):
cells, that kind of thing,you're setting up relationships.
The thing that's built into thebrowser doesn't have that
concept of like, oh, thisthing's gonna drive this thing,
this is drive thing.
So all we do is data star, andthe reason why it's so small is
we just say, how do we turn thisinto a reactive expression?
And then everything else is aplugin.
Literally everything else.
So the core of data star isactually about three kilobytes.

(09:34):
So everything's a plugin afterthat.
So you get things like dataclass, data adder, data this,
but it's really a paradigm shiftin the way that most spaws and
stuff, or even hotwire, allthat, they're trying to wrap
things and try to like maketheir own little ecosystem.
Data star is just like saying,what are the things that are
missing to make thisdeclarative?
And then everything else getsout of the way.
That's it.

(09:54):
It gives you a very simpleconcept.

SPEAKER_03 (09:56):
Yeah, and the idea of signals is pretty interesting
to me, where it's like that'sthe thing that when this value
changes, there's like acascading effect of like, if
you're listening to this value,everything's gonna get run,
whether it's a full-blownexpression or it's just a
display.
And that makes a lot of sense.
That feels slightly reacty, butI like that those signals.

(10:21):
Well, I guess talk a little bitabout the signals and how you
want them to be used properly.
Because I have all kinds ofgoofy ways I could use them.

SPEAKER_00 (10:29):
Well, the thing is that most people coming from a
spa background, which is mostpeople coming from the web
nowadays, they want to usesignals everywhere, like all the
signals all the time.
And there's examples, mostexamples in Datastar, unless you
have like inputs that whereyou're actually binding to
someone's input that they'reallowed to change, there's very
few signals on a page.
That's the irony, is that eventhough Datastar has the world's

(10:50):
fastest signals approach, we sayyou should only have a handful
of them on the page at any onetime.
So it's one of those weirdthings of like we can handle
10,000 signals on a page, noproblem.
But why are you putting 2,000things on a page as opposed to
just the things that people caninteract with?
So there's a big move towardswhat's called isomorphic
rendering, which basically meansyour back end looks like your

(11:10):
front end.
And I think that's completehogwash.
It doesn't make any sense.
The thing is that state needs tolive where state lives.
Most of your state lives in yourback end.
When you do validation, like ifyou're doing client-side
validation and then you send itto the server and you don't
trust it anyway, and then youhave another set of validation
here, you're just doubling yourwork.
You're not really gettinganywhere if it's fast enough to
do.
So my thing is state needs tolive where it lives.

(11:31):
So there's things where ifsomeone has a mouse movement,
that should be tied to a signal,because then you can drive other
things on the page that areinstantaneously that the mouse
control is owned by the client,right?
But the click, like the logic ofwhat is allowed and not allowed,
belongs on the server.
So people tend to put state inthe wrong place, and that's why
you see tons of JSON gettingsent down.

(11:51):
You see all this polling, yousee all this stuff, is because
they're putting state in thewrong place.
So they're having to recreatethe entire world of state in the
client, and that is just arecipe for disaster.
One of the beautiful thingsabout the web is hypermedia.
And the idea of hypermedia isyou show what you display
declaratively what you want theperson to see and what they're
allowed to do next.
That's it.
They don't have any logic on a Hlike in pure HTML, there is no

(12:14):
logic saying why this is a banktransfer, why this is paying
your taxes.
There's no logic of that.
There's just here's the view,and here's what you can do next.

unknown (12:23):
Yeah.

SPEAKER_00 (12:23):
Once you really embrace that, things get so much
simpler because most of thestate lives where it's supposed
to live.
That's it.
It's a pretty simple concept.
We're not doing anythingmagical.
That's why we're so small.

SPEAKER_03 (12:33):
Right.
So, I mean, it sounds like asimple concept, but it's not
always been it's simple intheory, not always simple in
practice.
Maybe it is if you're usingDatastar.

SPEAKER_00 (12:44):
Yeah.
Well, and the thing is thatthere's a clear delineation of
why this happened.
We had Ajax back in the day.
Like the thing that happened isbasically server tech at the
time, like if you look atApache, it was basically
creating a new thread orGlassfish or any of these.
You were basically creating anew thread for every request.
Well, that doesn't scale tothousands of people and it
didn't work.
Like it worked fine when you hadone or two core machines, right?

(13:07):
Like this idea was okay becauseyou're gonna do sharing anyway,
but it doesn't match the web oftoday.
So the problem is that spas weretrying to say we want more
interactivity on the browser.
We need to make Google Maps.
We can't do all that logic onthe server because the per
thread thing doesn't work whenyou scale up.
All that's been solved sincethen.

(13:27):
So the mental model that peoplehave of why spas exist was to
solve a problem that's alreadybeen solved.
So they made this complicatedthing, and it's basically a
boiling frog thing of it justgot worse and got worse and got
worse and got worse.
And no one kind of sat back, meincluded, to be clear, Datastar
could have existed more than adecade ago.
There's literally no reason whyit didn't exist 10 years ago,

(13:47):
other than everyone just waskind of being the frog and
going, well, this is just Iguess Vercel is now like one
more NPM module, and we gotthis.
It just got worse and worse.
And I'm part of that problem.
So, like, go fix it.
So we fixed it.
Sure.

SPEAKER_03 (14:00):
Sure.
The one big difference, I think.
So being a Ruby on Railsdeveloper, I'm using Hotwire a
lot.
One of the ways that we do thereal-time updating or the I
click this button and everyoneelse sees the result of that
button click is via WebSockets.
But in Datastar, you guys areusing SSE, which is server send

(14:22):
events, yes, which is not a newprotocol, but it was very new to
me.
I've been doing this for a whilenow.
Why is that like I'm justlearning about this protocol?
Uh, yeah.
It's been around for a hotminute.

SPEAKER_00 (14:35):
I fell into this trap too for years.
So I was doing a bunch ofmilitary stuff where I was
sending direct GPU informationabout radar sites and doing
millions of blips per secondkind of stuff, like really
low-level stuff.
And the thing that I thought waslike WebSockets is the future of
WebSockets solves all problemsbecause I just get my socket.
I can do whatever I want.
You basically get the equivalentof a TCP socket.

(14:56):
Once it does the handshake, youget it.
Now I can do anything I want.
The greatest part aboutWebSockets is you can do
anything you want.
The bad part is you can dowhatever you want.
And the reason why that's bad isall of a sudden you can't do
cookies because once youupgrade, you can't change out
cookies.
You now have to write your owncompression stuff.
And then when you write acompression, guess what?
You're doing it in JavaScript.

(15:16):
You don't have access to theactual C stuff.
It's basically its own island.
And now you have your ownequivalent of cords to deal
with.
Like you have all these things,sticky sessions.
When you break off, you have todo auto try to reestablish.
And so what if the serverswitches and all this?
Like you're basically eschewingthe entire HTTP stack once you
get that upgrade handle.
Like once you get a socket,you're on your own.

(15:38):
What data store does is peoplethink SSE is a new protocol.
It's not.
It is literally just a differentresponse type.
So instead of text slash HTML,you're saying text slash event
dash stream.
And then what happens is there'sthis like data colon and then
your data.
There's a couple of extrathings, and you do two new
lines, and that just basicallymeans flush to the end.

(16:00):
So it's just a text format.
That's all it is.
Yeah.
So here's the things that arereally neat about that.
First of all, it's a normalfetch.
There's nothing special aboutit.
So you just get normal fetchsemantics.
That means all your proxies, allyour stuff, it's just normal web
traffic.
There's nothing special aboutit.
There's no kind of weird reverseproxies.
You have to do nothing of it.
It does not exist.
The other thing is has builtinto it the idea of

(16:22):
auto-reconnect.
So if you get lost, you canactually say, I want to
reconnect, and this was the lastmessage I did see.
So that can is just builtnatively into it.
The other thing that'sinteresting is that the one
thing I thought was really dumbat first was like, oh, this is
just for text.
That's not really that useful.
But one thing that's come aroundin the last 15 years is that you
have streaming compressionlibraries are now native to the

(16:44):
browser.
Like Brottly and Z standard, notonly do they compress per
message, but they actuallycompress in a stream, which
means if you start doing a tableand you get table like TR, TD,
TD, TD, TD, that all becomeslike single bits on the wire.
So the irony is that the textformat, because they already
know about all the stuff in thedictionaries and stuff, like
they actually become smallerthan sending the binary version.

(17:07):
So you have this text formatthat's dead simple to write that
compresses to tiny amounts, andit also is just normal HTTP.
So you get all the benefits ofjust a regular web thing, but
you also can send anything down,which means we can send down
signals and we can send down newpatches of elements and we can
morph them in very similar tohow Hotwire does it, but we

(17:28):
actually work with the Hotwireteam to make that faster better.
So ironically, if you're usingIdeomorph from Hotwire, Micah is
the guy behind that.
We have the fastest version ofthat as well.
So ours is faster than the onethat you see in Hotwire by quite
a bit.

SPEAKER_03 (17:40):
Yeah, that's a fairly new addition to Hotwire
and Turbo that I think it wasTurbo 8.

unknown (17:46):
Yeah.

SPEAKER_00 (17:46):
Well, then here's the problem if you're coming
from a Hotwire perspective.
There is the like the standardWebSocket morph stuff that's now
doing redirects and links, andnow you're having to go and pull
again.
So you're doing this requestreply, request reply for every
message.
That basically you do theredirect stuff, right?
You do the 304s, is how youmorph in new stuff.
But the data star way, you onlysend data when the server wants

(18:08):
to you basically keep thatconnection open once you start,
which means you've now just halfyour RTG time and you can make
responses that are independentof requests.
So by default, data star isactually completely
collaborative by its verynature.
If you want to go, I don't know,because it's mostly audio for
you, we can go and play a gameof a billion checkboxes, have

(18:29):
exactly the same state, realtime live, and play like a game,
and there's no extra code.
It's like a few hundred lines ofcode to build the entire thing.
So data star by its very natureis collaborative first, whereas
the problem with stuff obviouslyin a hard wire is that you have
this all this basically requestreply and relinking stuff.
You have the frame stuff, youhave the streams, you have this

(18:49):
kind of HX boost style thing bydefault.
Like there's all these things,and it's not all of it's not
using fibers and the asyncstuff.
Whereas the data star way isbasically async and fibers
first, and it's simpler becausethere's not a you use streams
for this situation, but then youuse the 304, the link stuff for
this morph strategy.
No, it's all dysmorph all thetime, all over streams.

(19:11):
In some ways, it's simplerbecause we just built for the
hardcore case first, and theneverything else is simple from
there.

SPEAKER_03 (19:17):
Right.
I think the hardest pitch forData Star to Ruby on Rails
developers is not even justdatastar is better than Hotwire.
Hotwire is what Rails ship with,and anyone who's been doing
Rails for a reasonable amount oftime and has had to maintain a
Rails application knows thecloser you stick to what Rails

(19:38):
gives you out of the box, theeasier your upgrade experience
is.
So what's the plan for that?

SPEAKER_00 (19:45):
So my idea is datastar itself, the core
concept, like unless the webbrowser actively changes what's
supported, datastar is done.
It's done.
So your upgrade path is you canupgrade to whatever you want
because you won't be subject toall the turbo and stimulus
changes that are happening.
You just you're just opting outof that, like you just don't
need that anymore.
That is part of Rails that youdon't have to be beholden to.

(20:09):
You're not waiting until someonemakes a change there because
it's an unnecessary thing,because not only is it bigger,
it's slower, and it doesn't doas much.
So the irony is that, forexample, Datastar is smaller
than HTMX or Alpine, and it doeseverything that both of us do
combined.
So it's one of those things oflike, there's a reason why we're
so much smaller.

(20:30):
It's not a like, yes, it's kindof nice to boast that like, hey,
we're small and we're you knowwe're faster and all that.
But the idea is that it's sosimple that there's not that
much to change.
There's not these great upgradepaths, it's done.
And also, one thing to be clearis that data star internally is
built on a plugin system like agame ECS.
So if we completely foobardsomething in there, you could

(20:50):
literally pop that out and putsomething else in, and nothing
about data star changes.
It's all built on plugins, theentire stack is.
So we can be wrong, and youdon't have to change anything
about your code because it's alldeclarative.
Like, for example, when you doSQLite, when you say create
index or like query plan, you'renot having to think about all
the B tree underneath or likehow they're doing their thing.

(21:11):
You're just saying create me anindex in the best way that you
know possible.
Like it's all declarative,right?
Datastar is much moredeclarative in its nature, so
that if we make huge updates,your code doesn't change.
Right, right.
So if anything, it's much, muchsimpler and it's actually better
than the hotwire path.
Like, I really do think if DHHlooked at really gave Datastar a

(21:31):
try, he would agree that it'sbetter than Hotwire.
Hotwire came out of a necessityat the time that does not exist
anymore.
Okay.
I would love to see him actuallytry it because like it would be
an interesting conversationbecause I really do think it
solves the core ideals of Rubyof being simple and elegant and
all the things that are intendedby the language.

(21:54):
It does that to a deep degree.

unknown (21:56):
Right.

SPEAKER_00 (21:57):
It just happens to be in JavaScript, unfortunately.

SPEAKER_03 (21:59):
Yeah.
Such as let well, I mean Turbois in JavaScript, stimulus is in
JavaScript because we have wehave helpers that allow us to
not feel like it's inJavaScript.
The SDK that you guys have forRuby for Datastar is pretty
basic.
You're not getting the same kindof helpers you get out of all

(22:20):
the Rails helpers with Turbo.
You get a bunch of helpers outof the box, ways of writing it
on the server side that doesn'tfeel like you're writing
anything other than yourstandard Rails and Ruby, which
almost made it feel like theidea was okay, fine, Rails has
hot wire, but Hanami doesn't, orSinatra doesn't.
They can, because Hotwire isalso a back-end agnostic deal.

(22:44):
But was that intentional whereit was like, okay, we'll keep
this SDK super simple that wayif you're doing Sinatra or
Hanami or whatever the new nextRuby framework is, you're just
good to go and we'll let youfigure out the integration
stuff, or is there a plan for,yeah, we'll do the Rails stuff,
and then maybe if Hanami getsbig enough, we'll do the Hanami

(23:05):
stuff?

SPEAKER_00 (23:05):
Yeah, no, it's a good question.
So the one thing that'sinteresting, we have SDKs for
about 14 or 15 languages at thispoint.

SPEAKER_03 (23:12):
Yeah, there's a there's a lot.

SPEAKER_00 (23:13):
Well, the reason why is because I don't know if you
know, but the SDK is basicallythree functions.
You implement these threefunctions.
And you're done.
There's guidance, and the thingis it's that doesn't sound like
a lot, but at the same time,it's guiding you in a way of
setting up compressioncorrectly, doing all the right
things.
Like there's an ADR, those threefunctions have a big old ADR to
say here's why and what you'redoing.
But the thing is that, like, forexample, in Go, everything's

(23:35):
built around a standard lib.
Like there's an HTT server andall that.
There's any language that hasthis stuff, but for the
TypeScript community, we havethe TypeScript SDK, but we also
have people that have done onesfor Hano or for Express, those
kinds of things.
So it's not just a back-endagnostic framework, it's backend
and framework agnostic.
So the thing is that our Rubycommunity isn't that big right

(23:57):
now.
The only reason why is becauseit's not built in.
But I do think as people use itas rail authors, one thing, a
curse and a blessing of Ruby isthat you can monkey patch to
your heart's content, whichmeans if you want those helpers,
you're a couple lines away fromsaying, hey, I'm gonna build an
SDK on top of this.
Like you can build the monkeypatching that you want to see on

(24:17):
the objects on your controllersas you choose.
We just haven't seen that in theclosure space, there's a
proliferation of differentpeople doing different and in
Python, those two languages haveso much expressiveness in their
languages that we've seen a hugeuptake in the different kinds of
projects built on top of DataStar as more of a framework on
top of it.

(24:37):
And I see that Ruby would be theexact same, you just got to get
someone in there.
Because I think for me, aSinatra style thing with helpers
seems like the right would bekind of more in line with the
data ethos than the entireRails, do everything, embrace
the magic kind of thing.
So, but there's nothing aboutdata star itself that's it's
completely agnostic to that.
So I would like to see that'sone of the reasons for like

(24:59):
coming and talking to you.
Like, there's literally noreason why the Ruby community
for Datastar isn't bigger thanit is.
Right.
There's no technical reason,it's a social problem, not a
technical one.

SPEAKER_03 (25:52):
Datastar is a really is surprising that DHH hasn't
played around with it becausehe's all about that conceptual
compression.
He says it all the freakingtime.

SPEAKER_00 (26:03):
It is a manifestation of that, even if
we disagree on specific details,sure.
In fact, if anything, I wouldlove for him to see it and tell
me why it's wrong.
Because that would actually bemore insightful.
Like, for example, when youtalked about the TypeScript
stuff, I will say that this isactually kind of funny.
Like when the data star stufffirst dropped like three years
ago, it was like, here's all thefeatures, here's all the things.

(26:25):
DH would hate it.
Because it was right when you'resaying TypeScript is completely
useless, TypeScript's bad.
That was on the cons and on thepros, is that DHH would hate it.
So it was the plus and minus oflike, but the thing is what he
was saying, he clarified laterthat TypeScript doesn't show any
value for us, right?
It's too complicated for us.
And I get that.
So it'd be interesting to seewhat he sees in what Datastar

(26:45):
is.
Tell me why this isn't the bestthing to happen to the web in a
long time.
Because I know it sounds likeI'm hyping it, but it's just
like now that it's done, I don'twant to go on podcasts, I don't
want to do a bunch of talks andstuff about it.
I just want to get back to whatI'm doing.
Hopefully, someone else kind oftakes that mantle going forward.
Uh, like I know we talked aboutdoing this for a while.
So, like, this is talk seasonright now, and I'm not doing a
talk on it anywhere because it'slike figure it out for yourself.

(27:08):
It's already the fastest, bestthing.
So if you're interested, great.
If not, okay, cool.
I'll go back to doing normalstuff.

SPEAKER_03 (27:15):
Something that generally comes along with that
conceptual compression, though,is mental model shift.
Where you're used to doing itthis way, but if you just change
your mental model a little bit,everything gets simpler because
you're now able to functionwithin side of this conceptual
compression.
Like, what does that look likefor datastar?

(27:36):
What are the big areas whereit's like, this is probably how
you're used to doing it, whetherit's traditional HTTP stuff or
it's spa stuff.
Yeah.
You might have to tweak yourapproach to get the best value
by doing X, Y, or Z.

SPEAKER_00 (27:51):
That's a great question.
So we actually have on thewebsite, because we kept running
into this issue, we actuallyhave the Tau of Datastar, which
actually goes through what wethink are the best ways.
There's nothing about Datastarthat says you have to build this
way, but if you do, your worldgets better, is the CQRS style,
like command queryresponsibility segregation.
And the idea of that is thatwhen you're building things in
Datastar, normally with mostthings, you'll do a request,

(28:14):
it'll get a change, like a morphkind of thing, and then send it
back as the way people, even ifyou're doing hotwire or if
you're in spas, you send arequest, you get back JSON, and
then you turn it into the dev.
So the Datastar mental model forpeople that really hit things
hard is your commands are yourintent of like you clicked a
button, you did a thing, yousaid, hey, this person moved a

(28:35):
mouse.
I'm gonna send a command to theback end saying, I would like to
make this change.
Not I made this change, it'sbasically saying, here's a
stream of different things thatI'm trying to affect the page
in.
And then that is completelyseparate.
So you're doing that in yourback end, you're handling that
request, and then instead ofsending a response, you send
basically a 200 saying, yep, gotit, it's good.
And then on a separate event bustype thing, you basically let

(28:59):
other people know that this is achange that happened.
And then on another channel, youbasically say, when you start up
that page, you basically say,Hey, give me updates for this
page that I'm looking at.
And so that's an openconnection.
And then whenever something getsaffected, you send down
basically a revised version ofthe view.
Yeah.
So by separating those thingsout, what happens magically out
of that is that all of a sudden,like let's say you're doing a

(29:21):
to-do, right?
And you're adding and removingstuff from a to-do.
You're sending those commandsoff, it's updating, seeing if
it's valid, all that stuff, andthen it's updating a key value
store.
Well, some other person could belistening to that key value
store and then basicallyupdating.
Now it doesn't matter if youchange it from one page or
someone else changed it, or itcame from a back-end process,

(29:41):
everyone's looking at that sameview at the same time and get
the exact same state.
So you cannot get out of syncwith each other.
And now all of a sudden, you cando stuff like there's an example
that we use all the time of likea game of life that's played in
real time.
Uh, you probably saw it, right?
Like, yeah, yeah, yeah.
So it's a real-time game.
To be clear, that's a renderingdemo.
So it's actually sending 2,500individual divs every single

(30:03):
frame, and it's updating thatlive, and it can work on a 3G
phone.
So it's fast.
Yeah, and that's the thing.
It's actually not that fast.
It's a rendering demo showinghow even if you do things wrong,
it still is fast.

SPEAKER_03 (30:17):
Well, it feels fast.

SPEAKER_00 (30:19):
That's kind of the point, right?
Is that we can do some crazythings.
So the other thing that'sinteresting is that data star is
built as a progressiveperformance, not progressive
enhancement, but progressiveinformance.
So, what I mean by that is thatnormally people can just send
down the entire page.
They just you send the wholepage because of the compression,
it's actually like just thediffs between it.
So you send your big fat morphsdown.

(30:39):
But you can, if you all of asudden got into an issue, you
can basically only target onepart of the page and just update
that because everythingtechnically is out of bounds all
the time, kind of like the HXboosts a little bit.
It means that you can targetselect stuff, but most of the
time you have a mental model ofjust sitting down, here's the
state I want the thing to be in.
So the irony is I built it to bethe super performant thing that

(31:00):
you only target certain things,blah, blah, blah.
But we found that it's so fastthat you could just send the
whole page down.
So ironically, it feels a lotlike JSX in that you know how
you just are declaring what youwant the page to look like and
it does all the V DOM stuff.
Well, our V DOM is like broadlycompression.
So we don't have to logicallythink about any of this stuff.
You just send down the page asyou want it, and you get the

(31:22):
thing.
So that's a weird mental shiftfor people because they're so
used to like you can't do that.
You can't send down a whole newpage, but we have things of like
the game of life, the 2500 divs.
We have now have production appsthat are now doing the
equivalent of full Excel, likethe equivalent of Excel in the
browser.
We have companies that are doingthat, and it's faster by orders
of magnitude than the spaway.

(31:42):
Because people said, Oh, this isgreat for back-end processes,
but it can't work for a map orfor Excel spreadsheets.
Well, what our one of ourbiggest success stories is
literally a spreadsheet app, andthen like on our website now, we
have an open map 3D view as oneof our examples that we just
throw in.
Because we are the fastestversion of client-side state,

(32:03):
but the whole point is youshould have very little of that.
So that's kind of the thing isthat we are just the fastest way
to do this stuff.
And the irony is that it's lesscode.
I don't know Ruby enough to makethis guarantee, but I can make
this guarantee in almost everyother language that I do know.

(33:12):
If you tried your hotwire andstimulus stuff and you tried it
in Datastar, it is gonna be lesscode and it's gonna be faster.
I have yet to been proven wrongin any language so far.
I'd believe it.

SPEAKER_03 (33:22):
Yeah.
Just going through the guides,just seeing some of the
examples, not actually writingthe code though, but like I
definitely could see it beingless code.
Yeah.
Whether it's going to click thesame way that like maybe Hotwire
does because Hotwire is built inis a TBD.
Once I play with it more, I'llbe able to speak better to that.

(33:46):
But it does seem like damn,instead of having to write a
whole stimulus controller, likeI'm inlining a lot of this
stuff.
Yep.

SPEAKER_00 (33:54):
Well, we have a different vibe than like we have
a Discord server that's veryactive.
And the irony is that we have, Ithink, around 4400 stars on
GitHub, but we have 2200 peopleon our Discord, which means I
don't care how many people useDatastar, but my thing is that
ratio is crazy.
Yeah, people that are starringone click are now also in the
Discord.

(34:14):
So the thing is that you have acommunity where like Hotwire, I
will tell you, I tried to gethotwire running in Go, and it's
an utter nightmare.
Like it does not work very well.
I didn't want to go off andbuild all this stuff, but you
know, I ended up doing itbecause Hotwire did not work in
Go.
It is built for Ruby, inespecially Rails.
It's built in this ecosystem.
The way Datastar is built,everyone in every language can

(34:36):
talk to each other.
Like you're talking aboutcompression, but the idea that I
can have a conversation in Zigthat is able to talk to a
Rubyist about like what's thebest way to define these helper
functions and all that, there'ssomething magical about that.
That you grow as a community bybeing able to see the beauty in
each language, as opposed toright now where everyone's

(34:57):
living these little tribes oflike your Hotwire people do not
talk to other people outsidetheir domain because it's just
so much tribal knowledgelearned.
Whereas the Datastar Way is justusing what's already in the
browser.
So if anything, everyone learnsto use the browser better.

SPEAKER_03 (35:13):
Yeah, Hotwire definitely was supposed to be or
has the capability of being likeback-end agnostic, but obviously
being bundled in Rails givesRubyists a big advantage over it
because all of the helpers, it'sjust so easy to get running on
Rails.
Luckily, it does work in others.

(35:36):
I haven't met anyone who triedit in Go, but I've met plenty of
Python people who have tried itin their various frameworks and
are using it to success.
But yes, datastar is so muchsimpler.
It really is crazy simple.

SPEAKER_00 (35:52):
My thing is in the Go SDK, there's a bunch of
helpers built in.
Like there's speculation ruleswhere it automatically like
dumps speculation rules intoyour page for you.
It does some nice redirects, itexecutes scripts, it does all
the like there's things in theGo one even that are helpers
that aren't in the Ruby one.
But again, you have to get Rubyus in there to really like
starting to fight it out on likewhat they want to see.

(36:12):
And that's the thing is that onething I do see at the Ruby
community is people that arejust like, hey, I just want to
get my stuff done.
It's not like Linux distrohopping.
You're like, yeah, this is goodenough for me, it's good enough
for what I'm doing.
If it wasn't, I wouldn't beusing Ruby and Rails, right?
Like if I need something morehardcore, so it's almost
pragmatic to a fault in thatthey're not seeing there's no

(36:32):
reason to upgrade, but as soonas you try, I like that's the
thing is I want to have aconversation now that you're
kind of interested in it, have aconversation after you've
actually built something withit.
I'm not good at selling itbecause I'm like, if you don't
want it, then don't use it.
But like it's so much it's weirdto me that now look back at if I
go to like the web dev on Redditand I see the things that people

(36:53):
are complaining about, it allseems like this crazy, weird.
Like, we are kind of the smalllittle cult that looks at the
outside world going, y'all arecrazy.
What is going on here?
It seems so ridiculous how manyhoops people jump through just
to not use the web as it'sintended.
So this is the thing that'sreally hard for people.

(37:14):
Like you're talking about thething that feels different about
Datastar, and it's embracing thefact that your job as a web
developer is to get strings tothe browser as fast as possible.

SPEAKER_03 (37:28):
You are the fastest thing you can do in the thank
you for oversimplifying my job,but yes, you're a hundred
percent correct.

SPEAKER_00 (37:34):
The sooner you get it into a string format that you
can hand to the C and C side,the faster it is.
Because it still has to do thatwork.
If you send VDOM or JSON and itstill has to do the work of
turning into a string that getsparsed, that's still what has to
happen.
So by realizing that what's myjob is to pass butter, like your
job is to pass strings.

(37:54):
That is your job.
And as soon as people embracethat, a lot of the things that
you see people do seems crazy.
Because what they're doing isthey're basically rebuilding the
entire back end state in localstate and keeping this weird
cache of like what state is, andthen still turning into strings.
It's like someone having a VM tothen try to write a bytecode in
to not deal with their VM.

(38:17):
It's turtles all the way down.
It's like, but we already haveDOM parser is built into the
thing.
As soon as you hand it, you getback a DOM object.
That's the it can handlemillions of DOM nodes a second.

SPEAKER_01 (38:28):
Yeah.

SPEAKER_00 (38:29):
Why not just send strings to the browser and let
it do its job?
Your job is to send strings.
People do not like that fact.

SPEAKER_03 (38:36):
I don't know, it's weird.

SPEAKER_01 (38:38):
Yeah.

SPEAKER_03 (38:39):
The one thing that I'm very interested when I start
trying, when I start playingwith it in earnest, is gonna be
I really like stimulus for theconvention of like, this is how
I organize my JavaScript.
I have to write some JavaScript,not a lot, it's sprinkles, but I
can write a little bit ofJavaScript and I can attach it
to whatever element I want.

(38:59):
And there's a basically like aconvention to do it.
I don't have to think too muchabout it.
But Datastar doesn't seem toreally have that.
It has all of the attributes,you can do everything in those
attributes.
It almost feels a little likeI'm teetering on the edge of
going back into jQuery soup.

SPEAKER_00 (39:17):
I understand exactly what you're thinking.
The weird thing is like jQuerywas so right and yet so it was
right for the wrong reasons.
It was these sprinklings ofthings, but the problem is it at
the time the backing couldn't doenough stuff.
So I will say I will highly,highly, highly recommend going
through the guide, going throughthe stuff, then coming onto the

(39:40):
Discord and going in thedata-Ruby channel and show us a
production issue you're actuallyrunning into.
Because most of the time whenpeople I know exactly the
feeling you're feeling, I getit.
Like we get it all the time.
And the thing is, you're like,it can't be this simple.
There's a super complex thing,you're dumbing it down because
you want to like hype yourframework.
I get it.
It sounds like I'm telling youshow us a production issue

(40:02):
that's actually an issue, andwe'll and it you all of a sudden
you'll start deleting code andgoing, Oh, because the thing is
once you get the cycle to theserver where it's not like
request reply, request reply,but it's just sending commands,
acting and having a separatestream for doing the actual
updating and rendering, so manyof those problems that you're
used to running into just goaway.

(40:23):
Like they just go away.
And what's an example thatyou're thinking of right now
that you're like, this can'twork?

SPEAKER_03 (40:29):
I need more organization than this.
I don't think I have anythingwhere I'm like, oh, you know
what?
I don't think it'll work forthis case because I'm just
thinking, as I'm like looking atit, I'm like, yeah, it has to be
more how we can do this.
But it almost is the same wayfrom when I went from jQuery to
stimulus.
I mean, there was some React andVue.js in between that, but even

(40:52):
when I first looked at stimulus,I was like, uh, you know,
there's something I'm missing.
And then it was like, well, no,it's just a really nice way of
organizing your JavaScript soyou don't get back into that
jQuery soup.
And I like that.
I like that there's a kind of adefined, there's guardrails.
I can still get it, I can stillmake it really fucking messy if
I wanted to.
And I have seen some messystimulus controllers, but at

(41:17):
least there's some guardrails.
Data starter almost feels like aslightly sharper knife, where
it's like, if you really wantto, you can make this hard to
grok.

SPEAKER_00 (41:27):
The thing is that I this excites me because it's
like, cool, show receipts.
Like, I I like I'm lookingforward to seeing what because
the thing is, I really do thinkthat the signal and the reactive
approach, the irony is that eventhough like I tend to like
lower-level languages, I reallydo think Datastar is the best
version of FRP functionalreactive programming on the web.
It takes the ideals and says,once you have reactive signals,

(41:50):
it says when this thing changes,this thing updates, and these
things affect these things, alot of that structure that you
had to put in place goes away.
And then because all thesesignals and all this stuff, all
these expressions were set up inyour back end of choice, means
that you use Ruby to define Rubystuff and that the contents of a
the equivalent of stimulus foryou is stuff that you define in
Ruby using Ruby constructs tothen generate that text, because

(42:13):
it's just text, just strings.
Now all of a sudden, most ofyour logic is in Ruby.
So you're in the language ofyour choice using the tools of
your choice, which means most ofthat structure that you're
looking for was already in yourit's like saying templates can't
be that simple.
They have to have more logic.
And it's like, yeah, yeah, thelogic of how you define your
view controllers or whatever isin your Ruby language.

(42:34):
That's where all your work is.
So that's the beauty, is thatall that work doesn't magically
go away, but that structure thatyou need actually lives in the
language of your choice.
Yeah.
It doesn't exist even in theJavaScript.
The JavaScript side is just thefinal declarative thing.
It's just like saying SQL can'tbe, you can't just say from foo
equals bar.
You have to have generated thatsomehow.

(42:55):
Well, yeah, you generate in thelanguage of your choice, whether
that's an RM or justconcatenating strings.
Yes, that's all it is.
So all I'm saying with Datastaris you can have that same kind
of like create your SQLite queryhowever you want.
That is logically simple.
It's easy to vet, it's easy totest.
Data star has now solved the webby making it more declarative.
So it's just a set of strings,not a huge set of JavaScript.

(43:19):
So I basically issued yourproblem by like, I reject your
reality and substitute my own.
You just don't need to do thatanymore.

SPEAKER_03 (43:25):
Yeah, yeah.
I'm very interested to give it atry.
It always is like I can read aguide numerous times and come up
with all of these thoughts, butit's once I start actually
building something with it thatI'm like, oh, I like this, or
okay, this is a pain point.
Then I go to your Discord andgo, this is a pain I'm having,
and someone will be like, that'sbecause your mental model's

(43:47):
wrong.

SPEAKER_00 (43:48):
And I say go to the Discord sooner than you think.
Because each language hasdifferent semantics on like why
and how you would build things.
Like the helpers that you'relooking for, you might say, Hey
guys, do you have ideas of likewhat's a good version of this
helper?
And Isamon, which is the guythat does the Ruby SCK, he'd be
like, Oh yeah, yeah, we can justadd those.
Like, cool.
Like we can just have a separatemodule for Rails that does like

(44:09):
basically wraps up.
But the thing is, the reason whymost of that stuff doesn't exist
is because once you get into it,you may go, I don't need any of
this.

SPEAKER_01 (44:16):
Right, right.

SPEAKER_00 (44:16):
Yeah.
That's the part that I'mactually more interested in the
next conversation of havinglike, okay, that you've had all
the guardrails off, you've hadthe knife the way it is.
It's like having a Suba on alightsaber.
There's no guardrail on alightsaber, like either you know
how to use it or you die.
Like it's kind of that thing oflike maybe you don't need as
much of a guardrail as you thinkyou do because everything's so

(44:39):
simple, it's a mood issue.
So I'm more curious to see wherethat goes for you and tell us
what we're missing.
Because we're very much we'rereactive to the community in
that, like we don't build stuffjust to say, hey, let's wrap
this thing and wrap this thing.
It's like what are the thingsthat you need and let's explore
that.

SPEAKER_03 (44:58):
Yeah, and do you actually need them?

SPEAKER_00 (45:00):
And the thing is, most people come in saying, Oh,
I want this, I want that, andthen they actually build
something and go, Oh, nevermind.
It's a daily thing on ourDiscord, is like, oh, right, you
must unlearn what you havelearned.

SPEAKER_03 (45:10):
Yeah.
Related to Datastar, but verydifferent from the technical
stuff we've been talking aboutthat I did want to touch on
because I'm curious about it.
I don't run any money makingprojects or have businesses or
anything, but I'm alwayscurious.
So, some of Data Star has thatpro version as a way of like

(45:31):
funding development, etc.
Like, how do you decide what'sfree?
How do you decide what's pro?

SPEAKER_00 (45:37):
Okay, so there's kind of gone through a couple
different Different iterations.
The first thing we did is wewere basically getting to the
1.0.
We're now like there, we're justlike literally we were actually
deciding if the next RC isliterally just 1.0.
In my mind, that's it could havebeen a bug fix.
Most of the stuff could havebeen a bug fix.
So we a while back when we weremaking signaled library faster
and all this stuff, for a whilethere, when I first came out

(45:57):
with data star, it literally washere's three plugins, here's how
you write your own plugin.
Good luck, everybody.
Because I basically like if youuse data on data signals and
data in knit.
I think those are the only likeI basically had a couple of ones
that I used, and I'm like, thisis good enough for me if anybody
needs plugins.
But what happened is peoplestarted coming in and saying,
Hey, how do you write thisplugin?

(46:18):
How do you write this plugin?
And it was just so easy for meto write them that I was like,
oh, let me do an example firstfor you before you start writing
plugins.
Like, let me make sure theplugin system worked correctly
before I start telling peoplejust write whatever plugin you
want.
So over time, over the years, weended up with a ton of plugins.
But what I found is a lot of theplugins people should not be
using.
So the irony is like when we didthe whole revamped, we basically

(46:40):
forked our own project and likeredid everything.
And I said, these are theplugins that people actually
need.
And the rest of these youshouldn't use and their support
burden.
So what we did is we actuallyrewrote like when we were
rewriting them, we actually putthem in pro because we're like,
if you're gonna be a supportburden, we want you to actually
pay into the project.

(47:00):
Yeah, that's fair.
So a perfect example one thatpeople got really mad at people
get mad at this.
The irony is the old plugins are100% there.
Not only that, is the peoplehave made community versions of
this stuff.
In fact, there's literally aproject called Data Spa, which I
highly disagree with, but again,go for it.
Do your thing, have fun.
But we don't have to support it.
So we're in a weird spot rightnow where some plugins I think

(47:22):
you should not be using, whichare in pro.
But there are things like, forexample, I have a data animate
that rivals, if not, is betterthan anime.js out of the box
that makes it all declarative.
That's really exciting.
The problem is that plugin is sobig, it's almost as big as all
of Datastar, right?
Like it does all the animationstuff.
So it's like a green sock orsomething like that.
So it's plugins that are too bigor that are out of scope or are

(47:43):
things that I don't think youshould use.
For example, that is datapersist.
People want to use data persistall the time to basically save
it off to local storage, right?
The problem is now you have acache on your cache.
Now you're trying to save statelocally that actually should
have gone to the server.
And people are like, well, whatif it's just for a light or dark
theme?
Most of the time, you want tosend that light or dark theme

(48:03):
because you might change theimages that you're using, you
might change subtle details.
It's not just a light or dark oftailwind CSS if you do things
correctly, right?
So and there's also things likedata replace URL, where
basically people want to messwith the use signals to drive
the URL.
Sure.
And people are like, well, yeah,why is that a pro thing?
That's but the problem is whathappens when you are updating at

(48:25):
144 frames per second.
Now your history is completelyblown out.
Almost always when you're doingthat stuff, you're using it
wrong.
You're doing something that'sgoing against hypermedia, it's
doing a spa-like thing.
So a lot of the stuff is eithertoo big or complicated, or stuff
that actively goes against thetau of Datastar.
So sure, that's part of it.
But the other thing is now wealso have things that are pro

(48:47):
features, like we have it atfull inspector, because in the
browser, SSE is kind of hard tolike it, doesn't always work,
the debug panel.
So we have a full inspector thatdoes all that kind of stuff,
does all the tracking of yoursignals on the page.
When you hover over it, ithighlights where it's used on
the page, all the events thatare coming in, all the SSE.
It's a pro tool.
And then I have the stellarthing that I just did, which I
think is a tailwind killer, andall this stuff is part of a

(49:08):
lifetime license.
So you help the project.
Some people bought the licenseand don't use any of the pro
features.
They're just like, I want tohelp the project because it is
under a 501c3.
It's set up in that way.
It is a nonprofit.
So me and Ben, the other guythat runs the thing, we didn't
want to be in a situation likeTailwind was where if data store
is successful, we want to havesome money coming in that is

(49:30):
equal to the success that wehave.
Whereas with Tailwind, allthey're doing is competing
against everybody else doingShad CMs and the boots.
Anything they do isn't reallyhelping grow the community.
So we have more of the kind oflike a game engine or Pico 8
style thing of like, if you dopro features, it's like buying
the game and then all the modsare available for free forever.

(49:50):
But you have this core enginethat is paid so that if it does
become a super big thing, thenthe project could become
self-sustaining, possibly.
It's more of an experiment oflike you use Stellar for a day,
which we haven't talked about,or used any of the pro features
for a day, you've now paid forthe license for the rest of your
life.
So people say it's expensive fora JavaScript framework, but it

(50:11):
also has a tailwind killer.
It'll have a whole frameworklibrary, a UI library coming
soon that's also agnostic tolanguage.
So now everyone can be using thesame components agnostic of
language.
These are all good things, in myopinion.
So yeah, it's more aboutsustainability if it gets too
big.

unknown (50:27):
Okay.

SPEAKER_00 (50:28):
But if it's not big, it doesn't make that much of a
difference.
We actually added it up over theyear that we have far less than
a minimum wage doing it.
So in fact, I haven't taken asingle dime out of it.
It's there so that we can payfor like going to conferences or
running the website or stufflike that.
If you're gonna be a burden, youshould be no, that makes sense.

SPEAKER_03 (50:48):
That totally makes sense.
Yeah, yeah.
Yeah.
It's always interesting to me.
It's like, cool, we have an opensource project and we have to
make money on it.
How the hell do you do that?
Like, how do you decide what todo?

SPEAKER_00 (50:59):
And I don't think you do.
Problem is that there's reallytwo ways, because I work at
Scenadia uh during the day.
Like my day job is working onNats, which is an open source
project for real-timedistributed messaging and stuff
like that.
And it's open source, and I knowall the media, like it is
building a company that's not VCbased, that's doing open source,

(51:19):
I think is basically impossible.
So my thing is more I want it tobe that if it is seen as a net
good for the world, that it canhelp pay for being able to
actually go to a conference.
Like, that's all I want out ofit.
Like it's a more of apay-forward thing, and also part
of the thing, too, is I justwanted someone to prove me
wrong.
I'm not a great speaker, but Idid a UtahJS conference like a

(51:40):
couple of years ago, where Ibasically said, I think Datastar
is really good, and like someoneproved me wrong.
And since then, no one has, ifanything, it's gotten I'm I'm
much more confident than I wasduring that talk.
And I was like doing real-timestuff at 140 frames per second,
like real-time 3D stuff in thebrowser, and it was fine, and it
worked fine.
The thing is that if it is seenas an I do want to need to

(52:03):
explore, but also there's a goodchance that like if it at all
became successful in the waythat like Tailwind is just the
default, I would probably givemost of the stuff away.
Like, once it's like, oh no,this is paid for the development
of the thing, then just give itaway from there.
I want to be able to supportother developers and other
things.
So the 501c3 really is set up todo that, it's there to help
developers in the long run.

(52:24):
We just don't have enough toreally make that a possibility
yet.
All right.

SPEAKER_03 (52:29):
Super dangerous, loaded question, but I feel like
I have to ask it at this point.
Like, there's no way around it.
AI, how do you use it and howdoes it work with Data Star?
Poorly.

SPEAKER_00 (52:41):
And what I what's been really interesting is
Datastar is tiny, right?
It is so small that it'll fit inany context window, even the
nano ones, even the like thetiny, tiny windows of context.
It's so small.
And yet when you try to buildsomething with it, most things
like the codexes and the clodsand the Geminis, they basically

(53:03):
say, Cool, I'm gonna startmaking a React app.
The thing is, they're so overfitto the data that they've been
trained on that you can makethem work with the data star
thing, but we actively don't tryto hit the like data star is so
simple.
And the thing is, this is thething that I think you'll run
into, is that you're gonna getto start doing stuff on a page

(53:23):
and you're gonna literally say,That's it.
And the problem is it's sosurgical in where you use it on
most pages.
A data star site is whateveryour framework of their it's a
Sinatra site that happens tohave some data star on it, like
it completely gets out of theway in a way that uh is not the
norm.
So the LLMs don't help you.

(53:44):
You don't need LLM to help makeyou a website that does data
star.
It's a non-issue.
So the thing is, I think theLLMs in general are faster.
Like I'm a pretty fast typer andit types faster than I can.
When I say, hey, make thischange in 20 places and do this
thing with that, like changethese text cases to this thing,
it's great at that job.
It's a good aggregator ofinformation, not has no

(54:07):
intelligence.
So if it sees patterns, it'll dothose patterns.
The problem is most of the webis sloppy Next.js garbage.
And so it goes to the median.
Like when you're talking about abell curve, it's never gonna
make you something innovative orinteresting.
It's gonna give you the middleof the bell curve.
But that's where most projectsgo to die.
There's nothing interestinggoing on there.
Now it depends.

(54:27):
If your job is to basically makewebsites for plumbers, right?
Or for like local businesses orlike an accounting firm, those
jobs are dead.
So the thing is, all you'redoing is like going towards the
median.
People are gonna realize theycan get that for themselves.
Those kind of things are dead.
So I always try to work on theoutlier things that are
interesting.
So for me, it's a tool, but Ithink it also is the death nail

(54:49):
of the junior programmer.
Like you don't have that time toreally explore and learn how to
be wrong and get an opinion ofthings.
I don't know what to do foryounger people.

SPEAKER_02 (54:58):
Yeah.

SPEAKER_00 (55:00):
But again, it's a transformative tool, and yet
most of the time, the way it'sbeing used is complete slot.
What's interesting is I only useit for things I already know.
I have this specific thing Ineed to change in this way, this
pointer needs to change to this,I need to make this area and
allocator, check all the usagesof this, like that kind of
stuff.
I like I know what I need to do,I just do it faster.

(55:20):
But when people use it toexplore things they don't know,
I think that's crazy.
Like it's never right, ever.
So, and the thing is if it'sright, it's right in the for the
wrong reasons, and that's moredangerous.
So I think it really does makeyou more of the developer you
already are.
To me, I say it's a scalar onyour vector, which it's just

(55:40):
like whatever direction andpointing you are, it just
amplifies whatever that is.
So if you're a lazy developer,you're gonna be lazier.
If you're like really hardcoreand you want to work on three
different projects, you're gonnawork on three different projects
and you're gonna be able to gofaster.
So I don't know.
I think people have collectivelylost their minds.
But what else is new?
But I think it's one of thosethings of like there's something

(56:01):
beautiful in it, but the beautyis also the horror itself.
It's like it's almost impossibleto do anything in life without
taking someone else down justbecause of our global economy.
It's built off the backs ofsomebody somewhere, somehow,
even if you don't feel itdirectly.
But you have to be aware ofthat, you have to be cognizant
that there's a cost to this.

(56:22):
And I don't know what's gonnahappen in the next five years,
given that it's so heavilysubsidized right now, and the
debt servicing on thesecompanies is gonna destroy it
well before technicalbreakthrough.
So to me, I use it, but also atthe same time, if it went away
tomorrow, I wouldn't it wouldn'tbother me at all.
So I don't know what averagedeveloper means anymore.
Especially lead code is dead,but I also thought lead code was

(56:46):
a complete waste of time anyway.
Can't disagree with you there.
So but the thing is that likelead code now goes away.
So what defines a gooddeveloper?
It's the projects they actuallyput their effort into.
I don't know.
Like it's not even a race to thebottom, it's a race towards the
middle.
And that's the interestingthing.
It's not the complete garbagebecause it wouldn't get popular
enough to get into the trainingdata, and it's not the stuff
like Datastar, it just doesn'tcare about.

(57:08):
It cares about getting the mean.
So it's a race to the middlemeans that there's gonna be
bigger jobs.
I'm from the middle of nowhere,Wyoming, and trying to get a
single book on was incrediblyhard to do, right?
Like I had to order out formonths to get a book on QBates,
you know, that kind of thing.
So at the time there was adesert of knowledge where I just
did not have access to anythinggoing on, and it feels like now

(57:30):
we're in such a flood ofinformation that it's basically
the same as a desert.
The ocean is a desert from thetop surface.
Like when you're on a rowboatand when you're in the middle of
the desert, it's the samefeeling.
Like there's nothing around you,you have no access to water,
there's nothing there.
So the weird thing is we'reflooded with information, but it
still feels like a desert.

SPEAKER_03 (57:48):
It's really hard to drink from a fire hose.

SPEAKER_00 (57:51):
Yeah.
Well, and also the thing is thateverything you learn right now
is useless.
Like even the MCP stuff, all ofa sudden it's oh no, not that.
It's skills, it's this, it'sthat.
You might as well just hold backand keep building stuff in the
meantime.
Find a use for it if you can,but don't let it keep you up at
a night.
I think it's the FOMO stuffthat's VCs are built around the
idea of looking for high amountsof volatility.

(58:14):
Venture funds and all that arebuilt around volatility, not
around innovation.
So you have to know who'spulling the strings of again,
we're talking about it, so theysucceeded, but there's the one
CEO that said not being adeveloper is now a virtue in
this new world.
Like the replica, like, butwe're talking about it because
it's built to build in FOMO andaggression.

(58:38):
It is intended to do that.
That's the intent.
So, like, do you feed into thator you just take a more stoic
approach of like embrace thatthis is what they're trying to
do?
I don't know.

SPEAKER_03 (58:48):
I don't know what the right answer is, but I just
feels like it's impossible toget away from it, so gotta ask.
I also don't know.
I'm kind of crowdsourcing howeveryone else is using it.
What do they think of it?
Yeah, I've found some reallyuseful ways to use it in my day
job.

(59:08):
I've been exploring a ton withit.
Like my usage has gone upexponentially in the past couple
of months.
It's still not doing a lot ofcode writing for me, it's doing
a lot of like validating mythoughts or showing me why
something I think might work,might not work, or things like

(59:29):
that.

SPEAKER_00 (59:29):
I'll tell you right now, I have some stuff going on
in the background that'shappening right now while we're
talking.
One of them, for example, isI've been really digging into
Odin a lot.
I think Odin's a beautifullanguage, it's basically C fixed
for me, which is wonderful.
And the thing is that there'ssome things that kind of suck in
that space.
Like, for example, they don'thave a good HTTP server story,

(59:51):
but there are C projects likeH2O, which are have a great
story.
So writing bindings betweenthose things is just a row
process.
So I have it going off and doinga complete binding generation of
that, and it's great at that.
Another thing, I think NixOS isthis like is way better than
Docker at being able to makeexactly binary reproducible

(01:00:11):
versions of things.
Like NixOS is a reallyinteresting project.
But the thing is, theconfigurations tend to be a bit
of a nightmare depending onWayland and all this other
stuff.
But giving that to an LLM andsaying, hey, I want to be in
this state, and it is areproducible state, and if it
ever gets something wrong, I canrip it out and pull it back in.
And that kind of thing, it canwrite configs faster than I can.
That's amazing.

(01:00:32):
So it's taking on projects Iwouldn't normally do because I
wouldn't say, give me all the H2bindings.
Like I just would try to figureout Swig or some other project
to try to make that happenbecause I just wouldn't tackle
it.
Whereas now I can tackle itbecause it's all rote stuff that
either works or doesn't work.
There's no opinions in there,it's just work.
Right.
That part it's beautiful at, andI see value in it.

(01:00:55):
But the thing is, people areusing it to like define my
neighbor, is using it to selltheir house because they think
this other thing's gonna happenand this thing, and like their
logic makes literally no sense,but they got it from ChatGPT,
and they're literally sellingtheir house and moving because
of it.
I don't know what to do withthat kind of information, right?
That is a kind of psychosis.
There's gonna be winners andlosers in that thing, or I'm

(01:01:16):
just wrong, but then the wholeworld burns if I'm wrong.
So I don't know.
Either way, I have to be okaywith it.

SPEAKER_03 (01:01:21):
And it's sort of like when JavaScript frameworks
got big, right?
There was a new one or a newthing to learn every other day,
every week.
Feels a lot like that too, justlike you said.

SPEAKER_00 (01:01:33):
I think there's a good chance of the boiling frog
again of people don't realizehow much they have lost the
ability to actually be cognizantand understand what code is
doing.
Good things are gonna come outof it because it's like you're
gonna see the people that areactually really interested in
coding.
Because coding has kind ofbecome a somewhat of a status
thing of like coders get paidwell and they get to work

(01:01:53):
remotely and all this stuff.
Like the people that actuallywant to do the work are gonna be
the ones that stick around.
So it's gonna be a great filter,but I think that that in the
long run is a good thing.
The VC funding stuff has to theactual financials don't make any
sense.
So my only hope is that localmodel generation figures out its
own thing.
Because I would love to havethings that are trained

(01:02:15):
specifically on my code base orthe Linux kernel, or like here's
how SQLite does things, and likethat kind of local training for
your own models.
I think that long term goingforward, people are like, hey,
here's my model of how I dothings, and here's my thing.
Hey, let's collaborate.
Like, there's a beautiful futurein that, but the VC backed giant
models that are burning watersources and rainforests, I think

(01:02:37):
that is an untenable thing.
So yeah, there might be somegood that comes out of it, but
not in the next five years.

SPEAKER_03 (01:02:44):
Yeah, we'll find out.
The next question, because Iknow we've covered so much in
our what are you working on?
What kind of blockers do youhave?
But since Datastar is done,don't really have blockers
there.
What do you have as a blocker?

SPEAKER_00 (01:03:00):
So my blockers right now are I want to be done.
And the thing is, to me,programming is always a tool for
extending your abilities.
And my thing is again, it seemslike a weird boast until you
start actually playing with it,but the web, the JavaScript is
done.
All the things that you areconcerned about are non-issues,
and I can't explain that untilyou try it.

(01:03:21):
So that part's done.
The web just being a non-issueis pretty cool.
CSS now, to me, with the stellarstuff, is basically done.
I have the stellar UI stuff todo, and then I'm going back to
working on my database when Ihave time.
I think that's the thing that'sreally what I got interested in
in the first place is like, howdo I solve data at large

(01:03:42):
petabyte scales?
And that's the project problemthat I'm going back to.
So my blocker is that I want tohelp everybody else so I can get
back to the thing that I wasdoing originally.
But I think it's a net goodbecause I become such a better
developer dealing with otherpeople's intents and like
telling people no.
I've gotten much better at that.
And so my blocker is literallygetting back to the thing that I

(01:04:07):
wanted to do, my originalintent.
But also the problem has changedin my head over time.
So kind of like the LLM to makeyou more what you want to be.
The database I would havewritten before data starting,
the data, the one I wrote afterit is a very different database.
Am I missing one more thing?
My blocker is am I on the rightroad mentally to move forward?
Because that's a big project.

(01:04:27):
I mean, obviously, that's a hugeproject.
And the question is, do I havethe right mental model and do I
need more time thinking aboutit?
So that's probably my onlyblocker for things moving
forward because everything elseis kind of rote.
Like we are gonna be doingStellar UI, which is the set of
components, and that's justknocking through all the things
that are available in Daisy UIor Shadsian or like that's just

(01:04:47):
work.
That's not a blocker, that'sjust stuff to do.
So if you would have talked tome a year ago, I would have had
a huge list of blockers, but I'min this excited point where not
only am I not blocked, but Ithink most of the web is not
blocked.
If they really gave it a try, Ithink most people would go,
that's it, and I can just getback to work.
There could be a huge impact.

(01:05:09):
I just don't know how to makethat impact.
I'm not like a big speaker, I'mnot a I don't have any clout in
the Twitter verse or anythinglike that.
I really do think if it's notDatastar, it's something that
looks very, very similar to DataStar.
If someone could make a betterversion of it, I would love it.
That'd be great.
But just like the way React feltso good compared to how you did
things before, right?
Like you felt like, oh, I couldmake Google Maps.

(01:05:31):
Like you had that feeling whenyou tried it, like, okay, I get
that why this is different.
This is such a paranoid, this iseven more of a shift than that
was to get back to I can'tbelieve how simple this can be.
What have we been doing?
I just hope that that opens upthe doors to the next person
that makes something even betterthan that.
I'm looking forward to that.
So, but yeah, I guess I do haveone blocker.

(01:05:51):
The blocker is I don't know howto reach people without sounding
like I'm selling something.
Like, sure, I don't want to dothe conference talks.
I already feel like I've putenough into the open source
community.
How do people like you not knowalready know about datastar?
I'm gonna be actually talking toRichard Felman, who's the guy
behind Rock, and he's done abunch of things around Elm.

(01:06:12):
And he was like, I just heardabout Datastar from this other
podcast I did.
And I was like, how can you, ofall people, like he's like one
of the the Elm in Action is likea really great book?
And like Datastar is like acondensed version of Elm, but
without having any languagebehind it.
Like, you don't even need thelanguage because you have the
concepts.
And he didn't know about it.
And if anyone should know aboutit, it would be him.
How do you reach people withoutbut also not care?

(01:06:35):
I'm at the point where I don'tcare.
I'm not doing it out of any kindof self-glory or anything.
I just want to see the web be abetter place.
What do you do?

SPEAKER_03 (01:06:43):
Yeah, I got nothing for you.
Sorry.
That's no, that's a realblocker.
That's a real blocker, right?
That is a real one, yeah.
I'm reeling from discovering itbecause someone else listened to
a podcast episode of mine andwas like, why not datastar?
And I'm like, the fuck isdatastar?
Like, that's why not data star.
I didn't even know it was athing.
And now I'm like, oh, I'vereally got to play with this

(01:07:03):
thing.

SPEAKER_00 (01:07:04):
But the thing is funny is that I'm gonna play
devil's advocate, but we haveall these SDKs, we have full
written guides, we have multipletalks.
One of the talks is from DavidNolan and his group or that
team.
To me, David Nolan's the guywho's partially to blame for
React being popular because hemade a version in ClojuScript
that said, Hey, if you do shootcomponent update and you do

(01:07:25):
things using the closureconstructs, you can actually
make React really fast.
And then all of a sudden,everyone's like, Well, React's
really fast.
It's like, no, no, no, no, no,no.
If you do these specific things,it can be pretty fast.
The thing is that people justhop onto these weird Trained.
So we have all the SKs, we haveguides, we have a bunch of
talks, we have success stories.
What else can you do?

SPEAKER_03 (01:07:45):
Yeah, it's just discoverability at that point.
You're just talking about notwanting to go and do conference
talks, not wanting to be on alot of podcasts, but like, how
else do people find out aboutthe new tech?
How else do people find thesethings?
Early in my career, I learned somuch about thinking about code
and thinking about how I'mbuilding something from

(01:08:07):
listening to podcasts with otherpeople talking about that kind
of stuff.
And now that I run a podcast, Ilearn a lot from the people that
come on and I ask them a ton ofquestions.
And it's like, but I stillstruggle to find a guest.
I'm like, I don't know who'sdoing something cool.
Like, who wants to come on theshow?
I don't know.
I know like six people.

SPEAKER_00 (01:08:27):
I'm happy to come on to this.
I would like to see this as ajourney into getting back to the
web.
I want to have more of theconversation of not just what
I've been up to, but I want tosee does this make an impact now
that you know about it?
Is it just a discoverability ofthe first step, or is it that
it's different enough thatpeople are like, eh, I'm good.

(01:08:48):
We've had quite a few successstories of people taking our
stuff and being orders ofmagnitude faster or less code,
or I can send you a bunch ofthese of being faster, but we've
never had anybody that says, I'mgoing back.
So it would be interesting tosee, like, for example, from
your perspective, of you try theday star way, you come to the
Discord, like talk through yourideas, and then say, No,

(01:09:10):
Hotwir's right for me.
That to me is more excitingbecause it's not about us being
popular, it's more about whatare we missing?
Because it feels like we must bemissing something because
OpenClaw has 240 or 260,000stars and it's complete garbage.
Everyone knows it's garbage, andyet it's more popular than the
Linux kernel.

SPEAKER_03 (01:09:30):
What are we doing as developers that this is you just
need to get a bunch of bots tostar your repo?

SPEAKER_00 (01:09:36):
Yeah, I'm just not gonna.

SPEAKER_03 (01:09:38):
There you go.

SPEAKER_00 (01:09:38):
I'm just too dumb.
That's the problem, is like youknow, there's different kinds of
intelligence, and that's a kindof like marketing intelligence
is I'm not good at so.
But what we do need is peoplelike you to say, no, really, we
can be better than this, or not,or to say, no, it's good enough.
So I'm in a weird spot where Ilike the size of our community.
I can talk to everybody, I knoweverybody, but also there's so

(01:10:01):
many people that are left to thewayside that don't know about
it.
It's a weird thing.
I had a thing at work, like wehave a bunch of projects that
are now using Datastar, and it'sso much faster, so much better
for doing real-time stuff and doeven doing normal crud stuff.
Like, it's just better in everyway.
I work here, and it took meyears of convincing people to
like, hey, why don't we do thisinstead of React?
Why don't we do that?
Well, well, maybe for the nextproject, oh, maybe for this one.

(01:10:23):
And now we have multiple thingsthat are all in flight using it.
The code is simpler,everything's simpler, it's
faster, and we can work in thelanguage of choice.
So I've been actually lookingforward to you either falling in
love with it or completelydenouncing it.
Either of those sounds good tome.
I'm good with either one.
There's no ego there.
It's like, please tell me I'mwrong here, and that hot wire
and stimulus really is the wayforward for Ruby.

(01:10:46):
I would love to hear thatbecause I like what Micah is on
one of the people behindHotwire.
And he's done great work inthere, but also I just think
it's fundamentally flawed.
Like the WebSocket thing soundsgood, but when you get into the
details, it's not good.
There's all these things thatare specifics that do matter
that the average developerdoesn't have to care about, but
the person developing theframework does have to care
about.
So but yeah, I think it's just adeath from a thousand cuts in

(01:11:09):
the hot wire and stimulus.
Can't wait to see what you cando when you take that away.

SPEAKER_03 (01:11:15):
Yeah.
I'm very interested to get intothe weeds of it and actually
feel it either remove a painpoint or add a pain point, or
how it shifts my mental modelwhen I'm thinking about I'm in
the planning stages, I'm gotthis white board in front of me.
I've got to go do the thing.
Is datastar helping with that?

(01:11:36):
Is it hurting with that?
Do I need such a mental modelshift that almost becomes not
worth it?
Sort of like learning Vim, whereit's like, yeah, you'll
eventually get faster, but it'sgonna hurt.

SPEAKER_00 (01:11:49):
It's actually kind of like the Vim Emacs world,
it's kind of Emacs is its ownoperating system, right?
It literally is.
It has its like own stack,basically.
But so much stuff is built inthat you kind of don't have to
care unless you really want toget into the weeds.
Data star kind of feels likethat, that it's such a weird,
like it's not the norm.
Everything's just built in andyou just kind of get things done

(01:12:11):
and you just go about yourbusiness.
It doesn't have the learningcurve that you're used to, other
than if you've never done CQRSor any of that stuff.
But again, you don't have to dothat to do Datastar, but if you
embrace it, you'll see how muchsimpler your life can be.
So the Tau definitely explainsit out, but please join.
Go on that journey because Ithink that it would be really
valuable.
And you might even bring onpeople, other Rubyists that are

(01:12:34):
using data star.
We have the guy who does theSDK.
There are Rubyists in thecommunity, and it would be
interesting to see why they camethere as opposed to using like
we already have people that cameto Datastar from Ruby.
Why did they do that?
Like they'll probably have moredeeper technical reasons than I
do.
My thing is like I just lookedat Hotwire and looked at the
details and went, this is doingtoo much and it's not doing

(01:12:56):
enough at the same time.
Which is what I felt with HTMX.
HTMX is so much morecomplicated.
Perfect example of this, becauseif people have done any kind of
HTMX stuff, there's HXget.
It goes, you give it a URL, itbasically goes to that website,
gives you back a thing.
The problem is that that iseasy.
You just do HXget, you get yourthing, and it updates that part
of the page.
Great.
The problem is that's actuallyit's easy, but it's not simple.

(01:13:18):
Because what it does is tyingHXget to a click event.
And it's like, but what if Idon't want to be a click?
What if I want to be a mouse?
Oh, then you need this extratag.
Well, then you need this extratag, and it becomes tag soup by
you actually controlling it,whereas the data star way is
much more composable, but youhave to learn what those
different pieces of those Legosare.
So people are like, oh, it's notas simple.
It's like, no, it's simpler,it's just not as easy.

(01:13:40):
But the thing is, it's moreextendable in a way.
So the question to you is moredo you like that?
The thing is, even if you arehave Legos, you can always write
a monkey patch helper that likewrites that Lego for you, right?
Like if you find patterns thatyou're using, you build up the
constructs that you need, notbeing only allowed to do things
like HTMC.

(01:14:01):
The other thing I will saythat's very different from
people that have tried HTMX ortried the hypermedia first
approach in the past.
I think one of the things that Icompletely disagree with on the
HTMX side is that everything'sbasically request replier
polling based, and you end upwith a thousand routes.
Like you end up with so manyroutes for every little bit of
the page.
In the data store way, youusually end up with one
connected stream and that's it.

(01:14:22):
And you just send commands andposts like you normally would,
and that's it.
So it's just simpler because youdon't need all that stuff.
If you do the CQRS style and youkeep connected, all that stuff
goes away.
So it's just simpler in everyway, but yeah, it is a different
mental model.
But I would say join the Discordbefore you get into trouble.
Join it and talk to the people.
They will guide you in a waythat there's time to go through

(01:14:43):
the pain, right?
Like doing the homework by handmakes sense, but you're already
a professional developer, youalready know Ruby, you don't
already know this stuff.
So don't go through the pain ofsaying, How would you do it in
Datastar?
At least start there and thenlike then have the conversation,
is what I would say.

SPEAKER_03 (01:14:58):
Okay.
Noted.
All right.
So last question.
What's something cool, new, orinteresting that you want to
share?
And I feel like you've mentionedit a few times already.
If you want to go that route,you're tailwind killer.
But it doesn't have to be that.
It can be, I've had people talkabout endangered hobbies and
cloud brightening and books thatI'm now addicted to.

(01:15:20):
Sky's the limit.
You pick, but you can tell uswhatever you're kind of pumped
about.

SPEAKER_00 (01:15:25):
I think I will talk about the two projects that I
think are really are the rest ofthe answer to self and the web.
But I will say I have just gotmy hands on a 1937 Atlas lathe
that I'm in the middle ofrebuilding in my shop.
And that's really cool.
It's cool to work on olderequipment.
I'm basically updating it to uselike modern servo mortars and
stuff like that.
In the thread making, they onlyused to have inches, right?

(01:15:47):
Because it's an older model.
But I redoing it so that it hasan electric gearbox so that it
actually can do metric and powerfeeding and all that.
So it's always good asdevelopers to also build things
with your hands, I think.
Like it does give you adifferent outlook.
So I'll say in my personal life,that's one of the things I'm
working on now.
But the things to solve the web,I basically have data star,

(01:16:07):
which is done.
But in Pro, there is twoprojects that I think are really
changing the game in aninteresting way.
One of the things that I thinkis really like that's built into
the browsers that people don'tknow that much about, or it's
just a freaking hassle to workwith, is Web Components.
Web Components are a great ideaof encapsulating state for

(01:16:28):
JavaScript, but the interfacethat you do in them in them is
just not fun.
And the thing is, ironically,it's a bunch of JavaScript.
You'd think something that'sbuilt for the web to make it a
declarative element would bedeclarative.
That's not how it works.
It's just a bunch of classes,and like you have to export
classes that extend HTML.
Like the way you do it is, Ithink, a bit of a nightmare.
So I have this project calledRocket that's inside of Pro that

(01:16:50):
basically turned web componentsinto declarative syntax.
So you write things usingDatastar like things, and then
it does all the local scoping,does all the right things,
automatically imports modules,does all the right things.
You can go look at the website.
But I think that that's a reallyexciting project because it's
basically, and what'sinteresting, it is a single
plugin in Datastar.
So in one plugin in Datastar,which ironically is about the

(01:17:13):
size of Datastar, it's aroundnine, 10 kilobytes alone.
It's completely making webcomponents declarative.
And for most web components,that makes it super nice, it's
super convenient.
And also what's interesting isyour components now just become
literally template elements.
Template element with data dash,rocket dash, and then the name
of it, stuff like that.

(01:17:33):
And you set up your props, ithas an entire concept of I don't
know if you know Zod, like allthe validation on schema
validation.
Like there's TypeScript stufffor doing validation.
That does this property have theright value?
Is it min max?
That kind of JSON schema stuff.
So that's built in.
It does auto imports of asyncmodules.
It does all this stuff out ofthe box that makes it so nice to

(01:17:53):
write declarative stuff.
Like the thing that you'resaying, well, I have this really
complicated thing that's reallyhard.
eCharts is this amazingJavaScript framework for doing
charting, but it is reallycomplicated setup.
The Rocket component is like 200lines, and normally it's like a
thousand lines to get started.
So like you have 200 lines, youget that done, and you just drop

(01:18:13):
that on any page in anylanguage, and it just works.
So it simplifies the things thatyou have to interact with.
It doesn't try to replace a 3js3D model, but you can get a
globe working in 3JS in like 20lines.
You can get a copy-paste buttonwith zero lines of JavaScript.
There's all these things thatall of a sudden become you're
using the knowledge that youlearn on Datastar to then extend

(01:18:33):
to doing web components.
So I think that's a really neatproject.
And the other project I did isbasically a thing called
Stellar.
What Stellar does is Tailwindwas a great project for when it
came out, in that it basicallywas saying SaaS and less have
all these components and stuff,but really you end up making
these utility classes, and overtime you just add more and more.

(01:18:56):
The way Tailwind was built makessense at the time because CSS
couldn't do very much, right?
Like 10 years ago or even eightyears ago when it came out.
So uh the problem is that youend up with a class soup and it
has to iterate through thosehomes.
And then when you're actuallysending data, half your data
that you're sending down isactually classes.
Like if you look at mostprojects, it's just class soup
everywhere.

(01:19:17):
So there's this interestingproject for Adam Argyle from
Google at the time was doingopen props.
And open props was like, I thinkthe real value of Tailwind is
the idea of the design system,but the interface you do with it
is terrible.
So what open props was doing isbasically saying, here's a
design system, all the thingsthat Tailwind gives you, but
it's using CSS variables.

(01:19:38):
And the thing is, a lot oftimes, all the things it did
with all the nesting and stuff,you can now do CSS nesting
natively.
You can do where clauses, youcan do these mixes, like there's
all these things that are builtinto the browser now.
So the Adam Arngard was doingwas saying, hey, you can just
use CSS with this nice designsystem in your CSS and call it a
day.
The problem is it's his designsystem.

(01:19:58):
So as soon as you want to doanything interactive or say,
hey, I need he has width onethrough 10, but what if I need
11 or 12?
Now I'm hand rolling it.
Now I'm like, it's a goodstarting place, but now you're
starting to do stuff by hand.
I come from a parametricbackground where doing CAD and
CAM where everything'sconstraint based.
So if you change this onevariable and it's a
multiplication, like on therelationships, right?

(01:20:19):
It's all about so Stellar CSS istaking the idea of open props
times a thousand and basicallymaking every single thing in the
entire project parametric in itsnature.
So you say, This is my size whenit's a min, this is my max, this
is the way that the multiplierswork, and you just play around
with the editor and it's liveupdating the UI elements on the

(01:20:40):
fly.
So we have a video that came outthat I can send you a link to,
but the idea is that you'rebasically making it completely
dynamic.
As you make so it'd be theequivalent of like in Tailwind,
if you're changing your config,imagine if it was real-time
updating your website live asyou were changing your editor.
Like, so it's not only like youmake a couple tweaks saying,
hey, I want steps one through20, and I want them to be on

(01:21:01):
this kind of shift and this kindof hue colors thing, and it
automatically updated your sitelive because again, it's all
data star under the hood.
So it can live update your page.
Now all of a sudden, becauseit's collaborative first, means
that you could share that sitewith someone else and actually
be with a client playing withthe CSS live, editing your
updates, and now sharing andbeing on the same page across

(01:21:23):
everything.
So it's basically collaborativedesign elements on the fly.

SPEAKER_01 (01:21:28):
Nice.

SPEAKER_00 (01:21:29):
It's a really interesting project, and it's
one of those things.
I'll send you a link so you canlook at the video and then we
can have our discussion.
I feel like it's one of thosethings it's almost better to
come from you trying to explainit to an audience than me.
I'm too deep in it.
It's hard for me to explain.
Yeah, yeah, yeah, yeah, yeah.
I get that.
I'm doing a bad job atexplaining it, but it's really,
really neat in that even if youdid all of the like in its

(01:21:50):
default position, I think itcreates like 1200 variables for
you.
Like it does all kinds of crazystuff.
But the thing is it ends upbeing like 12k, and it's a
one-time cost ever.
And now those are available toyour site and it's cached and
it's easily available, and youcan always trim it down from
there.
But there's something beautifulabout like, here's my design
system, and now I'm using CSS asCSS was intended with all the

(01:22:12):
container queries and all,because a lot of things with the
container queries in Tailwind,it gets so confusing, and it to
me it's almost like a write-onlything where you write it out,
you're like, cool, this works.
And if you make a change, youalmost start over and you start
writing it again.
Whereas this style, you'reactually using CSS as intended
with its nesting and itssemantic styles and stuff.
So there's almost nothing thatgets sent on the page.
You know how if you do Tailwindtypography, you get nice styles

(01:22:34):
out of the box.
You're like, cool, I get my nicething, and I just do semantic
stuff like markdown or somethingin in there.
Imagine if your entire websiteworked that way.
So that's what I'm movingtowards.
We just did the first initialrelease.
I'm about to do 0.02.
It probably will come out todayor tomorrow.
But yeah, I'm I'm excited aboutthat, and I'm excited for you to
try it and see what you think.

SPEAKER_03 (01:22:55):
Yeah, I'm excited to give it a try too.
And and especially Data Star.
It is one of the things thatwe're like Well, it seems like
it could be.
In some ways, it feels verydifferent, in some ways it's
like, oh yeah, it's like goingback and building your very
simple website that can actuallydo shit.

SPEAKER_00 (01:23:11):
Imagine doing shit, but also being real-time
collaborative out of the box.
One of the things that wasreally like we had someone from
the HTMX community come in andhe does a lot of stuff with
HTMX, and his hello world inDatastar was building Google
Wave.
That was his hello world.
He just built it from screen.
Like he's like, oh, I'm justgonna keep going with this

(01:23:32):
because he's basically buildinga chat app is maybe 15-20
minutes.
Wow.
A hello world is a full reactivechat app.
The hey equivalent stuff, likeyou could do something like that
in minutes.
So the question is like, ifthat's a hello world, what does
like an actual product looklike?
I can't wait for you to join thecommunity and like start.
Someone needs to tell me I'mwrong because it's no way that I

(01:23:55):
can be right for this long.
That feels weird in tech, right?
Like to be like someone provedme wrong, bro, and like no
JavaScript framework author willwants to compete with it, kind
of thing.

SPEAKER_03 (01:24:06):
It's a weird thing.
Yeah, challenge accepted.
I will definitely be putting it.
What's your project?

SPEAKER_00 (01:24:11):
What are you gonna what are you what are you gonna
what are you gonna build?

SPEAKER_03 (01:24:13):
To get my feet wet, I'm gonna do a to-do app because
that's what everyone does.
But there's a few painful partsof our app at work that lean on
React because they are veryreactive.
It's extremely the client doesstuff and they need to see
immediate feedback and thatround trip that you need for

(01:24:34):
doing it the hot wire way, isn'tthe level of fidelity isn't
quite there, but React solvesthat for us with the way that we
have it, but no one likesworking on it because it's
fucking React.
And I just kind of have thisfeeling that Datastar will be an
excellent replacement for it.
So I might take that.

SPEAKER_00 (01:24:55):
Do you already have an event bus kind of for your
system?
Like, is that already built in?
Sort of, sort of, okay, sort of,yeah.
The thing is, we have literallya to-do MVC as part of our
built-in stuff.
I'm happy to send you that codeor work through it with you of
like explaining because it's inGo, but the ideas of like the
actual update and like how itworks is very different than
most to-do apps.

(01:25:16):
Like when you have time, let'sgo through it and I can show you
the Go code and show you how itworks on the site.
And like let's have aconversation about it because I
think you might go, oh, becauseit's in Go, which is not the
most terse language, it's like ahundred lines of code.

SPEAKER_01 (01:25:31):
Okay.

SPEAKER_00 (01:25:31):
So the entire to-do, like the to-do MVC is a hundred
lines-ish.
It's called in Go.
It's just simpler because onceyou look at it, because
basically, for a to-do app, youbasically have in that version,
you get the main page, you getkind of the skeleton of the page
that also has the renderedcontents of the to-do app.
And then in there it's a datainit and then an at get, which

(01:25:52):
basically says to a slashupdate.
So it goes to that same endpointand gets the slash updates.
So now you have a directconnection.
So everything else is just acommand to like do this, do
that, do this.
That one connection is the onlything that stays open, and then
as it updates the changes, itthen sent back directly.
So it doesn't matter if youchange it from there or from the

(01:26:12):
event bus or from disk.
If you make a change to the diskautomatically, like all this
stuff happens natively.
So I might need to show you thatbecause I think it might you
might be able to be a RosettaStone of Delaney's crazy
pointing, like for people thatare listening.

SPEAKER_03 (01:26:25):
I'm just pointing into the sky.
It's that always sunny inPhiladelphia meme where the one
character Charlie's likepointing at the board and like
he looks completely crazy.

SPEAKER_00 (01:26:36):
But he's making sense, yeah.
And then what's funny is likewho is this person?
Like, they've all been lookingfor their mail the whole time.
Like, there is no conspiracy,everyone's been waiting on their
mail.
So that's what it's gonna kindof feel like is that I'm gonna
do all this pointing, and you'regonna go like, okay, so I just
have to set up an event streamand subscribe to one thing in
one place.
That's it, yeah.

(01:26:56):
Yeah, yeah.
There's no conspiracy here,there's no grand conspiracy.
Mac was right, that's a hundredpercent the thing.
Okay, yeah.
So, yeah, we'll probably shoulddo that offline, but I think
you're gonna be shocked.
I know actually, what would bereally interesting is I would
love to take the to-do one thatwe have on the website, because

(01:27:18):
it's go, is a verbose language,and say, can we get this under X
amount of lines in the Rubystyle or the Rails style?
Like, how small is a to-do NBCin Datastar?
Because I think you could playsome code golf there and be kind
of shocked at how small it canbe.

SPEAKER_03 (01:27:34):
Okay.
Yeah, I like code golf,especially in Ruby.
Awesome.
Yeah, well, I mean, hey, thanksfor coming on the show and
talking about Datastar and likegoing through everything.
It's pretty exciting project.
I'm really pumped to check itout and actually play with it
because I think that will be thebig difference between like,
wow, conceptually this soundsawesome, but what does it

(01:27:55):
actually feel like?
That's the part I'm very muchlooking forward to now.

SPEAKER_00 (01:27:59):
Well, and I'm looking forward to seeing where
there's no reason why we aren'tbigger in the Ruby community.
There's literally like notechnical reason why we aren't.
So I can't wait for you to showus what we're missing, or like
you become a cultist and nowyou're spreading the good word.
Or we'll get you your whiteshirt and the black tie and a
book of data stuff.

SPEAKER_03 (01:28:19):
I've listened I already am a cultist for Dungeon
Crawler Carl.
I don't know if I can take on acouple of things.

SPEAKER_00 (01:28:23):
You too?
Okay, dude.
The thing I haven't read the newone's coming out pretty soon.
It's kind of going off the railsa little bit, but I have to say
it's so good.
Have you done The Wandering Inn?

SPEAKER_01 (01:28:34):
No.

SPEAKER_00 (01:28:35):
You are a Dungeon Crawler fan, but you don't know
about The Wandering Inn.
No.
The Wandering Inn is the longestbook series ever written, and
it's by some young gal, and ithas more words, I think, than
Stephen King and the Oh, TerryPratchett?
Uh, Flatlighter?
Yeah, yeah.
She's written more than TerryPratchett and Stephen King, and
she's like now in her 30s.

(01:28:56):
It's amazing.
Oh shit.
It's like the audiobooks are waybehind, and it's on book like
17, and each book is like 60hours.
The first book, so I will say,you know how for Dungeon Carl
Carl, the first one, it's good,but it's a slow burn, and then
it gets it starts going.
Sure.
Read the first book of WanderingIn, and then tell me you don't
love it.
You gotta do the full wholebook.

(01:29:18):
At first, you're like, they dropthe girl in like an RPG world
kind of thing.
Sure, it loves me.

SPEAKER_01 (01:29:22):
Yeah.

SPEAKER_00 (01:29:22):
Yeah.
But the thing is, by the end ofthe book, if you're not like,
oh, okay, this is not the book Ithought it was.
Let me know because yeah.
If you like Carl, you you shouldlike that.

SPEAKER_03 (01:29:32):
I love me, Dungeon Crawler Carl.
Everyone at work is sick of metalking about Dungeon Crawler
Carl.

unknown (01:29:37):
Yeah.

SPEAKER_03 (01:29:38):
My wife.
Is sick of me talking aboutDungeon Crawler Carl.

SPEAKER_00 (01:29:42):
See, that's where we just I just don't tell anybody
about it.
Um Team Donuts, so donut holesor Princess Posse?
Depends on which talk show I'mon.
Okay, fair, fair.

SPEAKER_03 (01:29:56):
Very nice.

SPEAKER_00 (01:29:57):
Try to play the audience, so okay.

SPEAKER_03 (01:29:59):
Alright, good.

SPEAKER_00 (01:30:00):
I do like the fish people.
I forget what they called.

SPEAKER_03 (01:30:02):
The quietine.

SPEAKER_00 (01:30:03):
Yeah, cuitine.
That's it.
Yeah.
I thought the whole thing waskind of interesting.
So I don't know where it's gonnago from here, though.
It's every one of them.
It gets more and more chaotic,and I love it.

SPEAKER_03 (01:30:13):
Yeah, I feel like they need like a respite of some
kind because it's gotten alittle kooky.
I mean, it's it's ramping upbecause I mean Matt Dinneman,
the author, has said he wants todo 10 books.
Eight is about to happen.
Yeah.

SPEAKER_00 (01:30:26):
So he's running out of space to finish which have
you read his the one he didbefore he did Dungeon Curl Card?
The kaiju uh BattlefieldSurgeon, yeah.

SPEAKER_03 (01:30:37):
Yeah, that was it.
It's not finished.
I'm wrapping up Operation BounceHouse's newest book.

SPEAKER_00 (01:30:43):
So yeah, that book is a rough read.
It's better by the end.
So it's another one of thosekind of like wandering in.
Like if you don't get to the endand go, Battlefield Surgeon is a
tough read, but at the sametime, like you get to the end
and go, okay, that was awell-written book.
I feel like that's the wayWandering Inn is.
By the time you get to the firstbook, if you're not like, okay,
this has a voice.
Nice.

(01:31:03):
Um, so yeah, highly recommend.
It's funny.
We'll talk more about this forthe next two hours or two.

SPEAKER_03 (01:31:07):
Yeah, just don't get me started on what I just did.
Yeah, oh boy.
Okay, we're gonna cut it offhere then, because otherwise,
this will become my longestepisode ever.
Again, seriously, thank you forcoming on and talking about it.
Excited for giving it a try.
And once I do play with it, cantotally have you back on and
have a completely differentcontext for the conversation.

(01:31:29):
And if anybody listening isinterested in trying, I'll have
links to the Discord and linksto the guides.
So you've got a good ingressinto exploring this brave new
world of Data Star.
And Delaney, thanks for comingon.

SPEAKER_00 (01:31:45):
Hey, thank you.
This is a blast.
I can't wait to see either thatI'm right or wrong.
Either way is gonna be great.
So I'm gonna be great.
Either way, I want to come onand tell me how bad it is.
That would be almost more fun.

SPEAKER_03 (01:31:56):
So almost.
We'll find out.
All right, everyone.
Yeah, I'll see you all in thenext episode.
All right, bye.
Advertise With Us

Popular Podcasts

Joy 101 with Hoda Kotb

Joy 101 with Hoda Kotb

Joy is essential. And it's also elusive. You can't order it, borrow it, or simply hope it into life. But now, there's a new and exciting way to start your journey toward a more joyful existence: The Joy 101 Podcast with Hoda! Best known for her Emmy-winning work and co-anchoring Today, Hoda Kotb infuses her authenticity, curiosity, and warmth into conversations with the world’s most fascinating people. Entertainment legends, sport icons, wellness experts, and everyday folks will share how they find, allow, and experience joy. Hoda will offer her own tips and takes on seeking a more balanced, harmonious life. If you're craving inspiration, support, and useful tools to maximize your joy, tune in to these candid, uplifting, and moving on-air chats. Joy after a breakup, joy as an empty-nester, joy after loss, joy as a caretaker — Hoda's new podcast will speak to you. Joy 101 with Hoda Kotb, an iHeartPodcast.

Stuff You Should Know

Stuff You Should Know

If you've ever wanted to know about champagne, satanism, the Stonewall Uprising, chaos theory, LSD, El Nino, true crime and Rosa Parks, then look no further. Josh and Chuck have you covered.

Dateline NBC

Dateline NBC

Current and classic episodes, featuring compelling true-crime mysteries, powerful documentaries and in-depth investigations. Follow now to get the latest episodes of Dateline NBC completely free, or subscribe to Dateline Premium for ad-free listening and exclusive bonus content: DatelinePremium.com

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

© 2026 iHeartMedia, Inc.

  • Help
  • Privacy Policy
  • Terms of Use
  • AdChoicesAd Choices