129 karma · joined September 5, 2017
The trend seems going towards web-browser local-first applications.
So an application on the client side, once was loaded the site's domain delivering the code, can work offline without network access, and synchronize later with its "associated peers/nodes/servers" (if they decide to).
Though wasm exists, it would be nice to be able to have a "high level API" so any user (not just technical) can become part of the federated protocol, and contribute to its rich content.
Because HTML elements can have ":active" states, which are stylable with CSS, it is possible to bring the "artwork" in different "states".
Because CSS can target elements, based on "some logic", such as "target the element that follows maybe this element, when it has the attribute <attr> and...", it is possible to bring the animation to update it self.
And as the original links points out, there are ways to "encode" the visual information, in ways that you might have to be in an altered state of consciousness, to be able to decode the message, from the visual data.
This CSS animation, is an attempt at playing with all the aspects, transforming an HTML page into a "small interactive visual artwork/game", which "reward" is to unlock a "state of the animation" that has a visual message.
Also following this approach, so much liberating not to have "all these dependencies", and having to learn them.
Been writing vanilla css, html, js, (and sometimes using static site generators) to help split the logic between `/content` (markdown, org, txt, json) and `/assets` (js,css,pdf).
When all this is plugged to git, is deployed/published with CI/CD, and served as static pages (jamstack style, git provider pages), things are great!
↓
[...]
- CSS(--variable=value)
- DOM(attribute=value)
- FORM(input[name].value)
- URL(path?param#resource)
- HTTP(?param=value{body})
- SCRIPT(--attribute=value)
- DB(model?param=value)
- FS(folder/filter/{value})
[...]
↑
- https://www.w3.org/OWL/ maybe to harmonize the representation/attribute/value
- https://opensearch.org/ for sharing patterns
- informal work on https://internet4000.github.io/find
- thread https://matrix.to/#/!EHWwJaqeEyREvfcUIK:matrix.org/$SObS1VSS...
Maybe a bit verbose, but here is an example https://jsfiddle.net/8kvucm9f/5/ in the context of the blog post (and with my preferences of doing things; there are just many different ways of "writing web components", and can adapt many use cases).
Also, by using their HTML attributes (id="", name=""), it is possible to make really nice features with CSS.
Finally, they can offer a clear API (just like the <img/> or <video/> or <input/> elements), to the users of these elements.
They can be inserted, to give "markdown" documents (or .org mode etc. if it is converted to HTML), JSX like features, by being "just embedded HTML text".
It is super powerful, maybe feels a bit scary at first, but all problems seems to get solvable with clean patterns.
That makes so much sense! It gets pretty easy to send an offer and answer for the webRTCPeerConnection dance! (https://sctlib.gitlab.io/rtc/)
One other cool think about it, each "message sent to an user or a room", are "events".
And an event can be of any type, and have any sort of (json) data to it.
Through element.io (the main matrix client, developed by Matrix people), you can type `/devtools` in a chat, to test sending "custom events" to a room.
As a developer, it means you can "hack" matrix, to make it store whatever data you'd like.
If you'd like to look at some javascript, this is the code related to matrix that makes libli run https://gitlab.com/sctlib/matrix-room-element
Otherwise this page has a lot of resources https://matrix.org/discover/
cheers!
Also this can be helpful, https://gitlab.com/sctlib/matrix-room-element, which is what makes libli communicate with matrix APIs.