@OpenMentionsUpdate: @LordMatt has applied a hotfix that works around the bug that causes some Webmentions to error while trying to get a semantically relevant ping body. Hopefully we are all good to go again. (twitter.com/_/status/1528669215384866824)
Loqi, mro, tetov-irc, jacky, vika_nezrimaya, m2m and AramZS joined the channel
LoqiIt looks like we don't have a page for "ping body" yet. Would you like to create it? (Or just say "ping body is ____", a sentence describing the term)
[CrowderSoup]It's a static site, and I'd like to keep it that way. A quick search of the wiki (and internet at large) yields some good information. But since I didn't find anything specifically about this I thought I'd ask here: has anyone had any success using a GitHub action (triggered on a successful deployment in Vercel) to send webmentions?
[CrowderSoup]I'm currently building out support for as much as I can with serverless functions (in Vercel) and likely GitHub actions so that I don't have to maintain any supporting infra, while still keeping my website in a git repo.
LoqiI think my template unit-tests are one of the most beautilful think I’ve ever written. An MF2-JSON document is randomly generated, rendered using the appropriate template and then checked for expected properties matching whatever was in the MF2-JSO...
vika_nezrimayajacky: btw you can see how the MF2-JSON generator grew! It can now generate replies and likes (with both full and partial reply contexts) as well as articles (h-entry with a name)
vika_nezrimayaYes, this is perfect! Also TryInto<chrono::Date>, TryInto<chrono::Time> and their naive counterparts in case the full range of values isn't specified
jackyI don't know if you've seen https://lib.rs/crates/indieweb yet - it has some half baked implementations of common IndieWeb things (Webmention, IndieAuth, Micropub)
vika_nezrimayaI would personally be ok with the HTTP part being completely out-of-scope and the protocol's state machine being exposed as structs and possibly typestates with the application developer providing raw values for the protocol
vika_nezrimayaFor example, IndieAuth would start with the "me" string (and a bit of MF2 parsing and helpers for parsing Link: headers), then transform into a struct representing an authorization endpoint request that would get serialized and sent as a query string
vika_nezrimayaConsidering Kittybox can be both a server and a client, integrating your `indieweb` crate could exercise a lot of its functionality and, as a result, generate a lot of feedback
vika_nezrimayaKittybox is technically a monolith but the only thing in the frontend that doesn't let me fully separate it is the onboarding page - it uses an internal Micropub function for inserting a post into the database without authentication and other checks (since the post is generated at the backend, it is trusted)
jackyI'm actually working on something using virtual tables and JSON with SQLite so I can search all of the MF2 properties of things on the fly (with a custom function in SQLite of course)
vika_nezrimayaI also think of making some neat features like backends implementing their own search API (since in SQL databases there are sometimes full-text search capabilities) and background integrity checks (for example, restoring corrupted permalinks - see https://fireburn.ru/posts/mending-broken-permalinks-part-1)
vika_nezrimayaAlso the backends are responsible for processing updates, this allows to make them atomic and transactional (e.g. in Redis updates were shipped off to a Redis function in Lua, which blocked the whole database)
vika_nezrimayaIn the file backend, updates are processed in the backend code and then written to a temp file that atomically replaces the original with rename(2)
vika_nezrimayaI doubt many applications could run on a full range of systems from a Raspberry Pi (probably even the original one, judging by memory usage) to a beefy datacenter cluster
vika_nezrimayaEh, it would not be hard. NixOS, my OS of choice, allows me to write beautiful tests involving a dozen VMs at once. I could probably make them share a filesystem using NFS and then run Kittybox on ALL of them at once to verify my claim
[snarfed]for small datasets, I wonder if SQL engines over flat files like this might get us most of the benefits of flat files and also many of the benefits of databases