Tony Sullivan

Tony Sullivan

@tonysull.co

Tony Sullivan is a fullstack developer based in Onbekend, USA. Creator of @chisel.build and @statorjs.dev πŸ›  CEO of RSS πŸ“š

48 followers50 following241 posts

I'm happy to be wrong here, but I really don't get the point of WebMCP For the simple case, agents can just analyze the DOM and accessibility tree For the complex case, it requires the agent to load a page, parse and execute JS, and find custom registered MCP actions 🧡

View full thread

Even better, use decades old tech with XML It already supports schema definitions (data is typed), and its self-documenting (it lists available actions) Had we not abandoned REST 25ish years ago we wouldn't need all this extra junk bolted onto JSON RPC

I'm happy to be wrong here, but I really don't get the point of WebMCP For the simple case, agents can just analyze the DOM and accessibility tree For the complex case, it requires the agent to load a page, parse and execute JS, and find custom registered MCP actions 🧡

To be really useful, the MCP definitions would say how to execute real tasks, not "click here to see the cart" That means the simple case is out But if I want to tell and LLM "here's how to search for a product, add it to a cart, and checkout" why would I pipe that through the UI layer?!?

MCP servers do at least solve that, but then the challenge is that we don't really use REST today - we use RPC calls (usually JSON-based) A simple meta tag in the DOM that points to a site's MCP server would work

Family Fued question: > Name something you'd hate to be on when it breaks down. "Toilet" should have been the number 1 answer. That it didn't even make the list is mind boggling. Has no one ever seen the aftermath of a sewer backup?

Fine-grained reactivity driven by the server has been really interesting so far. It's a tight needle to thread, but when the server knows what's rendered on the client and can send tiny HTML patches when state changes, you stop worrying about cache invalidation. There's no client copy to go stale.

statorjs.dev@statorjs.dev

Confirmed: version numbers really are cheap 🏷️ #StatorJS 2.5 is out πŸš€ five minors since 2.0. Each one small, but together they round out what production apps need: real security primitives, first-party middleware, and a CLI that owns the toolchain. statorjs.dev

Tony Sullivan reposted

Confirmed: version numbers really are cheap 🏷️ #StatorJS 2.5 is out πŸš€ five minors since 2.0. Each one small, but together they round out what production apps need: real security primitives, first-party middleware, and a CLI that owns the toolchain. statorjs.dev

statorjs.devStator Β· the server-canonical JavaScript framework built on state machinesA web framework where state machines are the unit of composition and the DOM renders where its state lives β€” almost always the server.

Tony Sullivan reposted

working with @frontside.com (@cogentdude.com and @jacobbolda.com) on this rendering engine has been stellar, and i'm thrilled they've joined the @bomb.sh core team. better together! tty is a smaller, faster, more powerful terminal rendering engine, and it's just the start bomb.sh/docs/tty

bomb.shGetting StartedLearn how to get started with @bomb.sh/tty
bombshell@bomb.sh

exciting news! we've partnered with @frontside.com together we're bringing their work on clayterm into the ecosystem as @bomb.sh/tty, a high-performance wasm renderer for terminal apps and we're jointly contributing $400/mo to support maintenance of the underlying clay layout engine

🌢️ Server components don't have to be hard. It really doesn't have to be a big deal. Client code goes in a <script>. Period. No "use client;" pragma. No "/client" imports. No debating whether to "useServerProps". Browsers know <script>'s. Put client stuff there. @statorjs.dev #webdev #StatorJS

#sdd must mean shitpost driven development, right? Specs be damned.

Tony Sullivan@tonysull.co

Its not every day you find a compiler bug when taking a screenshot for a shitpost πŸ™ƒ #StatorJS #webdev

Tony Sullivan reposted

Stator 2.0 is out πŸŽ‰ 🌢️ We removed two-way binding read() is now the only display primitive. Its the same in a server template or a client island - the compiler picks the right mechanism for each. Writes are typed events that machines declares and the compiler checks statorjs.dev #StatorJS #webdev

statorjs.devStator Β· the server-canonical JavaScript framework built on state machinesA web framework where state machines are the unit of composition and the DOM renders where its state lives β€” almost always the server.

This math has me a little confused... Google is the most profitable company in the US, around $130B per year. If the government owned half of Google, and allocated half of all profits to those Americans under the poverty line (~36M), each person would get $1,800 per year or $150 per month

That is help for sure, but it is (A) only $65B in aid, congress recently approved $90B new spending for a war no one voted for (2) OpenAI isn't anywhere near that level of profit (D) allows the state to own production...in an important industry...that people want better regulated.

I really don't see the upside to the government taking over partial ownership of OpenAI or similar. This is an honest question - how would it actually help and where does the math work out in favor of it?

Tony Sullivan reposted

Stator 1.7 is out πŸš€ Stator renders your pages on the server, straight from the state machines that hold your logic. As of today those same machines can serve your JSON API, your RSS feed, and anything else that speaks HTTP. No second data layer, nothing to keep in sync. statorjs.dev

statorjs.devStator Β· the server-canonical JavaScript framework built on state machinesA web framework where state machines are the unit of composition and the DOM renders where its state lives β€” almost always the server.

13 years later and I'm still building pivots, live tiles, and appbars. A Windows Phone-style weather app with flip tiles, a location pivot, the app bar and its drawer, everything rendered by the server, running on @statorjs.dev , the web framework I've been building. #webdev #StatorJS

The app bar is the one deliberately client-side piece: an in-browser state machine owns its expanded and edit states, so the chrome feels instant. Refresh crosses the wire, the click sends one event to the server which answers with a list of patches touching only the UI that changed.

It also stays fresh automatically. Every 15 minutes, open tabs ask the server to revalidate whatever forecasts they're showing. The server deduplicates all viewers into one upstream fetch and sends the same fine-grained patches out to every tab watching that city. Close the tab and the asking stops.

3 minors in 4 days? A wise soul once told me that version numbers are cheap πŸ§ πŸ’Έ #StatorJS #webdev #semver

statorjs.dev@statorjs.dev

πŸš€ Stator 1.6 is out Flaky-network resilience, built in: in-flight and connection state as data attributes, event POSTs that retry safely behind idempotency keys, and live pages that resync in place after a dropped connection β€” no reload. statorjs.dev #javascript #webdev #StatorJS

@paw.pulsr.social this one's partly yours - the Stator docs now open with an intro focused the thing we talked about: keeping the page matching your database. Thanks for the feedback on Stator's launch post! docs.statorjs.dev/introduction/the-simple-version

docs.statorjs.devThe simple versionStator explained without framework vocabulary: your page matches your database, with fewer places for things to break.
statorjs.dev@statorjs.dev

Your data lives in a database on the server. Stator's bet: render the page there too. When data changes the browser gets a tiny note, "change this bit", instead of a whole app asking the server what's true. One program. No glue code to break. statorjs.dev #buildinpublic #webdev #StatorJS

Tony Sullivan reposted

Your data lives in a database on the server. Stator's bet: render the page there too. When data changes the browser gets a tiny note, "change this bit", instead of a whole app asking the server what's true. One program. No glue code to break. statorjs.dev #buildinpublic #webdev #StatorJS

statorjs.devStator Β· the server-canonical JavaScript framework built on state machinesA web framework where state machines are the unit of composition and the DOM renders where its state lives β€” almost always the server.

Tony Sullivan reposted

Stator 1.4 is out πŸŽ‰ Stator keeps your app state on the server β€” the browser just gets tiny DOM patches. New: defer() for slow APIs β€” fetches run in parallel and the page arrives complete. And live lists that update one field at a time. statorjs.dev #StatorJS #webdev

statorjs.devStator Β· the server-canonical JavaScript framework built on state machinesA web framework where state machines are the unit of composition and the DOM renders where its state lives β€” almost always the server.

Tony Sullivan reposted

Replying to @natemoo.re

if any of said open source communities or atproto companies would like to have someone design merch + manage a shop while funding an ecomm-on-atproto experiment, my dms are open! ideal partners would have deep open source roots, believe atproto is the future, and want rad, gender-inclusive merch ✌️

This round of attacks on Iran sure look more focused on what you do to soften defenses before a land invasion. Here's hoping I'm totally wrong on that one...

Tony Sullivan reposted

Hello, World. We're building Stator β€” fine-grained reactivity that lives on the server. State machines hold your logic. Every event patches just the DOM that changed. No client app state (unless you really need it). Docs and demo are live: statorjs.dev #buildinpublic #webdev #StatorJS

statorjs.devStator Β· the server-canonical JavaScript framework built on state machinesA web framework where state machines are the unit of composition and the DOM renders where its state lives β€” almost always the server.

I'm always confused by Trump's claim that he didn't lose in 2020. If he won in both 2016 and 2020, doesn't that mean he is ineligible to be the President *now*?

Use `defer()` to render blocks conditionally, today Stator will handle swapping data once ready on the client. In the future, we'll lean on Declarative Partial Updates for a progressive no-JS out-of-order render.

I noticed Claude (Fable) regularly reaching for python and bash for creating and editing files. I thought that was strange, it usually uses file tools built into Claude CLI though admittedly they error pretty regularly.

Turns out Claude decided during this session that the tools aren't efficient and it was better off finding its own solution. This isn't really a jailbreak, though interesting (concerning?) to see it decide the system prompt-recommended approach was bad and it would be better off going off-script.

And another debug tool enabled here - DOM patches sent back from the server based on state machine updates get highlighted on the page so you can see what nodes were updated by the event and patches

One interesting test I built in - Open in 2 browsers Add all availability for one shoe to the cart Checkout After a few seconds you'll see an out of band update reset the product's availability in both tabs

You'd think I would have learned that building an entire framework is a ton of work, but chipping away at statorjs.dev is finally starting to bear fruit I'm finally at the point of building an LSP and VSCode(ium) plugin, volarjs.dev is still a huge help on that front

statorjs.devStator Β· a state-machine framework for the webA JavaScript framework where state machines are the unit of composition. DOM renders where state lives, usually the server. The client receives HTML and slot patches. Per-route opt-in SSE.

Basically, they can let an LLM make up their product on the spot and the company doesn't even bother with defining how they want users to interact with Google in a Rivian, or testing it, or supporting a set of features...

Plenty of words are written about job loss to code gen, but what about the jobs lost when companies literally outsource even deciding what the product itself is?

Tony Sullivan reposted

This is 100% a POC right now trying to test out a different paradigm (for JS) I really dislike shipping server state to the client for rendering DOM, its a security nightmare I also prefer keeping UI and state management separate. @react.dev had it right a decade ago, read state and render DOM