#dev 2026-01-14

2026-01-14 UTC
#
[tantek]
what is web3
#
Loqi
Web 3.0 (AKA #web3) is a phrase used to pitch visionary sequels to the popularity of "Web 2.0" to advocate for particular plumbing solutions looking for problems, starting with the "Semantic Web" in the late 2000s, decentralization in the 2010s, and now mostly blockchains & cryptocurrencies; the IndieWeb instead focuses directly on user-centric goals, with technologies only as a means https://indieweb.org/web3
#
IWDiscord
<a​boxsots>
#
aboxsots
Nice. I was looking at that earlier. It seems I'm "bridged" already, but it would be cool to learn how a WP post could automatically post to Bluesky, for instance.
#
[tantek]
using Bridgy
#
[tantek]
what is Bridgy
#
Loqi
Bridgy is an open source project and proxy that implements backfeed and POSSE as a service https://indieweb.org/bridgy
#
[tantek]
what is BridgyFed
#
Loqi
Bridgy Fed connects IndieWeb sites with the fediverse (eg Mastodon) and Bluesky, allowing users on those networks to follow your IndieWeb site, including receiving notifications, reading, and replying to your posts https://indieweb.org/bridgyfed
#
[tantek]
^ that in particular
#
aboxsots
I'm not sure my WordPress theme allows custom HTML widgets. Maybe with a plugin? Would it be possible to add the Bridgy webmention line within an HTML code snippet instead?
#
aboxsots
I'm aiming to automatically cross-post WordPress blogs to Bluesky
#
aboxsots
and my Bluesky is already validated with my domain.
#
simpleauthority
Still new around here, but I'm writing a micropub server and testing a few different clients. Has anyone noticed that Quill, when writing a note post (article does not seem to do this) adds the access token in the mp2 properties? hehe. Is it something the server needs to check for and scrub out?
#
gRegor
Yeah, it can be sent in that form parameter and must not be stored in the resulting post: https://micropub.spec.indieweb.org/#reserved-properties
#
[snarfed]
btrem you can also use granary via its REST API on https://granary.io/ instead of by linking with the Python lib directly: https://github.com/snarfed/granary/?tab=readme-ov-file#using-the-rest-api . definitely understand if that's not what you want either! just fyi
#
simpleauthority
gRegor++ thank you. I'll make sure to scrub it out then
#
Loqi
gRegor has 36 karma in this channel over the last year (124 in all channels)
#
gRegor
aboxsots, are you running the WordPress Webmention plugin on your site? That should handle adding sending and receiving for you, no need to deal with HTML widgets
#
gRegor
what is wordpress webmention
#
Loqi
It looks like we don't have a page for "wordpress webmention" yet. Would you like to create it? (Or just say "wordpress webmention is ____", a sentence describing the term)
#
gRegor
WordPress Webmention is [[WordPress_Webmention_Plugin]]
#
gRegor
simpleauthority, welcome! Check out the tests on https://micropub.rocks/ as well, if you haven't already
#
simpleauthority
That's great, thanks!
#
btrem
IWDiscord re: Granary: yeahbut the contact info is in Drupal. So self-hosted Granary won't work for my setup.
#
btrem
[snarfed]++ I'll look at that, but as I said just a moment ago, the contact info is in Drupal (the users who are registered on the site), thus how would I get that info out of Drupal and into Granary?
#
Loqi
[snarfed] has 34 karma in this channel over the last year (50 in all channels)
#
ulhar4409
btrem: http request :>
#
btrem
Site is password protected.
#
btrem
I searched the web for a php CardDAV server, but what I found looked scarily complicated. I was sympathetic to what aaronpk said (yesterday? two days ago?): "I looked at WebDAV once. And I ran away." OSLT.
#
gRegor
Yeah I got a bit curious and started looking at the spec and nope nope nope
#
btrem
Yes it's scary.
#
btrem
All this discussion is academic, since ATM Granary does not emit CardDAV. And I don't see how [snarfed] can add support for it without knowing the format. And that is what kicked off this discussion. For the life of me, I cannot find a complete example of CardDAV. The closest I've come is an rfc https://www.rfc-editor.org/rfc/rfc6352
#
btrem
There are request and response _extracts_, but it's scattered about and hard to put together.
#
btrem
One thing that really puzzles me: why was WebDAV created in the first place? It's really complicated, and AFAICT everything that is needed for syncing an addressbook is available with HTTP. BICBVW since I've never done anything that complicated.
#
ulhar4409
btrem: i mean internally; if an authed user asks for something in a format you don't "carry", make an internal request to your granary instance with the data in a format you *do* have
#
btrem
But the data is not in Granary. It's in Drupal. More specifically, in a table of users.
sknebel and Zegnat joined the channel
#
ulhar4409
the data doesn't normally live with granary anyway - at least outside the scope of translation requests
#
ulhar4409
hmm, wonder if i can find some docs
#
btrem
Two things. (1) Granary doesn't, at this time, emit CardDav. (2) If it did, there's no way to get the user data out of Drupal without a password. So how would Granary get the user contact info?
#
btrem
If my self-hosted Granary made an http request to the site looking for a page with `h-card`s on it, the site would respond with a not authorized page.
#
ulhar4409
the flow in my head is something like: user makes a request to drupal, drupal checks their auth and *only if it's successful* makes a request to granary, passes granary's response back to the user
#
ulhar4409
i feel like it *should* have an endpoint that accepts source code directly instead of needing to query a url, but having trouble finding one if there is
#
ulhar4409
also random thought for publishing of posts: data-post-uuid on .h-entry elements, for tracking back to an internal store? (e.g. for micropub edit requests)
#
[snarfed]
granary supports authenticated requests for a number of its silos/sources. for the REST API, generally you pass a token with the request, and granary passes it through
#
[snarfed]
we could add other methods, eg bearer tokens in Authorization header
#
[snarfed]
but btrem is right, for this specifically, granary is probably too much of a stretch right now
#
[tantek]
still worth filing an issue to capture the possibility of Granary converting e.g. h-cards to a read-only CardDAV
thegreekgeek_ joined the channel
#
btrem
u​lhar4409: I'm not sure how that would work. Maybe because I don't really understand Granary. IIUC, Granary takes a GET request for e.g. an atom feed, then issues its own GET request to an html page with an `h-feed`, transforms the `h-feed` into atom, and responds to the request with that atom feed.
#
btrem
So for my case, a user would issue a request for a feed of `VCARD`s from the the Drupal site, and then push the feed to the Granary instance? Maybe if bearer tokens were added, but I think this is getting too complicated.
#
btrem
Plus there's *still* the problem that neither [snarfed] nor I know how to format a collection of `VCARD`s. I can format a single one, but a feed that an email client subscribes to? No idea.
#
[snarfed]
the usual pattern with granary is pass-through auth, ie the request to granary would include the Drupal token, and granary would pass it through to Drupal
#
[snarfed]
and hah yes, a new format like VCARD would take some research. doable though!
#
[snarfed]
but agreed, sounds like a stretch for granary. worth filing the feature request(s) though!
#
btrem
Yes, the VCARD format is definitely doable. It's the CardDAV thing that is inscrutable.
#
btrem
I'm not certain that I can make arbitrary pages available via basic HTTP auth. Drupal mostly relies on cookie auth. Basic HTTP auth can be enabled for paths, but only with a module. I suppose I could create a module just to emit an html page, but that seems silly.
#
btrem
I guess I'll file the issue. Maybe someone will come along who knows something about CardDAV.
#
aboxsots
gRegor: I'm pretty sure it's active and works with websites, just not sure how to configure it for cross-posting to Bluesky
lanodan, jjuran, doesnm_ and DanQ joined the channel
#
_ladysith
Hi there. Does anyone have recommendations for POSSE workflows for Instagram posts? I don't post much at all there but it's the only place where I have a lot of people who don't have my phone number and want to update them occasionally.
#
tantek.com
_ladysith[d]: when I was POSSEing to Instagram, I would first publish my photo post (or multiphoto/carousel) however I wanted on my own site, and then crop photo(s) if necessary, edit the caption/story down to a paragraph or two, and then manually post that with "Original post: " permashortlink to my original on Instagram
#
tantek.com
Here's a relatively short/simple example of the post on my own site, with a link to the Instagram copy in the lower right corner: https://tantek.com/2020/070/t3/blue-purple-pink-sunset-reflection
#
Loqi
[preview] [Tantek Çelik] ✨🌅💙 Last sunset of this revolution around the sun. #blue #purple #pink #orange #yellow #beauty #beautiful #sky #clouds #sunset #shore #sand #reflection #OceanBeach #SF #SanFrancisco #wallpaper #background #noFilter https://fastly.4sqi.net/img/general/width960/476_0Z7vxRC3SqZntBKwh_5bdhCv9Nl790614uGPwhly5jc.jpg
doesnm_ joined the channel
#
_ladysith
Thank you tantek_com[d] . Since I want to post the occasional carousel that's like "A Year in Review" or "Things I'm looking forward to", I was considering having a full post with all the images I want on and then making a custom carousel in canva or another app that has a few of the pics and links to the full post. Now that I think about it, I could probably have the summary as a single image collage to make it easie
#
_ladysith
Is the view on Instagram link set up manually?
#
tantek.com
Yes I add it as a syndication link manually after I publish my own post since I create the Instagram post manually
EkInki, doesnm_, thegreekgeek, barnaby, ttybitnik and blacklight joined the channel
#
[aciccarello]
_ladysith, I haven't had a chance to try this out yet, but I've been looking at https://posseparty.com
doesnm_ joined the channel
#
[tantek]
oh no is that an AI generated possum? and why is there a 40oz on the bench 😭
#
[aciccarello]
Justin is very into AI so that's probably a yes
#
[aciccarello]
May also be vibe coded. But I know he does POSSE both his content and content on his wife's site.
doesnm_, [Trevor_Morris], [bunnyguy], gRegor, jonnybarnes and strugee joined the channel
#
[tantek]
FrESH << possible discussion topic / example to dig into and learn from: accessible flowchart in SVG! https://www.ashleysheridan.co.uk/blog/Creating+Accessible+Flowcharts cc: [KevinMarks]
#
Loqi
ok, I added "possible discussion topic / example to dig into and learn from: accessible flowchart in SVG! https://www.ashleysheridan.co.uk/blog/Creating+Accessible+Flowcharts cc: [KevinMarks]" to the "See Also" section of /Front_End_Study_Hall https://indieweb.org/wiki/index.php?diff=107671&oldid=107670
Solace joined the channel
#
[KevinMarks]
Ironically the end result looks bad in dark mode
doesnm_ joined the channel
#
[tantek]
that sounds like something you could fix!
vriska and Kupietz joined the channel
#
Kupietz
tantek::after {content: 'hint, hint';}
doesnm_, Dryusdan, meteo and btrem joined the channel
#
btrem
Question for people who use an SSG to build your site and publish bookmarks: what is your file naming scheme for a bookmark post? And what is your url scheme?
#
[aciccarello]
I put bookmarks and likes in the same links folder
jjuran joined the channel
#
[aciccarello]
The url structure for all short posts on my site is /posts/yyyy/mm/dd/slug/
#
[aciccarello]
What is url design
#
Loqi
URL design is the practice of deliberately designing URLs, in particular, permalinks, typically for a better UX for everyone who creates, reads, and shares content https://indieweb.org/URL_design
#
btrem
The folder part is easy. But what do you name the file? I'm thinking maybe just `bookmark.md`.
#
btrem
Maybe with date parts as a prefix.
#
btrem
Also, what is the slug part of the url? That's the part that has me a bit stumped. For a post, the file base name is related to the post, and it becomes the url slug. But there's not obvious file base name nor slug for a post that is just a bookmark.
#
[aciccarello]
I do a separate file per post. I can show you how they are stored since my repo is public
doesnm_ joined the channel
#
Loqi
[aciccarello] has 8 karma in this channel over the last year (41 in all channels)
#
btrem
[aciccarello]++ I have to go to work, but I'll have a look when I get home. Thanks!
#
ulhar4409
hmm, .htaccess question: by default when user requests /example and /example/index.html exists on disk, user gets explicitly redirected to /example/ (now with trailing slash) at which point the directory index behavior serves index.html ...
#
ulhar4409
is there a way to have this treat the no-trailing-slash form as canonical instead, but otherwise behave the same?
DanQ joined the channel
#
[tantek]
good question
#
[tantek]
I use this in my htaccess for my contact.html page to be served at /contact :
#
[tantek]
RewriteRule ^contact$ contact.html
#
ulhar4409
i know Neocities implicitly does that for html files more generally
doesnm_ joined the channel
#
ulhar4409
i think they have a blog post about how it works behind the scenes but they're using nginx
#
ulhar4409
(still half tempted to try recreating that behavior automagically, but on the other paw, needing the .html extension does make sense for "prototyping" pages)