I think I’ll start working on my personal API endpoint that normalizes data from the outside world. I’m also done with introducing custom page support into Koype but I also need to work on fixing how Webmentions work when received.
{
"type": "entry",
"published": "2020-04-28T07:57:00.00000-07:00",
"url": "https://v2.jacky.wtf/post/46e941e3-59dd-4a23-b99d-1eba8ce4fcf9",
"content": {
"text": "I think I\u2019ll start working on my personal API endpoint that normalizes data from the outside world. I\u2019m also done with introducing custom page support into Koype but I also need to work on fixing how Webmentions work when received.",
"html": "<p>I think I\u2019ll start working on my personal API endpoint that normalizes data from the outside world. I\u2019m also done with introducing custom page support into Koype but I also need to work on fixing how Webmentions work when received.</p>"
},
"author": {
"type": "card",
"name": "",
"url": "https://v2.jacky.wtf",
"photo": null
},
"post-type": "note",
"_id": "11158691",
"_source": "1886",
"_is_read": true
}
My #PersonalWebsite is https://www.jvt.me and as I'm very into owning my own data and being part of the #IndieWeb, I'm replying to this tweet from my website!
Site itself is Hugo and hosted on Netlify
{
"type": "entry",
"published": "2020-04-28T12:23:00+01:00",
"url": "https://www.jvt.me/mf2/2020/04/g03ju/",
"category": [
"personal-website",
"indieweb"
],
"in-reply-to": [
"https://twitter.com/jevakallio/status/1254823758784856065"
],
"content": {
"text": "My #PersonalWebsite is https://www.jvt.me and as I'm very into owning my own data and being part of the #IndieWeb, I'm replying to this tweet from my website!Site itself is Hugo and hosted on Netlify",
"html": "<p></p><p>My <a href=\"https://www.jvt.me/tags/personal-website/\">#PersonalWebsite</a> is <a href=\"https://www.jvt.me\">https://www.jvt.me</a> and as I'm very into owning my own data and being part of the <a href=\"https://www.jvt.me/tags/indieweb/\">#IndieWeb</a>, I'm replying to this tweet from my website!</p><p>Site itself is Hugo and hosted on Netlify</p>"
},
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "reply",
"refs": {
"https://twitter.com/jevakallio/status/1254823758784856065": {
"type": "entry",
"url": "https://twitter.com/jevakallio/status/1254823758784856065",
"content": {
"text": "HI! Do you have a self-hosted personal website/blog? If yes drop a link in replies! \ud83d\ude4f\nI'm also interested what are your main problems in hosting your own website? Effort? Cost? Tech? Getting engagement?"
},
"post-type": "note"
}
},
"_id": "11154570",
"_source": "2169",
"_is_read": true
}
This might be the most insightful thing that Dan has written since his seminal 2013 Medium article:
The problem with Scrappy Doo, isn’t that he’s annoying, which he is, but that the ghosts suddenly became real, which is an afront to science.
I know this hot-take is about 40 years old, but I’ve been bottling it up.
{
"type": "entry",
"published": "2020-04-28T11:09:18Z",
"url": "https://adactio.com/links/16815",
"category": [
"ingratitude",
"journal",
"ranting",
"personal",
"publishing",
"indieweb",
"weeknotes"
],
"bookmark-of": [
"https://revdancatt.com/weeknotes/2020/04/27/24-attitude-of-ingratitude"
],
"content": {
"text": "Late weeknotes 024 - Attitude of Ingratitude\n\n\n\nThis might be the most insightful thing that Dan has written since his seminal 2013 Medium article:\n\n\n The problem with Scrappy Doo, isn\u2019t that he\u2019s annoying, which he is, but that the ghosts suddenly became real, which is an afront to science.\n \n I know this hot-take is about 40 years old, but I\u2019ve been bottling it up.",
"html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://revdancatt.com/weeknotes/2020/04/27/24-attitude-of-ingratitude\">\nLate weeknotes 024 - Attitude of Ingratitude\n</a>\n</h3>\n\n<p>This might be the most insightful thing that Dan has written since <a href=\"https://adactio.com/links/6301\">his seminal 2013 Medium article</a>:</p>\n\n<blockquote>\n <p>The problem with Scrappy Doo, isn\u2019t that he\u2019s annoying, which he is, but that the ghosts suddenly became real, which is an afront to science.</p>\n \n <p>I know this hot-take is about 40 years old, but I\u2019ve been bottling it up. </p>\n</blockquote>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "bookmark",
"_id": "11153354",
"_source": "2",
"_is_read": true
}
Have you tried the indiebookclub Micropub client? Based on my usage of that, I wrote up some brief thoughts about using separate citation and review posts. That doesn't capture reading progress yet, but it's on the list of things I'm thinking about for indiebookclub.
{
"type": "entry",
"published": "2020-04-27 15:25-0700",
"url": "https://gregorlove.com/2020/04/have-you-tried-the/",
"in-reply-to": [
"https://adactio.com/journal/16803"
],
"content": {
"text": "Have you tried the indiebookclub Micropub client? Based on my usage of that, I wrote up some brief thoughts about using separate citation and review posts. That doesn't capture reading progress yet, but it's on the list of things I'm thinking about for indiebookclub.",
"html": "<p>Have you tried the <a href=\"https://indiebookclub.biz\">indiebookclub</a> Micropub client? Based on my usage of that, I wrote up some <a href=\"https://gregorlove.com/2020/04/a-lot-of-interesting-ideas/\">brief thoughts</a> about using separate citation and review posts. That doesn't capture reading progress yet, but it's on the list of things I'm thinking about for indiebookclub.</p>"
},
"post-type": "reply",
"refs": {
"https://adactio.com/journal/16803": {
"type": "entry",
"url": "https://adactio.com/journal/16803",
"name": "https://adactio.com/journal/16803",
"post-type": "article"
}
},
"_id": "11139907",
"_source": "95",
"_is_read": true
}
Definitely doesn't work like that. I'm posting to this site through my own website, which means I own my content, not Twitter, and definitely not you #IndieWeb
{
"type": "entry",
"published": "2020-04-27T21:47:00+01:00",
"url": "https://www.jvt.me/mf2/2020/04/bojr3/",
"category": [
"indieweb"
],
"in-reply-to": [
"https://twitter.com/disneyplus/status/1254772307941191686"
],
"content": {
"text": "Definitely doesn't work like that. I'm posting to this site through my own website, which means I own my content, not Twitter, and definitely not you #IndieWeb",
"html": "<p>Definitely doesn't work like that. I'm posting to this site through my own website, which means I own my content, not Twitter, and definitely not you <a href=\"https://www.jvt.me/tags/indieweb/\">#IndieWeb</a></p>"
},
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "reply",
"refs": {
"https://twitter.com/disneyplus/status/1254772307941191686": {
"type": "entry",
"url": "https://twitter.com/disneyplus/status/1254772307941191686",
"in-reply-to": [
"https://twitter.com/disneyplus/status/1254772306947092484"
],
"content": {
"text": "By sharing your message with us using #MayThe4th, you agree to our use of the message and your account name in all media and our terms of use here: disneytermsofuse.com",
"html": "By sharing your message with us using <a href=\"https://twitter.com/search?q=%23MayThe4th\">#MayThe4th</a>, you agree to our use of the message and your account name in all media and our terms of use here: <a href=\"http://disneytermsofuse.com\">disneytermsofuse.com</a>"
},
"post-type": "reply"
}
},
"_id": "11137082",
"_source": "2169",
"_is_read": true
}
Thanks for sharing my site! As you say, I'm quite big with IndieWeb, and for readers there are quite a few other folks you'll want to see - https://snarfed.org/ https://tantek.com/ https://aaronparecki.com/ and https://www.barryfrost.com/ to name just a few.
If anyone is interested learning more about the IndieWeb, https://www.jvt.me/posts/2019/10/20/indieweb-talk/ is a transcript of a conference talk I gave on what the IndieWeb is
{
"type": "entry",
"published": "2020-04-27T11:59:49.149+02:00",
"url": "https://www.jvt.me/mf2/2020/04/do3lx/",
"in-reply-to": [
"https://news.ycombinator.com/reply?id=22990376&goto=item%3Fid%3D22989927%2322990376"
],
"content": {
"text": "Thanks for sharing my site! As you say, I'm quite big with IndieWeb, and for readers there are quite a few other folks you'll want to see - https://snarfed.org/ https://tantek.com/ https://aaronparecki.com/ and https://www.barryfrost.com/ to name just a few.If anyone is interested learning more about the IndieWeb, https://www.jvt.me/posts/2019/10/20/indieweb-talk/ is a transcript of a conference talk I gave on what the IndieWeb is",
"html": "<p></p><p>Thanks for sharing my site! As you say, I'm quite big with IndieWeb, and for readers there are quite a few other folks you'll want to see - <a href=\"https://snarfed.org/\">https://snarfed.org/</a> <a href=\"https://tantek.com/\">https://tantek.com/</a> <a href=\"https://aaronparecki.com/\">https://aaronparecki.com/</a> and <a href=\"https://www.barryfrost.com/\">https://www.barryfrost.com/</a> to name just a few.</p><p>If anyone is interested learning more about the IndieWeb, <a href=\"https://www.jvt.me/posts/2019/10/20/indieweb-talk/\">https://www.jvt.me/posts/2019/10/20/indieweb-talk/</a> is a transcript of a conference talk I gave on what the IndieWeb is</p>"
},
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "reply",
"_id": "11120849",
"_source": "2169",
"_is_read": true
}
As shared elsewhere on the site, I am very pro IndieWeb (https://indieweb.org) and therefore try to do everything via my own site.
I use https://brid.gy/ to syndicate posts from my own website (https://www.jvt.me/mf2/2020/04/svn4c/) to Twitter (https://twitter.com/JamieTanna/status/1254670009420431360) so I'm still owning my content, but I can still interact with folks on other platforms.
{
"type": "entry",
"published": "2020-04-27T11:57:59.579+02:00",
"url": "https://www.jvt.me/mf2/2020/04/j44a1/",
"in-reply-to": [
"https://news.ycombinator.com/reply?id=22990376&goto=item%3Fid%3D22989927%2322990376"
],
"content": {
"text": "As shared elsewhere on the site, I am very pro IndieWeb (https://indieweb.org) and therefore try to do everything via my own site.I use https://brid.gy/ to syndicate posts from my own website (https://www.jvt.me/mf2/2020/04/svn4c/) to Twitter (https://twitter.com/JamieTanna/status/1254670009420431360) so I'm still owning my content, but I can still interact with folks on other platforms.",
"html": "<p></p><p>As shared elsewhere on the site, I am very pro IndieWeb (<a href=\"https://indieweb.org\">https://indieweb.org</a>) and therefore try to do everything via my own site.</p><p>I use <a href=\"https://brid.gy/\">https://brid.gy/</a> to syndicate posts from my own website (<a href=\"https://www.jvt.me/mf2/2020/04/svn4c/\">https://www.jvt.me/mf2/2020/04/svn4c/</a>) to Twitter (<a href=\"https://twitter.com/JamieTanna/status/1254670009420431360\">https://twitter.com/JamieTanna/status/1254670009420431360</a>) so I'm still owning my content, but I can still interact with folks on other platforms.</p>"
},
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "reply",
"_id": "11120850",
"_source": "2169",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "Neil Mather",
"url": "https://doubleloop.net/",
"photo": null
},
"url": "https://doubleloop.net/2020/04/26/the-garden-and-the-stream-pop-up-session/",
"published": "2020-04-26T09:48:10+00:00",
"content": {
"html": "<p>Yesterday I attended a very fun pop-up IndieWebCamp session on streams, blogs and wikis.</p>\n<p><a href=\"https://indieweb.org/2020/Pop-ups/GardenAndStream\">The Garden and the Stream</a></p>\n<p>Around 25 people joined online over the course of the session.</p>\n<img src=\"https://commonplace.doubleloop.net/images/indiewebcamp-gardenandstream.png\" alt=\"indiewebcamp-gardenandstream.png\" /><p>It was a wide-ranging discussion on lots of wiki-adjacent topics. One of the things I really liked was the <a href=\"https://indieweb.org/plurality\">plurality</a> of both the reasons for having a wiki, and of the tools people use to do it. Very IndieWeb.</p>\n<p>Some parts of it that stuck in my brain:</p>\n<ul><li>the link between the stream and the garden, and <a href=\"https://commonplace.doubleloop.net/20200404084930-my_blog_and_wiki_process.html\">when you write in one or the other</a></li>\n<li>what actually are personal wikis? What do people use them for?\n<ul><li><a href=\"https://commonplace.doubleloop.net/20200308220634-commonplace_books.html\">commonplace books</a></li>\n<li><a href=\"https://commonplace.doubleloop.net/20200309190319-basb.html\">second brains</a> / <a href=\"https://commonplace.doubleloop.net/20200426102047-exobrain.html\">exobrains</a></li>\n</ul></li>\n<li>mind maps, <a href=\"https://commonplace.doubleloop.net/20200308210627-memory_palace_org.html\">memory palaces</a>\n<ul><li>historical examples of externalising memories, like walkabouts</li>\n</ul></li>\n<li>how do you structure your <a href=\"https://commonplace.doubleloop.net/20200317123902-the_garden.html\">garden</a> for yourself, and for others\n<ul><li>is <a href=\"https://commonplace.doubleloop.net/20200328152050-transclusion.html\">transclusion</a> a good way to navigate ideas? Is the loss of narrative a problem?</li>\n</ul></li>\n<li>bidirectional links or backlinks\n<ul><li>renewed interest in this (is this thanks to <a href=\"https://commonplace.doubleloop.net/20200309195039-roam.html\">Roam</a>?), but mostly focused on internal backlinks in your own wiki</li>\n<li>can we use webmentions as a mechanism for bidirectional links across sites?</li>\n</ul></li>\n</ul><p>There was way more discussed than that. I think given the interest and the breadth of topics, it would be fun to get together semi-regularly.</p>\n<p>You can check out the notes and the recording for a lot more: <a href=\"https://indieweb.org/2020/Pop-ups/GardenAndStream\">The Garden and the Stream</a>.</p>",
"text": "Yesterday I attended a very fun pop-up IndieWebCamp session on streams, blogs and wikis.\nThe Garden and the Stream\nAround 25 people joined online over the course of the session.\nIt was a wide-ranging discussion on lots of wiki-adjacent topics. One of the things I really liked was the plurality of both the reasons for having a wiki, and of the tools people use to do it. Very IndieWeb.\nSome parts of it that stuck in my brain:\nthe link between the stream and the garden, and when you write in one or the other\nwhat actually are personal wikis? What do people use them for?\ncommonplace books\nsecond brains / exobrains\n\nmind maps, memory palaces\nhistorical examples of externalising memories, like walkabouts\n\nhow do you structure your garden for yourself, and for others\nis transclusion a good way to navigate ideas? Is the loss of narrative a problem?\n\nbidirectional links or backlinks\nrenewed interest in this (is this thanks to Roam?), but mostly focused on internal backlinks in your own wiki\ncan we use webmentions as a mechanism for bidirectional links across sites?\n\nThere was way more discussed than that. I think given the interest and the breadth of topics, it would be fun to get together semi-regularly.\nYou can check out the notes and the recording for a lot more: The Garden and the Stream."
},
"name": "The Garden and the Stream Pop-up Session",
"post-type": "article",
"_id": "11107847",
"_source": "1895",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "Will Norris",
"url": "https://willnorris.com/",
"photo": null
},
"url": "https://willnorris.com/notice/",
"published": "0001-01-01T00:00:00+00:00",
"content": {
"html": "<p>This directory contains various content I\u2019ve uploaded, primarily photos to embed\nin blog posts. This content comes from various sources, and therefore has\nvarious licensing restrictions.</p>\n<p>I\u2019ve attempted to identify the licenses for some of the content below.</p>\nFile\nSource\nAuthor\nLicense\n<a href=\"https://willnorris.com/2013/08/testing-in-go-github/codercat.jpg\">codercat.jpg</a>\n<a href=\"https://octodex.github.com/codercat/\">GitHub Octodex</a>\n<a href=\"http://cameronmcefee.com/\">Cameron McEfee</a>, GitHub\n<a href=\"https://octodex.github.com/faq.html\">Octodex FAQ</a>\n<a href=\"https://willnorris.com/2013/08/testing-in-go-github/gopher.png\">gopher.png</a>\n<a href=\"https://golang.org/doc/gopher/gophercolor.png\">golang.org</a>\n<a href=\"http://www.reneefrench.com/\">Renee French</a>\n<a href=\"https://creativecommons.org/licenses/by/3.0/\">CC-BY 3.0</a>\n<a href=\"https://willnorris.com/2013/08/a-place-to-call-home/home-doormat.jpg\">home-doormat.jpg</a>\n<a href=\"https://www.flickr.com/photos/ronocdh/4456877019/\">Flickr</a>\nConor\n<a href=\"https://creativecommons.org/licenses/by/2.0/\">CC-BY 2.0</a>\n<a href=\"https://willnorris.com/2014/01/a-self-hosted-alternative-to-jetpacks-photon-service/ghillied-up.jpg\">ghillied-up.jpg</a>\n<a href=\"https://www.flickr.com/photos/divinenephron/4857328881/\">Flickr</a>\n<a href=\"http://divinenephron.co.uk/\">Devon Buchanan</a>\n<a href=\"https://creativecommons.org/licenses/by-nc-sa/2.0/\">CC-BY-NC-SA 2.0</a>\n<a href=\"https://willnorris.com/2014/01/a-self-hosted-alternative-to-jetpacks-photon-service/jetpack-kid.jpg\">jetpack-kid.jpg</a>\n<a href=\"http://www.gettyimages.com/detail/photo/jetpack-kid-royalty-free-image/143920872\">Getty Images</a>\nAndrew Rich\n<a href=\"http://www.gettyimages.com/Corporate/LicenseInfo.aspx\">Getty Royalty Free</a>\n<a href=\"https://willnorris.com/2014/01/wordpress-social-menus-rel-me/rel-me-shirt.jpg\">rel-me-shirt.jpg</a>\n<a href=\"http://www.zazzle.com/i_love_me_some_rel_me_shirt-235414618479188408\">Zazzle</a>\nZazzle / Tripleswag\n\n<a href=\"https://willnorris.com/2014/03/indiewebcamp-2014/indiewebcamp-sf-2014.jpg\">indiewebcamp-sf-2014.jpg</a>\n<a href=\"https://www.flickr.com/photos/aaronpk/13012345474/\">Flickr</a>\n<a href=\"https://aaronparecki.com/\">Aaron Parecki</a>\n<a href=\"https://creativecommons.org/licenses/by/2.0/\">CC-BY 2.0</a>\n<a href=\"https://willnorris.com/2015/02/books-i-read-in-2014/books.jpg\">books.jpg</a>\n<a href=\"https://www.flickr.com/photos/azrasta/5088254388/\">Flickr</a>\naz\n<a href=\"https://creativecommons.org/licenses/by-nc-sa/2.0/\">CC-BY-NC-SA 2.0</a>\n<a href=\"https://willnorris.com/2016/02/books-i-read-in-2015/kindle.jpg\">kindle.jpg</a>\n<a href=\"https://unsplash.com/photos/gm18kqu9TxQ\">Unsplash</a>\n<a href=\"http://www.jamestarbotton.com/\">James Tarbotton</a>\n<a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a>",
"text": "This directory contains various content I\u2019ve uploaded, primarily photos to embed\nin blog posts. This content comes from various sources, and therefore has\nvarious licensing restrictions.\nI\u2019ve attempted to identify the licenses for some of the content below.\nFile\nSource\nAuthor\nLicense\ncodercat.jpg\nGitHub Octodex\nCameron McEfee, GitHub\nOctodex FAQ\ngopher.png\ngolang.org\nRenee French\nCC-BY 3.0\nhome-doormat.jpg\nFlickr\nConor\nCC-BY 2.0\nghillied-up.jpg\nFlickr\nDevon Buchanan\nCC-BY-NC-SA 2.0\njetpack-kid.jpg\nGetty Images\nAndrew Rich\nGetty Royalty Free\nrel-me-shirt.jpg\nZazzle\nZazzle / Tripleswag\n\nindiewebcamp-sf-2014.jpg\nFlickr\nAaron Parecki\nCC-BY 2.0\nbooks.jpg\nFlickr\naz\nCC-BY-NC-SA 2.0\nkindle.jpg\nUnsplash\nJames Tarbotton\nCC0"
},
"name": "Notice of Content Licenses",
"post-type": "article",
"_id": "11092497",
"_source": "248",
"_is_read": true
}
Is the expectation for this that will contain all of the properties? Or could just be the URL/UID?
For instance, I've got a static site, so my Micropub endpoint would proxy a generated file from the site. If I can reduce the amount of properties to add to this, it'd be good, especially if this is really only being used for post listing.
{
"type": "entry",
"published": "2020-04-25T15:31:06.732+02:00",
"url": "https://www.jvt.me/mf2/2020/04/3qnnb/",
"in-reply-to": [
"https://github.com/indieweb/micropub-extensions/issues/4"
],
"content": {
"text": "Is the expectation for this that will contain all of the properties? Or could just be the URL/UID?For instance, I've got a static site, so my Micropub endpoint would proxy a generated file from the site. If I can reduce the amount of properties to add to this, it'd be good, especially if this is really only being used for post listing.",
"html": "<p></p><p>Is the expectation for this that will contain all of the properties? Or could just be the URL/UID?</p><p>For instance, I've got a static site, so my Micropub endpoint would proxy a generated file from the site. If I can reduce the amount of properties to add to this, it'd be good, especially if this is really only being used for post listing.</p>"
},
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "reply",
"_id": "11072066",
"_source": "2169",
"_is_read": true
}
{
"type": "entry",
"published": "2020-04-25T11:10:41Z",
"url": "https://adactio.com/journal/16803",
"category": [
"books",
"reading",
"indieweb",
"publishing",
"micorformats",
"h-entry",
"h-event",
"structured",
"data",
"json",
"rss",
"aggregation",
"syndication",
"visualisation"
],
"syndication": [
"https://medium.com/@adactio/d65a123b163"
],
"name": "Reading",
"content": {
"text": "At the beginning of the year, Remy wrote about extracting Goodreads metadata so he could create his end-of-year reading list. More recently, Mark Llobrera wrote about how he created a visualisation of his reading history. In his case, he\u2019s using JSON to store the information.\n\nThis kind of JSON storage is exactly what Tom Critchlow proposes in his post, Library JSON - A Proposal for a Decentralized Goodreads:\n\n\nThinking through building some kind of \u201cweb of books\u201d I realized that we could use something similar to RSS to build a kind of decentralized GoodReads powered by indie sites and an underlying easy to parse format.\n\n\nHis proposal looks kind of similar to what Mark came up with. There\u2019s a title, an author, an image, and some kind of date for when you started and/or finished reading the book.\n\nMatt then points out that RSS gets close to the data format being suggested and asks how about using RSS?:\n\n\nRather than inventing a new format, my suggestion is that this is RSS plus an extension to deal with books. This is analogous to how the podcast feeds are specified: they are RSS plus custom tags.\n\n\nLike Matt, I\u2019m in favour of re-using existing wheels rather than inventing new ones, mostly to avoid a 927 situation.\n\nBut all of these proposals\u2014whether JSON or RSS\u2014involve the creation of a separate file, and yet the information is originally published in HTML. Along the lines of Matt\u2019s idea, I could imagine extending the h-entry collection of class names to allow for books (or films, or other media). It already handles images (with u-photo). I think the missing fields are the date-related ones: when you start and finish reading. Those fields are present in a different microformat, h-event in the form of dt-start and dt-end. Maybe they could be combined:\n\n\n<article class=\"h-entry h-event h-review\">\n<h1 class=\"p-name p-item\">Book title</h1>\n<img class=\"u-photo\" src=\"image.jpg\" alt=\"Book cover.\">\n<p class=\"p-summary h-card\">Book author</p>\n<time class=\"dt-start\" datetime=\"YYYY-MM-DD\">Start date</time>\n<time class=\"dt-end\" datetime=\"YYYY-MM-DD\">End date</time>\n<div class=\"e-content\">Remarks</div>\n<data class=\"p-rating\" value=\"5\">\u2605\u2605\u2605\u2605\u2605</data>\n<time class=\"dt-published\" datetime=\"YYYY-MM-DDThh:mm\">Date of this post</time>\n</article>\n\n\nThat markup is simultaneously a post (h-entry) and an event (h-event) and you can even throw in h-card for the book author (as well as h-review if you like to rate the books you read). It can be converted to RSS and also converted to .ics for calendars\u2014those parsers are already out there. It\u2019s ready for aggregation and it\u2019s ready for visualisation.\n\nI publish very minimal reading posts here on adactio.com. What little data is there isn\u2019t very structured\u2014I don\u2019t even separate the book title from the author. But maybe I\u2019ll have a little play around with turning these h-entries into combined h-entry/event posts.",
"html": "<p>At the beginning of the year, Remy wrote about <a href=\"https://remysharp.com/2020/01/06/extracting-goodreads-metadata\">extracting Goodreads metadata</a> so he could create his <a href=\"https://remysharp.com/2020/01/02/books-i-read-in-2019\">end-of-year reading list</a>. More recently, Mark Llobrera wrote about <a href=\"http://dirtystylus.com/2020/04/17/visualizing-my-reading-with-semiotic/\">how he created a visualisation of his reading history</a>. In his case, he\u2019s using JSON to store the information.</p>\n\n<p>This kind of JSON storage is exactly what Tom Critchlow proposes in his post, <a href=\"https://tomcritchlow.com/2020/04/15/library-json/\">Library JSON - A Proposal for a Decentralized Goodreads</a>:</p>\n\n<blockquote>\n<p>Thinking through building some kind of \u201cweb of books\u201d I realized that we could use something similar to RSS to build a kind of decentralized GoodReads powered by indie sites and an underlying easy to parse format.</p>\n</blockquote>\n\n<p>His proposal looks kind of similar to what Mark came up with. There\u2019s a title, an author, an image, and some kind of date for when you started and/or finished reading the book.</p>\n\n<p>Matt then points out that RSS gets close to the data format being suggested and asks <a href=\"http://interconnected.org/home/2020/04/16/rss_for_books\">how about using RSS?</a>:</p>\n\n<blockquote>\n<p>Rather than inventing a new format, my suggestion is that this is RSS plus an extension to deal with books. This is analogous to how the podcast feeds are specified: they are RSS plus custom tags.</p>\n</blockquote>\n\n<p>Like Matt, I\u2019m in favour of re-using existing wheels rather than inventing new ones, mostly to avoid <a href=\"https://xkcd.com/927/\">a 927 situation</a>.</p>\n\n<p>But all of these proposals\u2014whether JSON or RSS\u2014involve the creation of a separate file, and yet the information is originally published in HTML. Along the lines of Matt\u2019s idea, I could imagine extending the <a href=\"https://indieweb.org/h-entry\"><code>h-entry</code></a> <a href=\"http://microformats.org/wiki/h-entry#Core_Properties\">collection of class names</a> to allow for books (or films, or other media). It already handles images (with <code>u-photo</code>). I think the missing fields are the date-related ones: when you start and finish reading. Those fields are present in a different microformat, <a href=\"http://microformats.org/wiki/h-event\"><code>h-event</code></a> in the form of <code>dt-start</code> and <code>dt-end</code>. Maybe they could be combined:</p>\n\n<pre><code>\n<article class=\"h-entry h-event h-review\">\n<h1 class=\"p-name p-item\">Book title</h1>\n<img class=\"u-photo\" src=\"image.jpg\" alt=\"Book cover.\">\n<p class=\"p-summary h-card\">Book author</p>\n<time class=\"dt-start\" datetime=\"YYYY-MM-DD\">Start date</time>\n<time class=\"dt-end\" datetime=\"YYYY-MM-DD\">End date</time>\n<div class=\"e-content\">Remarks</div>\n<data class=\"p-rating\" value=\"5\">\u2605\u2605\u2605\u2605\u2605</data>\n<time class=\"dt-published\" datetime=\"YYYY-MM-DDThh:mm\">Date of this post</time>\n</article>\n</code></pre>\n\n<p>That markup is simultaneously a post (<code>h-entry</code>) and an event (<code>h-event</code>) and you can even throw in <code>h-card</code> for the book author (as well as <a href=\"http://microformats.org/wiki/h-review\"><code>h-review</code></a> if you like to rate the books you read). It can be converted to RSS and also converted to <code>.ics</code> for calendars\u2014those parsers are already out there. It\u2019s ready for aggregation and it\u2019s ready for visualisation.</p>\n\n<p>I publish very minimal <a href=\"https://adactio.com/notes/reading\">reading posts</a> here on adactio.com. What little data is there isn\u2019t very structured\u2014I don\u2019t even separate the book title from the author. But maybe I\u2019ll have a little play around with turning these h-entries into combined h-entry/event posts.</p>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "article",
"_id": "11069402",
"_source": "2",
"_is_read": true
}
It gets my homepage URL as the author property, but I don't expect it will handle fetching that and following the authorship specification. That's more indieweb-land than microformats2.
BTW, I'm gonna have a quick IndieWeb lunch Zoom at noon today. Link will be in chat.
{
"type": "entry",
"published": "2020-04-24 11:04-0700",
"url": "https://gregorlove.com/2020/04/it-gets-my-homepage/",
"in-reply-to": [
"https://pine.blog/u/sonicrocketman/archive/d15636e9-2888-4972-9635-99efd3838e49"
],
"content": {
"text": "It gets my homepage URL as the author property, but I don't expect it will handle fetching that and following the authorship specification. That's more indieweb-land than microformats2.\n\nBTW, I'm gonna have a quick IndieWeb lunch Zoom at noon today. Link will be in chat.",
"html": "<p>It gets my homepage URL as the author property, but I don't expect it will handle fetching that and following the authorship specification. That's more indieweb-land than microformats2.\n</p>\n<p>BTW, I'm gonna have a quick IndieWeb lunch Zoom at noon today. Link will be in chat.</p>"
},
"post-type": "reply",
"refs": {
"https://pine.blog/u/sonicrocketman/archive/d15636e9-2888-4972-9635-99efd3838e49": {
"type": "entry",
"url": "https://pine.blog/u/sonicrocketman/archive/d15636e9-2888-4972-9635-99efd3838e49",
"name": "https://pine.blog/u/sonicrocketman/archive/d15636e9-2888-4972-9635-99efd3838e49",
"post-type": "article"
}
},
"_id": "11056793",
"_source": "95",
"_is_read": true
}
RSVPed: Attending Gardens and Streams: Wikis, blogs, and UI -- a pop up IndieWebCamp session
We'll be discussing and brainstorming ideas related to wikis and the IndieWeb, user interfaces, functionalities, examples of wikis and how they differ from blogs and other social media interfaces, and everyones' ideas surrounding these.
Phew, I just saw this! Should be a fun session on the link between blogs and (personal) wikis.
{
"type": "entry",
"author": {
"name": "Neil Mather",
"url": "https://doubleloop.net/",
"photo": null
},
"url": "https://doubleloop.net/2020/04/23/6790/",
"published": "2020-04-23T15:50:01+00:00",
"content": {
"html": "RSVPed: Attending <a href=\"https://events.indieweb.org/2020/04/gardens-and-streams-wikis-blogs-and-ui-a-pop-up-indiewebcamp-session-j9bg0pJDBgBD\">Gardens and Streams: Wikis, blogs, and UI -- a pop up IndieWebCamp session</a>\n<blockquote>We'll be discussing and brainstorming ideas related to wikis and the IndieWeb, user interfaces, functionalities, examples of wikis and how they differ from blogs and other social media interfaces, and everyones' ideas surrounding these. </blockquote>\n\nPhew, I just saw this! Should be a fun session on the link between blogs and (personal) wikis.",
"text": "RSVPed: Attending Gardens and Streams: Wikis, blogs, and UI -- a pop up IndieWebCamp session\nWe'll be discussing and brainstorming ideas related to wikis and the IndieWeb, user interfaces, functionalities, examples of wikis and how they differ from blogs and other social media interfaces, and everyones' ideas surrounding these. \n\nPhew, I just saw this! Should be a fun session on the link between blogs and (personal) wikis."
},
"post-type": "note",
"_id": "11021839",
"_source": "1895",
"_is_read": true
}
Woo! InkStone now works with form encoded and JSON micropub posting! #indieweb
{
"type": "entry",
"published": "2016-12-26T21:14:45-05:00",
"url": "https://ben.thatmustbe.me/note/2016/12/27/8/",
"content": {
"text": "Woo! InkStone now works with form encoded and JSON micropub posting! #indieweb"
},
"author": {
"type": "card",
"name": "Ben Roberts",
"url": "https://ben.thatmustbe.me/",
"photo": "https://ben.thatmustbe.me/image/static/icon_200.jpg"
},
"post-type": "note",
"_id": "11019520",
"_source": "9",
"_is_read": true
}
testing to see if consumium has webmention support yet
{
"type": "entry",
"published": "2016-12-19T13:35:57-05:00",
"url": "https://ben.thatmustbe.me/note/2016/12/19/1/",
"in-reply-to": [
"https://social.consumium.org/notice/158"
],
"content": {
"text": "testing to see if consumium has webmention support yet"
},
"author": {
"type": "card",
"name": "Ben Roberts",
"url": "https://ben.thatmustbe.me/",
"photo": "https://ben.thatmustbe.me/image/static/icon_200.jpg"
},
"post-type": "reply",
"_id": "11019526",
"_source": "9",
"_is_read": true
}
Micropub test of creating a basic h-entry
{
"type": "entry",
"published": "2020-04-07T05:28:36-03:00",
"summary": "Micropub test of creating a basic h-entry",
"url": "https://lo.hn/2020/04/503-2/",
"content": {
"text": "Micropub test of creating a basic h-entry",
"html": "<p>Micropub test of creating a basic h-entry</p>"
},
"author": {
"type": "card",
"name": "Lohn",
"url": "https://lo.hn/author/josemar/",
"photo": "https://secure.gravatar.com/avatar/5b3503ec60106652c6ce2342a910c2ff?s=40&d=identicon&r=g"
},
"post-type": "note",
"_id": "11004922",
"_source": "222",
"_is_read": true
}
{
"type": "entry",
"published": "2020-04-22T21:50:03+0000",
"url": "https://lo.hn/2020/04/building-an-indieweb-reader-aaron-parecki",
"bookmark-of": [
"https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader"
],
"name": "Building an IndieWeb Reader Aaron Parecki",
"author": {
"type": "card",
"name": "Lohn",
"url": "https://lo.hn/profile/j",
"photo": "https://lo.hn/file/63a4800f7baabcc0287526d3f19ea938/thumb.jpg"
},
"post-type": "bookmark",
"_id": "10996821",
"_source": "222",
"_is_read": true
}
{
"type": "entry",
"published": "2020-04-22T17:46:32.27376-07:00",
"url": "https://v2.jacky.wtf/post/699c8cdf-3657-4434-8597-e6c22f921ab4",
"category": [
"indieweb",
"phoenix",
"elixir"
],
"content": {
"text": "Ahhh! It looks like @elixirphoenix released a new version and https://twitter.com/chris_mccord made a screencast showing some of the new features! Looks like a really good base for a #indieweb social reader, tbh!https://www.phoenixframework.org/blog/build-a-real-time-twitter-clone-in-15-minutes-with-live-view-and-phoenix-1-5",
"html": "<p>Ahhh! It looks like <a href=\"https://twitter.com/elixirphoenix\">@elixirphoenix</a> released a new version and <a href=\"https://twitter.com/chris_mccord\">https://twitter.com/chris_mccord</a> made a screencast showing some of the new features! Looks like a really good base for a #<a href=\"https://v2.jacky.wtf/tags/75cedb2a-3173-4436-a86a-300f1a8d81b4\" class=\"p-category\">indieweb</a> social reader, tbh!</p><p><a href=\"https://www.phoenixframework.org/blog/build-a-real-time-twitter-clone-in-15-minutes-with-live-view-and-phoenix-1-5\">https://www.phoenixframework.org/blog/build-a-real-time-twitter-clone-in-15-minutes-with-live-view-and-phoenix-1-5</a></p>"
},
"author": {
"type": "card",
"name": "",
"url": "https://v2.jacky.wtf",
"photo": null
},
"post-type": "note",
"_id": "10995441",
"_source": "1886",
"_is_read": true
}
Folks who follow my blog's #Microformats feed will now see the context (as an h-cite
) that is visible on my site, allowing you to have some context for at least interactions with Twitter, but hopefully other stuff in the future!
{
"type": "entry",
"published": "2020-04-22T13:06:07.062+02:00",
"url": "https://www.jvt.me/mf2/2020/04/aqnvq/",
"category": [
"www.jvt.me",
"microformats"
],
"content": {
"text": "Folks who follow my blog's #Microformats feed will now see the context (as an h-cite) that is visible on my site, allowing you to have some context for at least interactions with Twitter, but hopefully other stuff in the future!",
"html": "<p>Folks who follow my blog's <a href=\"https://www.jvt.me/tags/microformats/\">#Microformats</a> feed will now see the context (as an <code>h-cite</code>) that is visible on my site, allowing you to have some context for at least interactions with Twitter, but hopefully other stuff in the future!</p>"
},
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "note",
"_id": "10973755",
"_source": "2169",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "Christian Weiske",
"url": "http://cweiske.de/tagebuch/",
"photo": null
},
"url": "http://cweiske.de/tagebuch/phubb-http-client.htm",
"published": "2020-04-21T22:13:53+02:00",
"content": {
"html": "<p>\n <a href=\"https://github.com/cweiske/phubb\">phubb</a> is a\n <a href=\"https://www.w3.org/TR/websub/\">WebSub</a>\n hub that\n notifies subscribers in realtime when your website is updated.\n </p>\n <p>\n Up to this year, phubb sent HTTP requests (GET + POST) with\n <a href=\"http://php.net/file_get_contents\">file_get_contents()</a>\n and a <a href=\"http://www.php.net/manual/en/context.http.php\">HTTP stream context</a>\n - see <a href=\"http://cweiske.de/tagebuch/webhook-payload-formats.htm#send\">my previous example</a>.\n </p>\n <p>\n But then I needed a 100% correct way of\n <a href=\"https://www.w3.org/TR/websub/#discovery\">detecting a page's Hub URL</a>,\n and copied\n <a href=\"https://github.com/cweiske/phinde/blob/eca6e9af6dea38f5912c881a5dc05193e1b19848/src/phinde/HubUrlExtractor.php\">the code</a>\n from <a href=\"https://github.com/cweiske/phinde\">phinde</a>, my blog search engine.\n With that I introduced a dependency to PEAR's good old\n <a href=\"https://pear.php.net/package/HTTP_Request2\">HTTP_Request2 library</a>\n and I decided to use that library for all requests.\n </p>\n <p>\n Unfortunately, now the problems began:\n During development I got an error in about one of 10-20 requests on my\n machine and could not find the cause:\n </p>\n <pre>PHP Fatal error: Uncaught HTTP_Request2_MessageException: Malformed response: in HTTP/Request2/Adapter/Socket.php on line 1019\n\n#0 HTTP/Request2/Adapter/Socket.php(1019): HTTP_Request2_Response->__construct('', true, Object(Net_URL2))\n#1 HTTP/Request2/Adapter/Socket.php(136): HTTP_Request2_Adapter_Socket->readResponse()\n#2 HTTP/Request2.php(946): HTTP_Request2_Adapter_Socket->sendRequest(Object(phubb\\HttpRequest))\n#3 phubb/src/phubb/HttpRequest.php(22): HTTP_Request2->send()\n#4 phubb/src/phubb/Task/Publish.php(283): phubb\\HttpRequest->send()\n#5 phubb/src/phubb/Task/Publish.php(248): phubb\\Task_Publish->fetchTopic(Object(phubb\\Model_Topic))\n#6 phubb/src/phubb/Task/Publish.php(77): phubb\\Task_Publish->checkTopicUpdate('http://push-tes...')\n#7 in HTTP/Request2/Response.php on line 215</pre>\n <p>\n The socket adapter has this problem, and I did not want to try to debug that\n strange problem.\n (No idea if the cURL one has it; I do not want to rely on php-curl).\n Finding a new HTTP library was the only option.\n </p>\n\n\n <h2>New HTTP library</h2>\n <p>\n The <a href=\"https://www.php-fig.org/\">PHP Framework Interop Group</a>\n has several HTTP-related proposals;\n one of them\n <a href=\"https://www.php-fig.org/psr/psr-18/\">PSR-18: HTTP Client</a>.\n Now that we have a standardized way to send HTTP requests in 2020,\n I should use a library that implements it.\n </p>\n <p>\n The <a href=\"https://github.com/topics/psr-18\">psr-18 topic on Github</a>\n listed some clients:\n </p>\n <p>\n <a href=\"https://github.com/symfony/http-client\">Symfony's HTTP client</a> was among them,\n and it provides a mock client for unit tests!\n Unfortunately, it also introduces a million dependencies.\n </p>\n <p>\n There were two others that looked ok-ish on first sight\n (<a href=\"https://github.com/fain182/diciotto\">diciotto</a>\n and\n <a href=\"https://github.com/sunrise-php/http-client-curl\">http-client-curl</a>)\n but both of them had no mock client, and the latter was even curl only.\n Again nothing for me.\n </p>\n <p>\n Then I found <a href=\"https://php-http.org/\">PHP-HTTP</a> that promises\n a standard interface for HTTP clients in PHP, and it supports PSR-18!\n It even has a\n <a href=\"http://docs.php-http.org/en/latest/clients/socket-client.html\">socket client</a>\n that has nearly no dependencies,\n and a\n <a href=\"http://docs.php-http.org/en/latest/clients/mock-client.html\">mock client</a>\n for unit tests.\n I'll try that one for now.\n </p>",
"text": "phubb is a\n WebSub\n hub that\n notifies subscribers in realtime when your website is updated.\n \n \n Up to this year, phubb sent HTTP requests (GET + POST) with\n file_get_contents()\n and a HTTP stream context\n - see my previous example.\n \n \n But then I needed a 100% correct way of\n detecting a page's Hub URL,\n and copied\n the code\n from phinde, my blog search engine.\n With that I introduced a dependency to PEAR's good old\n HTTP_Request2 library\n and I decided to use that library for all requests.\n \n \n Unfortunately, now the problems began:\n During development I got an error in about one of 10-20 requests on my\n machine and could not find the cause:\n \n PHP Fatal error: Uncaught HTTP_Request2_MessageException: Malformed response: in HTTP/Request2/Adapter/Socket.php on line 1019\n\n#0 HTTP/Request2/Adapter/Socket.php(1019): HTTP_Request2_Response->__construct('', true, Object(Net_URL2))\n#1 HTTP/Request2/Adapter/Socket.php(136): HTTP_Request2_Adapter_Socket->readResponse()\n#2 HTTP/Request2.php(946): HTTP_Request2_Adapter_Socket->sendRequest(Object(phubb\\HttpRequest))\n#3 phubb/src/phubb/HttpRequest.php(22): HTTP_Request2->send()\n#4 phubb/src/phubb/Task/Publish.php(283): phubb\\HttpRequest->send()\n#5 phubb/src/phubb/Task/Publish.php(248): phubb\\Task_Publish->fetchTopic(Object(phubb\\Model_Topic))\n#6 phubb/src/phubb/Task/Publish.php(77): phubb\\Task_Publish->checkTopicUpdate('http://push-tes...')\n#7 in HTTP/Request2/Response.php on line 215\n \n The socket adapter has this problem, and I did not want to try to debug that\n strange problem.\n (No idea if the cURL one has it; I do not want to rely on php-curl).\n Finding a new HTTP library was the only option.\n \n\n\n New HTTP library\n \n The PHP Framework Interop Group\n has several HTTP-related proposals;\n one of them\n PSR-18: HTTP Client.\n Now that we have a standardized way to send HTTP requests in 2020,\n I should use a library that implements it.\n \n \n The psr-18 topic on Github\n listed some clients:\n \n \n Symfony's HTTP client was among them,\n and it provides a mock client for unit tests!\n Unfortunately, it also introduces a million dependencies.\n \n \n There were two others that looked ok-ish on first sight\n (diciotto\n and\n http-client-curl)\n but both of them had no mock client, and the latter was even curl only.\n Again nothing for me.\n \n \n Then I found PHP-HTTP that promises\n a standard interface for HTTP clients in PHP, and it supports PSR-18!\n It even has a\n socket client\n that has nearly no dependencies,\n and a\n mock client\n for unit tests.\n I'll try that one for now."
},
"name": "Switching phubb's HTTP client",
"post-type": "article",
"_id": "10963689",
"_source": "193",
"_is_read": true
}