Nice to hear you are enjoying the series! (It turns out to be a series.) It also feels really good to have finally found a form again where I can cycle between writing code and writing blog posts about the code.
Looking forward to read your article && yaay it worked!
Edit: lol, next topic really is Webmentions: I had to manually send this one because I am certainly not parsing HTML with regex (I would never) and your rel
has no quotes around it.
{
"type": "entry",
"published": "2021-11-18T21:33:06+0000",
"url": "https://seblog.nl/2021/11/18/3/nice-to-hear-you-are-enjoying",
"in-reply-to": [
"https://hacdias.com/2021/11/18/txaznaajbj"
],
"content": {
"text": "Nice to hear you are enjoying the series! (It turns out to be a series.) It also feels really good to have finally found a form again where I can cycle between writing code and writing blog posts about the code.\nLooking forward to read your article && yaay it worked!\nEdit: lol, next topic really is Webmentions: I had to manually send this one because I am certainly not parsing HTML with regex (I would never) and your rel has no quotes around it.",
"html": "<p>Nice to hear you are enjoying the series! (It turns out to be a series.) It also feels really good to have finally found a form again where I can cycle between writing code and writing blog posts about the code.</p>\n<p>Looking forward to read your article && yaay it worked!</p>\n<p><strong>Edit</strong>: lol, next topic really is Webmentions: I had to manually send this one because I am certainly not parsing HTML with regex (I would never) and your <code>rel</code> has no quotes around it.</p>"
},
"author": {
"type": "card",
"name": "Sebastiaan Andeweg",
"url": "https://seblog.nl/",
"photo": "https://seblog.nl/photo.jpg"
},
"post-type": "reply",
"_id": "25171490",
"_source": "1366",
"_is_read": true
}
Next up must be Webmentions, I feel. I just posted this article with a lot of backlinks to old posts, but since I send all Webmentions in a synchronous way on first-post-visit, it took ages, and I actually got a 502 Bad Gateway out of my site. But I also need weekend, so we will see.
{
"type": "entry",
"published": "2021-11-18T20:24:21+0000",
"url": "https://seblog.nl/2021/11/18/2/next-up-webmentions",
"category": [
"yak"
],
"content": {
"text": "Next up must be Webmentions, I feel. I just posted this article with a lot of backlinks to old posts, but since I send all Webmentions in a synchronous way on first-post-visit, it took ages, and I actually got a 502 Bad Gateway out of my site. But I also need weekend, so we will see.",
"html": "<p>Next up must be Webmentions, I feel. I just posted <a href=\"https://seblog.nl/2021/11/18/1/indieauth-without-indieauth-com\">this article</a> with a lot of backlinks to old posts, but since I send all Webmentions in a synchronous way on first-post-visit, it took ages, and I actually got a 502 Bad Gateway out of my site. But I also need weekend, so we will see.</p>"
},
"author": {
"type": "card",
"name": "Sebastiaan Andeweg",
"url": "https://seblog.nl/",
"photo": "https://seblog.nl/photo.jpg"
},
"post-type": "note",
"_id": "25171491",
"_source": "1366",
"_is_read": true
}
{
"type": "entry",
"published": "2021-11-18T20:18:05+0000",
"url": "https://seblog.nl/2021/11/18/1/indieauth-without-indieauth-com",
"category": [
"yak",
"indieauth"
],
"name": "IndieAuth without IndieAuth.com",
"content": {
"text": "In February 2017, I added the ability for other people to log in to my site, both via IndieAuth and Twitter. Since June 2019 this feature is more useful, as I moved all my checkins to being \u2018private\u2019, meaning there is actually something to see (albeit sparsely posted).\nFor this, I used the now outdated and deprecated service IndieAuth.com, which back then was also used to log in to the IndieWeb wiki. Due to the confusion between IndieAuth.com (the service) and IndieAuth (the protocol), a new project called IndieLogin was started and the IndieWeb wiki moved to that one. Since it didn\u2019t offer that login service to others, as IndieAuth.com did, I never switched.\nSince this week I have a new IndieAuth endpoint for myself. (Meaning: a place I can use to prove my own identity to others.) Unfortunately, it is not compatible with the outdated IndieAuth.com, so I could not use it to prove my identity to my own site. Because this felt wrong (and because I had the IndieAuth flow in my head again now), I decided that my site needed to do that part of IndieAuth on it\u2019s own as well.\nSince I was at it, I also have Twitter login working via the new flow. That was easier, because the library support was more plug-and-play.\nJuggling with cookies\nLast week I wrote about my new setup where I run two applications, the old PHP and the new Elixir, behind an unusual NGINX configuration. For the aforementioned feature of authentication, I had to create even a bigger beast.\nAll the posts, and all the logic for showing or hiding private posts, are still in PHP. The new authentication is in Elixir. Both ends are storing the information about the current logged-in user in session cookies. How do I merge those two into one user experience?\nLuckily, since both applications run under the same domain, the browser is actually unaware of the fact that there are two apps. It just sends all cookies back.\nSo, in PHP I ask for all headers, look for a cookie-one that is named _yak_key, and if it is there, it makes a direct localhost call to Yak, the Elixir server, with that cookie. Yak exposes one route that just returns the currently logged-in user as a JSON. If that call returns a user, PHP can set a cookie of its own.\nThen for the logout, PHP used to redirect to the homepage, but now it redirects to the page that logs you out of Yak, which redirects to the homepage.\nAt some point this setup will change again, but for now it seems to me as a good way to make one further step in the features I want to support in the new version of my site, while keeping the old one running.\nOh yeah, you may hunt down that localhost-call that checks the login status. It is actually exposed to the outside world too. But if you can provide it with a cookie for a person that is not you, that person and I have a problem anyway, regardless of you knowing the endpoint.",
"html": "<p>In <a href=\"https://seblog.nl/2017/02/11/3/day-27-private-posts\">February 2017</a>, I added the ability for other people to log in to my site, both via <a href=\"https://indieauth.net\">IndieAuth</a> and Twitter. Since <a href=\"https://seblog.nl/2019/06/01/1/private-posts-move-of-checkins\">June 2019</a> this feature is more useful, as I moved all my checkins to being \u2018private\u2019, meaning there is actually something to see (albeit sparsely posted).</p>\n<p>For this, I used the now outdated and deprecated service <a href=\"https://indieauth.com\">IndieAuth.com</a>, which back then was also used to log in to the <a href=\"https://indieweb.org\">IndieWeb wiki</a>. Due to the confusion between IndieAuth.com (the service) and IndieAuth (the protocol), a new project called <a href=\"https://indielogin.com\">IndieLogin</a> was started and the IndieWeb wiki moved to that one. Since it didn\u2019t offer that login service to others, as IndieAuth.com did, I never switched.</p>\n<p>Since this week I have a new IndieAuth endpoint for myself. (Meaning: a place I can use to prove my own identity to others.) Unfortunately, it is not compatible with the outdated IndieAuth.com, so I could not use it to prove my identity to my own site. Because this felt wrong (and because I had the IndieAuth flow in my head again now), I decided that my site needed to do that part of IndieAuth on it\u2019s own as well.</p>\n<p>Since I was at it, I also have Twitter login working via the new flow. That was easier, because the library support was more plug-and-play.</p>\n<h2>Juggling with cookies</h2>\n<p>Last week I <a href=\"https://seblog.nl/2021/11/12/1/yak-strangling-php-with-phoenix-and-nginx\">wrote about</a> my new setup where I run two applications, the old PHP and the new Elixir, behind an unusual NGINX configuration. For the aforementioned feature of authentication, I had to create even a bigger beast.</p>\n<p>All the posts, and all the logic for showing or hiding private posts, are still in PHP. The new authentication is in Elixir. Both ends are storing the information about the current logged-in user in session cookies. How do I merge those two into one user experience?</p>\n<p>Luckily, since both applications run under the same domain, the browser is actually unaware of the fact that there are two apps. It just sends all cookies back.</p>\n<p>So, in PHP I ask for all headers, look for a cookie-one that is named <code>_yak_key</code>, and if it is there, it makes a direct localhost call to Yak, the Elixir server, with that cookie. Yak exposes one route that just returns the currently logged-in user as a JSON. If that call returns a user, PHP can set a cookie of its own.</p>\n<p>Then for the logout, PHP used to redirect to the homepage, but now it redirects to the page that logs you out of Yak, which redirects to the homepage.</p>\n<p>At some point this setup will change again, but for now it seems to me as a good way to make one further step in the features I want to support in the new version of my site, while keeping the old one running.</p>\n<p>Oh yeah, you may hunt down that localhost-call that checks the login status. It is actually exposed to the outside world too. But if you can provide it with a cookie for a person that is not you, that person and I have a problem anyway, regardless of you knowing the endpoint.</p>"
},
"author": {
"type": "card",
"name": "Sebastiaan Andeweg",
"url": "https://seblog.nl/",
"photo": "https://seblog.nl/photo.jpg"
},
"post-type": "article",
"_id": "25171492",
"_source": "1366",
"_is_read": true
}
{
"type": "entry",
"name": "About",
"content": {
"text": "Taking a cross country flight\n\n\n\nHowdy! Let me introduce myself; my name is Marcus Povey, and I\u2019m a senior full stack software engineer, currently based in Europe. My clients include software houses, financial and governmental institutions, news agencies, and companies both large and small.\n\n\n\nI have helped build life saving medical software, secure messaging systems, high performance video platforms, and Open Source projects used around the world.\n\n\n\nMost recently, I\u2019ve been heading up a team of skilled software engineers developing software to facilitate and deliver cutting edge science across Europe, primarily in the fields of structural biology. I collaborate with some of the most important centres of scientific excellence, across Europe and beyond. I am involved in some of the most important and large scale EU Open Access projects developing new ways to access and reuse scientific research, including helping with the response to the global COVID-19 pandemic. I have spoken at large scale scientific conferences, and have helped shape EU data sharing policy.\n\n\n\nPreviously, I was the technical lead on the Elgg project, an Open Source social networking platform. This software is used by companies, universities and governments around the world to improve the efficiency of communication both internally and externally. I am also involved in the development of the Known platform, a modern social publishing platform that incorporates many Indieweb technologies.\n\n\n\nIf you\u2019re interested in knowing more about my professional experience, you can check out my resume. I am also available to hire!\n\n\n\n\u00bb Work with me!\nOutside of my professional life, I am passionate about travel. I live a fairly nomadic existence, and am always interested in exploring and living somewhere new.\u00a0\n\n\n\nI also collect hobbies like precious shinies.\n\n\n\n\n\n\n\nRight now I am training a number of martial arts (currently Judo, Capoeira & Boxing), I enjoy rock music, power lifting, archery, black smithing, I climb when I can, ride motorcycles, and pilot light aircraft.\n\n\n\nLet\u2019s go!",
"html": "<a href=\"https://www.marcus-povey.co.uk/wp-content/68FFE06B-77C0-4F93-BF28-9D312D196BAB-300x300-1.jpg\"><img width=\"300\" height=\"300\" src=\"https://www.marcus-povey.co.uk/wp-content/68FFE06B-77C0-4F93-BF28-9D312D196BAB-300x300-1.jpg\" alt=\"\" /></a>Taking a cross country flight\n\n\n\n<p>Howdy! Let me introduce myself; my name is <a href=\"https://mapkyca.info\">Marcus Povey</a>, and I\u2019m a senior full stack software engineer, currently based in Europe. My clients include software houses, financial and governmental institutions, news agencies, and companies both large and small.</p>\n\n\n\n<p>I have helped build life saving medical software, secure messaging systems, high performance video platforms, and Open Source projects used around the world.</p>\n\n\n\n<p>Most recently, I\u2019ve been heading up a team of skilled software engineers developing software to facilitate and deliver cutting edge science across Europe, primarily in the fields of structural biology. I collaborate with some of the most important centres of scientific excellence, across Europe and beyond. I am involved in some of the most important and large scale EU Open Access projects developing new ways to access and reuse scientific research, including helping with the response to the global COVID-19 pandemic. I have spoken at large scale scientific conferences, and have helped shape EU data sharing policy.</p>\n\n\n\n<p>Previously, I was the technical lead on the <a href=\"https://elgg.org\">Elgg</a> project, an Open Source social networking platform. This software is used by companies, universities and governments around the world to improve the efficiency of communication both internally and externally. I am also involved in the development of the <a href=\"https://github.com/idno/known\">Known</a> platform, a modern social publishing platform that incorporates many <a href=\"https://indieweb.org\">Indieweb</a> technologies.</p>\n\n\n\n<p>If you\u2019re interested in knowing more about my professional experience, you can check out my <a href=\"https://mapkyca.info\">resume</a>. I am also <a href=\"https://www.marcus-povey.co.uk/hire/\">available to hire</a>!</p>\n\n\n\n<strong>\u00bb <a href=\"https://www.marcus-povey.co.uk/hire/\">Work with me!</a></strong>\n<p>Outside of my professional life, I am passionate about travel. I live a fairly nomadic existence, and am always interested in exploring and living somewhere new.\u00a0</p>\n\n\n\n<p>I also collect hobbies like precious shinies.</p>\n\n\n\n\n\n\n\n<p>Right now I am training a number of martial arts (currently Judo, Capoeira & Boxing), I enjoy rock music, power lifting, archery, black smithing, I climb when I can, ride motorcycles, and pilot light aircraft.</p>\n\n\n\n<p><a href=\"https://www.marcus-povey.co.uk/hire/\"><strong>Let\u2019s go!</strong></a></p>"
},
"post-type": "article",
"_id": "25155169",
"_source": "244",
"_is_read": true
}
{
"type": "entry",
"published": "2021-11-16T08:52:38+0000",
"url": "https://seblog.nl/2021/11/16/1/incorrect-indieauth-redirect-uri-ux",
"category": [
"yak",
"indieweb"
],
"syndication": [
"https://news.indieweb.org/en/seblog.nl/2021/11/16/1/incorrect-indieauth-redirect-uri-ux"
],
"name": "Showing incorrect IndieAuth redirect_uri to the user",
"content": {
"text": "Last Thursday I started using my new IndieAuth endpoint, which I can use authorize apps build by others (like the Quill Micropub client), to do stuff with my site (like posting this blogpost for example). In the following weekend I added a lot more validations than just my password, making it a safer endpoint.\nOne of these validations is the redirect_uri. My previous endpoint already showed this to me on the login-page, so I could manually inspect it, which is a good practice. The spec, however, describes that one should fetch the client_id (which is a URL) and look for a link with the rel-value of `rel=\"redirect_uri\", which can be either in the HTML or in the HTTP Header.\nSo this is what it (currently) normally looks like:\n\nAnd this is what it looks like when the redirect_uri differs from scheme, domain and/or port, and is also not present in at the client_id.\n\nNote that it is okay for Quill not to advertise another redirect_uri, for it is redirecting to a URL with the same scheme, domain and port. It only needs to add the link if it wants a URL where one of these are different. It is now clearer that someone who is not Quill is trying to steal a token.",
"html": "<p>Last Thursday I started using my new <a href=\"https://indieauth.net\">IndieAuth</a> endpoint, which I can use authorize apps build by others (like the <a href=\"https://quill.p3k.io\">Quill</a> Micropub client), to do stuff with my site (like posting this blogpost for example). In the following weekend I added a lot more validations than just my password, making it a safer endpoint.</p>\n<p>One of these validations is the <code>redirect_uri</code>. My previous endpoint already showed this to me on the login-page, so I could manually inspect it, which is a good practice. The spec, however, describes that one should fetch the <code>client_id</code> (which is a URL) and look for a link with the rel-value of `rel=\"redirect_uri\", which can be either in the HTML or in the HTTP Header.</p>\n<p>So this is what it (currently) normally looks like:</p>\n<p><img src=\"https://seblog.nl/temp/media-endpoint/f14549-correct-callback.png\" alt=\"Image showing the redirect_uri in grey.\" /></p>\n<p>And this is what it looks like when the <code>redirect_uri</code> differs from scheme, domain and/or port, and is also not present in at the client_id.</p>\n<p><img src=\"https://seblog.nl/temp/media-endpoint/13f6ca-incorrect-callback.png\" alt=\"Image showing the redirect_uri in red and with explanation, plus the discovered redirect_uri.\" /></p>\n<p>Note that it is okay for Quill not to advertise another <code>redirect_uri</code>, for it is redirecting to a URL with the same scheme, domain and port. It only needs to add the link if it wants a URL where one of these are different. It is now clearer that someone who is not Quill is trying to steal a token.</p>"
},
"author": {
"type": "card",
"name": "Sebastiaan Andeweg",
"url": "https://seblog.nl/",
"photo": "https://seblog.nl/photo.jpg"
},
"post-type": "article",
"_id": "25101550",
"_source": "1366",
"_is_read": true
}
{
"type": "entry",
"published": "2021-11-12T20:04:20+0000",
"url": "https://seblog.nl/2021/11/12/1/yak-strangling-php-with-phoenix-and-nginx",
"category": [
"yak"
],
"name": "Yak, strangling PHP with Phoenix and NGINX",
"content": {
"text": "At the time of writing this blogpost, my site is written in PHP, and most of the code is many years old. One could call it a legacy application: I was not very good at organising code back when I started it, so it is a bit of a mess.\nLike any legacy application, rewriting it would be costly. There are many features I don\u2019t want to lose, but at the same time I don\u2019t want to lock myself up and rewrite them all before I can show and use any work. This kind of \u2018Big Bang release\u2019 would eat up all my free time for the next months and my motivation probably won\u2019t make it all the way through.\nA Yak to shave\nYesterday I attended the first IndieWebCamp since \u2018March 2020\u2019 and I didn\u2019t want to come empty handed. I forced myself to start a new project called Yak.\nThis is actually the fifth project called \u2018Yak\u2019 on my system, but it\u2019s the first one I actually deployed. All the Yak-projects focus on a different part of the app, since there is always something you think you should do first before the rest can start.\nThe newest and deployed Yak consists of a new IndieAuth endpoint. I was able to shave off this part since IndieAuth tries to be decoupled from the rest of the site: its endpoint might even be on a different domain.\nI didn\u2019t go that route though: I decided to strangle.\nThe simple strangle\nWith \u2018strangle\u2019 I refer to the \u2018Strangler Pattern\u2019, after the now more friendly(?) Named term \u2019Strangler Fig Application\u2019 by Martin Fowler. This plant grows around another tree, slowly taking over its shape and killing it in the process, so that eventually, all that remains is the fig.\nIn terms of Seblog.nl, I would like Yak to take over more and more features from the PHP-version, until finally Yak is my new CMS. I say \u2018PHP-version\u2019, be because yes, Yak is written in Elixir now. How would I go about taking over features then? My first attempt was this:\nindex index.html index.php;\n\nlocation /auth {\n # ... proxy headers\n proxy_pass http://localhost:4001;\n}\n\nlocation / {\n try_files $uri $uri/ index.php$is_args$query_string;\n}\n\nlocation ~ \\.php$ {\n fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;\n fastcgi_index /var/www/seblog.nl/index.php;\n fastcgi_param SCRIPT_FILENAME $request_filename;\n fastcgi_param PATH_INFO $fastcgi_script_name;\n include fastcgi_params;\n}\nThat\u2019s a pretty normal PHP setup, but with one path as a proxy. Yak is listening to port 4001 and NGINX sends all traffic for /auth and sub-folders to it. (A firewall keeps visitors for 4001 from outside away, don\u2019t worry.) This way I can have my IndieAuth endpoint be in a different application while still maintaining one domain to the outside.\nBut since this is my hobby project, I can get niftier.\nProxy all the things\nThe IndieAuth route is fairly well scoped and easily separated from the rest of the app. For creating posts via Micropub, I can also separate a route and then store the created posts in the same file folder (or database) since both apps run on the same machine. But not all features are that easily separated.\nTo make it myself easier to add new routes to Yak, I created the following monster:\nindex index.html;\n\nlocation @yak {\n # ... proxy headers\n proxy_pass http://localhost:4001;\n proxy_intercept_errors on;\n error_page 404 = /index.php$is_args$query_string;\n error_page 502 = /index.php$is_args$query_string;\n}\n\nlocation / {\n try_files $uri @yak;\n}\n\nlocation ~ \\.php$ {\n # same as previous PHP\n}\nSince Yak is pretty fast (the Phoenix framework logs its response times in microseconds instead of milliseconds), I decided to just route all traffic through Yak. If Yak has the answer, that answer will be the final answer. But all routes that get a 404 Not Found error from Yak, are given to PHP afterwards.\nThis way the old site still functions: PHP is not even aware that someone has looked at the request before it. I also added the 502 Bad Gateway just in case Yak is down, which I expect only to happen for brief moments during big configuration changing deployments.\nA few details to note: it all starts by adding @yak as a final location to try_files. Only the last location can be a virtual one, otherwise I would have put PHP directly in that list. I did remove the $uri/ and removed index.php from the index directive at the top: without this the homepage was not delivered to Yak.\nThe other crucial bit is the proxy_intercept_errors on, because that traps the errors in the proxy and enables you to add cases for certain errors. With error_page 404 = /index.php$is_args$query_string I send them to PHP. Other errors from Yak, like 401 and 403, are still just rendered as they came from Yak.\nFixing my POST to Micropub\nWhile the above does work for most of my site, it broke my Webmentions and Micropub. (Yes, I tried posting this a few hours ago.) The previously described method makes all requests in PHP come in as GET, which makes sense for rendering an error page.\nAfter a lot of trial and error, reading NGINX documentation and even trying to get Yak to proxy, I decided to localise the few POST requests I needed to be PHP and added those explicit in NGINX.\nlocation /webmention {\n try_files $uri $uri/ /index.php$is_args$args;\n}\nlocation /micropub {\n try_files $uri $uri/ /index.php$is_args$args;\n}\nOnce I moved these endpoints to Yak, I can remove them from my NGINX.",
"html": "<p>At the time of writing this blogpost, my site is written in PHP, and most of the code is many years old. One could call it a legacy application: I was not very good at organising code back when I started it, so it is a bit of a mess.</p>\n<p>Like any legacy application, rewriting it would be costly. There are many features I don\u2019t want to lose, but at the same time I don\u2019t want to lock myself up and rewrite them all before I can show and use any work. This kind of \u2018Big Bang release\u2019 would eat up all my free time for the next months and my motivation probably won\u2019t make it all the way through.</p>\n<h2>A Yak to shave</h2>\n<p>Yesterday I attended the <a href=\"https://events.indieweb.org/2021/11/indiewebcamp-d%C3%BCsseldorf-Z6z8DpkikdxI\">first IndieWebCamp since \u2018March 2020\u2019</a> and I didn\u2019t want to come empty handed. I forced myself to start a new project called Yak.</p>\n<p>This is actually the fifth project called \u2018Yak\u2019 on my system, but it\u2019s the first one I actually deployed. All the Yak-projects focus on a different part of the app, since there is always something you think you should do first before the rest can start.</p>\n<p>The newest and deployed Yak consists of a new <a href=\"https://indieauth.net/\">IndieAuth</a> endpoint. I was able to shave off this part since IndieAuth tries to be decoupled from the rest of the site: its endpoint might even be on a different domain.</p>\n<p>I didn\u2019t go that route though: I decided to strangle.</p>\n<h2>The simple strangle</h2>\n<p>With \u2018strangle\u2019 I refer to the \u2018Strangler Pattern\u2019, after the now more friendly(?) Named term <a href=\"https://martinfowler.com/bliki/StranglerFigApplication.html\">\u2019Strangler Fig Application\u2019</a> by Martin Fowler. This plant grows around another tree, slowly taking over its shape and killing it in the process, so that eventually, all that remains is the fig.</p>\n<p>In terms of Seblog.nl, I would like Yak to take over more and more features from the PHP-version, until finally Yak is my new CMS. I say \u2018PHP-version\u2019, be because yes, Yak is written in Elixir now. How would I go about taking over features then? My first attempt was this:</p>\n<pre><code>index index.html index.php;\n\nlocation /auth {\n # ... proxy headers\n proxy_pass http://localhost:4001;\n}\n\nlocation / {\n try_files $uri $uri/ index.php$is_args$query_string;\n}\n\nlocation ~ \\.php$ {\n fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;\n fastcgi_index /var/www/seblog.nl/index.php;\n fastcgi_param SCRIPT_FILENAME $request_filename;\n fastcgi_param PATH_INFO $fastcgi_script_name;\n include fastcgi_params;\n}</code></pre>\n<p>That\u2019s a pretty normal PHP setup, but with one path as a proxy. Yak is listening to port 4001 and NGINX sends all traffic for <code>/auth</code> and sub-folders to it. (A firewall keeps visitors for 4001 from outside away, don\u2019t worry.) This way I can have my IndieAuth endpoint be in a different application while still maintaining one domain to the outside.</p>\n<p>But since this is my hobby project, I can get niftier.</p>\n<h2>Proxy all the things</h2>\n<p>The IndieAuth route is fairly well scoped and easily separated from the rest of the app. For creating posts via Micropub, I can also separate a route and then store the created posts in the same file folder (or database) since both apps run on the same machine. But not all features are that easily separated.</p>\n<p>To make it myself easier to add new routes to Yak, I created the following monster:</p>\n<pre><code>index index.html;\n\nlocation @yak {\n # ... proxy headers\n proxy_pass http://localhost:4001;\n proxy_intercept_errors on;\n error_page 404 = /index.php$is_args$query_string;\n error_page 502 = /index.php$is_args$query_string;\n}\n\nlocation / {\n try_files $uri @yak;\n}\n\nlocation ~ \\.php$ {\n # same as previous PHP\n}</code></pre>\n<p>Since Yak is pretty fast (the Phoenix framework logs its response times in microseconds instead of milliseconds), I decided to just route all traffic through Yak. If Yak has the answer, that answer will be the final answer. But all routes that get a <code>404 Not Found</code> error from Yak, are given to PHP afterwards.</p>\n<p>This way the old site still functions: PHP is not even aware that someone has looked at the request before it. I also added the <code>502 Bad Gateway</code> just in case Yak is down, which I expect only to happen for brief moments during big configuration changing deployments.</p>\n<p>A few details to note: it all starts by adding <code>@yak</code> as a final location to <code>try_files</code>. Only the last location can be a virtual one, otherwise I would have put PHP directly in that list. I did remove the <code>$uri/</code> and removed <code>index.php</code> from the <code>index</code> directive at the top: without this the homepage was not delivered to Yak.</p>\n<p>The other crucial bit is the <code>proxy_intercept_errors on</code>, because that traps the errors in the proxy and enables you to add cases for certain errors. With <code>error_page 404 = /index.php$is_args$query_string</code> I send them to PHP. Other errors from Yak, like 401 and 403, are still just rendered as they came from Yak.</p>\n<h2>Fixing my POST to Micropub</h2>\n<p>While the above does work for most of my site, it broke my Webmentions and Micropub. (Yes, I tried posting this a few hours ago.) The previously described method makes all requests in PHP come in as GET, which makes sense for rendering an error page.</p>\n<p>After a lot of trial and error, reading NGINX documentation and even trying to get Yak to proxy, I decided to localise the few POST requests I needed to be PHP and added those explicit in NGINX.</p>\n<pre><code>location /webmention {\n try_files $uri $uri/ /index.php$is_args$args;\n}\nlocation /micropub {\n try_files $uri $uri/ /index.php$is_args$args;\n}</code></pre>\n<p>Once I moved these endpoints to Yak, I can remove them from my NGINX.</p>"
},
"author": {
"type": "card",
"name": "Sebastiaan Andeweg",
"url": "https://seblog.nl/",
"photo": "https://seblog.nl/photo.jpg"
},
"post-type": "article",
"_id": "25101551",
"_source": "1366",
"_is_read": true
}
{
"type": "entry",
"published": "2021-03-31T19:49:24+0000",
"url": "https://seblog.nl/2021/03/31/1/homebrew-website-club-london",
"category": [
"indieweb"
],
"name": "Homebrew Website Club London",
"content": {
"text": "So, I am not in London and I am not even in the precise timezone as London, but since The Situation is still keeping us home, I got to attend Homebrew Website Club London.\nIt was mostly just some chatting about smoke detectors, automated blinds and visits to city water reservoirs, as one does on a HWC. We had a few on-topic points as well.\nI told about the upcoming birthday of Seblog.nl, tomorrow, which got us down the path of looking up old versions of websites. Much is saved, but many things are lost as well. One thing we came to: if you are starting to code your own website, please learn how to use version control as soon as possible. I (and others) have lost old versions of our sites because we kept overwriting the old files with new changes. If I had discovered Git (or any other version control) earlier, I would have had the oldest versions still.\nAs a note to myself: I should read Peter's article that he mentioned, which is about this 'content archeology': bringing back old home-pages. I doubt I have enough time to excavate my own first version of Seblog.nl before tomorrow.\nCalum also showed his new bookshelf page. It reminded me of my own page called /bieb (short Dutch for 'library'), and now I want to revisit that page as well. The past month, I've been playing around with Obsidian and this would be one of those places where my site could integrate with it. (Both Obsidian and the current iteration of my site run on raw text files.)\nI also shared some of my plans around this integration but I am not ready to share those here. (Most of my projects become vaporware, sadly.) However, I feel encouraged that my idea was not totally a bad idea. (Only slightly.) That's why I like going to HWC's: they spark ideas and / or bring them further.",
"html": "<p>So, I am not in London and I am not even in the precise timezone as London, but since The Situation is still keeping us home, I got to attend <a href=\"https://events.indieweb.org/2021/03/homebrew-website-club-europe-london-wYwkGmxUeyO1\">Homebrew Website Club London</a>.</p>\n<p>It was mostly just some chatting about smoke detectors, automated blinds and visits to <a href=\"https://david.shanske.com/2021/03/31/visiting-the-ashokan-reservoir/\">city water reservoirs</a>, as one does on a HWC. We had a few on-topic points as well.</p>\n<p>I told about the upcoming birthday of Seblog.nl, tomorrow, which got us down the path of looking up old versions of websites. Much is saved, but many things are lost as well. One thing we came to: if you are starting to code your own website, please learn how to use version control as soon as possible. I (and others) have lost old versions of our sites because we kept overwriting the old files with new changes. If I had discovered Git (or any other version control) earlier, I would have had the oldest versions still.</p>\n<p>As a note to myself: I should read <a href=\"https://petermolnar.net/article/content-archeology/\">Peter's article</a> that he mentioned, which is about this 'content archeology': bringing back old home-pages. I doubt I have enough time to excavate my own first version of Seblog.nl before tomorrow.</p>\n<p>Calum also showed his new <a href=\"https://calumryan.com/bookshelf\">bookshelf page</a>. It reminded me of my own page called <a href=\"https://seblog.nl/bieb\">/bieb</a> (short Dutch for 'library'), and now I want to revisit that page as well. The past month, I've been playing around with <a href=\"https://obsidian.md/\">Obsidian</a> and this would be one of those places where my site could integrate with it. (Both Obsidian and the current iteration of my site run on raw text files.)</p>\n<p>I also shared some of my plans around this integration but I am not ready to share those here. (Most of my projects become vaporware, sadly.) However, I feel encouraged that my idea was not totally a bad idea. (Only slightly.) That's why I like going to HWC's: they spark ideas and / or bring them further.</p>"
},
"author": {
"type": "card",
"name": "Sebastiaan Andeweg",
"url": "https://seblog.nl/",
"photo": "https://seblog.nl/photo.jpg"
},
"post-type": "note",
"_id": "25101552",
"_source": "1366",
"_is_read": true
}
attending @IndieWebCamp #Düsseldorf!
🗓 11/11
📍 #Zentralbibliothek
🎟 https://2021.indieweb.org/dusseldorf
On holiday in Germany, popped over to see friends @btconf & help with the #IndieWebCamp side-event!
More on the #IndieWeb wiki: https://indieweb.org/2021/D%C3%BCsseldorf
{
"type": "entry",
"published": "2021-11-11 03:38-0800",
"rsvp": "yes",
"url": "http://tantek.com/2021/315/t1/indiewebcamp-dusseldorf",
"category": [
"D",
"Zentralbibliothek",
"IndieWebCamp",
"IndieWeb"
],
"in-reply-to": [
"https://2021.indieweb.org/dusseldorf"
],
"content": {
"text": "attending @IndieWebCamp #D\u00fcsseldorf!\n\ud83d\uddd3 11/11\n\ud83d\udccd #Zentralbibliothek\n\ud83c\udf9f https://2021.indieweb.org/dusseldorf\n\nOn holiday in Germany, popped over to see friends @btconf & help with the #IndieWebCamp side-event!\n\nMore on the #IndieWeb wiki: https://indieweb.org/2021/D%C3%BCsseldorf",
"html": "attending <a class=\"h-cassis-username\" href=\"https://twitter.com/IndieWebCamp\">@IndieWebCamp</a> #<span class=\"p-category\">D</span>\u00fcsseldorf!<br />\ud83d\uddd3 11/11<br />\ud83d\udccd #<span class=\"p-category\">Zentralbibliothek</span><br />\ud83c\udf9f <a href=\"https://2021.indieweb.org/dusseldorf\">https://2021.indieweb.org/dusseldorf</a><br /><br />On holiday in Germany, popped over to see friends <a class=\"h-cassis-username\" href=\"https://twitter.com/btconf\">@btconf</a> & help with the #<span class=\"p-category\">IndieWebCamp</span> side-event!<br /><br />More on the #<span class=\"p-category\">IndieWeb</span> wiki: <a href=\"https://indieweb.org/2021/D%C3%BCsseldorf\">https://indieweb.org/2021/D%C3%BCsseldorf</a>"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "rsvp",
"refs": {
"https://2021.indieweb.org/dusseldorf": {
"type": "entry",
"url": "https://2021.indieweb.org/dusseldorf",
"name": "an IndieWeb event",
"post-type": "article"
}
},
"_id": "24989776",
"_source": "1",
"_is_read": true
}
My Hugo theme is getting down to bare bones. Perhaps I could pull out and plugify the favicons or the IndieWeb Ring stuff.
{
"type": "entry",
"author": {
"name": "Jason Cardwell",
"url": "https://moondeer.blog/",
"photo": "https://micro.blog/Moondeer/avatar.jpg"
},
"url": "https://moondeer.blog/2021/11/04/my-hugo-theme.html",
"content": {
"html": "<p>My Hugo theme is getting down to bare bones. Perhaps I could pull out and plugify the favicons or the IndieWeb Ring stuff.</p>",
"text": "My Hugo theme is getting down to bare bones. Perhaps I could pull out and plugify the favicons or the IndieWeb Ring stuff."
},
"published": "2021-11-04T22:18:34+00:00",
"post-type": "note",
"_id": "33380015",
"_source": "7224",
"_is_read": true
}
👀 DEFINE: IndieWeb
- (in-dee-web)
-
Noun
- Collective alternative to the corporate, mainstream web.
- Technologies developed within the stated ethos of the collective.
- Portmanteau of independent web.
til.micro.blog
{
"type": "entry",
"author": {
"name": "Today I Learned",
"url": "https://today-i-learned.net",
"photo": "https://avatars.micro.blog/avatars/2021/10400.jpg"
},
"url": "https://til.micro.blog/2021/11/04/define-indieweb-indeeweb.html",
"content": {
"html": "\ud83d\udc40 <strong>DEFINE: IndieWeb</strong>\n \n\n<ul><li>(in-dee-web)</li>\n<li>\n<em>Noun</em>\n\n<ul><li>Collective alternative to the corporate, mainstream web.</li>\n<li>Technologies developed within the stated ethos of the collective.</li>\n</ul></li>\n<li>Portmanteau of <strong>independent web</strong>.</li>\n</ul><a href=\"https://til.micro.blog/2021/11/04/define-indieweb-indeeweb.html\">til.micro.blog</a>",
"text": "\ud83d\udc40 DEFINE: IndieWeb\n \n\n(in-dee-web)\n\nNoun\n\nCollective alternative to the corporate, mainstream web.\nTechnologies developed within the stated ethos of the collective.\n\nPortmanteau of independent web.\ntil.micro.blog"
},
"published": "2021-11-04T20:29:00+00:00",
"post-type": "note",
"_id": "33380016",
"_source": "7224",
"_is_read": true
}
I love reading about how—and why—people tinker with their personal sites. This resonates a lot.
This website is essentially a repository of my memories, lessons I’ve learnt, insights I’ve discovered, a changelog of my previous selves. Most people build a map of things they have learnt, I am building a map of how I have come to be, in case I may get lost again. Maybe someone else interested in a similar lonely path will feel less alone with my documented footprints. Maybe that someone else would be me in the future.
Oh, and Winnie, I can testify that having an “on this day” page is well worth it!
{
"type": "entry",
"published": "2021-11-02T14:01:31Z",
"url": "https://adactio.com/links/18578",
"category": [
"indieweb",
"personal",
"publishing",
"writing",
"sharing",
"notes",
"onthisday",
"history",
"archives",
"stories",
"learning",
"reflection"
],
"bookmark-of": [
"https://winnielim.org/experiments/website/this-website-as-a-learning-and-reflection-tool/"
],
"content": {
"text": "Winnie Lim \u00bb this website as a learning and reflection tool\n\n\n\nI love reading about how\u2014and why\u2014people tinker with their personal sites. This resonates a lot.\n\n\n This website is essentially a repository of my memories, lessons I\u2019ve learnt, insights I\u2019ve discovered, a changelog of my previous selves. Most people build a map of things they have learnt, I am building a map of how I have come to be, in case I may get lost again. Maybe someone else interested in a similar lonely path will feel less alone with my documented footprints. Maybe that someone else would be me in the future.\n\n\nOh, and Winnie, I can testify that having an \u201con this day\u201d page is well worth it!",
"html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://winnielim.org/experiments/website/this-website-as-a-learning-and-reflection-tool/\">\nWinnie Lim \u00bb this website as a learning and reflection tool\n</a>\n</h3>\n\n<p>I love reading about how\u2014and why\u2014people tinker with their personal sites. This resonates a lot.</p>\n\n<blockquote>\n <p>This website is essentially a repository of my memories, lessons I\u2019ve learnt, insights I\u2019ve discovered, a changelog of my previous selves. Most people build a map of things they have learnt, I am building a map of how I have come to be, in case I may get lost again. Maybe someone else interested in a similar lonely path will feel less alone with my documented footprints. Maybe that someone else would be me in the future.</p>\n</blockquote>\n\n<p>Oh, and Winnie, I can testify that having an \u201c<a href=\"https://adactio.com/archive/onthisday\">on this day</a>\u201d page is well worth it!</p>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "bookmark",
"_id": "24758535",
"_source": "2",
"_is_read": true
}
Gordon Brander’s article "Building a Second Subconscious" is nice.
His properties for what might make what you could call ‘convivial tools for thought’ are all pretty IndieWebby.
https://subconscious.substack.com/p/second-subconscious
Also on: social.coop
{
"type": "entry",
"author": {
"name": "Neil Mather",
"url": "https://doubleloop.net/",
"photo": null
},
"url": "https://doubleloop.net/2021/11/01/7628/",
"published": "2021-11-01T20:05:13+00:00",
"content": {
"html": "Gordon Brander\u2019s article \"Building a Second Subconscious\" is nice.\n<p>His properties for what might make what you could call \u2018convivial tools for thought\u2019 are all pretty IndieWebby.</p>\n<p><a href=\"https://subconscious.substack.com/p/second-subconscious\">https://subconscious.substack.com/p/second-subconscious</a></p>\nAlso on:<p><a href=\"https://social.coop/@neil/107203599864031211\"> social.coop</a></p>",
"text": "Gordon Brander\u2019s article \"Building a Second Subconscious\" is nice.\nHis properties for what might make what you could call \u2018convivial tools for thought\u2019 are all pretty IndieWebby.\nhttps://subconscious.substack.com/p/second-subconscious\nAlso on: social.coop"
},
"post-type": "note",
"_id": "24739762",
"_source": "1895",
"_is_read": true
}
Told my sister I was building a new website for a writing project and she asked me how anyone was supposed to find it if it was its own independent website instead of a bigger site and boy howdy I’ve been failing in my indieweb duties
{
"type": "entry",
"published": "2021-10-30T22:48:45+00:00",
"url": "https://werd.io/2021/told-my-sister-i-was-building-a",
"content": {
"text": "Told my sister I was building a new website for a writing project and she asked me how anyone was supposed to find it if it was its own independent website instead of a bigger site and boy howdy I\u2019ve been failing in my indieweb duties"
},
"author": {
"type": "card",
"name": "Ben Werdm\u00fcller",
"url": "https://werd.io/profile/benwerd",
"photo": "https://werd.io/file/5d388c5fb16ea14aac640912/thumb.jpg"
},
"post-type": "note",
"_id": "24698804",
"_source": "191",
"_is_read": true
}
My social media usage is something like this.
– Follow people wherever they are (including the big silos).
– Write locally, in my ‘digital garden’, first.
– Publish on my own site. I for sure own the data this way.
– Syndicate things elsewhere, wherever the community best fits for my post. But don’t feed the big tech beasts.
– Interact with people wherever they are.
At present, a combo of org-mode, IndieWeb, Fediverse, Agora make this possible for me.
Also on: social.coop
{
"type": "entry",
"author": {
"name": "Neil Mather",
"url": "https://doubleloop.net/",
"photo": null
},
"url": "https://doubleloop.net/2021/10/30/7622/",
"published": "2021-10-30T09:07:14+00:00",
"content": {
"html": "My social media usage is something like this.\n<p>\u2013 Follow people wherever they are (including the big silos).<br />\u2013 Write locally, in my \u2018digital garden\u2019, first.<br />\u2013 Publish on my own site. I for sure own the data this way.<br />\u2013 Syndicate things elsewhere, wherever the community best fits for my post. But don\u2019t feed the big tech beasts.<br />\u2013 Interact with people wherever they are.</p>\n<p>At present, a combo of org-mode, IndieWeb, Fediverse, Agora make this possible for me.</p>\nAlso on:<p><a href=\"https://social.coop/@neil/107189687984880668\"> social.coop</a></p>",
"text": "My social media usage is something like this.\n\u2013 Follow people wherever they are (including the big silos).\n\u2013 Write locally, in my \u2018digital garden\u2019, first.\n\u2013 Publish on my own site. I for sure own the data this way.\n\u2013 Syndicate things elsewhere, wherever the community best fits for my post. But don\u2019t feed the big tech beasts.\n\u2013 Interact with people wherever they are.\nAt present, a combo of org-mode, IndieWeb, Fediverse, Agora make this possible for me.\nAlso on: social.coop"
},
"post-type": "note",
"_id": "24685261",
"_source": "1895",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "fluffy",
"url": "http://beesbuzz.biz/",
"photo": null
},
"url": "http://beesbuzz.biz/blog/1327-Some-thoughts-on-comments-and-interaction",
"published": "2021-10-24T23:10:07-07:00",
"content": {
"html": "<p>Recently I\u2019ve been thinking a lot about some of the differences between self-hosted vs. silo spaces. One thing that really stood out to me is that in self-hosted spaces, the tendency is to allow complete control over which comments are visible, and silos almost never allow that, or if they do it\u2019s <em>at best</em> an in-retrospect thing.</p><p>For example, most self-hosted blogging systems give you the ability to moderate all comments (as I do), or give easy access to deleting comments which got posted, or any number of mechanisms for curating the community.</p><p>But most silo systems don\u2019t give you that access; you might be able to block recurring trolls, or flag a comment for third-party review (usually to no effect), but all posts are set to allow anyone (with access to the post) the ability to post anything at any time, and by default everything gets floated to everyone else.</p><p>This came especially to mind today because of this unfortunate video:</p>\n\n<p>I\u2019ve seen so many creators get burned out on what they like doing, because even if 99% of the comments are positive, that 1% really gets under their skin, and they stop creating.</p><p>I\u2019ve seen so many creators get burned out on their communities, because even if 99% of it is positive, that 1% really gets under their skin, and they stop interacting with the community, turning it into a toxic cesspool.</p><p>I\u2019ve seen so many creators decide to capitulate to the communities and set up a personal SubReddit that they designate other people to moderate, just to keep it contained somewhere else.</p><p>I know so many creators who are on the verge of burnout and getting really tired of the dark side of having an audience.</p><p>I\u2019m not sure if giving people the ability to require commentary to be opt-in rather than opt-out would solve these problems, but I do know anecdotally that the random snipe-type responses I get from Twitter or Mastodon are way more annoying to me than the comments I opt not to post when submitted to my site. They\u2019re <em>out there</em> and visible and I have to take extra steps to get rid of them, and it\u2019s taken out of my hands as to whether I even <em>can</em> get rid of them.</p><p>I don\u2019t think I like how webmention works.</p>\n\n\n<p>Preemptive clarifications:</p>\n<ul><li>Yes, even without webmention folks can post public acknowledgement/responses to my blog entries on their own sites</li>\n<li>Webmention itself doesn\u2019t indicate anything about how it should be displayed on my site, or if it should be displayed at all; it\u2019s just a notification mechanism</li>\n<li>My point is just that if webmentions ever get overwhelming, I\u2019m gonna just like\u2026 stop displaying them. Or at least finally write an endpoint that works <a href=\"http://beesbuzz.biz/blog/6982-My-webmention-endpoint-wish-list\">the way I want it to</a>.</li>\n</ul><p><a href=\"http://beesbuzz.biz/blog/1327-Some-thoughts-on-comments-and-interaction#comments\">comments</a></p>",
"text": "Recently I\u2019ve been thinking a lot about some of the differences between self-hosted vs. silo spaces. One thing that really stood out to me is that in self-hosted spaces, the tendency is to allow complete control over which comments are visible, and silos almost never allow that, or if they do it\u2019s at best an in-retrospect thing.For example, most self-hosted blogging systems give you the ability to moderate all comments (as I do), or give easy access to deleting comments which got posted, or any number of mechanisms for curating the community.But most silo systems don\u2019t give you that access; you might be able to block recurring trolls, or flag a comment for third-party review (usually to no effect), but all posts are set to allow anyone (with access to the post) the ability to post anything at any time, and by default everything gets floated to everyone else.This came especially to mind today because of this unfortunate video:\n\nI\u2019ve seen so many creators get burned out on what they like doing, because even if 99% of the comments are positive, that 1% really gets under their skin, and they stop creating.I\u2019ve seen so many creators get burned out on their communities, because even if 99% of it is positive, that 1% really gets under their skin, and they stop interacting with the community, turning it into a toxic cesspool.I\u2019ve seen so many creators decide to capitulate to the communities and set up a personal SubReddit that they designate other people to moderate, just to keep it contained somewhere else.I know so many creators who are on the verge of burnout and getting really tired of the dark side of having an audience.I\u2019m not sure if giving people the ability to require commentary to be opt-in rather than opt-out would solve these problems, but I do know anecdotally that the random snipe-type responses I get from Twitter or Mastodon are way more annoying to me than the comments I opt not to post when submitted to my site. They\u2019re out there and visible and I have to take extra steps to get rid of them, and it\u2019s taken out of my hands as to whether I even can get rid of them.I don\u2019t think I like how webmention works.\n\n\nPreemptive clarifications:\nYes, even without webmention folks can post public acknowledgement/responses to my blog entries on their own sites\nWebmention itself doesn\u2019t indicate anything about how it should be displayed on my site, or if it should be displayed at all; it\u2019s just a notification mechanism\nMy point is just that if webmentions ever get overwhelming, I\u2019m gonna just like\u2026 stop displaying them. Or at least finally write an endpoint that works the way I want it to.\ncomments"
},
"name": "fluffy rambles: Some thoughts on comments and interaction",
"post-type": "article",
"_id": "24544063",
"_source": "3782",
"_is_read": true
}
{
"type": "entry",
"published": "2021-10-24T19:46:00+0100",
"url": "https://www.jvt.me/mf2/2021/10/qj6yr/",
"category": [
"rss",
"personal-website",
"indieweb",
"blogging"
],
"bookmark-of": [
"https://quakkels.com/posts/rss-is-wonderful/"
],
"author": {
"type": "card",
"name": "Jamie Tanna",
"url": "https://www.jvt.me",
"photo": "https://www.jvt.me/img/profile.png"
},
"post-type": "bookmark",
"_id": "24535713",
"_source": "2169",
"_is_read": true
}
{
"type": "entry",
"published": "2021-10-21 14:15-0700",
"url": "https://gregorlove.com/2021/10/check-meta-headers-for-http-status/",
"syndication": [
"https://github.com/gRegorLove/ProcessWire-Webmention/issues/25"
],
"in-reply-to": [
"https://github.com/gRegorLove/ProcessWire-Webmention/issues"
],
"name": "Check meta headers for HTTP Status",
"content": {
"text": "#indieweb-dev chat reminded me that HTTP Status can be returned in <meta> tags. Verify and test that this module can handle that scenario.",
"html": "<p><a href=\"https://chat.indieweb.org/dev/2021-10-21#t1634847014060400\">#indieweb-dev chat</a> reminded me that HTTP Status can be returned in <meta> tags. Verify and test that this module can handle that scenario.</p>"
},
"author": {
"type": "card",
"name": "gRegor Morrill",
"url": "https://gregorlove.com/",
"photo": "https://gregorlove.com/site/assets/files/3473/profile-2016-med.jpg"
},
"post-type": "reply",
"_id": "24473066",
"_source": "95",
"_is_read": true
}
Say you’re into the indie web without saying you’re into the indie web…
The internet wasn’t really convenient in 1994 or 1995, but it was a very collaborative space.
There was a moment where we replaced this idea of the internet being a medium that we can all write to and participate in to one that is mediated. That happened at some point after social networks started to arrive and when the smartphone started to arrive. It’s a combination of the nature of those platforms and the prevalence of the technologies, which meant the economic rewards of getting this right rose significantly.
And so there’s a really distinctly different feel in the 2013, or 2014, internet to the one that you might have had in 1997, or 1998. It’s not just that it’s easier and I’m yearning for a world of cars with manual choke and manual transmission and crank-up starter handles, but it’s that the programmability of the internet and its endpoints has turned into something that is increasingly permissioned by major platforms.
{
"type": "entry",
"published": "2021-10-20T20:37:51Z",
"url": "https://adactio.com/links/18545",
"category": [
"indieweb",
"platforms",
"publishing",
"decentralisation",
"silos",
"regulation",
"governance",
"facebook"
],
"bookmark-of": [
"https://restofworld.org/2021/conversation-with-azeem-azhar-exponential-age/"
],
"content": {
"text": "\u201cThe internet wasn\u2019t designed to breach national boundaries\u201d - Rest of World\n\n\n\nSay you\u2019re into the indie web without saying you\u2019re into the indie web\u2026\n\n\n The internet wasn\u2019t really convenient in 1994 or 1995, but it was a very collaborative space. \n \n There was a moment where we replaced this idea of the internet being a medium that we can all write to and participate in to one that is mediated. That happened at some point after social networks started to arrive and when the smartphone started to arrive. It\u2019s a combination of the nature of those platforms and the prevalence of the technologies, which meant the economic rewards of getting this right rose significantly.\n \n And so there\u2019s a really distinctly different feel in the 2013, or 2014, internet to the one that you might have had in 1997, or 1998. It\u2019s not just that it\u2019s easier and I\u2019m yearning for a world of cars with manual choke and manual transmission and crank-up starter handles, but it\u2019s that the programmability of the internet and its endpoints has turned into something that is increasingly permissioned by major platforms.",
"html": "<h3>\n<a class=\"p-name u-bookmark-of\" href=\"https://restofworld.org/2021/conversation-with-azeem-azhar-exponential-age/\">\n\u201cThe internet wasn\u2019t designed to breach national boundaries\u201d - Rest of World\n</a>\n</h3>\n\n<p>Say you\u2019re into the indie web without saying you\u2019re into the indie web\u2026</p>\n\n<blockquote>\n <p>The internet wasn\u2019t really convenient in 1994 or 1995, but it was a very collaborative space. </p>\n \n <p>There was a moment where we replaced this idea of the internet being a medium that we can all write to and participate in to one that is mediated. That happened at some point after social networks started to arrive and when the smartphone started to arrive. It\u2019s a combination of the nature of those platforms and the prevalence of the technologies, which meant the economic rewards of getting this right rose significantly.</p>\n \n <p>And so there\u2019s a really distinctly different feel in the 2013, or 2014, internet to the one that you might have had in 1997, or 1998. It\u2019s not just that it\u2019s easier and I\u2019m yearning for a world of cars with manual choke and manual transmission and crank-up starter handles, but it\u2019s that the programmability of the internet and its endpoints has turned into something that is increasingly permissioned by major platforms. </p>\n</blockquote>"
},
"author": {
"type": "card",
"name": "Jeremy Keith",
"url": "https://adactio.com/",
"photo": "https://adactio.com/images/photo-150.jpg"
},
"post-type": "bookmark",
"_id": "24442821",
"_source": "2",
"_is_read": true
}
I'm interested.Seems like a fun way of catching up with some IndieWeb folks!
{
"type": "entry",
"published": "2021-10-19T19:38:25-0400",
"rsvp": "maybe",
"url": "https://martymcgui.re/2021/10/19/193825/",
"in-reply-to": [
"https://events.indieweb.org/2021/10/indieweb-friday-funday-halloween-edition-jlycDSXyQ8UL"
],
"content": {
"text": "I'm interested.Seems like a fun way of catching up with some IndieWeb folks!",
"html": "I'm interested.<p>Seems like a fun way of catching up with some IndieWeb folks!</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": "https://martymcgui.re/",
"photo": "https://martymcgui.re/images/logo.jpg"
},
"post-type": "rsvp",
"refs": {
"https://events.indieweb.org/2021/10/indieweb-friday-funday-halloween-edition-jlycDSXyQ8UL": {
"type": "entry",
"summary": "What's Friday Funday?",
"url": "https://events.indieweb.org/2021/10/indieweb-friday-funday-halloween-edition-jlycDSXyQ8UL",
"photo": [
"https://res.cloudinary.com/schmarty/image/fetch/w_960,c_fill/https://events.indieweb.org/storage/events/20211016-KJKJeVsEv4uMPg5Y88PsOtBT7SyKOF.jpg"
],
"name": "IndieWeb Friday Funday - Halloween Edition",
"author": {
"type": "card",
"name": "events.indieweb.org",
"url": "http://events.indieweb.org",
"photo": null
},
"post-type": "photo"
}
},
"_id": "24419640",
"_source": "175",
"_is_read": true
}
{
"type": "entry",
"published": "2021-10-18 16:31-0700",
"url": "http://tantek.com/2021/291/b1/bridgy-backfeed-reacji-on-comments",
"in-reply-to": [
"https://github.com/snarfed/bridgy/issues"
],
"name": "Feature request: Bridgy backfeed reacjis on POSSEd comments",
"content": {
"text": "In \nBridgy backfeed documentation it says \"Bridgy detects and sends webmentions for \u2026 GitHub comments and emoji reactions on your issues and pull requests\" which would seem to imply that Bridgy does not yet send webmentions for emoji reactions (reacjis) on POSSEd comments on GitHub issues and pull requests, e.g. the reacjis on \nthis comment POSSEd by Bridgy.\n\nAccording to \nGitHub API docs: List reactions for an issue comment \nit looks like this information is available in the GitHub API. It would be great if Bridgy could add support for backfeeding reacjis on POSSEd comments! Thanks for your consideration.",
"html": "<p>\nIn \n<a href=\"https://brid.gy/about#which\">Bridgy backfeed documentation</a> it says \"Bridgy detects and sends webmentions for \u2026 GitHub comments and emoji reactions on your issues and pull requests\" which would seem to imply that Bridgy does not yet send webmentions for emoji reactions (reacjis) on POSSEd <em>comments</em> on GitHub issues and pull requests, e.g. the reacjis on \n<a href=\"https://github.com/mozilla/standards-positions/issues/453#issuecomment-888225596\">this comment POSSEd by Bridgy</a>.\n</p>\n<p>According to \n<a href=\"https://docs.github.com/en/rest/reference/reactions#list-reactions-for-an-issue-comment\">GitHub API docs: List reactions for an issue comment</a> \nit looks like this information is available in the GitHub API. It would be great if Bridgy could add support for backfeeding reacjis on POSSEd comments! Thanks for your consideration.\n</p>"
},
"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://github.com/snarfed/bridgy/issues": {
"type": "entry",
"url": "https://github.com/snarfed/bridgy/issues",
"name": "GitHub project \u201cbridgy\u201d",
"post-type": "article"
}
},
"_id": "24393073",
"_source": "1",
"_is_read": true
}