vinney...axkl

Zero-JS Hypermedia Browser

avatar
vinney...axkl
vcavallo@vinneycavallo.com
npub19ma2...axkl
Engineer at https://opennode.com --- Working on https://catallax.network - decentralized labor/bounty protocol and: https://attestr.app/ - mutual agreements signed on nostr Do you like sharing paywalled content to nostr? Install this extension: https://chromewebstore.google.com/detail/readtorelay/gfncdikmbmefjjbahjhgkodnhepikecj - https://github.com/vcavallo/ReadToRelay Order print books with bitcoin! https://whitepaperbooks.com

Notes (12)

people, this is a no-javascript client (+ hypermedia server). nostr:nevent1qvzqqqqqqypzpk4yr0kmdpv3xcalgsrldp7tj7yuc4p76qjtka7z95kgfky02s2nqy88wumn8ghj7mn0wvhxcmmv9uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcqyqpt5egpfxluh8my8v3a2lpkgm3weqhac77a9ck200jeavzqsmamvzf5gkr
2025-12-05 19:17:18 from 1 relay(s) View Thread →
Feels like actual magic. - A plain english request lands with a AI bot who responds with a specification for a chunk of interface **as a nostr note (Kind 6666)** - The client knows how to render and handle actions in said nostr notes such that they become live applications - Save these components to nostr lists to be reloaded later (or better yet, composed together with other components... the user's listed components are sent to the bot in subsequent requests so it may reference them in composed interfaces) https://v.nostr.build/2j8XX38Joisbe2u2.mp4 #hypermedia
2025-12-03 23:54:47 from 1 relay(s) View Thread →
You mean crazy shit like this? ``` {"type": "eval", "expr": "new Date().getMinutes()", "as": "minute", "display": false}, {"type": "data", "bind": "$.minute", "label": "Current minute: "}, {"type": "hr"}, { "type": "if", "condition": "$.minute % 2 == 1", "then": [ {"type": "text", "value": "Minute is ODD - querying notes..."}, {"type": "query", "filter": {"kinds": [1], "limit": 3}, "as": "notes", "children": [ {"type": "foreach", "items": "$.notes", "as": "note", "template": { "type": "container", "children": [ {"type": "text", "bind": "$.note.content"} ] }} ]} ], "else": [ {"type": "text", "value": "Minute is EVEN - showing different content"}, {"type": "text", "value": "Refresh on an odd minute to see notes!"} ] } ``` nostr:nevent1qvzqqqqqqypzqnyqqft6tz9g9pyaqjvp0s4a4tvcfvj6gkke7mddvmj86w68uwe0qyt8wumn8ghj7mn0wd68yetvd96x2uewdaexwtcqyr603zu9rmj0f5g20mzjkh0d6r5m0r2lwztvykpm0un8c6hlssamvs630vx
2025-12-03 17:32:29 from 1 relay(s) View Thread →
i'm going to have to record a video of this in progress.. - write request - wait a bit - bot responds with a note whose content is the ui - ui is immediately rendered and usable from your connected npub image nostr:nevent1qqs9qdlq22pjztlweh760v9xpqs4c6y0jy85nwxl5ptem24yenhpzzgpzemhxue69uhkummnw3ex2mrfw3jhxtn0wfnj7q3q9ma2w9dmk3kat0nt0k5dwuqzvmg3va9ezwup0zkakhpwv0vcwvcsxpqqqqqqzk994ms
2025-12-03 16:48:39 from 1 relay(s) View Thread →
Create a feedback form that lets people explain how they feel about this HATE-bot (Hypertext as the Engine) approach
2025-12-03 16:16:31 from 1 relay(s) View Thread →
now the bot is in the client :) a client that re-builds itself live. image nostr:nevent1qvzqqqqqqypzpw77dg8gs3lpeket5hkqy8xff84nemcjtwpsff6glcguqsrejrhvqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qpq9kkv9glcf2j9mn89j52udejn6nq87hypf22w3jp0wac23v7pesks7j07ff
2025-12-03 16:13:46 from 1 relay(s) View Thread →
Create a poll asking what people's favorite pizza topping is with options for pepperoni, mushrooms, pineapple, and plain cheese
2025-12-03 16:12:02 from 1 relay(s) View Thread →
Check out what this screenshot note is replying to. I'm both excited and scared. Next steps: - host the malleable UI "client" (it's just a static html file) - make it easier to load a given note in the client - upgrade the "client" so that it can at least do these: 1. query + foreach - enables feeds/lists 2. embed - Enables composition 3. if/else - Conditional UIs 4. local state (??) - Interactive apps without publishing 5. computed - Derived values 6. pagination - Scale to large datasets X. ...eventually rewrite the client to be more of a "bootstrap/BIOS" so that the bot response actually _includes the "client code" html/js that it needs to run itself_. and the client replaces itself with that "OS". so essentially notes become "executable" apps. 👹 (also the bot is offline so don't bother talking to it) nostr:nevent1qvzqqqqqqypzqth65u2mhdrd6klxkldg6acqyek3ze6tjyacz79dmdwzuc7esue3qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7qpq6ejq3qw4e895u50c364mnkwrcel7fw7djwrqs76qmevysftf8fqsf0mylr https://github.com/vcavallo/nostr-hypermedia/blob/hatebot/hateoas-js-readme.md
2025-12-03 15:48:23 from 1 relay(s) View Thread →