{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "tjansen.de",
  "home_page_url": "https://www.tjansen.de/blog/",
  "feed_url": "https://www.tjansen.de/blog/feed.json",
  "description": "Tim's stream of consciousness",
  "language": "en",
  "authors": [{"name":"Tim"}],
  "items": [
    {
      "id": "https://tjansen.de/blog0006",
      "url": "https://www.tjansen.de/blog/liking-rss-items.html",
      "title": "Liking RSS Items",
      "content_html": "<p>While <a href=\"https://rss.chat/\">RSS.chat</a> mostly solves the issue of comments (at least read-only), it does not really solve the issue of liking in a distributed system - it depends on a central server. So either there is still a centralized system, assuming everybody would use the same likes server, or every feed has a different server and you need to authorize with them before you can like something. And even that does not do a good job preventing like-spam.</p>\n<p>My solution for liking is different:</p>\n<ul>\n<li>every feed still needs a like-server, but in order to like, you don&#39;t need to log into them. The like-server must implement the <a href=\"https://webmention.net/\">webmention</a> protocol.</li>\n<li>every user maintains a JSON feed of their likes - for all their sites. If you like something, add the like to your OWN RSS like feed, at a fixed, permanent URL, and use webmention to notify the site of your like.</li>\n<li>when an article is being liked, the site&#39;s like-server publishes the like in its own JSON feed which contains a list of all the likes it got with their permanent URL.</li>\n</ul>\n<p>This system makes sure that every like can be validated and allows you to detect cheaters. Clients should validate at least one like before accepting the like count and showing it. </p>\n<p>Users can only like once per hostname. By default, the like server must only accept one like per second-level domain, to avoid someone creating dynamic domain names to add an infinite number of likes. Only whitelisted domains can like with subdomains. This should limit the ability to cheat.</p>\n<p>And if like-cheating is getting out of hand, there could be a validator service that requires additional proof from likers the first time they like something. But that would be a later step.</p>\n",
      "date_published": "2026-10-13T23:01:00.000Z",
      "date_modified": "2026-10-13T23:01:42.700Z",
      "authors": [{"name":"Tim"}]
    },
    {
      "id": "https://www.tjansen.de/blog/0007",
      "url": "https://www.tjansen.de/blog/socialspec.html",
      "title": "SocialSpec",
      "content_html": "<p>I discovered <a href=\"https://socialspec.org/\">SocialSpec</a> today, which is pretty close to what I intended with sosocial.dev. It is currently mostly focused on user profiles, not on social-media feeds, but maybe it&#39;s something we can collaborate on.</p>\n",
      "date_published": "2026-10-13T23:00:00.000Z",
      "date_modified": "2026-10-13T23:00:20.846Z",
      "authors": [{"name":"Tim"}]
    },
    {
      "id": "https://tjansen.de/blog0005",
      "url": "https://www.tjansen.de/blog/instagram-tiktok-reels-shorts-like-rss-feeds.html",
      "title": "Instagram / Tiktok / Reels / Shorts - like RSS feeds",
      "content_html": "<p>I am working on concepts to have independent, simple web servers providing RSS/Json-based protocols to give users the same viewing experience as Facebook/TikTok/YouTube/X/Reddit/Instagram. This is where we are:</p>\n<ul>\n<li>The usual blog system is the equivalent of Facebook posts</li>\n<li>Video podcasts are the equivalent to YouTube</li>\n<li>Microblogs are the equivalent to X.</li>\n</ul>\n<p>But where is the equivalent to Instagram and TikTok? Those swipable full-screen images or videos with text overlay?</p>\n<p>I think all the data can already be in the feed today:</p>\n<ul>\n<li>The enclosure/attachment would be the main image or video. The one that&#39;s in the background on Tiktok/Shorts</li>\n<li>The post description would be the text on top of the video</li>\n<li>Instagram posts have multiple images. In RSS, the MediaRSS extension can handle several images (alternatively, multiple enclosures could be sufficient, but they don&#39;t have per-image titles). In JSON Feeds, attachments have all we need. However, I am not aware of any RSS reader supporting more than one image.</li>\n</ul>\n<p>So we have all the data. The reader just needs the right hints to render it correctly. Let&#39;s call them card-based feeds.</p>\n<p>So two things are needed. </p>\n<ol>\n<li>a flag in the feed to make the RSS reader display it as a series of card-based posts</li>\n<li>a backward-compatible convention that lets existing readers render additional media.</li>\n</ol>\n<h3>The RSS / JSON Feed extension (proposed)</h3>\n<p>Giving the RSS Readers a hint to display a post as a card-based post is relatively simple with extensions.</p>\n<p>For XML, we can use a simple new element in our own namespace to make an item as a card:</p>\n<pre><code>&lt;card xmlns=‘https://sosocial.dev/&#39; /&gt;\n</code></pre>\n<p>(side note: XML namespaces are wonderful and pretty much the only time I prefer XML over JSON)</p>\n<p>JSON Feeds also support extensions, albeit in a less elegant way. We need to put something like this in our feed:</p>\n<pre><code>&quot;_sosocial&quot;: {\n    &quot;about&quot;: &quot;https://sosocial.dev/&quot;,\n    &quot;cards&quot;: true,\n}\n</code></pre>\n<h3>Backward-compatibility</h3>\n<p>Backward-compatibility for existing readers is very simple as long as the feed has only a single image/video per post: just do nothing. A typical reader will display the image/video at the top, and the text underneath. Not perfect, but it will work anywhere. </p>\n<p>Multiple-images are more difficult. I would propose to duplicate all images but the first into HTML, marked with a special class. Card-supporting readers will filter them out. Existing readers will display them. </p>\n<p>That basically means that every item with multiple images starts their HTML with a special div:</p>\n<pre><code>&lt;div class=&quot;sosocial-alt-card&quot;&gt;\n  &lt;img src=&quot;/img1&quot;/&gt;\n  &lt;hr/&gt;\n  &lt;img src=&quot;/img2&quot;/&gt;\n  &lt;hr/&gt;\n  &lt;img src=&quot;/img3&quot;/&gt;\n&lt;/div&gt;\n</code></pre>\n<p>Card-supporting RSS readers will not display &#39;sosocial-alt-card&#39;. All others will show it. </p>\n<p>P.S.: I bought the domain <code>sosocial.dev</code> when it was on sale for just $1. I was too lazy to check there is already a company of the same name. So I need a new domain...</p>\n",
      "date_published": "2026-10-13T15:39:08.000Z",
      "date_modified": "2026-10-13T13:41:59.829Z",
      "authors": [{"name":"Tim"}]
    },
    {
      "id": "https://tjansen.de/blog0004",
      "url": "https://www.tjansen.de/blog/what-i-am-working-on.html",
      "title": "What I am working on...",
      "content_html": "<p>Just to remind myself later, and to give some context: there are currently 5 things I am more or less working on, in various stages.</p>\n<ol>\n<li><a href=\"https://downread.com\">Downread</a>, the RSS reader, is the thing that is mostly ready to use. I am currently working on the iOS and Android apps, which will also have at least one extra feature (offline reading). Should be ready for some promotion in November.</li>\n<li>rssdirectory.org is a directory of RSS feeds, based on Downread&#39;s feed catalog. It will make its data freely available. This is in progress, but much smaller than Downread and should be done this year as well.</li>\n<li>Sosocial or whatever it will be called: it is an idea that I have to offer a truly simple alternative to all kinds of social networks. It is based on the idea that every person has a DNS domain, as well as a webserver (or CDN with storage), which use a predefined file layout to provide RSS feeds for everything. It&#39;s not really a code project at this point, but rather some kind of convention for how to structure a server so that other tools can access it.</li>\n<li>feedwrap(per?).com is an idea that I have to provide what Feedburner used to offer: a way of wrapping an RSS feed and offering extra things like statistics. It could also be used to create paid feed URLs that can only be used by a single person. No code has been written for this.</li>\n<li>Taskspread: an idea I had like 4 years ago, and have been working on and off. It is a task management tool for the physical world that lets people assign tasks with step-by-step instructions. What makes this relevant again is the idea that it would be a good fit for agents: an AI agent could use this to instruct a human worker and get data back. It&#39;s somewhat working for humans, but has no AI (MCP) interface yet.</li>\n</ol>\n",
      "date_published": "2026-10-12T22:23:00.000Z",
      "date_modified": "2026-10-12T22:23:42.241Z",
      "authors": [{"name":"Tim"}]
    },
    {
      "id": "https://tjansen.de/blog0003",
      "url": "https://www.tjansen.de/blog/posts/0003",
      "content_html": "<p>Besides Downread, one of the projects I worked on was supposed to be Yellowfeeds.com, an RSS directory, reader-neutral and open to everybody. After a discussion with my, ehm, personal AI lawyer we agreed that any name starting with Yellow is not worth the trouble because of a telecom company of the same name. </p>\n<p>A bit frustrated, I started searching for domains and discovered that rssdirectory.org was available. Not very distinctive, but at least SEO-friendly.</p>\n",
      "date_published": "2026-10-12T18:13:00.000Z",
      "date_modified": "2026-10-12T18:13:11.269Z",
      "authors": [{"name":"Tim"}]
    },
    {
      "id": "https://tjansen.de/blog0002",
      "url": "https://www.tjansen.de/blog/posts/0002",
      "content_html": "<p>It&#39;s embarrassing, but it turns out that Downread&#39;s Google Auth was still in testing and only allowed my Google accounts... nobody told me. Good that I caught it before really starting to promote Downread, but still.. </p>\n<p>On a positive note, I just added Apple authentication. For everybody.</p>\n<p>Apps are also making good progress. </p>\n",
      "date_published": "2026-10-11T10:49:00.000Z",
      "date_modified": "2026-10-11T10:49:38.711Z",
      "authors": [{"name":"Tim"}]
    },
    {
      "id": "https://tjansen.de/blog0001",
      "url": "https://www.tjansen.de/blog/first-post.html",
      "title": "First post",
      "content_html": "<p>This is just my first post here. Not really published, but whatever. This micro-blog will be more like a stream of consciousness than anything else. Don&#39;t even know whether I keep it, but here we go...</p>\n",
      "date_published": "2026-10-11T10:47:00.000Z",
      "date_modified": "2026-10-11T10:47:52.504Z",
      "authors": [{"name":"Tim"}]
    }
  ]
}
