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
}
Haha, yeah you’re right. Source and Target aren’t much of a spec. I think some of the stuff that makes it cross over the line as a spec is “how do you discover someone’s webmention endpoint?”, “how do you verify a webmention’s authenticity?”, etc.
{
"type": "entry",
"published": "2018-10-16T20:46:15-04:00",
"summary": "Haha, yeah you\u2019re right. Source and Target aren\u2019t much of a spec. I think some of the stuff that makes it cross over the line as a spec is \u201chow do you discover someone\u2019s webmention endpoint?\u201d, \u201chow do you verify a webmention\u2019s authenticity?\u201d, etc.",
"url": "https://eddiehinkle.com/2018/10/16/13/reply/",
"in-reply-to": [
"https://www.kickscondor.com/comments/webmentions-agnostic"
],
"content": {
"text": "Haha, yeah you\u2019re right. Source and Target aren\u2019t much of a spec. I think some of the stuff that makes it cross over the line as a spec is \u201chow do you discover someone\u2019s webmention endpoint?\u201d, \u201chow do you verify a webmention\u2019s authenticity?\u201d, etc.",
"html": "<p>Haha, yeah you\u2019re right. Source and Target aren\u2019t much of a spec. I think some of the stuff that makes it cross over the line as a spec is \u201chow do you discover someone\u2019s webmention endpoint?\u201d, \u201chow do you verify a webmention\u2019s authenticity?\u201d, etc.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://www.kickscondor.com/comments/webmentions-agnostic": {
"type": "entry",
"url": "https://www.kickscondor.com/comments/webmentions-agnostic",
"name": "https://www.kickscondor.com/comments/webmentions-agnostic",
"post-type": "article"
}
},
"_id": "1211808",
"_source": "226",
"_is_read": true
}
Marty McGuire
{
"type": "entry",
"published": "2018-10-16T20:19:05-04:00",
"url": "https://martymcgui.re/2018/10/16/201905/",
"featured": "https://media.martymcgui.re/9d/9d/d0/23/706b525a66e8474524b19c9c6b752b60666a6c9363a1b2d1f2bb24d9.jpg",
"category": [
"HWC",
"IndieWeb",
"Baltimore",
"wrap-up"
],
"syndication": [
"https://twitter.com/schmarty/status/1052354976561946625",
"https://www.facebook.com/photo.php?fbid=10213074597161554&set=a.2009852167917&type=3&theater"
],
"name": "HWC Baltimore 2018-10-16 Wrap-Up",
"content": {
"text": "Baltimore's second Homebrew Website Club of October met at the Digital Harbor Foundation Tech Center on October 16th.\nHere are some notes from the \"broadcast\" portion of the meetup:\n\n jonathanprozzi.net \u2014 Worked today on a post recapping our last HWC meeting, focusing on ideas to get more people involved. For work at DHF, still learning lots of NextJS and ExpressJS. Getting back into writing content!\n \n\n\n derekfields.is \u2014 Been a while! Last week in Minnesota for some networking. Met some cool people and talked to some companies, including Socrata, which was part of Open Baltimore. Also got back into bullet journaling after being away for a while. Working on legal and client-finding stuff for his freelance work.\n \n\n\n pulianas.com \u2014 Also been awhile since he's been to an HWC! Moved all his sites to HTTPS. His podcast (overanalyzed.fm) is now on iTunes, so he added that link to the site. Also tried to track down an official Overcast button but hasn't found it yet. Recently in San Jose for API World. Very little talk about building APIs and more about pitching specific products/services. Did learn a bit about microservices and case-studies of moving to them. Did some general maintenance on his WP site, and has been working on his own plugin for podcasting on WP.\n \n\n\n martymcgui.re \u2014 Been heavily porting his site from Jekyll to Hugo. Has had some fun porting things that he did as Ruby plugins for Jekyll into crazy Go template logic, like generating permashortlinks in NewBase60. Also had some fun setting up a new CSS Grid display for photos in posts with lots of them (example which apparently only works in Firefox). Also, after some struggling with his image proxy setup (because Hugo templating doesn't support HMAC signatures) is trying out Cloudinary's free tier for his image-resizing needs.\n \n\nOther discussion:\nPodcasting on WordPress is... a pain. Apple Podcasts refused to accept their feed due to http vs https issues and that was hard to track down.\n \nFerrite for audio editing on the iPad. Alec edits his podcasts there now. Some hiccups with the noise-cancelling and auto-levelling features being too-aggressive.\n Recording setups. Blue's new Yeti Nano looks cool.\n \n FF and Chrome starting to support the new dialog element. Maybe cool, maybe terrible?\n \n\nLeft-to-right: pulianas.com, jonathanprozzi.net, derekfields.is, martymcgui.reThanks to everyone who came out! We look forward to seeing you at our next meetup on Tuesday, November 13th at 7:30pm!",
"html": "<p>Baltimore's second <a href=\"https://martymcgui.re/2018/09/20/125531/\">Homebrew Website Club of October</a> met at the <a href=\"https://digitialharbor.org/\">Digital Harbor Foundation Tech Center</a> on October 16th.</p>\n<p>Here are some notes from the \"broadcast\" portion of the meetup:</p>\n<p>\n jonathanprozzi.net \u2014 Worked today on a post recapping our last HWC meeting, focusing on ideas to get more people involved. For work at DHF, still learning lots of NextJS and ExpressJS. Getting back into writing content!\n <br /></p>\n<p>\n derekfields.is \u2014 Been a while! Last week in Minnesota for some networking. Met some cool people and talked to some companies, including <a href=\"https://www.socrata.com/\">Socrata</a>, which was part of <a href=\"https://data.baltimorecity.gov/\">Open Baltimore</a>. Also got back into bullet journaling after being away for a while. Working on legal and client-finding stuff for his freelance work.\n <br /></p>\n<p>\n pulianas.com \u2014 Also been awhile since he's been to an HWC! Moved all his sites to HTTPS. His podcast (overanalyzed.fm) is now on iTunes, so he added that link to the site. Also tried to track down an official Overcast button but hasn't found it yet. Recently in San Jose for API World. Very little talk about building APIs and more about pitching specific products/services. Did learn a bit about microservices and case-studies of moving to them. Did some general maintenance on his WP site, and has been working on his own plugin for podcasting on WP.\n <br /></p>\n<p>\n martymcgui.re \u2014 Been heavily porting his site from Jekyll to Hugo. Has had some fun porting things that he did as Ruby plugins for Jekyll into crazy Go template logic, like generating permashortlinks in <a href=\"http://tantek.pbworks.com/w/page/19402946/NewBase60\">NewBase60</a>. Also had some fun setting up a new CSS Grid display for photos in posts with lots of them (<a href=\"https://martymcgui.re/2018/10/06/144700/\">example</a> which apparently only works in Firefox). Also, after some struggling with his image proxy setup (because Hugo templating doesn't support HMAC signatures) is trying out <a href=\"https://cloudinary.com/\">Cloudinary's</a> free tier for his image-resizing needs.\n <br /></p>\n<p>Other discussion:</p>\n<ul><li>Podcasting on WordPress is... a pain. Apple Podcasts refused to accept their feed due to http vs https issues and that was hard to track down.</li>\n <li>\n<a href=\"https://www.wooji-juice.com/products/ferrite/\">Ferrite</a> for audio editing on the iPad. Alec edits his podcasts there now. Some hiccups with the noise-cancelling and auto-levelling features being too-aggressive.</li>\n <li>Recording setups. <a href=\"https://www.bluedesigns.com/products/yeti-nano/\">Blue's new Yeti Nano</a> looks cool.</li>\n <li>\n FF and Chrome starting to support the new dialog element. Maybe cool, maybe terrible?\n <br /></li>\n</ul><img class=\"u-featured\" src=\"https://aperture-proxy.p3k.io/f70adcadd475474ecb3ba53d07f3775725329f69/68747470733a2f2f6d656469612e6d617274796d636775692e72652f39642f39642f64302f32332f37303662353235613636653834373435323462313963396336623735326236303636366136633933363361316232643166326262323464392e6a7067\" alt=\"706b525a66e8474524b19c9c6b752b60666a6c9363a1b2d1f2bb24d9.jpg\" />Left-to-right: pulianas.com, jonathanprozzi.net, derekfields.is, martymcgui.re<p>Thanks to everyone who came out! We look forward to seeing you at our next meetup on Tuesday, November 13th at 7:30pm!</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": false,
"photo": "https://aperture-proxy.p3k.io/8275f85e3a389bd0ae69f209683436fc53d8bad9/68747470733a2f2f6d617274796d636775692e72652f696d616765732f6c6f676f2e6a7067"
},
"post-type": "article",
"_id": "1210957",
"_source": "175",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "Christian Weiske",
"url": "http://cweiske.de/tagebuch/",
"photo": null
},
"url": "http://cweiske.de/tagebuch/code-of-conduct.htm",
"published": "2018-10-16T20:35:34+02:00",
"content": {
"html": "<p>\n I wanted to attend the\n <a href=\"https://indieweb.org/2018/Nuremberg\">IndieWebCamp Nuremberg</a> this month,\n just as I did last year.\n While browsing the page for information, under \"Participating\" I saw a link\n to the \"<a href=\"https://indieweb.org/code-of-conduct\">Code of Conduct</a>\"\n that one has to adhere to when attending the event.\n </p>\n <p>\n There has been much talk about CoCs in the last years, and I generally try\n to ignore such things as much as possible, just like\n <a href=\"https://en.wikipedia.org/wiki/Contributor_License_Agreement\">CLAs</a>\n and\n <a href=\"https://en.wikipedia.org/wiki/Non-disclosure_agreement\">NDAs</a>.\n But now it was that I should forced to follow one, and\n <a href=\"https://chat.indieweb.org/2018-10-07#t1538901858384200\">asked some questions about it in IRC</a>.\n </p>\n\n <ul><li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#levels\">Levels of rules</a></li>\n <li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#why\">Why?</a></li>\n <li>\n <a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#problems\">Problems</a>\n <ul><li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#safe\">People feel safe</a></li>\n <li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#care\">Somebody will care</a></li>\n <li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#ban\">Banning people is easier</a></li>\n <li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#common\">Common sense is not common</a></li>\n </ul></li>\n <li><a href=\"http://cweiske.de/tagebuch/code-of-conduct.htm#fin\">Fin</a></li>\n </ul><h2>Levels of rules</h2>\n <p>\n My understanding of rules in societies is that there are two levels:\n </p>\n <ol><li>Law</li>\n <li><a href=\"https://en.wikipedia.org/wiki/Common_sense\">Common sense</a> / good sense</li>\n </ol><p>\n If you break the law, police will come and arrest or fine you.\n </p>\n <p>\n If you do not follow good sense, people will yell at and/or avoid you.\n </p>\n <p>\n So, why do we need a third level?\n A \"Code of Conduct\", which also could be called \"house rules\"?\n </p>\n <p>\n If you add a Code of Conduct, you think that level 1 (law) does not help\n and level 2 (good sense) is not available/adhered to.\n </p>\n\n \n <h2>Why?</h2>\n <p>\n In the IRC discussion,\n <a href=\"https://rosemaryorchard.com/\">Rosemary Orchard</a>\n gave a couple of reasons for a CoC:\n </p>\n <ol><li>People feel safer if some rules are written down</li>\n <li>People know that somebody will care when they have a problem</li>\n <li>It is easier to ban people based on written rules</li>\n <li>\n At international communities/conferences, common sense is not actually\n \"common\" because of different backgrounds.\n </li>\n </ol><h2>Problems</h2>\n \n <h3>People feel safe</h3>\n <p>\n Reason 1, \"people feel safe\", follows the same reasoning that states follow\n when flooding public spaces with video surveillance.\n </p>\n <p>\n But just <em>feeling</em> safe does not actually <em>make</em> you safe.\n Video cameras do not make your life more safe,\n neither does a Code of Conduct.\n </p>\n\n\n <h3>Somebody will care</h3>\n <p>\n I'd have put this under \"good sense\", but that's obviously not enough.\n </p>\n\n\n <h3>Banning people is easier</h3>\n <p>\n The premise is that banning someone based on some written text is easier\n than referring to some nebulous common sense.\n </p>\n <p>\n I did realize that in the end, every Code of Conduct only exists to\n achieve one goal:\n Make it easy to ban people from some space, be it an online community\n or a conference.\n </p>\n\n\n <h3>Common sense is not common</h3>\n <p>\n This seems to be an easy argument:\n Because of diverse social backgrounds, members of an international community\n cannot assume that other members share the same common and good sense.\n </p>\n <p>\n If you follow this reasoning, then the rules written down in a Code of\n Conduct have to be very clear, so that people with different backgrounds\n can understand them without ambiguities.\n </p>\n <p>\n And this is where it all breaks:\n Instead of clear and unequivocal rules, the IndieWebCamp Code of Conduct\n (and probably all others, too) is full of soft words that can be\n bent in every direction:\n </p>\n <blockquote>\n <h4>Respectful behavior</h4>\n <ul><li>Be considerate, kind, constructive, and helpful.</li>\n <li>\n Avoid demeaning, discriminatory, harassing, hateful, or physically\n threatening behavior, speech, and imagery.\n </li>\n </ul><p>\n If the organizers determine that an event participant is behaving\n <strong>disrespectfully</strong>, the organizers may take any action they deem appropriate,\n up to and including expulsion and <strong>exclusion from the event</strong>\n without warning or refund.\n </p>\n </blockquote>\n <p>\n So what actually is \"demeaning\"?\n It's a very soft word that has no singular definition, and will mean totally\n different things depending on your background.\n </p>\n <p>\n The same applies to \"discriminatory\" and \"harassing\".\n Almost every joke discriminates some group, be it guests in a\n restaurant (German: Ober-Witze), types of animals or groups of people\n that are on the losing side of a joke.\n </p>\n <p>\n The Wikipedia definition of\n <a href=\"https://en.wikipedia.org/wiki/Harassment\">harassment</a>\n refers to common sense, which we can't rely on because of reason #4:\n </p>\n <blockquote>\n It is commonly understood as behavior that [...] embarrasses a person\n </blockquote>\n <p>\n IndieWebCamps have hacking days where people code together.\n Now when I point out some stupid bug in someone else's code,\n this might embarrass the person who wrote it.\n </p>\n <p>\n This already covers the Code of Conduct's definition of \"disrespectfully\",\n and bam, I'm kicked from the conference.\n </p>\n <p>\n Together with reason #2 (\"somebody will care\") this will eventually lead\n to overreaction:\n When someone complains based on the CoC, the organizers will know that people\n expect them to do something, because they themselves put their conference\n under the Code of Conduct.\n Common sense will be less likely to be applied in such situations.\n </p>\n\n\n <h2>Fin</h2>\n <p>\n A Code of Conduct is a set of rules to ban people.\n </p>\n <p>\n It is needed because people have so diverse backgrounds that no common sense\n exists.\n </p>\n <p>\n People with different backgrounds understand the rules differently,\n because they are soft instead of explicit.\n </p>\n <p>\n I will not attend the IndieWebCamp this year.\n </p>\n\n <a href=\"https://news.indieweb.org/en\"></a>",
"text": "I wanted to attend the\n IndieWebCamp Nuremberg this month,\n just as I did last year.\n While browsing the page for information, under \"Participating\" I saw a link\n to the \"Code of Conduct\"\n that one has to adhere to when attending the event.\n \n \n There has been much talk about CoCs in the last years, and I generally try\n to ignore such things as much as possible, just like\n CLAs\n and\n NDAs.\n But now it was that I should forced to follow one, and\n asked some questions about it in IRC.\n \n\n Levels of rules\n Why?\n \n Problems\n People feel safe\n Somebody will care\n Banning people is easier\n Common sense is not common\n \n Fin\n Levels of rules\n \n My understanding of rules in societies is that there are two levels:\n \n Law\n Common sense / good sense\n \n If you break the law, police will come and arrest or fine you.\n \n \n If you do not follow good sense, people will yell at and/or avoid you.\n \n \n So, why do we need a third level?\n A \"Code of Conduct\", which also could be called \"house rules\"?\n \n \n If you add a Code of Conduct, you think that level 1 (law) does not help\n and level 2 (good sense) is not available/adhered to.\n \n\n \n Why?\n \n In the IRC discussion,\n Rosemary Orchard\n gave a couple of reasons for a CoC:\n \n People feel safer if some rules are written down\n People know that somebody will care when they have a problem\n It is easier to ban people based on written rules\n \n At international communities/conferences, common sense is not actually\n \"common\" because of different backgrounds.\n \n Problems\n \n People feel safe\n \n Reason 1, \"people feel safe\", follows the same reasoning that states follow\n when flooding public spaces with video surveillance.\n \n \n But just feeling safe does not actually make you safe.\n Video cameras do not make your life more safe,\n neither does a Code of Conduct.\n \n\n\n Somebody will care\n \n I'd have put this under \"good sense\", but that's obviously not enough.\n \n\n\n Banning people is easier\n \n The premise is that banning someone based on some written text is easier\n than referring to some nebulous common sense.\n \n \n I did realize that in the end, every Code of Conduct only exists to\n achieve one goal:\n Make it easy to ban people from some space, be it an online community\n or a conference.\n \n\n\n Common sense is not common\n \n This seems to be an easy argument:\n Because of diverse social backgrounds, members of an international community\n cannot assume that other members share the same common and good sense.\n \n \n If you follow this reasoning, then the rules written down in a Code of\n Conduct have to be very clear, so that people with different backgrounds\n can understand them without ambiguities.\n \n \n And this is where it all breaks:\n Instead of clear and unequivocal rules, the IndieWebCamp Code of Conduct\n (and probably all others, too) is full of soft words that can be\n bent in every direction:\n \n \n Respectful behavior\n Be considerate, kind, constructive, and helpful.\n \n Avoid demeaning, discriminatory, harassing, hateful, or physically\n threatening behavior, speech, and imagery.\n \n \n If the organizers determine that an event participant is behaving\n disrespectfully, the organizers may take any action they deem appropriate,\n up to and including expulsion and exclusion from the event\n without warning or refund.\n \n \n \n So what actually is \"demeaning\"?\n It's a very soft word that has no singular definition, and will mean totally\n different things depending on your background.\n \n \n The same applies to \"discriminatory\" and \"harassing\".\n Almost every joke discriminates some group, be it guests in a\n restaurant (German: Ober-Witze), types of animals or groups of people\n that are on the losing side of a joke.\n \n \n The Wikipedia definition of\n harassment\n refers to common sense, which we can't rely on because of reason #4:\n \n \n It is commonly understood as behavior that [...] embarrasses a person\n \n \n IndieWebCamps have hacking days where people code together.\n Now when I point out some stupid bug in someone else's code,\n this might embarrass the person who wrote it.\n \n \n This already covers the Code of Conduct's definition of \"disrespectfully\",\n and bam, I'm kicked from the conference.\n \n \n Together with reason #2 (\"somebody will care\") this will eventually lead\n to overreaction:\n When someone complains based on the CoC, the organizers will know that people\n expect them to do something, because they themselves put their conference\n under the Code of Conduct.\n Common sense will be less likely to be applied in such situations.\n \n\n\n Fin\n \n A Code of Conduct is a set of rules to ban people.\n \n \n It is needed because people have so diverse backgrounds that no common sense\n exists.\n \n \n People with different backgrounds understand the rules differently,\n because they are soft instead of explicit.\n \n \n I will not attend the IndieWebCamp this year."
},
"name": "Code of Conduct and the IndieWebCamp N\u00fcrnberg 2018",
"post-type": "article",
"_id": "1210134",
"_source": "193",
"_is_read": true
}
I don’t know that you would want to use an external contact database, but two thoughts:
First, I’m hoping to add support for Micropub endpoints that support it so that Indigenous for iOS has the ability to “save an h-card” from a website you are on into your own nicknames cache.
Second, once you can easily save people’s h-cards into your nicknames cache, you can do like Aaron does and convert mentions to silo-specific mentions!
{
"type": "entry",
"published": "2018-10-16T07:41:48-04:00",
"summary": "I don\u2019t know that you would want to use an external contact database, but two thoughts:\nFirst, I\u2019m hoping to add support for Micropub endpoints that support it so that Indigenous for iOS has the ability to \u201csave an h-card\u201d from a website you are on into your own nicknames cache.\nSecond, once you can easily save people\u2019s h-cards into your nicknames cache, you can do like Aaron does and convert mentions to silo-specific mentions!",
"url": "https://eddiehinkle.com/2018/10/16/7/reply/",
"in-reply-to": [
"http://quickthoughts.jgregorymcverry.com/2018/10/16/aaronpk-eddiehinkle-could-something-like-the-indieweborg"
],
"content": {
"text": "I don\u2019t know that you would want to use an external contact database, but two thoughts:\n\nFirst, I\u2019m hoping to add support for Micropub endpoints that support it so that Indigenous for iOS has the ability to \u201csave an h-card\u201d from a website you are on into your own nicknames cache.\n\nSecond, once you can easily save people\u2019s h-cards into your nicknames cache, you can do like Aaron does and convert mentions to silo-specific mentions!",
"html": "<p>I don\u2019t know that you would want to use an external contact database, but two thoughts:</p>\n\n<p>First, I\u2019m hoping to add support for Micropub endpoints that support it so that Indigenous for iOS has the ability to \u201csave an h-card\u201d from a website you are on into your own nicknames cache.</p>\n\n<p>Second, once you can easily save people\u2019s h-cards into your nicknames cache, you can do like <a href=\"https://aaronparecki.com\">Aaron</a> does and convert mentions to silo-specific mentions!</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"http://quickthoughts.jgregorymcverry.com/2018/10/16/aaronpk-eddiehinkle-could-something-like-the-indieweborg": {
"type": "entry",
"url": "http://quickthoughts.jgregorymcverry.com/2018/10/16/aaronpk-eddiehinkle-could-something-like-the-indieweborg",
"name": "http://quickthoughts.jgregorymcverry.com/2018/10/16/aaronpk-eddiehinkle-could-something-like-the-indieweborg",
"post-type": "article"
}
},
"_id": "1207683",
"_source": "226",
"_is_read": true
}
Well the good news is because Webmention is data agnostic, while I agree microformats can be tricky, if a better solution pops up in the real world, we can easily shift to adopt it. As you said, we shouldnt go out and “try to invent a new spec” but if something makes sense and people try it out and it works, then webmention can always adjust. The webmention spec would never need to change, websites would just have to replace mf2 parsers with whatever the new parsing strategy is.
{
"type": "entry",
"published": "2018-10-16T07:27:10-04:00",
"summary": "Well the good news is because Webmention is data agnostic, while I agree microformats can be tricky, if a better solution pops up in the real world, we can easily shift to adopt it. As you said, we shouldnt go out and \u201ctry to invent a new spec\u201d but if something makes sense and people try it out and it works, then webmention can always adjust. The webmention spec would never need to change, websites would just have to replace mf2 parsers with whatever the new parsing strategy is.",
"url": "https://eddiehinkle.com/2018/10/16/6/reply/",
"in-reply-to": [
"https://www.kickscondor.com/comments/simple-specs/"
],
"content": {
"text": "Well the good news is because Webmention is data agnostic, while I agree microformats can be tricky, if a better solution pops up in the real world, we can easily shift to adopt it. As you said, we shouldnt go out and \u201ctry to invent a new spec\u201d but if something makes sense and people try it out and it works, then webmention can always adjust. The webmention spec would never need to change, websites would just have to replace mf2 parsers with whatever the new parsing strategy is.",
"html": "<p>Well the good news is because Webmention is data agnostic, while I agree microformats can be tricky, if a better solution pops up in the real world, we can easily shift to adopt it. As you said, we shouldnt go out and \u201ctry to invent a new spec\u201d but if something makes sense and people try it out and it works, then webmention can always adjust. The webmention spec would never need to change, websites would just have to replace mf2 parsers with whatever the new parsing strategy is.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://www.kickscondor.com/comments/simple-specs/": {
"type": "entry",
"url": "https://www.kickscondor.com/comments/simple-specs/",
"name": "https://www.kickscondor.com/comments/simple-specs/",
"post-type": "article"
}
},
"_id": "1207684",
"_source": "226",
"_is_read": true
}
Over the past few days I have again picked up the torch of fully implementing webmentions in Grav. It's a maddening pursuit, mostly because I don't really know what I'm doing (although I am getting fantastic help from the folks in the IndieWeb community). The details are pretty arcane, and although I am trying to keep a decent record of all the steps and missteps, a full write-up will have to wait. In the meantime, I'm up against all sorts of weird things that I don't fully understand. My main aim is to try and get a more consistent, more essential, set of data back about webmentions to this site. To do that, I need to persuade the plugin to use XRay, rather than the standard PHP microformat parser, which I started doing back in late May.
More this way ...
{
"type": "entry",
"published": "2018-10-16T17:58:49+02:00",
"summary": "Over the past few days I have again picked up the torch of fully implementing webmentions in Grav. It's a maddening pursuit, mostly because I don't really know what I'm doing (although I am getting fantastic help from the folks in the IndieWeb community). The details are pretty arcane, and although I am trying to keep a decent record of all the steps and missteps, a full write-up will have to wait. In the meantime, I'm up against all sorts of weird things that I don't fully understand. My main aim is to try and get a more consistent, more essential, set of data back about webmentions to this site. To do that, I need to persuade the plugin to use XRay, rather than the standard PHP microformat parser, which I started doing back in late May.\nMore this way ...",
"url": "https://www.jeremycherfas.net/blog/tantalising-pursuit-of-webmentions",
"name": "Tantalising pursuit of webmentions",
"content": {
"text": "Over the past few days I have again picked up the torch of fully implementing webmentions in Grav. It's a maddening pursuit, mostly because I don't really know what I'm doing (although I am getting fantastic help from the folks in the IndieWeb community). The details are pretty arcane, and although I am trying to keep a decent record of all the steps and missteps, a full write-up will have to wait. In the meantime, I'm up against all sorts of weird things that I don't fully understand. My main aim is to try and get a more consistent, more essential, set of data back about webmentions to this site. To do that, I need to persuade the plugin to use XRay, rather than the standard PHP microformat parser, which I started doing back in late May.\n\n More this way ...",
"html": "<p>Over the past few days I have again picked up the torch of fully implementing webmentions in Grav. It's a maddening pursuit, mostly because I don't really know what I'm doing (although I am getting fantastic help from the folks in the <a href=\"https://chat.indieweb.org\">IndieWeb community</a>). The details are pretty arcane, and although I am trying to keep a decent record of all the steps and missteps, a full write-up will have to wait. In the meantime, I'm up against all sorts of weird things that I don't fully understand. My main aim is to try and get a more consistent, more essential, set of data back about webmentions to this site. To do that, I need to persuade the plugin to use XRay, rather than the standard PHP microformat parser, which I started doing <a href=\"https://www.jeremycherfas.net/blog/there-s-no-success-like-failure\">back in late May</a>.</p>\n\n <p><a href=\"https://www.jeremycherfas.net/blog/tantalising-pursuit-of-webmentions\">More this way ...</a></p>"
},
"author": {
"type": "card",
"name": "Jeremy Cherfas",
"url": "https://jeremycherfas.net",
"photo": "https://aperture-proxy.p3k.io/d86af7b89af940fd08d45409035f1d24a547840a/68747470733a2f2f7777772e6a6572656d79636865726661732e6e65742f757365722f706c7567696e732f61626f75746d652f6173736574732f617661746172732f7a6f6f742e6a7067"
},
"post-type": "article",
"_id": "1207456",
"_source": "202",
"_is_read": true
}
I will be giving a session at @drupalcampbe about #indieweb ! A gentle 101 intro about the mission, specs and what the #drupal module already supports. Spoiler: a lot!
{
"type": "entry",
"published": "2018-10-05T10:24:51+02:00",
"url": "https://realize.be/notes/1582",
"content": {
"text": "I will be giving a session at @drupalcampbe about #indieweb ! A gentle 101 intro about the mission, specs and what the #drupal module already supports. Spoiler: a lot!",
"html": "<p>I will be giving a session at @drupalcampbe about #indieweb ! A gentle 101 intro about the mission, specs and what the #drupal module already supports. Spoiler: a lot!</p>"
},
"post-type": "note",
"_id": "1206204",
"_source": "213",
"_is_read": true
}
New release for Indigenous includes saving notes, articles and replies as draft so you can publish them later! #indieweb
{
"type": "entry",
"published": "2018-10-01T23:32:43+02:00",
"url": "https://realize.be/notes/1573",
"content": {
"text": "New release for Indigenous includes saving notes, articles and replies as draft so you can publish them later! #indieweb"
},
"post-type": "note",
"_id": "1206207",
"_source": "213",
"_is_read": true
}