#indiewebcamp 2016-04-12

2016-04-12 UTC
#
KevinMarks
yay, realtive Link support now works in mention-tech too
mblaney joined the channel
#
KevinMarks
though my test page didn't have good microformats
emmak_, wolftune and KartikPrabhu joined the channel
#
tantek
KevinMarks: we have indiewebify.me to help with that right? h-entry validation?
#
KevinMarks
I mean I just din't add any originally
#
kylewm
I think to get Known working with webmention.rocks, we need to fix up mention-client-php
Lancey joined the channel
#
tantek
interesting kyle
#
tantek
oh he left
#
tantek
what is mention-client-php?
#
Loqi
It looks like we don't have a page for "mention-client-php" yet. Would you like to create it? https://indiewebcamp.com/s/10Hx
#
tantek
is back to fixing some 2014 era hotlink embeddings from IG
asheesh, shiflett, mdik and [shaners] joined the channel
#
[shaners]
tantek: are you doing that by hand or by script?
#
tantek
by hand
#
[shaners]
manual til it hurts?
#
miklb
pictures tantek with his sleeves rolled up, sweat on his brow
#
[shaners]
nah. he’s typing one handed while twirling and clicking a pen with his other hand. like a bond villain hacker.
[shaners] joined the channel
#
[shaners]
tantek: I don’t know my way around HTTP headers that much, so I’m asking this out of ignorance.
#
[shaners]
Is the trailing whitespace significant in this comparison?
#
[shaners]
ie, Could a header be "X-Pingback:foo” or does it have to be "X-Pingback: foo”?
acegiak joined the channel
#
KevinMarks
hm. In python we do ,ink.split(';')[0].strip('<> ')
#
KevinMarks
s/,i/li/
#
Loqi
KevinMarks meant to say: hm. In python we do link.split(';')[0].strip('<> ')
#
KevinMarks
so get rid of the whitespace
kylewm, jedahan and [shaners] joined the channel
KartikPrabhu and j12t joined the channel
#
sknebel
KevinMarks: If I read the spec correctly, you should strip tabs as well
#
kylewm
strip() does remove tabs in python
#
[shaners]
php question: Where is the `get_absolute_uri` function be called from in this line?
#
[shaners]
It doesn’t seem to be a part of the php standard library. (php.net doesn’t have a function page for it.)
#
sknebel
kylewm: by default, not if you give it specific chars to strip as in KevenMarks example
#
kylewm
sknebel: got me there!
snarfed joined the channel
#
kylewm
that is a very good question shaners...
#
[shaners]
kylewm: I get the gist of what its supposed to do (well named, and all) and don’t actually need to use it. I was just curious since php.net didn’t have anything for it.
#
[shaners]
and as best as I can tell, it’s not being loaded in from an external lib. (but I don’t know php well enough to know what i’m looking for)
#
kylewm
yeah I agree with your assessment, I don't see it being loaded via composer or an explicit require. not sure where it's coming from
#
miklb
[shaners] I'm pretty much where you are at, but looks like it might be a function of a non-standard extension URIUtilsExtension
#
miklb
that's one heckuva URL
#
[shaners]
i’ll beep aaronpk next time I see him in channel
#
miklb
yeah, he's probably somewhere over the Atlantic right now
#
sknebel
hm, his /travel posts really could link to a flight-tracking site while the flight is happening ;)
#
GWG
!tell aaronpk sknebel suggested your /travel posts could link to a flight tracking site while the flight is happening
#
Loqi
Ok, I'll tell them that when I see them next
#
GWG
Always good to document.
#
GWG
Anyone know what a webmention handler should return if webmentions aren't permitted on a specific URL on a site?
#
sknebel
HTTP 400
#
GWG
400 is listed as sender-related errors.
#
GWG
This is a receiver issue.
#
GWG
Receiver errors are 500 according to specification
#
GWG
But this is an operation not permitted situation
#
sknebel
if I send you a webmention for a URL that doesn't support it, that's an error on my part
#
GWG
sknebel: How do you know it doesn't support it?
#
sknebel
because it doesn't have a link header/tag?
#
GWG
This is more 405 or such.
#
sknebel
but then why did I even send it
#
GWG
The scenario is this....
#
GWG
WordPress allows for pages to be set to not accept Pingbacks.
#
GWG
The Webmention plugin honors that flag
#
sknebel
then it shouldn't announce a webmention endpoint for that page
#
sknebel
anybody who stills sends a webmention to an endpoint they found somewhere made a sender error?
#
GWG
Interesting thought.
#
sknebel
spec says explicitly 400 for "Specified target URL does not accept Webmentions."
#
GWG
How is that a mistake on the part of the sender?
#
sknebel
the scenario "page has a declared endpoint, but doesn't actually accept WMs" isn't really covered it seems
#
GWG
sknebel: Worth discussing, I think.
XgF joined the channel
#
sknebel
what can lead to somebody sending a WM for an invalid target?
#
GWG
sknebel: The scenario I mentioned.
#
GWG
It's a valid target, but the target has chosen not to accept Webmentions for that URL on their site.
#
kylewm
some sites don't accept webmentions to /
#
kylewm
but they might well put the <link rel> in their template so that it shows up on every page
#
GWG
But if the server doesn't announce it, it isn't the client's fault.
#
kylewm
I think 400 is fine in that case, like, nobody made a mistake, you're just explicitly saying that the webmention was rejected
#
GWG
So, is it worth considering removing the endpoint link from pages that are not able to accept them?
#
sknebel
yeah, if the server claims to accept WMs and then doesn't it is strange. from the server perspective it is a client error, but the client couldn't know it is wrong
#
sknebel
GWG: yes
#
sknebel
checking for the endpoint is the only chance a sender has to figure out if the target wants WMs or not
#
sknebel
and they have to do so anyways, to find the endpoint URL
#
KartikPrabhu
if target returns a 400, it is also OK
XgF joined the channel
#
GWG
Does anyone cache the endpoint for a site?
#
kylewm
GWG: bridgy does
#
GWG
Under what parameters?
#
sknebel
for how long?
tantek joined the channel
#
kylewm
sknebel: in practice it never cache things longer than a couple days I think
#
sknebel
the wiki sort-of suggests using expiring endpoints as anti-spam/DDOS
#
kylewm
yeah, we discussed carving out an exception for bridgy at the time...
#
GWG
Does it cache by domain?
#
kylewm
GWG: yeah it caches for the whole domain
#
kylewm
like the cache key is "W https kylewm.com" for any page on my site
#
GWG
So, if you cache endpoints, removing the endpoint from any URL is an issue
#
kylewm
sknebel: looking closer at the code, it's set to cache for 2 hours
#
kylewm
s/closer/more closely
#
Loqi
kylewm meant to say: sknebel: looking more closely at the code, it's set to cache for 2 hours
#
GWG
This needs more thought for that reason
#
kylewm
GWG: good point yes you're right. though that's maybe a bug in bridgy and not something you should necessarily design around
#
GWG
kylewm, but it is an area worth exploring with Bridgy as one possible use case
#
sknebel
kylewm: does it refetch after a failing WM?
#
kylewm
sknebel: it tries to resend failed WMs a few times, with exponential backoff
#
sknebel
(does aaronpk use bridgy? if yes, how did it work with his experiment with expiring endpoints?)
#
sknebel
kylewm: I meant, on failure, does it try to re-discover a new endpoint?
#
sknebel
or does it back-off long enough for the cache to expire?
#
sknebel
if you haven't gotten any complaints endpoints probably are quite stable in practice
#
kylewm
aaronpk's webmention endpoint doesn't expire anymore. iirc, at the time he was testing it, he did give bridgy a non-expiring one. i don't remember how exactly
#
kylewm
sknebel: it doesn't explicitly clear the cache and try sending the webmention again right away, but yeah the exponential backoff should give it plenty of time to clear out normally
#
GWG
I just want to better indicate to the sender not to give up on the domain
#
KartikPrabhu
is this actually a problem or are we guessing?
#
GWG
KartikPrabhu, I started with a problem.
#
GWG
The... page on site not accepting pings
#
KartikPrabhu
it returns a 400
#
GWG
But site in general accepting
#
KartikPrabhu
or does not display webmention endpoint
#
GWG
But the suggestion was that it not return the endpoint link
#
KartikPrabhu
i did point that out
#
GWG
But if the sender caches endpoints as some senders do... it would affect the whole site
#
KartikPrabhu
is that an actual situation. are there senders that do that on a domain-wide basis
#
KartikPrabhu
that was my question
#
GWG
Bridgy apparently does
#
GWG
And there is a proposal for the same webmentions plugin I'm looking at to do it
#
KartikPrabhu
i don't think any sender says "oh this post does not have a webmention endpoint so the whole site does not"
#
sknebel
but bridgy doesn't "care" about received 400s, as in blacklisting domains that return 400 to often, right? (kylewm)?
#
KartikPrabhu
if bridgy does what I said, it is a bug
#
kylewm
KartikPrabhu: I believe bridgy would behave that way, just from looking at the code. I could be wrong
#
KartikPrabhu
sknebel: I don't think so. My homepage does not accept webmentions and I have gotten a lot of them from bridgy without fail
#
KartikPrabhu
kylewm: then that is a problem
#
KartikPrabhu
kylewm: bridgy should not think that a 400 for one post == 400 for whole site
#
kylewm
it could be, definitely. i'm not aware of it causing problems in practice yet
#
kylewm
sorry no, not 400. missing <link rel="webmention">
#
tantek
lol IBM for get_absolute_uri
#
tantek
shaners,kylewm,miklb you had one guess. ;)
#
KartikPrabhu
kylewm: even that.
#
GWG
I guess I will think about whether or not I remove the endpoint from pages that don't support it.
#
tantek
and how is that not checked in
#
kylewm
tantek: explain plz?
#
miklb
ditto
squeakytoy joined the channel
#
sknebel
GWG: I feel like that would be the cleanest approach. it avoids unecessary work for both sides (not sending/processing invalid WMs) and if something caches a negative discovery result that's a bug on its side
#
tantek
kylewm: somehow I left that out of my commit at some point? weird.
[shaners] joined the channel
#
[shaners]
tantek: Do these two functions exist anywhere else (and were copy/pasted into the parser)?
#
tantek
get_absolute_uri I somehow forgot in the committed version
#
[shaners]
I mean, head_http_rels and http_rels
#
[shaners]
Follow up: confused by CC0 in this one file, but not for the whole repo. ¯\_(ツ)_/¯
#
[shaners]
Looks like the tests still pass because there isn’t an example that uses $url. So, get_absolute_uri() never gets called.
#
miklb
tantek oh. that explains a lot
#
tantek
shaners, good call on noticing it didn't exist in the *obvious* place, because apparently it wasn't there in the repo! (until just now)
#
[shaners]
Does link-rel-parser-php load cassis?
#
tantek
kylewm, miklb I have no idea how I added this function ~mid 2015 and it did not get committed
#
KartikPrabhu
git-magic
#
[shaners]
tantek: you’re deploying to production from local computer and not via github, right?
#
tantek
right
#
[shaners]
I mean, your production doesn’t install dependencies on the server from github at deploy time?
#
tantek
lol dependencies
#
[shaners]
cassis is a dependency
#
tantek
every source file in Falcon gets independently updated atomically
#
tantek
sometimes one file needs a newer version of another file, and so that other file is updated first.
#
tantek
but it's always a directed one level deep dependency at most
#
[shaners]
Are you rolling your own dependency resolver then?
#
tantek
no I just keep track of which two files need to be updated, and which one first
#
[shaners]
I got link-rel-parser-php half ported to Ruby today.
#
tantek
wow(!)
#
[shaners]
I’ll get the other half done tomorrow.
#
[shaners]
And if yall add a test that uses a base uri, I’ll add that too.
cweiske joined the channel
#
miklb
still not sure how link-rel-parser-php would know about the function in cssis.js
#
[shaners]
Maybe it’s worth thinking about extracting the test suite to a JSONy language agnostic test suite like happened for mf2 parsers
#
miklb
s/cssis.js/cassis.js/
#
Loqi
miklb meant to say: still not sure how link-rel-parser-php would know about the function in cassis.js
#
tantek
shaners - I couldn't obviously tell what was the source file vs decorative bits
#
tantek
and didn't want to spend time guessing
#
tantek
dislikes the modern development practices of surrounding a single source file with lots of chaff directories and mini config files and such
#
tantek
doesn't have patience to click on lots of things to try to find the actual thing that does the work
#
tantek
miklb - I extracted the http_rels and head_http_rels functions from Falcon into link-rel-parser-php. Falcon itself includes cassis.js
#
[shaners]
Is that re: an extracted test suite for the link-rel-parsers? Or re: something else? I’m confused. (It’s late and tired.)
#
tantek
shaners - re: https://github.com/indieweb/link_rel_parser-ruby - so many files without actual code
#
tantek
I got tired of gopher browsing for relevant text files back in the 1990s
#
[shaners]
What were you looking for in the repo?
#
tantek
the thing that actually does the work
#
tantek
"got link-rel-parser-php half ported to Ruby" => Ruby code
#
tantek
much better thanks
#
[shaners]
It’s the same number of clicks as the PHP version. You’re just more familiar with PHP projects than Ruby ones. It’s ok.
#
tantek
for me the top level thing already is a lib that's why I was complaining about having to do directory diving
#
tantek
yes likely
#
tantek
though I thought I had fewer dirs
#
tantek
shaners you're right
#
tantek
"lib" vs. "src/IndieWeb"
#
tantek
very weird to have source code buried and meta-chaff at the top level. total inversion of normal UI priorities
#
[shaners]
That’s to avoid namespace collision in PHP land, right?
#
kylewm
I do get very confused when projects put their source under lib
#
cweiske
was, it's a remnant of the PSR-1 coding standards
#
cweiske
where you could just >include "Name/Space/File.php"<
#
tantek
shaners, this is what I'm talking about https://github.com/tantek/cassis
#
tantek
source code at the top level
#
tantek
not buried in a subdir
#
cweiske
with just the include path correctly setup, without the need for an autoloader
#
tantek
tests and other stuff in subdirs
#
tantek
if I could shove all the gitignor, package phpunit post-process meta-chaff into "chaff" dir I would
#
tantek
none of that stuff is relevant enough to be top level
#
[shaners]
I agree. And all the Filefiles. I’ve long wanted a config or settings or misc or whatever directory for the files-for-computer.
#
[shaners]
“/lib" is an existing Rubyland thing. It’s not worth the effort for me to fight it. I get more for free by using the conventions than I would get by doing it another way.
#
miklb
honest question, does that get_absolute_url need to be extracted for php as well or does is it somehow referenced from cassis
#
tantek
miklb - cassis is php
#
miklb
ah. I saw .js and it's late.
#
tantek
milkb yeah, because .js is more trendy
#
kylewm
Link-rel-parser doesn't depend on cassis though does it?
#
tantek
s/milkb/miklb
#
Loqi
tantek meant to say: miklb yeah, because .js is more trendy
#
tantek
kylewm link-rel-parser-php is just an extraction of a few open source functions from Falcon. Falcon depends on cassis
#
tantek
I open sourced them because I looked at existing PHP link header / rel parsing code and it was all super-over-bloated object-class hierarchy tons of files crap
#
tantek
and so I wrote my own probably 1/10 the size and # of files. e.g. 1 file. zero classes/objects
#
tantek
and the published it because it was so much smaller than existing php libs
#
miklb
fair enough, then that still would need to be added to the link-rel-parser-php repo. I think
#
[shaners]
tantek: is link-rel-parser also meant to have get_absolute_uri() in it too?
#
tantek
s/and the/and then
#
Loqi
tantek meant to say: and then published it because it was so much smaller than existing php libs
#
tantek
shaners, no, because it's already loaded in from cassis
#
[shaners]
We’re all confused, T.
#
tantek
I don't pretend to understand or use any of the composer / package type stuff
#
[shaners]
tantek: I think we all understand that parts of cassis got extracted to become link-rel-parser. What we don’t understand is how link-rel-parser loads get_absolute_uri() from cassis if link-rel-parser doesn’t load cassis anywhere in the repo.
#
tantek
others have added all that
#
tantek
shaners no. parts of cassis were not extractd
#
tantek
s/extractd/extracted
#
Loqi
tantek meant to say: shaners no. parts of cassis were not extracted
#
kylewm
I'm not confused anymore fwiw :)
#
tantek
a few functions from Falcon were extracted to become link-rel-parser-php
#
[shaners]
Ok. My mistake. s/cassis/Falcon/ then.
#
tantek
Falcon loads cassis. Falcon has the functions http_rels head_http_rels
#
tantek
shaners, no you cann't just s/cassis/Falcon/
#
[shaners]
I don’t think get_absolute_uri() is actually getting loaded into link-rel-parser-php from cassis. I think the tests just never hit it.
#
tantek
it doesn't need to because falcon loads it
#
[shaners]
But what if some other php codebase wanted to use link-rel-parser? How would get_absolute_uri() work?
#
tantek
that other codebase would have to load cassis itself
#
tantek
just as falcon does today
#
[shaners]
So, what you’re saying is that cassis is a dependency of link-rel-parser?
#
tantek
seems like awkward wording
#
[shaners]
I’ll re-word
#
[shaners]
So, what you’re saying is that link-rel-parser depends on cassis?
#
tantek
if I'd had more time I'd have made http_rels and possibly also head_http_rels work in js as well as php and put them into cassis directly but I didn't so I just shared them separately
#
tantek
since at the time I wrote them, I pointed out that I did, and was asked to share them (I think by aaronpk )
#
tantek
rather than wait to make them cassis-ready
#
tantek
as you observed, http_rels uses get_absolute_uri which is defined by cassis.js. thus whatever code includes http_rels must also include cassis.js
#
tantek
I don't like the term "dependency" because it is overloaded and vague
#
miklb
if something won't work without something else, what would be a good term?
#
[shaners]
Seems like link-rel-parser should include cassis itself, so that it works “out of the box” without additional configuration etc.
#
tantek
nope. probably less work for me to make the functions work natively in cassis than deal with "out of the box" packaging stuff
#
tantek
so the code is provided as-is because that's how it was requested
#
tantek
but since the choice was wait because it wasn't done, or provide something people could use with some work, I chose the latter
#
tantek
or people can do A LOT more work to try to use the overcomplex other PHP "libs" for parsing link headers
#
[shaners]
I appreciate that you wrote this code and open sourced it. It saved me a lot of thinking on this problem. I was able to just think about the php->ruby conversion.
#
tantek
more source, more files, more objects, more documentation to read etc. etc.
#
tantek
and right - because I wrote SHORT source with minimal meta-packaging-chaff, it was more readable for you
#
tantek
and that readability made it more convertible
#
[shaners]
Well, to be frank, all of your one letter variables were less readable. :wink:
#
tantek
yeah that's fair
#
tantek
too much of my legacy C/Assembly programming is showing sometimes
#
[shaners]
My confusion was/is how this library would work for anyone who used a base url. Since cassis isn’t loaded by link-rel-parser. And since it isn’t documented anywhere, say in composer.json or in the README or in the src file that cassis is needed for get_absolute_uri to work.
#
tantek
probably good to add something to the readme yeah
#
[shaners]
My bet is that aaronpk hasn’t noticed because no tests actually hit that code path.
#
tantek
webmention.rocks forced it ;)
#
[shaners]
Does webmention.rocks include cassis?
#
tantek
easiest probably to just get the test harness to load cassis
#
tantek
no the test cases from webmention.rocks forced me to fix that bug in http_rels to handle relative hrefs
#
tantek
and thus include that function
jihaisse joined the channel
#
[shaners]
I added a couple issues for you/aaronpk to capture tonight’s conversation
#
aaronpk
Oh boy
#
aaronpk
good morning
#
Loqi
aaronpk: GWG left you a message 1 hour, 40 minutes ago: sknebel suggested your /travel posts could link to a flight tracking site while the flight is happening http://indiewebcamp.com/irc/2016-04-11/line/1460438880235
#
[shaners]
Oh hi apk. Where in the world are you?
#
aaronpk
Iceland briefly
#
[shaners]
Say hello to the pirates
#
tantek
^^^ that's kind of an amazing /travel post suggestion
#
tantek
aaronpk: do you use link-rel-parser-php anywhere?
#
aaronpk
My flight landed at the boarding time of the next one so I will have to wave from here
#
aaronpk
yes I do indirectly. It's used by Telegraph which sends all my webmention a
#
tantek
I wrote/shared the code but honestly don't know anyone else using it in production
#
tantek
does Telegraph include cassis?
#
aaronpk
and I think it's used by mention client php which means it's in Known
#
tantek
this is what happens when you share code. it ends up in unexpected places.
#
aaronpk
would have to double check on that tho
#
[shaners]
That’s the thing about open source.
#
[shaners]
It can go anywhere.
#
tantek
I'm trying to learn to stop worrying
#
tantek
figuring if people copy/use it, their responsibility
#
tantek
helps to feel less guilty purely by at least putting better code out there than what was out there before
#
tantek
no need for perfection per se
#
aaronpk
i should add more tests for it. The current set is really brief
#
miklb
an observation from an newcomer/outsider…code released by a project vs an individual is different
#
tantek
miklb very much so
#
tantek
with individuals it's more like just developing in the open, and if you see something you can use, go for it
#
tantek
there's little/no "productizing" because that's not why we're sharing
#
tantek
or "releasing"
#
tantek
I actually think that's a much more individual-friendly / practical way of doing open source
#
tantek
lowers the guilt/responsibility level
#
[shaners]
aaronpk: I mentioned earlier (before you were here) that I’ll port whatever tests yall write for php into my ruby port.
#
tantek
which then (hopefully) encourages more open incremental sharing of source
#
tantek
which should help everyone in general learn / use things
#
[shaners]
aaronpk: And if you wanna extract the test suite into a language agnostic test repo, I’d use that too. (Like the mf2 parsers do)
#
tantek
more code, less ceremony
#
tantek
and on that note, more sleep. good night!
#
Loqi
gute nacht!
#
aaronpk
shaners: yeah I can do that
#
[shaners]
Grool. No hurry. Just you know, whenever.
#
[shaners]
Have a safe trip
#
[shaners]
I’m done for the night. Goodnight (PST), everyone!
#
Loqi
see you in the morning!
friedcell, loic_m, nitot, Pierre-O, mdik_, tvn, M-kegan, M-Kodo, sanduhrs, adactio, j12t, davbo, M-RyanRix, Nissyen, mblaney and hs0ucy joined the channel
j12t joined the channel
#
aaronpk
Landed in Frankfurt!
jrenslin, hs0ucy and mlncn joined the channel
#
tommorris.org
edited /code-of-conduct-feedback (+645) "/* Open Discussions */ comment"
(view diff)
#
GWG
Morning
#
voxpelli
aaronpk: welcome to Europe! :)
#
miklb
voxpelli I didn't realize that themes for Jekyll will be landing sooner than later. Looks like going to be in 3.2
#
voxpelli
miklb: cool, found any issue for it?
nitot joined the channel
#
miklb
voxpelli gh issue you mean?
#
miklb
I had seen discussion in an issue thread, but hadn't seen the PR until last night
#
miklb
that's specifically so GitHub pages can use them.
#
voxpelli
a bit concerned about the pace of Jekyll :P
#
voxpelli
oh? that's cool
#
miklb
yeah, the PR is from Ben Balter, who basically handles pages for gh
#
miklb
he mentioned in another thread it was a priority, just didn't realize how much :-)
#
voxpelli
"would allow us to very quickly whitelist a large number of themes for use with GitHub Pages", will be interesting to see how it turns out
#
miklb
will try to make sure indieweb theme gets on that whitelist
#
miklb
I'm hoping by the jekyllconf next month it will be in RC status at least
#
miklb
realistically it will be in beta
singpolyma joined the channel
#
idolstarastronomer.com
edited /web_hosting (+174) "/* Google Drive */ provide alternative google cloud storage to replace google drive hosting."
(view diff)
tvn and [zero-gravitas] joined the channel
#
[zero-gravitas]
anyone used google docs as a webmention endpoint?
KartikPrabhu and shiflett joined the channel
#
sknebel
[zero-gravitas]: not that I know of
#
sknebel
I'm also not sure how you'd do that without additional tools
hs0ucy, friedcell, squeakytoy2, tantek, squeakytoy and Garbee joined the channel
snarfed and tvn_ joined the channel
#
aaronpk
voxpelli: thanks! just got to Nürnberg!
#
aaronpk
26 hours traveling
#
kylewm
aaronpk: tantek: mention-client-php doesn't depend on link-rel-parser-php just fyi
#
aaronpk
how does it do it?
#
aaronpk
(i should know, i wrote it..)
#
kylewm
preg_match :)
#
aaronpk
it probably should use link-rel-parser
#
kylewm
I'd rather it didn't honestly, I don't want to pull cassis into Known just for that
#
aaronpk
oh right because now it needs cassis?
#
aaronpk
can't we just copy that one cassis function in?
#
aaronpk
i still need to actually catch up on that whole discussion thread. i think i got the gist of it.
#
kylewm
it sounds like you got it
gRegorLove joined the channel
#
aaronpk
kylewm: how do I go about renewing the FB access token on silo.pub?
#
aaronpk
if I click the facebook icon on the home page will it get a new token from FB? I assume my existing micropub token will be the same?
#
aaronpk
looks like that worked
#
kylewm
that is correct
#
aaronpk
great that wasn't too bad
#
aaronpk
gotta figure out how to surface those errors to myself better
#
kylewm
(i'm open to suggestions... to notify you when the token expires like bridgy does, you need FB Canvas permission which is too hard to get)
#
snarfed
huh. we got an explicit permission for that?
#
snarfed
or did we just have to configure the app for canvas? which is also annoying - i basically redo it every time i apply for a new perm, than undo immediately after - but still
#
snarfed
looking
#
kylewm
snarfed: maybe grandfathered in, i dunno
#
kylewm
lol, "Build a custom friend selector that helps maintain an immersive game experience"
#
sixtwothree.org
edited /events/2016-04-20-homebrew-website-club (+436) "/* Homebrew Website Club Meetup */ Adding DC event details"
(view diff)
#
sixtwothree.org
edited /events/2016-04-20-homebrew-website-club (+83) "/* Washington DC */ Add link to Facebook POSSE copy"
(view diff)
#
aaronpk
I was thinking just on my end even. Like if I get an error from silo.pub right now I don't see it unless I look at my logs
snarfed and tantek joined the channel
#
yatil.net
edited /2016/Düsseldorf/Guest_List (-263) "/* Participants */ -EricE"
(view diff)
j12t joined the channel
#
snarfed
it's pretty good (the latter), you might want to try it for you app engine stuff. should already be running.
#
snarfed
opens the F8 live stream to see if FB will add reactions to the API. https://developers.facebook.com/videos
#
voxpelli
miklb: I wonder if it would make sense to make enable my webmention endpoint to send a micropub request with each mention to the site that received it so it can publish it wherever it chooses?
#
miklb
that would be an interesting approach.
#
voxpelli
probably won't make it a high priority though as I think it's enough to have the mentions be curlable
#
miklb
If I understand that correctly, could have a plugin like what I'm using for webmention.io currently to pull in the webmentions into a cache file?
#
voxpelli
miklb: I know eg. http://www.kryogenix.org/days/2014/11/29/enabling-webmentions/ already pulls down comments from my API and adds locally
#
Loqi
Enabling Webmentions
#
voxpelli
I think that would add unwanted complexity to my site, I want my site to be about my content and defer enhancements with references to mentions to external services
#
miklb
voxpelli it seems that Aaron Gustafson's webmention.io jekyll plugin could easily be modified to use your api endpoint and allow received webmentions be cached on build and displayed that way for people that want that option.
#
voxpelli
miklb: yeah, probably
#
voxpelli
miklb: what would the benefits be of that would you say?
#
miklb
not sure. resources? support for people browsing without js?
#
kylewm
archiving comments after herokuapp is gone
#
voxpelli
kylewm: one can download backups from herokuapp + host the herokuapp oneself :)
#
voxpelli
more thinking if there's an advantage of having it directly in the html vs having it loaded with javascript
#
miklb
but an automated backup on build isn't a bad thing. I use a combination. I serve the js for any mentions between build/deploy, but cache the mentions and display them
#
voxpelli
I see the realtime of the latter and the decreased complexity of the main app, the separations of concerns, as big wins
#
voxpelli
s/big wins/wins/
#
Loqi
voxpelli meant to say: I see the realtime of the latter and the decreased complexity of the main app, the separations of concerns, as wins
#
voxpelli
the current nextgen solution for my endpoint also works for people without javascript, they just have to follow a link to see the mentions
#
miklb
certainly isn't advocating for not offering the js/progressive enhancement
bengo joined the channel
#
www.svenknebel.de
edited /User:Www.svenknebel.de (+499) "website online, tech details"
(view diff)
#
voxpelli
it's a tricky question, hard to frame I think
KartikPrabhu and jciv joined the channel
#
kylewm
could a php person check if their system has xmlrpc_decode? (mine doesn't without apt installing php5-xmlrpc, but travis ci seems to have it by default)
#
singpolyma
kylewm: same as you I need php5-xmlrpc for that function to be defined
rrix joined the channel
#
voxpelli
kylewm: mine has it, installed through Homebrew-PHP
#
kylewm
interesting, ok thanks!
#
gRegorLove
I have xmlrpc_decode on dreamhost
#
kylewm
whoa also just learned a weird alternate php syntax if elseif endif
begriffs joined the channel
#
miklb
kickin' it old skool :-P
#
tantek
kylewm: you're saying you learned one weird php trick?
#
tantek
do you have a newsletter? ;)
#
gRegorLove
dot tumblr dot com
#
gRegorLove
Too slow. That was for: one weird php trick. Guess it works for do you have a newsletter, too.
#
tantek
aaronpk: for archiving the webmention rocks test results/comments, I'd suggest putting them in an "Archived responses" section at the bottom, perhaps clustered by implementation
#
tantek
s/at the bottom/at the bottom of each test page
#
Loqi
tantek meant to say: aaronpk: for archiving the webmention rocks test results/comments, I'd suggest putting them in an "Archived responses" section at the bottom of each test page, perhaps clustered by implementation
#
miklb
voxpelli I'm going to switch over to herokuapp so I can better test/explore the implementations. Also in case decide to incorporate the micropub with it
#
tantek
maybe keeping 2-3 per implementation, e.g. looks like we have (1) Known, (2) WordPress (plus what plugin(s)?), (1) Nucleus, (1) Falcon using link-rel-parser-php, and (1) Ronkyuu
#
KevinMarks
also mention-tech
#
tantek
KevinMarks: good question - do we distinguish just showing up on the test page without name/photo/content/permalink compared to all the above showing up?
#
tantek
and that's a hand-authored static page right?
#
KevinMarks
yes, but the webmention sending is a separate implmentation
#
KevinMarks
I could hand-author a static page on kevinmarks.com and send it the same way
#
KevinMarks
hm, also should test indiewebify.me sending
#
kylewm
oh redwind was 5/8
#
tantek
kevinmarks - I think especially with proxy-like services, it helps to use a separate domain, and then document on your post how it worked, because it's not as obvious what's going on (what implemented what)
#
tantek
plus does mention-tech support sending updates? hoping that you sending an update would fix the noname/nophoto/nocommenttext problems on the resulting comments on webmention rocks
#
aaronpk
kylewm: xmlrpc is an extension. i ended up just building the XML by hand for mention-client to not rely on that being on the server
#
aaronpk
xmlrpc--
#
Loqi
xmlrpc has -2 karma
#
kylewm
aaronpk: could i sway you to agree wtih my suggestion here https://github.com/indieweb/mention-client-php/issues/22#issuecomment-209018130
#
aaronpk
oh crap.
tridnguyen joined the channel
#
KevinMarks
oh, and indiewebify.me can't check mention-tech 'cos it's on appspot
#
aaronpk
that's pretty frustrating
#
aaronpk
appengine-- for that
#
Loqi
appengine has 1 karma
#
KevinMarks
webmention.rocks doesn't display p-name?
#
aaronpk
i thought it did
#
gRegorLove
What is SimplePie?
#
Loqi
It looks like we don't have a page for "SimplePie" yet. Would you like to create it? https://indiewebcamp.com/s/10Hy
#
aaronpk
huh, it doesn't. i wonder if i forgot to do it in the first place or if i deleted it
#
gRegorLove
Did I recall correctly that someone in the community was adding h-feed support to SimplePie?
#
gRegorLove
SimplePie is a feed parser library written in PHP.
#
loqi.me
created /SimplePie (+77) "prompted by gRegorLove https://indiewebcamp.com/irc/2016-04-12/line/1460483481376 and dfn added by gRegorLove"
(view diff)
#
kylewm
gRegorLove: yep! that was mblaney
#
gregorlove.com
edited /SimplePie (+52) "link, see also"
(view diff)
#
aaronpk
i have some fun surprises to push up to webmention.rocks that I wrote on the train this morning
#
gRegorLove
Nice. I'm advocating for h-feed supprot in another library https://github.com/fguillot/picoFeed/issues/264. Thought of mentioning SimplePie. Know if there's going to be an official release, or is it a fork?
#
gRegorLove
Man, I dunno. I'm about out of rock puns.
#
tantek
gRegorLove: sounds like you've almost hit rock bottom.
#
gRegorLove
tantek++
#
Loqi
tantek has 285 karma
Pierre-O and wolftune joined the channel
#
voxpelli
kylewm: aaronpk: XML-RPC always answers 200, don't it? That's kind of the thing with RPC, that it just uses HTTP as a transport and uses it's own format for everything else
#
kylewm
oh ok I didn't know that
#
singpolyma
HTTP basically is an RPC protocol (verb + params) so tunelling another RPC protocol over it always ends up ignoring some HTTP features
#
tantek
singpolyma: depends if you're tunneling or deliberately layering
#
tantek
oh goodness why am I getting sucked into a plumbing discussion.
#
tantek
steps away for a bit.
#
aaronpk
sounds like we're gonna regex this then
#
aaronpk
what's the saying? don't try to parse HTML with regex? how about XML!
#
singpolyma
can't use an XML parser?
#
KevinMarks
hm, why is aaron pulling the name from the img there? http://mention-tech.appspot.com/
#
aaronpk
xmlrpc_decode isn't guaranteed to be installed, and likely the same for other libraries
#
Loqi
[brid-gy.appspot.com/post/twitter/mention_tech/707770354840838144] a month agobrid-gy.appspot.com/post/twitter/mention_tech/707770354840838144 mentioned mention-tech.appspot.com/ ✅ a month ago None
#
Loqi
[Webmention Rocks!] Test #1
#
loqi.me
created /supprot (+108) "prompted by gRegorLove and dfn added by gRegorLove"
(view diff)
#
aaronpk
plus i mean really, an XML parser to find out if the endpoint returned a 0?
#
KevinMarks
<div class="p-author h-card"><a href="/" class="p-org p-name"><img class="u-logo" src="/static/logo.jpg" />mention.tech</a></div>
#
singpolyma
regex will probably work, but XML parser probably easier if there's one PHP always has. I thought they did, but maybe not
#
aaronpk
KevinMarks: don't you want p-name on the img tag?
#
KevinMarks
no, I want it to get the text content of the a tag
#
KevinMarks
not the URL of the img tag too
#
KevinMarks
hm, pin13 gets that wrong too
#
kylewm
so if the pingback function really just returns true or false for success, then we can just check for the presence of <fault> in the response, i think
#
aaronpk
huh yeah i don't know. apparently the value of the u-logo counts towards the value of the name since it's inside the p-name
#
aaronpk
i think that's correct parsing though
#
aaronpk
why not?
#
aaronpk
the u-* class in the p-name is special?
#
KevinMarks
maybe I need an alt="" to stop that for your parser
#
KevinMarks
why is p- getting a value from an href?
#
KevinMarks
s/href/src/
#
aaronpk
it's taking the value of everything inside the p-* object
#
Loqi
KevinMarks meant to say: why is p- getting a value from an src?
#
voxpelli
kylewm: yeah, I added a short snippet saying basically the same
#
kylewm
voxpelli: just saw it!
#
KevinMarks
p- is not supposed to get a url
#
aaronpk
i don't think it knows it's a url at that point, since it's *inside* the p-name tag
#
kylewm
"else return the textContent of the element, replacing any nested <img> elements with their alt attribute if present, or otherwise their src attribute if present, resolving any relative URLs, and removing all leading/trailing whitespace."
#
aaronpk
kylewm++ thanks, i couldn't find that
#
Loqi
kylewm has 313 karma
#
aaronpk
so add alt=""?
#
KevinMarks
so python is wrong?
#
kylewm
KevinMarks: looks like it
#
KevinMarks
hm, I resent wiht an alt added but it didn't change
#
Loqi
[Webmention Rocks!] Test #2
#
aaronpk
checks if it's caching things
#
KevinMarks
you want in-reply-to too now?
snarfed joined the channel
#
aaronpk
hm no it shouldn't be
#
aaronpk
no i just moved non-replies below
#
aaronpk
also likes/reposts are displayed fancy
#
KevinMarks
seems happy
#
aaronpk
checks versions of things
#
aaronpk
webmention.rocks is using php-mf2 0.3.0
#
aaronpk
updates pin13
#
gRegorLove
I thought that was the latest
#
gRegorLove
nvm, misread
#
aaronpk
pin13 was on 0.2.12
#
aaronpk
now pin13 is showing it wrong
#
aaronpk
so something changed between 0.2.12 and 0.3
#
KevinMarks
ignoring alt?
#
aaronpk
no idea. i try to stay away from parser guts.
tantek joined the channel
#
gRegorLove
There was big changes in plain text parsing, for better whitespace support
#
KevinMarks
I wonder if alt="" makes hasAttribute fail?
#
gRegorLove
It's a bug if ($el->getAttribute('alt') !== '') . . . else if (!$implied && $el->getAttribute('src') !== '')
#
gRegorLove
I'll file an issue and work on it.
#
KevinMarks
ah. so I should make the alt a zero width space
#
Loqi
hehe
emmak joined the channel
#
KevinMarks
right, getAttribute doesn't distinguish no attribute form empty attribute; if ($el->hasAttribute('alt')) should work
KartikPrabhu joined the channel
#
gRegorLove
Filed: https://github.com/indieweb/php-mf2/issues/89 I should be able to fix it later today.
shiflett joined the channel
#
tantek
Kevinmarks - in situations like this, always try microformatshiv - it tends to have the most spec-precise results because of the incredibly thorough test suite that Glennjones wrote up with it
#
gRegorLove
is working on implementing that test suite for php-mf2, btw
#
KevinMarks
right, we need to get back to iterating those in python as well
KevinMarks joined the channel
#
KevinMarks
a parsing thought - if we do fall back on the src of an img inside a p, should we wrap it in spaces?
#
KevinMarks
'cos currently we're getting a bad url
#
tantek
KevinMarks - go ahead and add to http://microformats.org/wiki/microformats2-parsing-issues with citation of example page that caused the "bad url"
#
Loqi
microformats2-parsing-issues
#
aaronpk
yeah that does seem reasonable. there is no way that concatenating a string with a value that came from a src or href makes sense.
shiflett joined the channel
#
GWG
Afternoon
#
GWG
User agents for webmention source verification. Anyone have a thought?
#
tantek
whatever you use for all your other curls
#
tantek
against anything specific just for "webmention source verification"
#
GWG
Right now, it doesn't seem to set a user agent
#
tantek
the webmention validator could display that kind of information (UA etc.)
Breadbasket_ joined the channel
#
GWG
I'm exploring everything about the webmention plugin to the smallest detail
#
GWG
Including whether the source url should accept protocols other than http/https and ports other than 80,443, or 8080
#
KevinMarks
no reason to constrain ports
begriffs joined the channel
#
GWG
KevinMarks, it was mostly about whether or not to use the built in url validator
#
GWG
It also rejects usernames/passwords,? and #, []...
#
gRegorLove
adactio set "mydomain (webmention.org)" in his minimum viable webmention code. https://gist.github.com/adactio/6484118
#
GWG
I am thinking the answer is no, but the urls need to be checked regardless
#
GWG
.net now
#
gRegorLove
Should we redirect webmention.org?
#
GWG
Any WordPress Plugin could get a wide installation base if our dreams come true. I don't want to be responsible for DDOS or other problems
#
GWG
Thus the obsession
#
GWG
Although I obsess about everything that I am passionate about
hs0ucy and acegiak joined the channel
#
GWG
Hi, acegiak
#
GWG
To use an analogy, if webmentions are plumbing... I want to use the best pipes because I'm afraid that the people buying the house... (WordPress Core) won't want it if it isn't structurally strong.
#
GWG
I'm going to take a break from this obsession for the afternoon and go back to obsessing about work.
#
voxpelli
I think version numbers + urls in user agents are pretty good because then one can easily pinpoint a bad-behaving client and give them feedback on how to improve
#
tantek.com
edited /Planning (-12) "/* New York City 2 */ collapse 2016-08-27 entries into one"
(view diff)
#
aaronpk
I would recommend using a user agent that describes your software, nothing specific to webmention. It can be used for any other http request you might be doing too
#
aaronpk
look at how slack and other sites set their user agent for doing link previews
#
tantek
like there should be no difference in UA between when curling a pingback source and a webmention source
#
tantek
so what's your existing practice when curling a pingback source?
#
aaronpk
same for fetching images if you're running an https image proxy
#
aaronpk
Speaking of which I need to do that for webmention.rocks
#
aaronpk
bunch of insecure image errors right now
#
voxpelli
tantek: the wordpress practise there is very weird and doesn't even comply with normal user agent formatting :P
#
tantek
what is a user agent?
#
Loqi
User-agent is a common HTTP header that generally indicates the name, version, and a URL for the application making the request https://indiewebcamp.com/user-agent
#
tantek
voxpelli: can you document perhaps "Software Examples" there with what you know of what WordPress does currently?
#
voxpelli
GWG: ^ perhaps you are better at that? I just retold what you posted in your issue :)
#
GWG
I have to head back to work. Will try to Tonight.
#
kylewm
would be kinda nice to have an https image proxy that we could all use (including the wiki)
#
voxpelli
kylewm++
#
Loqi
kylewm has 314 karma
#
aaronpk
For the wiki the hard part isn't actually writing/running the proxy. It's hooking into al the various ways media wiki generate img tags
#
kylewm
oh yeah
#
voxpelli
I think we talked about such services a while back
#
aaronpk
I made one you can run on lambda
#
aaronpk
it stores the images too
#
aaronpk
willnorris made one too, I forget which platform it's for
#
gRegorLove
What is ca3db?
#
Loqi
ca3db is a library for permanently storing multiple versions of user avatars found on social networks and websites https://indiewebcamp.com/ca3db
#
kylewm
will's is a go library
#
aaronpk
ah right! Cool
#
kylewm
if you search for https image proxy, his is the first hit
#
kylewm
aaronpk: is ca3db the one you are talking about?
#
kylewm
for some reason i decided i thought that wasn't a general purpose tool
#
aaronpk
Second result is a service https://images.weserv.nl/
#
voxpelli
aaronpk: how does the lambda one serve the stored images?
#
kylewm
oh I remember, ca3db actually has like an upload step, you can't just construct a URL at render time
#
aaronpk
The lambda app just puts it in an S3 bucket
#
aaronpk
kylewm: it's not an upload, more of an API call
#
aaronpk
you tell it the URL you want to archive and then it gives you back an S3 URL
#
voxpelli
aaronpk: so there will be two different URL:s for the S3-one and the lambda-generated one or can API Gateway handle that a miss in one results in a call to the other?
#
voxpelli
oh, I see
#
aaronpk
voxpelli: you're overthinking it :-)
#
voxpelli
aaronpk: I want all of my image resizing to be lazy I think ;)
#
aaronpk
It doesn't resize either
#
aaronpk
but I might add that soon
#
kylewm
that's all i meant by "upload step"; you have to do something proactively in order to get the image into s3
#
kylewm
which is the right architectural decision for the use case you wrote it for
#
aaronpk
for me the initial API call is important, since the goal is to make sure my image tags on my site always reference a real thing
#
aaronpk
I'm going to use the same pattern once I accept photo comments
#
aaronpk
or img tags in comment text
#
aaronpk
basically why would you want to risk writing an img tag to a photo that might not be there?
#
kylewm
but you can see why making the wiki do that would be effort than just rewriting a image urls with "images.weserv.net/?url=URL" at render time
#
voxpelli
aaronpk: one can always to the gravatar-solution of serving a fallback-image if one uses it for something like avatars
#
aaronpk
But the wiki has a perfect opportunity to make that call.. When the page is saved
#
aaronpk
Plus then we know the wiki won't have broken images later
#
KevinMarks
googles image thing is good 'cos you can resize on the fly by appending a width to the url
#
tantek
tbrb: how did HWC Edinburgh go tonight?
#
tbrb
Went well, was pretty quiet tonight
#
tbrb
we're hoping that as exams finish up we'll have a few more folks heading along
snarfed joined the channel
#
tantek
makes sense
#
kylewm
KevinMarks: what's the google one?
#
tantek
tbrb, any thoughts on a IWC Edinburgh this year? https://indiewebcamp.com/Planning#Edinburgh
#
KevinMarks
the one you call from appengine - would need a little bit of wrappign code
#
tbrb
tantek: I'd not thought that far ahead to be honest, might not be too bad an idea actually
#
snarfed
downside: have to upgrade to fb api v2.6 to use it, which for some projects (ahem) will be nontrivial
#
kylewm
ahh ok
#
tantek
I just added tonight HWC Edinburgh meeting to https://indiewebcamp.com/Template:Homebrew_Website_Club - thanks again for creating the event page for it. If there are others from this year, please feel free to add/link them from https://indiewebcamp.com/Template:Homebrew_Website_Club !
#
tbrb
Will do
#
KevinMarks
though that one looks like a wrapper round the backedn api
#
tantek
much thanks!
#
aaronpk
ooo reactions API
#
aaronpk
gotta prioritize reacji support on my site now hehe
#
aaronpk
in anticipation of Bridgy supporting it of course
#
tantek
aaronpk: what do you think Bridgy could support reacji backfeed from FB?
#
snarfed
fails to parse that q
#
aaronpk
see above! I hope so!
#
tantek
aaronpk: perhaps open a feature request?
#
kylewm
oh the feature request was there hours after facebook launched the feature
#
kylewm
mere hours*
hs0ucy joined the channel
#
snarfed
ooh new tool to help upgrading facebook API versions looks useful: https://developers.facebook.com/tools/api_versioning
indie-visitor joined the channel
#
Loqi
Welcome, indie-visitor! Set your nickname by typing /nick yourname
xod3, shiflett, snarfed, KartikPrabhu, tvn and Lancey joined the channel
#
KevinMarks
so the instant article api is POSTing an HTML document with a toke; https://developers.facebook.com/docs/instant-articles/api
#
KevinMarks
sounds micropub-like
#
KevinMarks
except the HTML is really strictly defined
#
miklb
saw some discussion earlier about serving images, recently came across https://www.imgix.com and what I liked is it will serve from your own S3 bucket but provide optimized sizes available on fly.
#
miklb
maybe not "serve from you S3" but pul from S3
#
miklb
s/pul/pull/
#
Loqi
miklb meant to say: maybe not "serve from you S3" but pull from S3
mblaney and KartikPrabhu joined the channel
#
mblaney
!tell gRegorLove I released official SimplePie 1.4-beta a few days ago that includes microformats support, will release 1.4 in a few weeks.
#
Loqi
Ok, I'll tell them that when I see them next
shiflett joined the channel