#dev 2018-07-09

2018-07-09 UTC
#
[kevinmarks]
I like Danilo's thinking. Wondering what we could make on airtable and glitch to be indieweb friendly
#
loqi.me
edited /POSH (+298) "[kevinmarks] added "https://twitter.com/stephaniecodes/status/1016032416585142273?s=19" to "See Also""
(view diff)
snarfed joined the channel
#
www.tedt.org
edited /OwnYourSwarm (+374) "/* IndieWeb Examples */"
(view diff)
#
www.tedt.org
edited /OwnYourSwarm (+1) "/* Ted Tschopp */"
(view diff)
snarfed, [kevinmarks] and petermolnar joined the channel
#
@nilshauk
This evening I’ve been trying to build a minimal http://glitch.com app which supports IndieAuth login. After some head scratching I see it’s a tweaked oauth2 flow, I think. Goals: - remixable (Glitch shines there) - transparent - well tested
(twitter.com/_/status/1016121386077687810)
#
www.tedt.org
edited /projects (+47) "/* Jekyll */"
(view diff)
iasai_, snarfed and [jgarber] joined the channel
#
[jgarber]
Looking at the Verification section of the Webmention spec, I came across this: “In a JSON ([RFC7159]) document, the receiver should look for properties whose values are an exact match for the URL.”
#
[jgarber]
Are there any examples in the wild of anyone verifying a JSON file like this?
#
sknebel
[jgarber]: i don't believe there are (I had the same question about a year ago)
#
GWG
Until there is a use case, no one will
#
KartikPrabhu
is anyone sending webmentions from a JSON document?
#
[jgarber]
KartikPrabhu: That’s what I’m trying to figure out. The spec mentions it, but… I haven’t ever seen anyone doing it or talking about doing it.
#
sknebel
its a bit odd that something apparently nobody ever did made it into the spec. there was some talk to use it for some of the JSON-LD based W3C specs, but I believe they all recommend LDN now
#
GWG
There were some interesting talks about doing it
#
[jgarber]
GWG: Any links or references or anything would be super helpful.
#
[jgarber]
I was surprised to see that in the spec. But… if someone’s out there doing it, I can write support for it into this verification library I’m working on.
#
GWG
I remember a discussion about doing it as a way of sharing bibliographic data.
#
GWG
But I can't recall which IWC
#
KartikPrabhu
not sure if any bibliographic data is published as JSON anyway
#
sknebel
with the web annotation stuff there briefly was talk about using WM
#
KartikPrabhu
is anyone using web annotations?
#
KartikPrabhu
[jgarber]: right now, I would just avoid it. if someone asks you to verify the JSON then you can include it
#
[jgarber]
What are web annotations?
#
Loqi
It looks like we don't have a page for "web annotations" yet. Would you like to create it? (Or just say "web annotations is ____", a sentence describing the term)
#
KartikPrabhu
what is annotation
#
Loqi
Annotations are comments (including marginalia), highlights or any other interactions that add to (part of) a post, typically added by individuals other than the author https://indieweb.org/annotation
#
aaronpk
Oh yeah there was that implementation... it is hopefully documented on the wiki...
#
[jgarber]
aaronpk: wuuuuuut
#
aaronpk
I don’t know what came of it since then, but I was impressed
#
[jgarber]
_lawd_ okay. This is super useful documentation.
#
[jgarber]
Based on the way the spec is written, it seems to imply that only values in a JSON object that _exactly_ match the target URL should be considered valid.
#
[jgarber]
That would discard the target URL being referenced in, say, a `"content"` key’s value.
#
aaronpk
That is true
#
KartikPrabhu
so HTML >> JSON ;)
#
[jgarber]
At face value that seems like a curious choice, but… it makes the parsing a little less heinous.
#
[jgarber]
aaronpk: Is there a reason the spec went with the precise match?
#
aaronpk
I think because JSON lacks both a hyperlink mechanism as well as a mechanism to say what content type values are so a partial match might lead to false positives
#
[jgarber]
coolcoolcool
#
[jgarber]
So `"foo": "https://target.example.com/post/100"` would match but `"foo": "blah blah blah https://target.example.com/post/100"` would not match.
#
[jgarber]
Perfect. Thanks for the clarifications.
#
[jgarber]
…and I imagine a conforming verification library would need to crawl all the way down the JSON structure until one runs out of key/value pairs?
#
aaronpk
Presumably yes
#
[jgarber]
That’s gonna be a crazy fun time challenge. 😂
#
aaronpk
Pretty sure if you do this you’ll be the first wbemention library that does
#
[jgarber]
_CHALLENGE ACCEPTED_
renem, mblaney, snarfed, KartikPrabhu, mblaney1 and [miklb] joined the channel
#
[miklb]
jgarber++
#
Loqi
jgarber has 5 karma in this channel (13 overall)
KartikPrabhu, tantek__, snarfed, [manton] and mblaney joined the channel
#
www.serenawho.com
edited /chat-names (+133) "/* Nicknames */"
(view diff)
[cleverdevil] joined the channel
#
[cleverdevil]
Yeah, [aaronpk] I’m gonna have to figure out how to do the token exchange without passing it as a GET parameter. I’m doing it that way now because it was an expedient way to have the Lamba app redirect to the static website which then generates the links using JavaScript.
#
[cleverdevil]
I think I can do the redirect and potentially pass the values in HTTP headers and then extract them client side but I’m not sure.
#
[cleverdevil]
I need to do some testing.
barpthewire and snarfed joined the channel
#
[cleverdevil]
Hmm... looks like I can't access HTTP headers from JavaScript in the static page. I'm going to have to figure out an alternative...
#
[cleverdevil]
I suppose I could set a cookie in the redirect and then read the token from there.
#
[cleverdevil]
Off to a meeting but I’ll try that later.
grantcodes, eli_oat[m], mindB, gRegorLove and [kevinmarks] joined the channel
#
[kevinmarks]
You can grep for the url as text first before doing the recursive parsing though.
#
[kevinmarks]
If you grep for the url in quotes is that enough?
iasai_ joined the channel
[cleverdevil] joined the channel
#
[cleverdevil]
Good news, the cookie solution works!
#
[cleverdevil]
Finishing update right now.
tonzyl joined the channel
#
[cleverdevil]
I've updated the front site -> https://www.indiepaper.io
#
[cleverdevil]
Go nuts, Aperture users!
#
www.svenknebel.de
edited /server-indieauth (+571) "/* TODO */ expand questions"
(view diff)
loicm, [tantek] and [colinwalker] joined the channel
#
aaronpk
[cleverdevil]++ nice!
#
Loqi
cleverdevil has 36 karma in this channel (106 overall)
[cleverdevil] joined the channel
#
[cleverdevil]
Now, a gen 3 type customer could sign up for Micro.blog, then sign into Aperture, Indiepaper, and Together/Monocle and have a great experience.
#
[cleverdevil]
No software to configure.
#
aaronpk
*almost*
#
aaronpk
still need to add the microsub link tag to your micro.blog template
#
[cleverdevil]
Still, that’s pretty close!
#
[cleverdevil]
Not sure how to automate that without having to special case it in Micro.blog.
tonzyl, eli_oat, snarfed and [manton] joined the channel
#
[manton]
When I have a chance to think through more of the Microsub stuff, it probably makes sense to have a field on Micro.blog that adds a <link> tag for Microsub for the user, similar to how it works for Twitter, etc.
#
[manton]
I've also added some documentation for using Indiepaper with Micro.blog directly: http://help.micro.blog/2018/indiepaper/
#
aaronpk
that'd work!
[kim_landwehr] joined the channel
#
sknebel
hm... let Aperture on first login ask for scope="add_rels" and define a standard for that? ;)
#
aaronpk
oh gosh
#
sknebel
hm, if it weren't per-user you could put in h-x-app and the site could propose adding it
mblaney left the channel
#
sknebel
that'd be fairly elegant
[eddie] joined the channel
#
aaronpk
omg salmention fail
#
aaronpk
what did I do wrong
#
aaronpk
okay yeah I don't understand what happened here, maybe this is a micro.blog problem
[cleverdevil] joined the channel
#
[cleverdevil]
[manton]++ for Indiepaper documentation for Micro.blog!
#
Loqi
manton has 11 karma in this channel (68 overall)
#
Loqi
[aaronpk] @manton OAuth has become the de facto standard for authorization and authentication on the web. Nearly every company with an API used by third party developers has implemented OAuth to enable people to build apps on top of it. While OAuth is a great ...
#
aaronpk
somehow my site sent a webmention from that page to micro.blog, and then micro.blog matched it up as a reply to manton's post from last week?
#
[manton]
Yes, it's a perfect storm of 2-3 Micro.blog bugs.
#
[manton]
Don't think you are doing anything wrong.
#
aaronpk
oh... I linked to that post in the article!
#
aaronpk
ok, not a salmention problem (that would have been on my end)
#
aaronpk
looks like micro.blog isn't limiting matching to the in-reply-to URL
#
[manton]
Yeah, it "worked" but it really shouldn't allow long replies like that and it should get the HTML instead of just the text version.
#
aaronpk
well my post isn't a reply to yours either tho
#
aaronpk
I wouldn't expect generic mentions of a micro.blog post to appear in the conversation view
#
[manton]
Okay, I'll check the markup and see if I can better detect non-reply webmentions.
#
[eddie]
That’s true. But also it’s an article, so it should have shown the title and the url
#
[eddie]
Haha, Talk about a perfect storm
#
[eddie]
You hit ALL the bugs, aaronpk
#
aaronpk
a webmention that is a reply will have the in-reply-to URL set, otherwise it's not a reply
bradenslen and sketchess joined the channel
#
skippy
i've been out of my micropub codebase for long enough that I've forgotten much of what I knew of the MP spec.
#
skippy
is the mp-syndicate-to an array, or comma-separated list?
#
skippy
thanks!
#
www.svenknebel.de
edited /server-indieauth (+162) "/* TODO */ security concern"
(view diff)
#
sknebel
aaronpk: added some notes ^^^ - would be happy to further discuss and work on trying some of this out
#
aaronpk
thanks!
#
www.svenknebel.de
edited /server-indieauth (+209) "/* TODO */ endpoint name?"
(view diff)
#
sknebel
at least I think this time I understood the key differences to my experiments
snarfed, eli_oat and jgmac1106__ joined the channel
#
manton.org
edited /indiewebring (+186) "Added link to Micro.blog help page."
(view diff)
#
GWG
snarfed, next PR is about splitting functions
jgmac1106__ joined the channel
#
snarfed
hey GWG. one thing that makes reviewing this PR hard is that there's no diff, since the code moved across files. ideally there are no functionality changes in this kind of PR, just moves...but i noticed that eg admin_menu is entirely new. are there other new things i need to find? can you tell me where?
#
GWG
That's the only new thing
#
snarfed
thanks! ok. that's the kind of thing that's worth mentioning in the PR description, for next time, to help the reviewer understand the changte
#
GWG
This was all about splitting, so the menu code was splitting it from the writing page
#
snarfed
splitting UI is very different from splitting code files :P
#
GWG
Good point
#
GWG
Should have split the PR
#
snarfed
split the split! :P
#
snarfed
not necessary for this one. next time!
#
GWG
Will do
#
snarfed
GWG: done!
Lovi, snarfed, snarfed1 and [manton] joined the channel
#
[manton]
[aaronpk] I just realized why that webmention was showing up on Micro.blog all of a sudden. My old blog didn't support receiving webmentions! When I moved manton.org to M.b, the webmentions started arriving.
#
[manton]
Anyway, I'm fixing the in-reply-to check.
#
aaronpk
ohhhh cool
#
aaronpk
yay now i'll be able to have my replies to you should up on micro.blog!
snarfed and tantek__ joined the channel
#
[manton]
I've deployed a fix for part of that webmention bug. Still need to switch to a real MF2 parser, though.
#
tantek.com
edited /next-hwc (-21) "fix redirect for historical purposes before I update it"
(view diff)
#
skippy
i should scrap all my micropub URL and content handling and just use XRay. *sigh*
#
Loqi
I agree
snarfed joined the channel
#
sknebel
xray for micropub?
#
skippy
for in-reply-to and repost-of source fetching.
[eddie] joined the channel
#
[eddie]
!tell aaronpk For Aperture’s retention days, I set my database entry to 500 days, is there a way to set it to infinity?
#
Loqi
Ok, I'll tell them that when I see them next
#
skippy
what are folk's workflows for reposting something and syndicating that repost to twitter? Do you repost non-Twitter sources and syndicate those reposts to Twitter?
#
aaronpk
[eddie]: yeah set your account to 0
#
tantek__
skippy I have a link for that
#
aaronpk
0 == ∞
#
tantek__
not sure I buy that math
#
[eddie]
Gotcha. I thought retention_days = 0 might be it but I was worried about testing that without verifying for fear that it would delete everything. haha
#
tantek__
that section and the next one covers tweets and non-tweets
#
aaronpk
[eddie]: you can also just not run the job that deletes entries
#
[eddie]
ohhhh I guess I’m safe then, because that’s a CronJob command?
#
skippy
thanks tantek__. that helps a lot.
#
tantek__
skippy, AMA about that section, did a lot of thinking/design with it, and subsequent follow-up on /repost as well
#
tantek__
several times got close to implementing /repost posts on my site, but fell short of the required time to finish it while keeping the whole design "in my head"
#
skippy
no real questions. Only need to decide if I want to undertake the effort to fetch source contents from URLs for truncated inclusion in syndicated tweet...
#
skippy
i don't currently repost non-Twitter content; but I suppose I could.
#
tantek__
right, it's an incremental thing you could do based on need
#
tantek__
skippy, here are the gory details of my own design work / use-cases for repost posts: https://indieweb.org/Falcon#repost_support
#
tantek__
in case you find any of that helpful
#
skippy
cheers
#
skippy
so in Monocle, if I click the "repost" button on the entry for this URL https://sanspoint.micro.blog/2018/07/09/liking-and-disliking.html will Monocle send that content to my Micropub endpoint, or will it just send the URL?
#
Loqi
Liking and disliking things is a false binary. There’s really 4 potential states. Like Passive Dislike (e.g. “Not for me”) Active Dislike No Opinion We should strive to have as few things in our “Active Dislike” column as possib...
#
skippy
i think it'll just send the url in the repost-of param, right?
#
aaronpk
yea just the url
#
tantek__
it's up to your server to do the right thing with that for sure
#
[eddie]
aaronpk: Is there anything I’m forgetting I should do while updating Aperture? composer install and php artisan migrate
#
[eddie]
IndiePaper logged me in via IndieAuth, but the articles don’t seem to be getting passed through now
#
aaronpk
that should do it. and if you're running the worker in production mode make sure you restart it
#
[eddie]
Ohhh I’m seeing an error from predis. Is that a somewhat new use? It’s been a couple of months since I updated Aperture, I don’t think it was being used before?
#
aaronpk
depends on what you're using for your queue/cache
#
aaronpk
check .env
#
[eddie]
hmmm queue_driver is sync and cache_driver is file
#
[eddie]
I do strangely still have redis+host/password/port in there. I should probably comment those out
#
aaronpk
oh, i did start using redis directly
#
aaronpk
just for stats right now, so i could tell you how to disable it if you want
#
[eddie]
Do you think you’ll continue to use it for more? If so, I can set that up if I’ll likely need to set it up eventually anyway
#
[eddie]
Yeah, I think I’ll just do that. I don’t like to diverge too much from your standard configuration
#
[eddie]
I figure that’ll come back to bite me in the long run 🙂
#
aaronpk
if you do set it up, switch your cache and queue drivers to redis, and run the background worker, and the website will be snappier
#
[eddie]
Cool, sounds good. Where is the background worker located? app/Jobs just has an UnsubscribeSource.php
#
aaronpk
if you run `php artisan` you'll see it. also: https://laravel.com/docs/5.5/queues#running-the-queue-worker
#
aaronpk
i have that set up as an ubuntu startup script
#
[eddie]
ohhhh it’s a laravel thing, not a cron thing :thumbsup:
#
[eddie]
Awesome thanks 🙂 Lots of updates to do today. haha
KartikPrabhu joined the channel
#
sknebel
todays yak shaved: tried lets encrypt wildcard certs
#
sknebel
anyone want a writeup on that?
eli_oat joined the channel
#
[eddie]
That would be awesome. I've been doing individual certs for all of my subdomains
#
sknebel
ok, then I'll expand my notes to a blog post :)
#
stevestreza
you can get one cert that covers multiple subdomains that isn't a wildcard cert, I'm not exactly sure how it works but the letsencrypt docker image I use does it
#
[eddie]
huh, interesting
#
sknebel
yeah, you can just request multiple domains, if yo uuse certbot just add more -d domain.example.com params
#
[eddie]
ohhh gotcha. Yeah I've done that before
#
sknebel
I mostly wanted a wildcard for a dev-subdomain, so I can even more easily just spin something up for a few minutes
#
[eddie]
That makes sense
#
aaronpk
sknebel: nice! i'll be curious to compare notes! I finally got wildcard certs set up too
#
aaronpk
i need to write it down as a blog post so i don't forget how to do it for a new domain next time
dougbeal|imac joined the channel
#
skippy
i've been using Caddy as my web server for quite some time now. It handles all the Lets Encrypt business for me.
snarfed joined the channel
#
dougbeal|imac
[eddie]: you just have to supply all the domain names to the certbot
[jgmac1106], snarfed, tantek__ and [eddie] joined the channel
#
[eddie]
!tell voxpelli I couldn’t figure out what mf2 parser you were using in webmention.herokuapp.com so I just filed this issue with the app itself https://github.com/voxpelli/webpage-webmentions/issues/75
#
Loqi
Ok, I'll tell them that when I see them next
#
Loqi
[EdwardHinkle] #75 Implied p-name issues
#
sknebel
probably uses the javascript parser, that's currently not maintained
tantek joined the channel
#
tantek__
jgmac1106__: moving here because that sounded dev like. check https://twitter.com/jgmac1106/status/1016395039252123651 - it has a link to bridgy as the "original post" link which I don't think is what you intended
#
@jgmac1106
@mattl @evanpro @benwerd > > And those became IndieWeb Camps basically >> >> — Matt Lee (@mattl) July 9, 2018 See @benwerd comment about not male or programming centric events…isn’t always IWC, but changing that major goal of 2018. Trying to organize an IndieWebCamp in NYC… https://www.brid.gy/publish/twitter https://pbs.twimg.com/media/Dhr15tAVMAA3u5V.jpg
(twitter.com/_/status/1016395039252123651)
#
tantek__
jgmac1106__: what's the permalink of that post on your site? let's take a look to see what is going on
#
jgmac1106__
[tantek] ended up just switching themes. Independent Publisher doesn’t play as well with Bridgy as 2016 IndieWeb
#
tantek__
then we should fix Independent Publisher!
#
jgmac1106__
this is the permalink to the post before I switched themes: http://jgregorymcverry.com/4123-2/
#
Loqi
If either of you has any connections in desperate need of a co-sponsor in the City who can make a space donation. Three rooms, projectors, solid wifi.
#
tantek__
[jgmac1106]: interesting, that post has no link to bridgy but has other problems, e.g. the "Also on" Twitter link is a local-to-twitter-com link which makes it 404 on your site. in general your syndication links should use absolute URLs, unless you're planning on adding local redirects / caches for your syndication links!
#
tantek__
[jgmac1106]: this code: <a class="u-syndication link-twitter icon-twitter" rel="syndication" href="/status/1016396209785798656" target="_blank">Twitter</a>
#
tantek__
should be: <a class="u-syndication link-twitter icon-twitter" rel="syndication" href="https://twitter.com/jgmac1106/status/1016396209785798656" target="_blank">Twitter</a>
#
@jgmac1106
If either of you has any connections in desperate need of a co-sponsor in the City who can make a space donation. Three rooms, projectors, solid wifi. Also on: https://is.gd/m2GQcC
(twitter.com/_/status/1016396209785798656)
#
[jgmac1106]
Yeah and the h entry was missing and this pulled in my gravatar
#
[jgmac1106]
But now leaning on recommending to folks who don't want to change theme to: A use a subdomain and a new WP instance for their status updates or B: use a page builder on a static homepage when using an IndieWeb theme
#
tantek__
[jgmac1106]: there's almost enough useful things in WP themes by default for old style hAtom (with class="hentry") that we should be able to figure out a way to make it work backcompat
#
tantek__
pretty sure I opened an issue on this
#
Loqi
[tantek] #7 Can we improve h-entry backcompat to handle common WordPress hentry streams?
#
tantek__
the goal here is to expand (just enough) h-entry backcompat parsing of hentry to handle common WP theme class names for the different pieces
#
tantek__
so that an mf2 parser would "just work" with common themes by default
#
tantek__
It seems possible
[jgarber] joined the channel
#
[jgarber]
2. How would sending a Webmention to the URL of an image (e.g. `https://target.example.com/photo.jpg`) work? That would rely on endpoint advertising in a Link header…?
#
[jgarber]
> For example, in an [ HTML5] document, the receiver should look for <a href=“*”>, <img href=“*”>, <video src=“*”> and other similar links.
#
[jgarber]
1. `<img href="*">` seems to be a typo for `<img src="*">`. Is that reasonable?
#
[jgarber]
A few questions:
#
[jgarber]
3. Is anyone receiving Webmentions to media files in practice?
#
sknebel
1 yes. 2. yes, it requires headers. 3. I believe svgshare.com supports it, not sure if any personal sites do
#
[jgarber]
sknebel: Oh, dang. Interesting! I didn’t know about svgshare.com.
#
[jgarber]
That’s one implementation, so thumbs up. Thanks!
#
tantek
[jgarber]: I believe someone even did media fragment support for webmentions
#
tantek
so you can comment on a specific time index in a video for example, like people do on Soundcloud
#
[jgarber]
[tantek] Oh yeah, that’s a great use case for fragmentioning.
#
tantek
no that's different, that's /marginalia
#
tantek
fragmentions != media fragments
#
tantek
they are very different
#
[jgarber]
Hacking the fragment identifier (e.g. `#t=10,20`). Clever.
#
[jgarber]
I’d… argue they’re semantically consistent activities (commenting on a run of text and commenting on a length of audio), but I won’t since the community’s already made the decision that they’re different things. 😄
#
aaronpk
"very different"?
#
aaronpk
i mean media fragments are a w3c spec and supported by browsers
#
aaronpk
fragmentions are not.. so maybe that's the "big" difference?
#
[jgarber]
Oh, look at that. So they are: https://www.w3.org/TR/media-frags/
#
[jgarber]
Filing that under “today I learned”…
#
tantek
aaronpk no the syntax and functionality are quite different
#
tantek
that's the big difference. who owns the spec is not as important
#
tantek
jgarber can you file (1.) as an issue on webmention?
#
Loqi
[Zegnat] #92 Typo in spec: <img href="*"> instead of <img src="*">.
#
Loqi
[jgarber623] #98 Change `href` to `src` for `<img>` code example
#
tantek
jgarber++
#
Loqi
jgarber has 6 karma in this channel (14 overall)
#
tantek
reviewing
#
[jgarber]
[tantek] Thanks!
[Lovi] joined the channel
#
[jgarber]
Related to sending webmentions to media elements, the spec outlines a few and the list of elements that would allow linking documents, files, etc. is…
#
[jgarber]
`<a>`, `<audio>` (including `<source>` children), `<img>`, `<object>` (via the `data` attribute), `<picture>`’s `<source>` children, and `<video>` (including `<source>` children).
#
[jgarber]
Did I miss any?
#
Loqi
misses any too
#
tantek
that list really should just go in one place as a canonical list rather than hidden in prose
#
tantek
anyway that's a much bigger change
#
tantek
probably deserves its own isssue
#
Loqi
[Zegnat] php-linkextractor: Class for finding all resources an HTML document links to.
#
[jgarber]
[tantek] It’d be nice if the spec enumerated the elements implementors should look for.
iasai_, jjuran, snarfed and KartikPrabhu joined the channel
#
tantek
jgarber and with that, I think that's my first actual indie thumbs-up on a pull request
iasai_ joined the channel
#
tantek.com
edited /GitHub (+133) "/* Tantek */ + reactions to GitHub pull requests example"
(view diff)
iasai_, snarfed, [jgmac1106] and [tantek] joined the channel
#
GWG
snarfed, if I make those changes, do you want to review, or should I just merge and move to the next PR?
jjuran and snarfed joined the channel
#
snarfed
GWG: usually the reviewer approves first
#
snarfed
feel free to push your changes and i'll do that
#
GWG
Understood. I will when I get home.
#
GWG
And then I will start decoupling functions from parse_query
#
@schmarty
Reddit-but-IndieWeb, Facebook's socialized risks, and you got your ActivityPub in my Webmention. It's your ~10min update on the #IndieWeb community! This Week in the IndieWeb audio edition for June 30th - July 6th, 2018. https://martymcgui.re/2018/07/09/191229/
(twitter.com/_/status/1016461080099524608)
tantek and dougbeal|imac joined the channel
#
tantek
what is read-of
#
Loqi
It looks like we don't have a page for "read-of" yet. Would you like to create it? (Or just say "read-of is ____", a sentence describing the term)
#
gregorlove.com
edited /read (+103) "/* Tools */"
(view diff)