{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "A Node on the Web",
  "home_page_url": "https://rmendes.net/",
  "feed_url": "https://rmendes.net/feed.json",
  "hubs": [
    {
      "type": "WebSub",
      "url": "https://websubhub.com/hub"
    }
  ],
  "description": "DevOps engineer, IndieWeb enthusiast, and OSINT analyst based in Brussels",
  "language": "en",
  "authors": [
    {
      "name": "Ricardo Mendes",
      "url": "https://rmendes.net/"
    }
  ],
  "_textcasting": {
    "version": "1.0",
    "about": "https://textcasting.org/"
  },
  "items": [
    {
      "id": "https://rmendes.net/notes/2026/03/15/b8609/",
      "url": "https://rmendes.net/notes/2026/03/15/b8609/",
      "title": null,
      "content_html": "<p>@HolosDiscover@discover.holos.social follow</p>\n",
      "content_text": "@HolosDiscover@discover.holos.social follow",
      "date_published": "2026-03-15T13:22:14Z",
      "date_modified": "2026-03-15T13:22:39Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/15/dd166/",
      "url": "https://rmendes.net/replies/2026/03/15/dd166/",
      "title": null,
      "content_html": "<p>This is a reply from my blog, that should be threaded properly</p>\n",
      "content_text": "This is a reply from my blog, that should be threaded properly",
      "date_published": "2026-03-15T13:06:03Z",
      "date_modified": "2026-03-15T13:06:03Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/15/b1f0b/",
      "url": "https://rmendes.net/replies/2026/03/15/b1f0b/",
      "title": null,
      "content_html": "<p>Thanks for playing the game :)</p>\n",
      "content_text": "Thanks for playing the game :)",
      "date_published": "2026-03-15T12:42:37Z",
      "date_modified": "2026-03-15T12:42:37Z"
    },
    {
      "id": "https://rmendes.net/notes/2026/03/15/fbb7d/",
      "url": "https://rmendes.net/notes/2026/03/15/fbb7d/",
      "title": null,
      "content_html": "<p>If you see this post, please interact with it with a reply or like, I will then be able to retrieve your interaction to my blog/AP fedify instance and then I will test replying to your reply to demo threaded reply backfilled to my site\nYou can also comment using IndieAuth/indieweb if your site support it !</p>\n",
      "content_text": "If you see this post, please interact with it with a reply or like, I will then be able to retrieve your interaction to my blog/AP fedify instance and then I will test replying to your reply to demo threaded reply backfilled to my site You can also comment using IndieAuth/indieweb if your site support it !",
      "date_published": "2026-03-15T12:23:59Z",
      "date_modified": "2026-03-15T12:24:33Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/15/99dc5/",
      "url": "https://rmendes.net/replies/2026/03/15/99dc5/",
      "title": null,
      "content_html": "<p>Trying this now! thanks</p>\n",
      "content_text": "Trying this now! thanks",
      "date_published": "2026-03-15T07:44:40Z",
      "date_modified": "2026-03-15T07:44:40Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/15/b87c6/",
      "url": "https://rmendes.net/replies/2026/03/15/b87c6/",
      "title": null,
      "content_html": "<p>test reply from site</p>\n",
      "content_text": "test reply from site",
      "date_published": "2026-03-15T07:41:57Z",
      "date_modified": "2026-03-15T07:41:57Z"
    },
    {
      "id": "https://rmendes.net/reposts/2026/03/14/ee0c5/",
      "url": "https://rmendes.net/reposts/2026/03/14/ee0c5/",
      "title": null,
      "content_html": "<p>This is really bad…</p>\n",
      "content_text": "This is really bad…",
      "date_published": "2026-03-14T20:23:08Z",
      "date_modified": "2026-03-14T20:24:20Z"
    },
    {
      "id": "https://rmendes.net/likes/2026/03/14/c5318/",
      "url": "https://rmendes.net/likes/2026/03/14/c5318/",
      "title": null,
      "content_html": "<p>This is really cool ! <a href=\"https://kagi.com/smallweb/\">https://kagi.com/smallweb/</a> <a href=\"https://rmendes.net/categories/smallweb/\" class=\"p-category hashtag\">#smallweb</a></p>\n",
      "content_text": "This is really cool ! https://kagi.com/smallweb/ #smallweb",
      "date_published": "2026-03-14T19:24:23Z",
      "date_modified": "2026-03-14T19:26:17Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/14/8d097/",
      "url": "https://rmendes.net/replies/2026/03/14/8d097/",
      "title": null,
      "content_html": "<p>I have not gotten any spam (yet) but I’m concerned about this too…\nfor webmentions I built a backend moderation tooling so that I can block future webmention spam if that happens one day\nI can also delete webmentions (even if they keep existing at the source obviously)\nbut for comments and other forms input I’m not sure how I’m going to proceed yet</p>\n",
      "content_text": "I have not gotten any spam (yet) but I’m concerned about this too… for webmentions I built a backend moderation tooling so that I can block future webmention spam if that happens one day I can also delete webmentions (even if they keep existing at the source obviously) but for comments and other forms input I’m not sure how I’m going to proceed yet",
      "date_published": "2026-03-14T12:40:17Z",
      "date_modified": "2026-03-14T12:40:50Z"
    },
    {
      "id": "https://rmendes.net/bookmarks/2026/03/14/building-enterprise-ai-hard-won-lessons-from-1200-hours-of-rag-development/",
      "url": "https://rmendes.net/bookmarks/2026/03/14/building-enterprise-ai-hard-won-lessons-from-1200-hours-of-rag-development/",
      "title": "Building Enterprise AI: Hard-Won Lessons from 1200+ Hours of RAG Development",
      "content_html": "<blockquote>\n<p>I’m going to have to distill this great blog posts into bullet points summary of things to pay attention or to avoid when building our RAG documentation at work.</p>\n</blockquote>\n",
      "content_text": "I’m going to have to distill this great blog posts into bullet points summary of things to pay attention or to avoid when building our RAG documentation at work.",
      "date_published": "2026-03-14T10:31:12Z",
      "date_modified": "2026-03-14T10:31:46Z"
    },
    {
      "id": "https://rmendes.net/notes/2026/03/13/13c2e/",
      "url": "https://rmendes.net/notes/2026/03/13/13c2e/",
      "title": null,
      "content_html": "<p>This <a href=\"https://interconnect.substack.com/p/chinese-open-source-a-definitive\">blog post</a> (sadly on substack) is truly fascinating :</p>\n<blockquote>\n<p>Two years after the campaign started, in August 2021, China’s Supreme People’s Court, along with the Ministry of Human Resources and Social Security, officially ruled “996” illegal. It was, as far as I know, the first time that a grassroots, developer-led campaign used open source organizing mechanisms to enforce not just intellectual property norms, but labor rights norms, and ultimately ended in a legal victory.</p>\n</blockquote>\n",
      "content_text": "This blog post (sadly on substack) is truly fascinating : Two years after the campaign started, in August 2021, China’s Supreme People’s Court, along with the Ministry of Human Resources and Social Security, officially ruled “996” illegal. It was, as far as I know, the first time that a grassroots, developer-led campaign used open source organizing mechanisms to enforce not just intellectual property norms, but labor rights norms, and ultimately ended in a legal victory.",
      "date_published": "2026-03-13T16:50:12Z",
      "date_modified": "2026-03-13T16:50:22Z"
    },
    {
      "id": "https://rmendes.net/bookmarks/2026/03/13/feedgrab-makes-it-easy-to/",
      "url": "https://rmendes.net/bookmarks/2026/03/13/feedgrab-makes-it-easy-to/",
      "title": "Feedgrab makes it easy to find and subscribe to your favourite blogs and websites using RSS.",
      "content_html": "",
      "content_text": "",
      "date_published": "2026-03-13T16:32:42Z",
      "date_modified": "2026-03-13T16:34:16Z"
    },
    {
      "id": "https://rmendes.net/bookmarks/2026/03/13/chinese-open-source-a-definitive/",
      "url": "https://rmendes.net/bookmarks/2026/03/13/chinese-open-source-a-definitive/",
      "title": "Chinese Open Source: A Definitive History",
      "content_html": "<blockquote>\n<p>The first major chapter of the Chinese open source story did not begin with some grand government proclamation or a visionary founder. It started, as most open source stories do, with engineers trying to solve hard problems for their company. This company was Alibaba.</p>\n</blockquote>\n",
      "content_text": "The first major chapter of the Chinese open source story did not begin with some grand government proclamation or a visionary founder. It started, as most open source stories do, with engineers trying to solve hard problems for their company. This company was Alibaba.",
      "date_published": "2026-03-13T16:15:01Z",
      "date_modified": "2026-03-13T16:15:38Z"
    },
    {
      "id": "https://rmendes.net/likes/2026/03/13/f90be/",
      "url": "https://rmendes.net/likes/2026/03/13/f90be/",
      "title": null,
      "content_html": "",
      "content_text": "",
      "date_published": "2026-03-13T16:08:10Z",
      "date_modified": "2026-03-13T16:08:10Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/13/d48b3/",
      "url": "https://rmendes.net/replies/2026/03/13/d48b3/",
      "title": null,
      "content_html": "<p>Can’t wait to read it !</p>\n",
      "content_text": "Can’t wait to read it !",
      "date_published": "2026-03-13T14:10:37Z",
      "date_modified": "2026-03-13T14:11:09Z"
    },
    {
      "id": "https://rmendes.net/replies/2026/03/13/ecbbc/",
      "url": "https://rmendes.net/replies/2026/03/13/ecbbc/",
      "title": null,
      "content_html": "<p>I went and added AI usage metadata to my JSON-LD\nalso added a AI usage page <a href=\"https://rmendes.net/ai/\">https://rmendes.net/ai/</a>\nand every posts on my blog have a easy to read/interpret AI usage transparency card;</p>\n<p>I went this direction because I think, AI on blogs is not a blanket, its not ALL or nothing, it should be granular, per posts.</p>\n<p>And just because one co-draft a tutorial or long form with an AI does not mean or equal AI generated.</p>\n<p>I posit that this approach will be implemented in different ways but will ultimately be common in just a few months/years</p>\n",
      "content_text": "I went and added AI usage metadata to my JSON-LD also added a AI usage page https://rmendes.net/ai/ and every posts on my blog have a easy to read/interpret AI usage transparency card; I went this direction because I think, AI on blogs is not a blanket, its not ALL or nothing, it should be granular, per posts. And just because one co-draft a tutorial or long form with an AI does not mean or equal AI generated. I posit that this approach will be implemented in different ways but will ultimately be common in just a few months/years",
      "date_published": "2026-03-13T13:50:59Z",
      "date_modified": "2026-03-13T13:51:31Z"
    },
    {
      "id": "https://rmendes.net/likes/2026/03/13/f49bc/",
      "url": "https://rmendes.net/likes/2026/03/13/f49bc/",
      "title": null,
      "content_html": "",
      "content_text": "",
      "date_published": "2026-03-13T12:17:09Z",
      "date_modified": "2026-03-13T12:17:09Z"
    },
    {
      "id": "https://rmendes.net/notes/2026/03/12/a67cd/",
      "url": "https://rmendes.net/notes/2026/03/12/a67cd/",
      "title": null,
      "content_html": "<p>Funny how building an ActivityPub plugin for <a href=\"https://rmendes.net/categories/indiekit/\" class=\"p-category hashtag\">#indiekit</a> fully based on Fedify, migrating my Mastodon account to my own server @rick@rmendes.net and building my own UI to consume AP content from the <a href=\"https://rmendes.net/categories/fediverse/\" class=\"p-category hashtag\">#Fediverse</a> made me use even more than before.</p>\n<p>This post is simultaneously a blog post, an <a href=\"https://rmendes.net/categories/activitypub/\" class=\"p-category hashtag\">#ActivityPub</a> object in the inbox of my followers and a syndicated post to Bluesky.</p>\n<p>Next in line? getting inspired by <a href=\"https://rmendes.net/categories/wafrn/\" class=\"p-category hashtag\">#Wafrn</a> and turn this indiekit/AP instance into my own <a href=\"https://rmendes.net/categories/bluesky/\" class=\"p-category hashtag\">#Bluesky</a> Pds.</p>\n",
      "content_text": "Funny how building an ActivityPub plugin for #indiekit fully based on Fedify, migrating my Mastodon account to my own server @rick@rmendes.net and building my own UI to consume AP content from the #Fediverse made me use even more than before. This post is simultaneously a blog post, an #ActivityPub object in the inbox of my followers and a syndicated post to Bluesky. Next in line? getting inspired by #Wafrn and turn this indiekit/AP instance into my own #Bluesky Pds.",
      "date_published": "2026-03-12T18:45:23Z",
      "date_modified": "2026-03-12T18:46:11Z"
    },
    {
      "id": "https://rmendes.net/reposts/2026/03/12/4cf38/",
      "url": "https://rmendes.net/reposts/2026/03/12/4cf38/",
      "title": null,
      "content_html": "<p>more than half of humanity is not represented at various levels of governance, be it supra national or national representative democracy.</p>\n<p>what could go wrong?</p>\n",
      "content_text": "more than half of humanity is not represented at various levels of governance, be it supra national or national representative democracy. what could go wrong?",
      "date_published": "2026-03-12T16:20:48Z",
      "date_modified": "2026-03-12T16:22:06Z"
    },
    {
      "id": "https://rmendes.net/likes/2026/03/12/25ed2/",
      "url": "https://rmendes.net/likes/2026/03/12/25ed2/",
      "title": null,
      "content_html": "",
      "content_text": "",
      "date_published": "2026-03-12T16:18:52Z",
      "date_modified": "2026-03-12T16:20:27Z"
    }
  ]
}
