@ohhelloana loved your #ViewSource talk “Please send me your blogs”! Great job!
I took photos from the second row, may I post a few? @viewsourceconf #indieweb
{
"type": "entry",
"published": "2018-10-26 05:52-0700",
"url": "http://tantek.com/2018/299/t1/loved-viewsource-talk",
"category": [
"ViewSource",
"indieweb"
],
"in-reply-to": [
"https://twitter.com/ohhelloana/status/1055721867644993536"
],
"content": {
"text": "@ohhelloana loved your #ViewSource talk \u201cPlease send me your blogs\u201d! Great job!\nI took photos from the second row, may I post a few? @viewsourceconf #indieweb",
"html": "<a class=\"h-cassis-username\" href=\"https://twitter.com/ohhelloana\">@ohhelloana</a> loved your #<span class=\"p-category\">ViewSource</span> talk \u201cPlease send me your blogs\u201d! Great job!<br />I took photos from the second row, may I post a few? <a class=\"h-cassis-username\" href=\"https://twitter.com/viewsourceconf\">@viewsourceconf</a> #<span class=\"p-category\">indieweb</span>"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "reply",
"refs": {
"https://twitter.com/ohhelloana/status/1055721867644993536": {
"type": "entry",
"url": "https://twitter.com/ohhelloana/status/1055721867644993536",
"name": "@ohhelloana\u2019s tweet",
"post-type": "article"
}
},
"_id": "1271969",
"_source": "1",
"_is_read": true
}
Hello from IIW! This is a post from Quill to demonstrate IndieAuth.
{
"type": "entry",
"published": "2018-10-25T06:46:01-07:00",
"url": "https://aaronparecki.com/2018/10/25/4/",
"content": {
"text": "Hello from IIW! This is a post from Quill to demonstrate IndieAuth."
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "note",
"_id": "1264854",
"_source": "16",
"_is_read": true
}
My post on the Mozilla Hacks blog was just published! "Identity for the Decentralized Web with IndieAuth" https://hacks.mozilla.org/2018/10/dweb-identity-for-the-decentralized-web-with-indieauth/
If you're at #iiw today, I'll be at demo hour showing how this works!
{
"type": "entry",
"published": "2018-10-24T08:15:11-07:00",
"url": "https://aaronparecki.com/2018/10/24/4/dweb",
"category": [
"iiw",
"indieauth",
"dweb",
"indieweb"
],
"syndication": [
"https://twitter.com/aaronpk/status/1055115510918959106"
],
"content": {
"text": "My post on the Mozilla Hacks blog was just published! \"Identity for the Decentralized Web with IndieAuth\" https://hacks.mozilla.org/2018/10/dweb-identity-for-the-decentralized-web-with-indieauth/ \n\nIf you're at #iiw today, I'll be at demo hour showing how this works!",
"html": "My post on the Mozilla Hacks blog was just published! \"Identity for the Decentralized Web with IndieAuth\" <a href=\"https://hacks.mozilla.org/2018/10/dweb-identity-for-the-decentralized-web-with-indieauth/\"><span>https://</span>hacks.mozilla.org/2018/10/dweb-identity-for-the-decentralized-web-with-indieauth/</a> <br /><br />If you're at <a href=\"https://aaronparecki.com/tag/iiw\">#<span class=\"p-category\">iiw</span></a> today, I'll be at demo hour showing how this works!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "note",
"_id": "1259156",
"_source": "16",
"_is_read": true
}
Learning about User Managed Access (UMA) and thinking about how it might be applicable to sharing private feeds in #indieweb readers. #iiw
{
"type": "entry",
"published": "2018-10-23T15:10:18-07:00",
"url": "https://aaronparecki.com/2018/10/23/18/",
"category": [
"indieweb",
"iiw"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/b7c78252ee2c92e5b5cae619f3dc7a59402e08cb99b09b52c3b8c270ef7122ba.jpg"
],
"syndication": [
"https://twitter.com/aaronpk/status/1054857584790781952"
],
"content": {
"text": "Learning about User Managed Access (UMA) and thinking about how it might be applicable to sharing private feeds in #indieweb readers. #iiw",
"html": "Learning about User Managed Access (UMA) and thinking about how it might be applicable to sharing private feeds in <a href=\"https://aaronparecki.com/tag/indieweb\">#<span class=\"p-category\">indieweb</span></a> readers. <a href=\"https://aaronparecki.com/tag/iiw\">#<span class=\"p-category\">iiw</span></a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "photo",
"_id": "1254019",
"_source": "16",
"_is_read": true
}
Spent a good evening reading up on Reader-discussions and -ideas, then on refactoring the Microsub endpoint in Leesmap into separate Controllers. Very curious how Aaron this does in Aperture (which is also PHP/Laravel), but still not looking at his code until I'm done with it.
{
"type": "entry",
"published": "2018-10-23T21:22:47+0000",
"url": "https://seblog.nl/2018/10/23/4/spent-a-good-evening-reading",
"category": [
"indieweb"
],
"content": {
"text": "Spent a good evening reading up on Reader-discussions and -ideas, then on refactoring the Microsub endpoint in Leesmap into separate Controllers. Very curious how Aaron this does in Aperture (which is also PHP/Laravel), but still not looking at his code until I'm done with it.",
"html": "<p>Spent a good evening reading up on Reader-discussions and -ideas, then on refactoring the Microsub endpoint in Leesmap into separate Controllers. Very curious how Aaron this does in Aperture (which is also PHP/Laravel), but still not looking at his code until I'm done with it.</p>"
},
"post-type": "note",
"_id": "1367148",
"_source": "1366",
"_is_read": true
}
Do you know that feeling when you just get out of a rollercoaster and want more, more, more, but when you are being hoisted up in the cart, you're certainly unsure about why again? That's what I feel with IndieWebCamp Berlin right now. But I'm sure it will be fine once I'm there :)
{
"type": "entry",
"published": "2018-10-23T18:22:34+0000",
"url": "https://seblog.nl/2018/10/23/3/rollercoaster",
"category": [
"indieweb"
],
"content": {
"text": "Do you know that feeling when you just get out of a rollercoaster and want more, more, more, but when you are being hoisted up in the cart, you're certainly unsure about why again? That's what I feel with IndieWebCamp Berlin right now. But I'm sure it will be fine once I'm there :)",
"html": "<p>Do you know that feeling when you just get out of a rollercoaster and want more, more, more, but when you are being hoisted up in the cart, you're certainly unsure about why again? That's what I feel with IndieWebCamp Berlin right now. But I'm sure it will be fine once I'm there :)</p>"
},
"post-type": "note",
"_id": "1367149",
"_source": "1366",
"_is_read": true
}
Packed house for #IIW! Looking forward to three days of discussions about identity with everyone!
Ask me about: OAuth, self-hosted identity, IndieWeb.
Tomorrow I'll be talking about @Indie_Auth during demo hour!
{
"type": "entry",
"published": "2018-10-23T10:35:57-07:00",
"url": "https://aaronparecki.com/2018/10/23/11/",
"category": [
"IIW",
"indieweb",
"iiw"
],
"photo": [
"https://aperture-media.p3k.io/aaronparecki.com/32b42474b13530ddfaf835e11e41728a5c2c9b96744503308d4f1fccfa00b482.jpg"
],
"content": {
"text": "Packed house for #IIW! Looking forward to three days of discussions about identity with everyone! \n\nAsk me about: OAuth, self-hosted identity, IndieWeb. \n\nTomorrow I'll be talking about @Indie_Auth during demo hour!",
"html": "Packed house for <a href=\"https://aaronparecki.com/tag/iiw\">#<span class=\"p-category\">IIW</span></a>! Looking forward to three days of discussions about identity with everyone! <br /><br />Ask me about: OAuth, self-hosted identity, IndieWeb. <br /><br />Tomorrow I'll be talking about <a href=\"https://twitter.com/Indie_Auth\">@Indie_Auth</a> during demo hour!"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "photo",
"_id": "1252217",
"_source": "16",
"_is_read": true
}
Awesome post! I'd love to see some of your suggestions implemented within Together, specifically on the graph-based side. I continue to believe that the most critical problem to solve to drive Indieweb adoption is a unified experience for reading, interacting, and publishing. Pull requests are welcome! We definitely need more smart people working on Together :)
{
"type": "entry",
"published": "2018-10-22T20:33:14+00:00",
"url": "https://cleverdevil.io/2018/awesome-post-id-love-to-see-some",
"in-reply-to": [
"https://seblog.nl/2018/10/22/13/three-things-about-readers"
],
"content": {
"text": "Awesome post! I'd love to see some of your suggestions implemented within Together, specifically on the graph-based side. I continue to believe that the most critical problem to solve to drive Indieweb adoption is a unified experience for reading, interacting, and publishing. Pull requests are welcome! We definitely need more smart people working on Together :)"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://aperture-proxy.p3k.io/77e5d6e5871324c43aebf2e3e7a5553e14578f66/68747470733a2f2f636c65766572646576696c2e696f2f66696c652f66646263373639366135663733383634656131316138323863383631653133382f7468756d622e6a7067"
},
"post-type": "reply",
"_id": "1246502",
"_source": "71",
"_is_read": true
}
It really is pretty sad and shameful. Such a missed opportunity, too. I must say, I've been so impressed with how the Indieweb community has been explaining the need for CoCs on the wiki, including responses for common objections, questions, and more. https://indieweb.org/code-of-conduct-why
{
"type": "entry",
"published": "2018-10-22T20:30:18+00:00",
"url": "https://cleverdevil.io/2018/it-really-is-pretty-sad-and-shameful",
"in-reply-to": [
"https://twitter.com/EddieHinkle/status/1054461301156691969"
],
"content": {
"text": "It really is pretty sad and shameful. Such a missed opportunity, too. I must say, I've been so impressed with how the Indieweb community has been explaining the need for CoCs on the wiki, including responses for common objections, questions, and more. https://indieweb.org/code-of-conduct-why",
"html": "It really is pretty sad and shameful. Such a missed opportunity, too. I must say, I've been so impressed with how the Indieweb community has been explaining the need for CoCs on the wiki, including responses for common objections, questions, and more. <a href=\"https://indieweb.org/code-of-conduct-why\">https://indieweb.org/code-of-conduct-why</a>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://aperture-proxy.p3k.io/77e5d6e5871324c43aebf2e3e7a5553e14578f66/68747470733a2f2f636c65766572646576696c2e696f2f66696c652f66646263373639366135663733383634656131316138323863383631653133382f7468756d622e6a7067"
},
"post-type": "reply",
"_id": "1246481",
"_source": "71",
"_is_read": true
}
{
"type": "entry",
"published": "2018-10-22T14:22:41+0000",
"url": "https://seblog.nl/2018/10/22/13/three-things-about-readers",
"category": [
"indieweb",
"microsub",
"readers"
],
"syndication": [
"https://news.indieweb.org/en/seblog.nl/2018/10/22/13/three-things-about-readers"
],
"name": "Three things about Readers during IndieWebCamp N\u00fcrnberg",
"content": {
"text": "Oh IndieWebCamp. You come with a few things you want to for your own website, then you do some completely other things, and after that you leave with an even longer list of things to do for your own website.\nThis year is marked as the \u2018Year of the Reader\u2019, and indeed, there was a lot of Reader talk last weekend. I really like the progress we are making with Microsub and apps like Indigenous, but I also noticed we\u2019re not there yet for me. But that\u2019s not a discouragement, quite the opposite!\nThis blogpost has three parts: first I describe the painpoints I feel at the moment, then I describe what I have been hacking on yesterday, and in the last part I share some other ideas we talked about over dinner in N\u00fcrnberg, that where not recorded in any form other than short notes on some phones.\nPart 1: The current painpoints of the Readers\nIn May, at IWC D\u00fcsseldorf, I installed Aaron\u2019s Aperture (with Watchtower in the back) on my own server, so I could start getting the joys of having my own reader as well. It was before he offered a hosted version, but more on that one later.\nSo I started using Aperture as a backend, got into Eddie\u2019s beta for Indigenous, tried to make my own frontend, added all my Twitter feeds and got distracted with my dayjob. Although I am using Twitter lists to split up the giant feed into smaller channels per topic, I could not keep up with the volume of it all. When I arrived at N\u00fcrnberg Wednesday, I had over 10k of unread posts.\nI have a problem with algorithms that sort my posts by parameters I don\u2019t know about, made by people who want to sell my attention to others. I like having an IndieWeb Reader to solve that problem. But I also have a problem with the volume of posts created by people I follow. I want a tool to manage these streams of information, so I probably need a more sophisticated algorithm than just sorting Twitter-users by channel.\nAs for my 10k unread posts: I declared bankruptcy and marked them all unread to start over. I am glad I wasn\u2019t wasting Aaron\u2019s resources for this.\nSpeaking of Aaron\u2019s resources: although there are a few other Microsub projects popping up, his Aperture is stil the dominant Microsub-server. He is limiting the services he offers to store posts only for one week to keep people from being too comfortable, but his instance is still slowly growing and there is no \u2018competitor\u2019 on the market yet.\nAs Sven put it: this is another single point of Aaron in our stack.\nThose are roughly the points I started my hackday with. I\u2019m not suggesting I have solved them at all, but I tried \u2013 as we say in Dutch \u2013 to hit multiple flies in one clap.\nPart 2: A graph-based IndieWeb-reader\nThis part gets a bit technical, feel free to scroll ahead to the section about How it looks in the Reader if you\u2019re more into the main idea behind this reader. Also watch the screenshots.\nA little while ago I came across the topic of graph-databases and checked out Neo4j. It\u2019s quite a cool tool. I still have very little experience with it, but the basics are not that hard.\nThe current iteration of this site is written in Kirby and stores posts in .txt files, in a folder structure like 2018/295/13/entry.txt, in which the numbers refer to the year, the day of the year and the number of the post of the day. In order to make things like categories searchable across my 9000+ posts, I index them in an SQLite database. The nice thing about this database, is that I can throw away the contents at any time and just regenerate it from the .txt files.\nThe original idea I had in mind with the graph database, was to use it as this indexing database. Neo4j can still answer questions like \u2018give me all entries with the #indieweb tag\u2019, so I can use it for that. Some posts, however, point to other posts outside of my site. Things like bookmarks and likes have external URLs associated with them, and it would be nice to plot those as a graph. In N\u00fcrnberg, however, I realised that it\u2019s cool as an index for my own posts, but even more powerful for an index for a Reader.\nGetting it graphed\nSo yesterday I started a Microsub server that does that. It\u2019s really not that far, as I have to manually point it at feeds to import, but it\u2019s a base. Take a look, for example, at the following graph I got after importing Aaron\u2019s main feed, Aaron\u2019s like-feed and my own like-feed:\nThere is something wrong with my own authorship discovery on feeds, but I placed posts on Seblog near each other. As you can see, there are a lot of posts by Aaron, some of which are likes, which point to other posts (which have authors as well). Aaron likes multiple posts my Joschi. Also note that I like one of those posts too.\nThe importing algorithm currently looks something like this:\nfetch the feed (using XRay);\nfor every entry, save the entry as an (:Entry) node, storing the full jf2-JSON in a content property, as well as some special properties like published and url for better indexing;\nif there is an author:\nsave the author as an (:Author) node, with name and url properties;\nsave the relation between these nodes as a -[:AUTHOR_OF]-> relation;\n\nif the entry has a like-of property:\nfetch the liked entry;\nstore the liked entry as another (:Entry) node;\nsave the relation between the entries as a -[:LIKES]-> relation.\n\nOf course, this can be extended for bookmarks, replies, any mentions really. Note that these relations have a direction, just like a like-post has a direction.\nQuerying the graph\nLooking at the graph provided with Neo4j Desktop is really cool, but it\u2019s not yet a Reader. Luckily that\u2019s not the only output. You can actually query this stuff.\nI made a Microsub stub endpoint (without authorization) that could return timelines for three different pre-defined channels: \u2018Latest posts\u2019, \u2018Checkins\u2019 and \u2018Liked posts\u2019. Let me walk you through the queries involved.\nIn Neo4j\u2019s query language named Cypher, you can form SQL-like statements with a bit of ASCII-art to get your data out. It is made out of two parts: a MATCH and a RETURN. (There are others, like CREATE, but this pair is most useful in this context.)\nThe query below matches any node ((n)) with the label :Entry, and names those e. It then returns 100 of them, ordered by the published date.\nMATCH (e:Entry)\nRETURN e \n ORDER BY e.published DESC \n LIMIT 100\nThe next query does exactly the same, but filters by the post_type of checkin:\nMATCH (e:Entry {post_type: \"checkin\"})\nRETURN e \n ORDER BY e.published DESC \n LIMIT 100\nI believe it\u2019s also possible to create the same query by adding a WHERE e.post_type = \"checkin\" as a second line, and I have no idea what the difference is. The above example is more ASCII-like, but, it gets even better. Say that we would like to see only posts by Aaron:\nMATCH (aaron:Author)-[:AUTHOR_OF]->(e) \n WHERE aaron.url = \"https://aaronparecki.com/\"\nRETURN e LIMIT 100\nThe (n) resembles a node (of any kind, unless specificly tagged), and the -[r]- represents the relation, in our query even in a certain direction.\nNow the last query is the most interesting. (Any Neo4j experts out there: please tell me how performant this would be on a bigger data collection.)\nMATCH (entry:Entry)-[:LIKES]->(liked:Entry)\n WITH liked, count(entry) AS likes\nRETURN liked\n ORDER BY likes DESC, liked.published DESC \n LIMIT 100\nThis one looks for entries that like other entries. It then counts the number of entries that like these newly discovered liked entries, and orders the result by that.\nHow it looks in the Reader\nIf you scroll back to the screenshot of the graph above, you will see that there is one post by Joschi, that is liked by Aaron, that I also liked. This one post is now liked by two people in my graph, and thus it will show up above all other posts.\nHere is a screenshot of the result of that query in the reader:\nNote that these are all posts that do not appear in any of the feeds I follow in this test-reader: in this reader I only follow Aaron, his likes and my own likes. I have discovered new interesting posts by looking at the likes my friends post.\nAs a bonus, to take it one step further, I can also actively look for posts of people I do not follow, with something like this (completely untested) query:\nMATCH (me {url: \"https://seblog.nl/\"}),\n (entry:Entry)-[:LIKES]->(liked:Entry)<-[:AUTHOR_OF]-\n (:Author)<-[:FOLLOWS]-(follower)\n WHERE NOT me <> follower \n WITH liked, count(entry) AS likes\nRETURN liked \n ORDER BY likes DESC, liked.published DESC \n LIMIT 100\nThat\u2019s just hard to do in SQL.\nI will try to hack on it some more, to get a really functional reader with this graph as a database behind it.\nPart 3: Some other strategies worth exploring\nSo in the previous part, I got kind of carried away with explaining how this graph stuff works. Let me get back to the Reader experience itself. This part consists more of ideas that are not yet implemented by any reader. If you feel inspired, go ahead and make something.\nFiltering feed data\nIn the cocktailbar last night (elitists as we are), we discussed the place of my graph-based Reader (codename Leesmap) next to Aperture. It\u2019s sad that, in order to discover these posts liked by friends, you will need to switch your full Reader backend from Aperture to Leesmap.\nWe discussed that it would be nice to have an way of using Leesmap with Aperture as a sort of plugin. Leesmap could then receive posts from Aperture, index them, and create a few custom channels to fill with interesting posts.\nAny Microsub server could of course use the same mechanism to also have Leesmap plug into it, and others could make filters too, for example spam-filtering or crazy Machine Learning stuff.\nWe need more thought about how such interaction would look like, but the nice thing is that you can use one server to savely store your data, regardless of the fancy filtering services you choose to use as well.\nMore ways to combat feed overwhelm\nBefore IndieWebCamp, we had a discussion about Readers in a traditional N\u00fcrnberger restaurant. Here also, people came up with some ideas to deal with accruing unread-counts.\nOne idea came from how Aperture deletes posts after 7 days. This actually prevents the overload. It would be nice if you can tell your reader that, for example your Twitter feed, is ephemeral and that the posts can be discarded if you did not read them in time.\nOne other idea that came up was to keep track of the average time between posts of a certain feed. This way a Reader could boost posts when they are from a feed that is not regularly updated. These kind of posts are usually lost in piles of more posts from more frequently updates feeds.\nYet a last idea was to tell your reader to leave out posts with certain words for a small period of time. This can come in handy when you haven\u2019t watched the newest episode of Game of Thrones yet, but want to stay connected to your feeds without spoilers.\nThis year really is the year of the Reader and it\u2019s really exciting. I will continue to work on Leesmap a bit more, and share progress if I make some. Hope you do too!",
"html": "<p>Oh IndieWebCamp. You come with a few things you want to for your own website, then you do some completely other things, and after that you leave with an even longer list of things to do for your own website.</p>\n<p>This year is marked as the \u2018Year of the Reader\u2019, and indeed, there was a lot of Reader talk last weekend. I really like the progress we are making with <a href=\"https://indieweb.org/Microsub\">Microsub</a> and apps like <a href=\"https://github.com/EdwardHinkle/indigenous-ios\">Indigenous</a>, but I also noticed we\u2019re not there yet for me. But that\u2019s not a discouragement, quite the opposite!</p>\n<p>This blogpost has three parts: first I describe the painpoints I feel at the moment, then I describe what I have been hacking on yesterday, and in the last part I share some other ideas we talked about over dinner in N\u00fcrnberg, that where not recorded in any form other than short notes on some phones.</p>\n<h2>Part 1: The current painpoints of the Readers</h2>\n<p>In May, at IWC D\u00fcsseldorf, I installed <a href=\"https://aaronparecki.com\">Aaron</a>\u2019s <a href=\"https://aperture.p3k.io/\">Aperture</a> (with <a href=\"https://github.com/aaronpk/watchtower\">Watchtower</a> in the back) on my own server, so I could start getting the joys of having my own reader as well. It was before he offered a hosted version, but more on that one later.</p>\n<p>So I started using Aperture as a backend, got into Eddie\u2019s beta for Indigenous, tried to make my own frontend, added all my Twitter feeds and got distracted with my dayjob. Although I am using Twitter lists to split up the giant feed into smaller channels per topic, I could not keep up with the volume of it all. When I arrived at N\u00fcrnberg Wednesday, I had over 10k of unread posts.</p>\n<p>I have a problem with algorithms that sort my posts by parameters I don\u2019t know about, made by people who want to sell my attention to others. I like having an IndieWeb Reader to solve that problem. But I also have a problem with the volume of posts created by people I follow. I want a tool to manage these streams of information, so I probably need a more sophisticated algorithm than just sorting Twitter-users by channel.</p>\n<p>As for my 10k unread posts: I declared bankruptcy and marked them all unread to start over. I am glad I wasn\u2019t wasting Aaron\u2019s resources for this.</p>\n<p>Speaking of Aaron\u2019s resources: although there are a few other Microsub projects popping up, his Aperture is stil the dominant Microsub-server. He is limiting the services he offers to store posts only for one week to keep people from being too comfortable, but his instance is still slowly growing and there is no \u2018competitor\u2019 on the market yet.</p>\n<p>As <a href=\"https://svenknebel.de\">Sven</a> put it: this is <em>another single point of Aaron</em> in our stack.</p>\n<p>Those are roughly the points I started my hackday with. I\u2019m not suggesting I have solved them at all, but I tried \u2013 as we say in Dutch \u2013 to hit multiple flies in one clap.</p>\n<h2>Part 2: A graph-based IndieWeb-reader</h2>\nThis part gets a bit technical, feel free to scroll ahead to the section about <b>How it looks in the Reader</b> if you\u2019re more into the main idea behind this reader. Also watch the screenshots.\n<p>A little while ago I came across the topic of graph-databases and checked out Neo4j. It\u2019s quite a cool tool. I still have very little experience with it, but the basics are not that hard.</p>\n<p>The current iteration of this site is written in Kirby and stores posts in <code>.txt</code> files, in a folder structure like <code>2018/295/13/entry.txt</code>, in which the numbers refer to the year, the day of the year and the number of the post of the day. In order to make things like categories searchable across my 9000+ posts, I index them in an SQLite database. The nice thing about this database, is that I can throw away the contents at any time and just regenerate it from the <code>.txt</code> files.</p>\n<p>The original idea I had in mind with the graph database, was to use it as this indexing database. Neo4j can still answer questions like \u2018give me all entries with the <a href=\"https://seblog.nl/category/indieweb\">#indieweb</a> tag\u2019, so I can use it for that. Some posts, however, point to other posts outside of my site. Things like bookmarks and likes have external URLs associated with them, and it would be nice to plot those as a graph. In N\u00fcrnberg, however, I realised that it\u2019s cool as an index for my own posts, but even more powerful for an index for a Reader.</p>\n<h3>Getting it graphed</h3>\n<p>So yesterday I started a Microsub server that does that. It\u2019s really not that far, as I have to manually point it at feeds to import, but it\u2019s a base. Take a look, for example, at the following graph I got after importing Aaron\u2019s main feed, Aaron\u2019s like-feed and my own like-feed:</p>\n<a href=\"https://aperture-proxy.p3k.io/92f0f999174797f98b7d147209cae1ef34fef213/68747470733a2f2f7365626c6f672e6e6c2f636f6e74656e742f323031382f3239352f3134323234312d31332f6c696b65732d6f6e2d612d67726170682e6a7067\"><img src=\"https://aperture-proxy.p3k.io/92f0f999174797f98b7d147209cae1ef34fef213/68747470733a2f2f7365626c6f672e6e6c2f636f6e74656e742f323031382f3239352f3134323234312d31332f6c696b65732d6f6e2d612d67726170682e6a7067\" alt=\"\" /></a><p>There is something wrong with my own authorship discovery on feeds, but I placed posts on Seblog near each other. As you can see, there are a lot of posts by Aaron, some of which are likes, which point to other posts (which have authors as well). Aaron likes multiple posts my Joschi. Also note that I like one of those posts too.</p>\n<p>The importing algorithm currently looks something like this:</p>\n<ol><li>fetch the feed (using XRay);</li>\n<li>for every entry, save the entry as an <code>(:Entry)</code> node, storing the full jf2-JSON in a <code>content</code> property, as well as some special properties like <code>published</code> and <code>url</code> for better indexing;</li>\n<li>if there is an author:\n<ol><li>save the author as an <code>(:Author)</code> node, with <code>name</code> and <code>url</code> properties;</li>\n<li>save the relation between these nodes as a <code>-[:AUTHOR_OF]-></code> relation;</li>\n</ol></li>\n<li>if the entry has a <code>like-of</code> property:\n<ol><li>fetch the liked entry;</li>\n<li>store the liked entry as another <code>(:Entry)</code> node;</li>\n<li>save the relation between the entries as a <code>-[:LIKES]-></code> relation.</li>\n</ol></li>\n</ol><p>Of course, this can be extended for bookmarks, replies, any mentions really. Note that these relations have a direction, just like a like-post has a direction.</p>\n<h3>Querying the graph</h3>\n<p>Looking at the graph provided with Neo4j Desktop is really cool, but it\u2019s not yet a Reader. Luckily that\u2019s not the only output. You can actually query this stuff.</p>\n<p>I made a Microsub stub endpoint (without authorization) that could return timelines for three different pre-defined channels: \u2018Latest posts\u2019, \u2018Checkins\u2019 and \u2018Liked posts\u2019. Let me walk you through the queries involved.</p>\n<p>In Neo4j\u2019s query language named Cypher, you can form SQL-like statements with a bit of ASCII-art to get your data out. It is made out of two parts: a <code>MATCH</code> and a <code>RETURN</code>. (There are others, like <code>CREATE</code>, but this pair is most useful in this context.)</p>\n<p>The query below matches any node (<code>(n)</code>) with the label <code>:Entry</code>, and names those <code>e</code>. It then returns 100 of them, ordered by the <code>published</code> date.</p>\n<pre><code>MATCH (e:Entry)\nRETURN e \n ORDER BY e.published DESC \n LIMIT 100</code></pre>\n<p>The next query does exactly the same, but filters by the <code>post_type</code> of <code>checkin</code>:</p>\n<pre><code>MATCH (e:Entry {post_type: \"checkin\"})\nRETURN e \n ORDER BY e.published DESC \n LIMIT 100</code></pre>\n<p>I believe it\u2019s also possible to create the same query by adding a <code>WHERE e.post_type = \"checkin\"</code> as a second line, and I have no idea what the difference is. The above example is more ASCII-like, but, it gets even better. Say that we would like to see only posts by Aaron:</p>\n<pre><code>MATCH (aaron:Author)-[:AUTHOR_OF]->(e) \n WHERE aaron.url = \"https://aaronparecki.com/\"\nRETURN e LIMIT 100</code></pre>\n<p>The <code>(n)</code> resembles a node (of any kind, unless specificly tagged), and the <code>-[r]-</code> represents the relation, in our query even in a certain direction.</p>\n<p>Now the last query is the most interesting. (Any Neo4j experts out there: please tell me how performant this would be on a bigger data collection.)</p>\n<pre><code>MATCH (entry:Entry)-[:LIKES]->(liked:Entry)\n WITH liked, count(entry) AS likes\nRETURN liked\n ORDER BY likes DESC, liked.published DESC \n LIMIT 100</code></pre>\n<p>This one looks for entries that like other entries. It then counts the number of entries that like these newly discovered liked entries, and orders the result by that.</p>\n<h3>How it looks in the Reader</h3>\n<p>If you scroll back to the screenshot of the graph above, you will see that there is one post by Joschi, that is liked by Aaron, that I also liked. This one post is now liked by two people in my graph, and thus it will show up above all other posts.</p>\n<p>Here is a screenshot of the result of that query in the reader:</p>\n<img src=\"https://aperture-proxy.p3k.io/4e1a7531b2f467e10e5cb71f6d561f4a8deb3ca5/68747470733a2f2f7365626c6f672e6e6c2f636f6e74656e742f323031382f3239352f3134323234312d31332f726573756c742d696e2d7265616465722e6a7067\" alt=\"\" /><p>Note that these are all posts that do not appear in any of the feeds I follow in this test-reader: in this reader I only follow Aaron, his likes and my own likes. I have discovered new interesting posts by looking at the likes my friends post.</p>\n<p>As a bonus, to take it one step further, I can also actively look for posts of people I do not follow, with something like this (completely untested) query:</p>\n<pre><code>MATCH (me {url: \"https://seblog.nl/\"}),\n (entry:Entry)-[:LIKES]->(liked:Entry)<-[:AUTHOR_OF]-\n (:Author)<-[:FOLLOWS]-(follower)\n WHERE NOT me <> follower \n WITH liked, count(entry) AS likes\nRETURN liked \n ORDER BY likes DESC, liked.published DESC \n LIMIT 100</code></pre>\n<p>That\u2019s just hard to do in SQL.</p>\n<p>I will try to hack on it some more, to get a really functional reader with this graph as a database behind it.</p>\n<h2>Part 3: Some other strategies worth exploring</h2>\n<p>So in the previous part, I got kind of carried away with explaining how this graph stuff works. Let me get back to the Reader experience itself. This part consists more of ideas that are not yet implemented by any reader. If you feel inspired, go ahead and make something.</p>\n<h3>Filtering feed data</h3>\n<p>In the <a href=\"https://seblog.nl/2018/10/21/9\">cocktailbar</a> last night (elitists as we are), we discussed the place of my graph-based Reader (codename Leesmap) next to Aperture. It\u2019s sad that, in order to discover these posts liked by friends, you will need to switch your full Reader backend from Aperture to Leesmap.</p>\n<p>We discussed that it would be nice to have an way of using Leesmap with Aperture as a sort of plugin. Leesmap could then receive posts from Aperture, index them, and create a few custom channels to fill with interesting posts.</p>\n<p>Any Microsub server could of course use the same mechanism to also have Leesmap plug into it, and others could make filters too, for example spam-filtering or crazy Machine Learning stuff.</p>\n<p>We need more thought about how such interaction would look like, but the nice thing is that you can use one server to savely store your data, regardless of the fancy filtering services you choose to use as well.</p>\n<h3>More ways to combat feed overwhelm</h3>\n<p>Before IndieWebCamp, we had a discussion about Readers in a traditional N\u00fcrnberger restaurant. Here also, people came up with some ideas to deal with accruing unread-counts.</p>\n<p>One idea came from how Aperture deletes posts after 7 days. This actually prevents the overload. It would be nice if you can tell your reader that, for example your Twitter feed, is ephemeral and that the posts can be discarded if you did not read them in time.</p>\n<p>One other idea that came up was to keep track of the average time between posts of a certain feed. This way a Reader could boost posts when they are from a feed that is not regularly updated. These kind of posts are usually lost in piles of more posts from more frequently updates feeds.</p>\n<p>Yet a last idea was to tell your reader to leave out posts with certain words for a small period of time. This can come in handy when you haven\u2019t watched the newest episode of Game of Thrones yet, but want to stay connected to your feeds without spoilers.</p>\n<p>This year really is the year of the Reader and it\u2019s really exciting. I will continue to work on Leesmap a bit more, and share progress if I make some. Hope you do too!</p>"
},
"post-type": "article",
"_id": "1367150",
"_source": "1366",
"_is_read": true
}
{
"type": "entry",
"published": "2018-10-21T20:41:33-04:00",
"url": "https://david.shanske.com/2018/10/21/version-2-0-of-the-micropub-plugin-released/",
"syndication": [
"https://news.indieweb.org/en/david.shanske.com/2018/10/21/version-2-0-of-the-micropub-plugin-released/"
],
"name": "Version 2.0 of the Micropub Plugin Released",
"content": {
"text": "At the Indieweb Summit in June, someone said something to me that made me decide to embark on a major rewrite of the Micropub endpoint for WordPress.\nFor those of you not familiar with it, Micropub is a standard that allows for you to publish to a website.\nThe major work on this actually finished in August, but due to some bug issues, most of them in the accompanying IndieAuth plugin, that affected some of the testers, I held off on releasing the plugin till today. If there is anyone still experiencing issues, please open an issue on the Micropub plugin Github repository.\nThe core functionality of the plugin remains the same, as does much of the original code. So, what changed?\nThe plugin is no longer a single file. The code that handles the endpoint, the code that handles authorization, and the code that handles rendering are now separated.\nThe code no longer works outside of WordPress.\nThe original design didn\u2019t log the user into WordPress. It determined which user was supposed to be represented and posted as them. If it couldn\u2019t figure out what user was represented, it posted it anyway, which is no longer permitted.\u00a0 The new version is much better integrated into the WordPress stack, which admittedly revealed some new login issues.\nThe Micropub endpoint is now implemented using the WordPress REST API functionality. Again, this means that it is implemented inside functionality built into WordPress for creating custom endpoints as opposed to the previous system, where a query variable bypassed the WordPress load and substituted a separate one. It also has the positive advantage of a pretty permalink for the endpoint(wp-json/micropub/1.0/endpoint).\nDozens of little bugfixes and checks to remove nagging error notices\nImproved error handling\nFixes to better comply with the Micropub spec, which was finalized after the initial creation of this plugin\nA nag for those who use the plugin on a site without encryption(http as opposed to https). It can be disabled if you want to live dangerously.\nAnd only one major new feature. A media endpoint. A media endpoint handles uploading of media files and hands back a URL to the Micropub endpoint. This one uploads to the WordPress Media Library.\nThe Post Kinds update last week already ensured that Post Kinds will work well with the changes.\n\u00a0",
"html": "At the Indieweb Summit in June, someone said something to me that made me decide to embark on a major rewrite of the Micropub endpoint for WordPress.\n<p>For those of you not familiar with it, Micropub is a standard that allows for you to publish to a website.</p>\n<p>The major work on this actually finished in August, but due to some bug issues, most of them in the accompanying IndieAuth plugin, that affected some of the testers, I held off on releasing the plugin till today. If there is anyone still experiencing issues, please open an issue on the Micropub plugin <a href=\"https://github.com/indieweb/wordpress-micropub\">Github repository</a>.</p>\n<p>The core functionality of the plugin remains the same, as does much of the original code. So, what changed?</p>\n<ul><li>The plugin is no longer a single file. The code that handles the endpoint, the code that handles authorization, and the code that handles rendering are now separated.</li>\n<li>The code no longer works outside of WordPress.</li>\n<li>The original design didn\u2019t log the user into WordPress. It determined which user was supposed to be represented and posted as them. If it couldn\u2019t figure out what user was represented, it posted it anyway, which is no longer permitted.\u00a0 The new version is much better integrated into the WordPress stack, which admittedly revealed some new login issues.</li>\n<li>The Micropub endpoint is now implemented using the WordPress REST API functionality. Again, this means that it is implemented inside functionality built into WordPress for creating custom endpoints as opposed to the previous system, where a query variable bypassed the WordPress load and substituted a separate one. It also has the positive advantage of a pretty permalink for the endpoint(wp-json/micropub/1.0/endpoint).</li>\n<li>Dozens of little bugfixes and checks to remove nagging error notices</li>\n<li>Improved error handling</li>\n<li>Fixes to better comply with the Micropub spec, which was finalized after the initial creation of this plugin</li>\n<li>A nag for those who use the plugin on a site without encryption(http as opposed to https). It can be disabled if you want to live dangerously.</li>\n</ul><p>And only one major new feature. A media endpoint. A media endpoint handles uploading of media files and hands back a URL to the Micropub endpoint. This one uploads to the WordPress Media Library.</p>\n<p>The Post Kinds update last week already ensured that Post Kinds will work well with the changes.</p>\n<p>\u00a0</p>"
},
"author": {
"type": "card",
"name": "David Shanske",
"url": "https://david.shanske.com/",
"photo": "https://david.shanske.com/wp-content/uploads/avatar-privacy/cache/gravatar/2/c/2cb1f8afd9c8d3b646b4071c5ed887c970d81d625eeed87e447706940e2c403d-125.png"
},
"post-type": "article",
"_id": "1241142",
"_source": "5",
"_is_read": true
}
Just pushed Version 2.0 of the Micropub plugin to the WordPress repository and am using a Micropub client to write this note about it.
{
"type": "entry",
"published": "2018-10-21T20:09:42-04:00",
"url": "https://david.shanske.com/2018/10/21/2112/",
"syndication": [
"https://twitter.com/dshanske/status/1054162866746593281"
],
"content": {
"text": "Just pushed Version 2.0 of the Micropub plugin to the WordPress repository and am using a Micropub client to write this note about it."
},
"author": {
"type": "card",
"name": "David Shanske",
"url": "https://david.shanske.com/",
"photo": "https://david.shanske.com/wp-content/uploads/avatar-privacy/cache/gravatar/2/c/2cb1f8afd9c8d3b646b4071c5ed887c970d81d625eeed87e447706940e2c403d-125.png"
},
"post-type": "note",
"_id": "1241143",
"_source": "5",
"_is_read": true
}
{
"type": "entry",
"published": "2018-10-21T16:51:56+02:00",
"url": "https://aaronparecki.com/2018/10/21/17/indiewebcamp-live",
"category": [
"indiewebcamp"
],
"syndication": [
"https://twitter.com/aaronpk/status/1054022484989636608"
],
"content": {
"text": "We're starting demos at @IndieWebCamp N\u00fcrnberg! Livestream is here \ud83d\udcfa\u27a1 https://www.youtube.com/watch?v=QZxDltB4_fo",
"html": "We're starting demos at <a href=\"https://indieweb.org/IndieWebCamps\">@IndieWebCamp</a> N\u00fcrnberg! Livestream is here <a href=\"https://aaronparecki.com/emoji/%F0%9F%93%BA\">\ud83d\udcfa</a>\u27a1 <a href=\"https://www.youtube.com/watch?v=QZxDltB4_fo\"><span>https://</span>www.youtube.com/watch?v=QZxDltB4_fo</a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "note",
"_id": "1238357",
"_source": "16",
"_is_read": true
}
Reading @adactio's Going Offline and learning about how to use Service Workers at #indiewebcamp! It's very nice to read someone's words to guide you through the otherwise obtuse syntax and APIs. https://abookapart.com/products/going-offline
{
"type": "entry",
"published": "2018-10-21T11:17:59+02:00",
"url": "https://aaronparecki.com/2018/10/21/13/indiewebcamp",
"category": [
"indiewebcamp",
"indieweb"
],
"syndication": [
"https://twitter.com/aaronpk/status/1053938450477412352"
],
"content": {
"text": "Reading @adactio's Going Offline and learning about how to use Service Workers at #indiewebcamp! It's very nice to read someone's words to guide you through the otherwise obtuse syntax and APIs. https://abookapart.com/products/going-offline",
"html": "Reading <a href=\"https://twitter.com/adactio\">@adactio</a>'s Going Offline and learning about how to use Service Workers at <a href=\"https://aaronparecki.com/tag/indiewebcamp\">#<span class=\"p-category\">indiewebcamp</span></a>! It's very nice to read someone's words to guide you through the otherwise obtuse syntax and APIs. <a href=\"https://abookapart.com/products/going-offline\"><span>https://</span>abookapart.com/products/going-offline</a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "note",
"_id": "1237416",
"_source": "16",
"_is_read": true
}
I have shared my Micropub action for @DraftsApp to the actions directory – https://actions.getdrafts.com/a/1QC
{
"type": "entry",
"published": "2018-10-18T18:06:06+00:00",
"url": "https://cleverdevil.io/2018/i-have-shared-my-micropub-action-for",
"syndication": [
"https://twitter.com/cleverdevil/status/1052984193477763073"
],
"content": {
"text": "I have shared my Micropub action for @DraftsApp to the actions directory \u2013 https://actions.getdrafts.com/a/1QC",
"html": "I have shared my Micropub action for @DraftsApp to the actions directory \u2013 <a href=\"https://actions.getdrafts.com/a/1QC\">https://actions.getdrafts.com/a/1QC</a>"
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://aperture-proxy.p3k.io/77e5d6e5871324c43aebf2e3e7a5553e14578f66/68747470733a2f2f636c65766572646576696c2e696f2f66696c652f66646263373639366135663733383634656131316138323863383631653133382f7468756d622e6a7067"
},
"post-type": "note",
"_id": "1221833",
"_source": "71",
"_is_read": true
}
Finally made a functioning Micropub action for @DraftsApp. Needs some tweaking, but I should be able to share soon.
{
"type": "entry",
"published": "2018-10-18T04:09:15+00:00",
"url": "https://cleverdevil.io/2018/finally-made-a-functioning-micropub-action-for",
"syndication": [
"https://twitter.com/cleverdevil/status/1052773583611662336"
],
"content": {
"text": "Finally made a functioning Micropub action for @DraftsApp. Needs some tweaking, but I should be able to share soon."
},
"author": {
"type": "card",
"name": "Jonathan LaCour",
"url": "https://cleverdevil.io/profile/cleverdevil",
"photo": "https://aperture-proxy.p3k.io/77e5d6e5871324c43aebf2e3e7a5553e14578f66/68747470733a2f2f636c65766572646576696c2e696f2f66696c652f66646263373639366135663733383634656131316138323863383631653133382f7468756d622e6a7067"
},
"post-type": "note",
"_id": "1218607",
"_source": "71",
"_is_read": true
}
17:30: Optional writing hour and quiet socializing
18:30: IndieWeb demos and hack night!
Homebrew Website Club retro 1980s-style logo
Topics for this week: Upcoming IndieWebCamps! Nuremberg & Berlin Demos of personal website breakthroughs Create or update your personal web site!
Join a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!
Any questions? Ask in #indieweb Slack or IRC
More information: IndieWeb Wiki Event Page
RSVP: post an indie RSVP on your own site!
{
"type": "event",
"name": "Homebrew Website Club SF!",
"summary": "17:30: Optional writing hour and quiet socializing\n18:30: IndieWeb demos and hack night!\n\nHomebrew Website Club retro 1980s-style logo\nTopics for this week: Upcoming IndieWebCamps! Nuremberg & Berlin Demos of personal website breakthroughs Create or update your personal web site!\nJoin a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!\nAny questions? Ask in #indieweb Slack or IRC\nMore information: IndieWeb Wiki Event Page\nRSVP: post an indie RSVP on your own site!",
"published": "2018-10-17 15:03-0700",
"start": "2018-10-17 17:30-0700",
"end": "2018-10-17 19:30-0700",
"url": "http://tantek.com/2018/290/e1/homebrew-website-club-sf",
"location": [
"https://wiki.mozilla.org/SF"
],
"content": {
"text": "When: 2018-10-17 17:30\u202619:30\nWhere: Mozilla San Francisco\n\nHost: Tantek \u00c7elik\n\n\n\n17:30: Optional writing hour and quiet socializing\n\n18:30: IndieWeb demos and hack night!\n\n\nTopics for this week:\nUpcoming IndieWebCamps! Nuremberg &\nBerlin\n\nDemos of personal website breakthroughs\nCreate or update your personal web site!\n\nJoin a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!\n\n\nAny questions? Ask in \n#indieweb Slack or IRC\n\n\nMore information: \nIndieWeb Wiki Event Page\n\n\nRSVP: post an indie RSVP on your own site!",
"html": "<p>\nWhen: <time class=\"dt-start\">2018-10-17 17:30</time>\u2026<time class=\"dt-end\">19:30</time><span>\nWhere: <a class=\"u-location h-card\" href=\"https://wiki.mozilla.org/SF\">Mozilla San Francisco</a>\n</span>\nHost: <a class=\"u-organizer h-card\" href=\"http://tantek.com/\">Tantek \u00c7elik</a>\n</p>\n\n<p>\n17:30: Optional writing hour and quiet socializing<br />\n18:30: IndieWeb demos and hack night!<br /></p>\n<p><img class=\"u-featured\" style=\"height:300px;\" src=\"https://aperture-media.p3k.io/indieweb.org/c24f7b1e711955ef818bde12e2a3e79708ecc9b106d95b460a9fefe93b0be723.jpg\" alt=\"Homebrew Website Club retro 1980s-style logo\" /></p>\n<p>Topics for this week:</p>\n<ul><li>Upcoming IndieWebCamps! <a href=\"https://indieweb.org/2018/Nuremberg\">Nuremberg</a> &\n<a href=\"https://indieweb.org/2018/Berlin\">Berlin</a>\n</li>\n<li>Demos of personal website breakthroughs</li>\n<li>Create or update your personal web site!</li>\n</ul><p>\nJoin a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!\n</p>\n<p>\nAny questions? Ask in \n<a href=\"https://indieweb.org/discuss\">#indieweb Slack or IRC</a>\n</p>\n<p>\nMore information: \n<a class=\"u-url\" href=\"https://indieweb.org/events/2018-10-17-homebrew-website-club\">IndieWeb Wiki Event Page</a>\n</p>\n<p>\nRSVP: post an <a href=\"https://indieweb.org/rsvp\">indie RSVP</a> on your own site!\n</p>"
},
"post-type": "event",
"refs": {
"https://wiki.mozilla.org/SF": {
"type": "card",
"name": "Mozilla San Francisco",
"url": "https://wiki.mozilla.org/SF",
"photo": null
}
},
"_id": "1218171",
"_source": "1",
"_is_read": true
}
Awesome! Glad to hear that you enjoyed it 😁 the IndieWebCamps are always a good time, even remotely! Although some end up having a better remote experience than others depending on the organizers, physical space and tech available. There is one this weekend in Nuremberg, even if you can’t follow it live due to your schedule, you can always follow along with the videos on YouTube after the fact. There’s a pretty interesting group gathering there, so I expect there will be some good discussions.
{
"type": "entry",
"published": "2018-10-17T17:18:01-04:00",
"summary": "Awesome! Glad to hear that you enjoyed it \ud83d\ude01 the IndieWebCamps are always a good time, even remotely! Although some end up having a better remote experience than others depending on the organizers, physical space and tech available. There is one this weekend in Nuremberg, even if you can\u2019t follow it live due to your schedule, you can always follow along with the videos on YouTube after the fact. There\u2019s a pretty interesting group gathering there, so I expect there will be some good discussions.",
"url": "https://eddiehinkle.com/2018/10/17/13/reply/",
"in-reply-to": [
"https://micro.blog/amit/971567"
],
"content": {
"text": "Awesome! Glad to hear that you enjoyed it \ud83d\ude01 the IndieWebCamps are always a good time, even remotely! Although some end up having a better remote experience than others depending on the organizers, physical space and tech available. There is one this weekend in Nuremberg, even if you can\u2019t follow it live due to your schedule, you can always follow along with the videos on YouTube after the fact. There\u2019s a pretty interesting group gathering there, so I expect there will be some good discussions.",
"html": "<p>Awesome! Glad to hear that you enjoyed it \ud83d\ude01 the IndieWebCamps are always a good time, even remotely! Although some end up having a better remote experience than others depending on the organizers, physical space and tech available. There is one this weekend in Nuremberg, even if you can\u2019t follow it live due to your schedule, you can always follow along with the videos on YouTube after the fact. There\u2019s a pretty interesting group gathering there, so I expect there will be some good discussions.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://micro.blog/amit/971567": {
"type": "entry",
"url": "https://micro.blog/amit/971567",
"name": "https://micro.blog/amit/971567",
"post-type": "article"
}
},
"_id": "1217191",
"_source": "226",
"_is_read": true
}
From IndieWeb Summit 2017 to IndieWeb Summit 2018 (both of which happen in June), there was a lot of focus and effort into developing structures around what we call “Social Readers”, apps and services that allow you to following different website feeds, responding and interacting on your own website within the same app. It’s the dual-nature that Facebook and Twitter provides but this time centered around individual websites. For more information on how social readers work, Aaron Parecki wrote a great article.
{
"type": "entry",
"published": "2018-10-17T16:55:16-04:00",
"summary": "From IndieWeb Summit 2017 to IndieWeb Summit 2018 (both of which happen in June), there was a lot of focus and effort into developing structures around what we call \u201cSocial Readers\u201d, apps and services that allow you to following different website feeds, responding and interacting on your own website within the same app. It\u2019s the dual-nature that Facebook and Twitter provides but this time centered around individual websites. For more information on how social readers work, Aaron Parecki wrote a great article.",
"url": "https://eddiehinkle.com/2018/10/17/12/article/",
"category": [
"tech",
"indieweb"
],
"name": "Following in the IndieWeb: The Next Frontier",
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "article",
"_id": "1217192",
"_source": "226",
"_is_read": true
}
It’s a day late, but I’m excited to release Episode 2 of My Url Is. This week, featuring Rosemary Orchard. We had a super fun conversation about how she learned about the IndieWeb, about attending IndieWebCamps remotely and more!
{
"type": "entry",
"published": "2018-10-17T10:25:22-04:00",
"summary": "It\u2019s a day late, but I\u2019m excited to release Episode 2 of My Url Is. This week, featuring Rosemary Orchard. We had a super fun conversation about how she learned about the IndieWeb, about attending IndieWebCamps remotely and more!",
"url": "https://eddiehinkle.com/2018/10/17/4/note/",
"category": [
"personal",
"tech"
],
"content": {
"text": "It\u2019s a day late, but I\u2019m excited to release Episode 2 of My Url Is. This week, featuring Rosemary Orchard. We had a super fun conversation about how she learned about the IndieWeb, about attending IndieWebCamps remotely and more!",
"html": "<p>It\u2019s a day late, but I\u2019m excited to release <a href=\"https://myurlis.com/episodes/002/\">Episode 2 of My Url Is</a>. This week, featuring <a href=\"https://rosemaryorchard.com\">Rosemary Orchard</a>. We had a super fun conversation about how she learned about the IndieWeb, about attending IndieWebCamps remotely and more!</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "note",
"_id": "1214085",
"_source": "226",
"_is_read": true
}